switchboard-router 0.9.8 → 0.9.10

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 (583) hide show
  1. package/app/.next/static/chunks/1321-a73f95036c368bd4.js +1 -0
  2. package/app/.next/static/chunks/1330-846d6a9e1497295e.js +7 -0
  3. package/app/.next/static/chunks/app/(dashboard)/dashboard/agent-library/page-65e302b698beee56.js +1 -0
  4. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-337881fe6c0cc77a.js +16 -0
  5. package/app/.next/static/chunks/app/(dashboard)/dashboard/loading-c80ac975cf0f4842.js +1 -0
  6. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-78d098f14f8cff05.js → .next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-efb20dd903e0dc94.js} +10 -10
  7. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-03290d1edb08623a.js +4 -0
  8. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-9bcd63bfeeac87c6.js +1 -0
  9. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-97e0f7067cab0724.js → page-ca71683d9d850162.js} +3 -3
  10. package/app/.next/static/chunks/app/(dashboard)/dashboard/pxpipe/page-c5c37fbce431369b.js +1 -0
  11. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-b582299fa61407d9.js +1 -0
  12. package/app/.next/static/css/92ffae29025c5847.css +1 -0
  13. package/app/.next-cli-build/BUILD_ID +1 -1
  14. package/app/.next-cli-build/app-path-routes-manifest.json +8 -8
  15. package/app/.next-cli-build/build-manifest.json +2 -2
  16. package/app/.next-cli-build/prerender-manifest.json +3 -3
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +3 -3
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +10 -10
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  86. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  87. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  89. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  90. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  92. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  93. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  95. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  97. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  98. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  99. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  100. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  101. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  102. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  103. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  105. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  106. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  107. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  108. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  109. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  110. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  120. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  122. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  124. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  133. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  137. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  139. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  141. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  143. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  145. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  147. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  149. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  151. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  153. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  155. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  157. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js +2 -2
  208. package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  278. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  282. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  294. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  300. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  303. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/routing/feedback/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/routing/insights/route.js +1 -1
  308. package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/routing/learn/route.js +1 -1
  310. package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/routing/stats/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  347. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  349. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -6
  355. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  364. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  372. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  373. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  374. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  376. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  377. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  378. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  379. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  380. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  381. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  384. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  385. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  386. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  388. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  389. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  390. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  391. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  392. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  394. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  395. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  396. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  397. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  398. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  399. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  400. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  401. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  402. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  403. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  404. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  405. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  406. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  407. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  408. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  409. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  410. package/app/.next-cli-build/server/app/callback.html +1 -1
  411. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  412. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  413. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  414. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  415. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  420. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  421. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  422. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  423. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  424. package/app/.next-cli-build/server/app/index.html +1 -1
  425. package/app/.next-cli-build/server/app/index.rsc +4 -4
  426. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  427. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  428. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  429. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  430. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  431. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  432. package/app/.next-cli-build/server/app/landing.html +1 -1
  433. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  434. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  435. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  436. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  437. package/app/.next-cli-build/server/app/login/page.js +1 -1
  438. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  439. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  440. package/app/.next-cli-build/server/app/login.html +1 -1
  441. package/app/.next-cli-build/server/app/login.rsc +4 -4
  442. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  443. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  444. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  445. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  446. package/app/.next-cli-build/server/app/page.js +1 -1
  447. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  448. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  449. package/app/.next-cli-build/server/app-paths-manifest.json +8 -8
  450. package/app/.next-cli-build/server/chunks/1158.js +1 -0
  451. package/app/.next-cli-build/server/chunks/1274.js +1 -0
  452. package/app/.next-cli-build/server/chunks/1351.js +1 -0
  453. package/app/.next-cli-build/server/chunks/1792.js +2 -0
  454. package/app/.next-cli-build/server/chunks/{159.js → 1837.js} +1 -1
  455. package/app/.next-cli-build/server/chunks/1937.js +1 -1
  456. package/app/.next-cli-build/server/chunks/1998.js +1 -1
  457. package/app/.next-cli-build/server/chunks/{3986.js → 2142.js} +2 -2
  458. package/app/.next-cli-build/server/chunks/{9508.js → 27.js} +5 -42
  459. package/app/.next-cli-build/server/chunks/3423.js +1 -0
  460. package/app/.next-cli-build/server/chunks/3446.js +1 -1
  461. package/app/.next-cli-build/server/chunks/3593.js +1 -1
  462. package/app/.next-cli-build/server/chunks/369.js +10 -10
  463. package/app/.next-cli-build/server/chunks/3735.js +2 -2
  464. package/app/.next-cli-build/server/chunks/403.js +1 -0
  465. package/app/.next-cli-build/server/chunks/4330.js +7 -0
  466. package/app/.next-cli-build/server/chunks/{940.js → 4675.js} +2 -2
  467. package/app/.next-cli-build/server/chunks/4739.js +1 -1
  468. package/app/.next-cli-build/server/chunks/4780.js +1 -1
  469. package/app/.next-cli-build/server/chunks/4803.js +1 -1
  470. package/app/.next-cli-build/server/chunks/507.js +1 -1
  471. package/app/.next-cli-build/server/chunks/5115.js +1 -0
  472. package/app/.next-cli-build/server/chunks/519.js +1 -0
  473. package/app/.next-cli-build/server/chunks/5195.js +1 -0
  474. package/app/.next-cli-build/server/chunks/5258.js +1 -1
  475. package/app/.next-cli-build/server/chunks/5717.js +9 -14
  476. package/app/.next-cli-build/server/chunks/5774.js +1 -0
  477. package/app/.next-cli-build/server/chunks/5781.js +2 -2
  478. package/app/.next-cli-build/server/chunks/5888.js +1 -1
  479. package/app/.next-cli-build/server/chunks/5920.js +2 -2
  480. package/app/.next-cli-build/server/chunks/6194.js +1 -0
  481. package/app/.next-cli-build/server/chunks/6252.js +1 -1
  482. package/app/.next-cli-build/server/chunks/6305.js +2 -0
  483. package/app/.next-cli-build/server/chunks/6328.js +1 -1
  484. package/app/.next-cli-build/server/chunks/6406.js +1 -1
  485. package/app/.next-cli-build/server/chunks/6492.js +1 -1
  486. package/app/.next-cli-build/server/chunks/{5913.js → 6757.js} +38 -1
  487. package/app/.next-cli-build/server/chunks/698.js +1 -1
  488. package/app/.next-cli-build/server/chunks/7133.js +1 -0
  489. package/app/.next-cli-build/server/chunks/7454.js +1 -1
  490. package/app/.next-cli-build/server/chunks/{3072.js → 7880.js} +2 -2
  491. package/app/.next-cli-build/server/chunks/7965.js +1 -1
  492. package/app/.next-cli-build/server/chunks/8027.js +63 -0
  493. package/app/.next-cli-build/server/chunks/8062.js +1 -1
  494. package/app/.next-cli-build/server/chunks/8400.js +12 -12
  495. package/app/.next-cli-build/server/chunks/8469.js +1 -1
  496. package/app/.next-cli-build/server/chunks/8520.js +1 -1
  497. package/app/.next-cli-build/server/chunks/869.js +1 -1
  498. package/app/.next-cli-build/server/chunks/8775.js +1 -1
  499. package/app/.next-cli-build/server/chunks/8789.js +1 -1
  500. package/app/.next-cli-build/server/chunks/8942.js +2 -2
  501. package/app/.next-cli-build/server/chunks/8976.js +1 -1
  502. package/app/.next-cli-build/server/chunks/8998.js +33 -38
  503. package/app/.next-cli-build/server/chunks/9059.js +1 -0
  504. package/app/.next-cli-build/server/chunks/9091.js +3 -3
  505. package/app/.next-cli-build/server/chunks/9261.js +2 -2
  506. package/app/.next-cli-build/server/chunks/9264.js +2 -2
  507. package/app/.next-cli-build/server/chunks/9421.js +2 -2
  508. package/app/.next-cli-build/server/chunks/static/media/versions.4155c5ec.json +24 -0
  509. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  510. package/app/.next-cli-build/server/middleware.js +11 -16
  511. package/app/.next-cli-build/server/pages/404.html +1 -1
  512. package/app/.next-cli-build/server/pages/500.html +1 -1
  513. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  514. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  515. package/app/.next-cli-build/static/chunks/1321-a73f95036c368bd4.js +1 -0
  516. package/app/.next-cli-build/static/chunks/1330-846d6a9e1497295e.js +7 -0
  517. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/agent-library/page-65e302b698beee56.js +1 -0
  518. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-337881fe6c0cc77a.js +16 -0
  519. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/loading-c80ac975cf0f4842.js +1 -0
  520. package/app/{.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-78d098f14f8cff05.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-efb20dd903e0dc94.js} +10 -10
  521. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-03290d1edb08623a.js +4 -0
  522. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-9bcd63bfeeac87c6.js +1 -0
  523. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-97e0f7067cab0724.js → page-ca71683d9d850162.js} +3 -3
  524. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/page-c5c37fbce431369b.js +1 -0
  525. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-b582299fa61407d9.js +1 -0
  526. package/app/.next-cli-build/static/css/92ffae29025c5847.css +1 -0
  527. package/app/open-sse/identity/snapshots/versions.json +9 -5
  528. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  529. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  530. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  531. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  532. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  533. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  534. package/app/package.json +1 -1
  535. package/app/public/i18n/literals/zh-CN.json +17 -1
  536. package/app/src/lib/updater/updater.js +7 -2
  537. package/cli.js +85 -33
  538. package/hooks/trayRuntime.js +72 -17
  539. package/package.json +1 -1
  540. package/src/cli/api/client.js +9 -3
  541. package/src/cli/cliOptions.js +1 -1
  542. package/src/cli/processManager.js +61 -1
  543. package/src/cli/serverStatus.js +66 -4
  544. package/src/cli/terminalUI.js +5 -2
  545. package/src/cli/tray/autostart.js +20 -4
  546. package/src/cli/tray/tray.js +4 -1
  547. package/src/cli/utils/display.js +20 -0
  548. package/app/.next/static/chunks/1321-0003ef56aef2b3ab.js +0 -1
  549. package/app/.next/static/chunks/1330-56405eca78b12fee.js +0 -7
  550. package/app/.next/static/chunks/app/(dashboard)/dashboard/agent-library/page-40f3ca16440f8e17.js +0 -1
  551. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-ca47b09e6ed6ae7b.js +0 -16
  552. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-ff13a39fb7744f5e.js +0 -4
  553. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-86cd6523dcd61f1b.js +0 -1
  554. package/app/.next/static/chunks/app/(dashboard)/dashboard/pxpipe/page-1805f993834a1adb.js +0 -1
  555. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-645e7c5ec034fe8c.js +0 -1
  556. package/app/.next/static/css/196a6347b9104610.css +0 -1
  557. package/app/.next-cli-build/server/chunks/1350.js +0 -1
  558. package/app/.next-cli-build/server/chunks/1656.js +0 -2
  559. package/app/.next-cli-build/server/chunks/194.js +0 -1
  560. package/app/.next-cli-build/server/chunks/3026.js +0 -1
  561. package/app/.next-cli-build/server/chunks/5616.js +0 -1
  562. package/app/.next-cli-build/server/chunks/6052.js +0 -2
  563. package/app/.next-cli-build/server/chunks/6182.js +0 -63
  564. package/app/.next-cli-build/server/chunks/6274.js +0 -1
  565. package/app/.next-cli-build/server/chunks/6347.js +0 -1
  566. package/app/.next-cli-build/server/chunks/849.js +0 -1
  567. package/app/.next-cli-build/server/chunks/8658.js +0 -1
  568. package/app/.next-cli-build/server/chunks/8834.js +0 -7
  569. package/app/.next-cli-build/server/chunks/9617.js +0 -1
  570. package/app/.next-cli-build/server/chunks/static/media/versions.401d57e8.json +0 -20
  571. package/app/.next-cli-build/static/chunks/1321-0003ef56aef2b3ab.js +0 -1
  572. package/app/.next-cli-build/static/chunks/1330-56405eca78b12fee.js +0 -7
  573. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/agent-library/page-40f3ca16440f8e17.js +0 -1
  574. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-ca47b09e6ed6ae7b.js +0 -16
  575. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-ff13a39fb7744f5e.js +0 -4
  576. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-86cd6523dcd61f1b.js +0 -1
  577. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/page-1805f993834a1adb.js +0 -1
  578. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-645e7c5ec034fe8c.js +0 -1
  579. package/app/.next-cli-build/static/css/196a6347b9104610.css +0 -1
  580. /package/app/.next/static/{Kxe3gixpS84MCzX8yohZb → pVi5nGAVrNaYdEp0c24Nk}/_buildManifest.js +0 -0
  581. /package/app/.next/static/{Kxe3gixpS84MCzX8yohZb → pVi5nGAVrNaYdEp0c24Nk}/_ssgManifest.js +0 -0
  582. /package/app/.next-cli-build/static/{Kxe3gixpS84MCzX8yohZb → pVi5nGAVrNaYdEp0c24Nk}/_buildManifest.js +0 -0
  583. /package/app/.next-cli-build/static/{Kxe3gixpS84MCzX8yohZb → pVi5nGAVrNaYdEp0c24Nk}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";exports.id=1351,exports.ids=[1351],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},18271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>m,refreshAndUpdateCredentials:()=>l});var e=c(30369),f=c(15717),g=c(56002),h=c(48400),i=c(39326),j=c(40615),k=a([e,h]);[e,h]=k.then?(await k)():k;let n=["expired","authentication","unauthorized","401","re-authorize"];async function l(a,b=!1,c=null){let d=(0,h.getExecutor)(a.provider),e={accessToken:a.accessToken,refreshToken:a.refreshToken,idToken:a.idToken,expiresAt:a.expiresAt||a.tokenExpiresAt,lastRefreshAt:a.lastRefreshAt,connectionId:a.id,providerSpecificData:a.providerSpecificData,copilotToken:a.providerSpecificData?.copilotToken,copilotTokenExpiresAt:a.providerSpecificData?.copilotTokenExpiresAt};if(!(b||d.needsRefresh(e)))return{connection:a,refreshed:!1};let g=await d.refreshCredentials(e,console,c);if(!g){if(a.accessToken)return{connection:a,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let i={updatedAt:new Date().toISOString()};g.accessToken&&(i.accessToken=g.accessToken),g.refreshToken&&(i.refreshToken=g.refreshToken),g.idToken&&(i.idToken=g.idToken),g.lastRefreshAt&&(i.lastRefreshAt=g.lastRefreshAt),g.expiresIn?(i.expiresAt=new Date(Date.now()+1e3*g.expiresIn).toISOString(),i.expiresIn=g.expiresIn):g.expiresAt&&(i.expiresAt=g.expiresAt);let j={...g.providerSpecificData||{},...g.copilotToken?{copilotToken:g.copilotToken}:{},...g.copilotTokenExpiresAt?{copilotTokenExpiresAt:g.copilotTokenExpiresAt}:{}};return Object.keys(j).length>0&&(i.providerSpecificData={...a.providerSpecificData||{},...j}),await (0,f.updateProviderConnection)(a.id,i),{connection:{...a,...i,providerSpecificData:i.providerSpecificData||a.providerSpecificData},refreshed:!0}}async function m(a,{params:b}){let c;try{let{connectionId:d}=await b,e="1"===new URL(a.url).searchParams.get("force");if(!(c=await (0,f.Mc)(d)))return Response.json({error:"Connection not found"},{status:404});let h="oauth"===c.authType,k=("apikey"===c.authType||"api_key"===c.authType)&&j.jO.includes(c.provider);if(!h&&!k)return Response.json({message:"Usage not available for this connection"});let m=await (0,i.B)(c.providerSpecificData),o={connectionProxyEnabled:!0===m.connectionProxyEnabled,connectionProxyUrl:m.connectionProxyUrl||"",connectionNoProxy:m.connectionNoProxy||"",vercelRelayUrl:m.vercelRelayUrl||"",strictProxy:!1};if(h)try{c=(await l(c,!1,o)).connection}catch(a){return console.error("[Usage API] Credential refresh failed:",a),Response.json({error:`Credential refresh failed: ${a.message}`},{status:401})}let p=await (0,g.my)(c,o,{force:e});if(h&&function(a){if(!a?.message)return!1;let b=a.message.toLowerCase();return n.some(a=>b.includes(a))}(p)&&c.refreshToken)try{c=(await l(c,!0,o)).connection,p=await (0,g.my)(c,o,{force:e})}catch(a){console.warn(`[Usage] ${c.provider}: force refresh failed: ${a.message}`)}return Response.json(p)}catch(b){let a=c?.provider??"unknown";return console.warn(`[Usage] ${a}: ${b.message}`),Response.json({error:b.message},{status:500})}}d()}catch(a){d(a)}})},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},49485:(a,b,c)=>{c.d(b,{RO:()=>m,Tl:()=>k,Yt:()=>l});var d=c(46052),e=c(88705);let f={usageUrl:(0,e.U)("codex").url,resetCreditsUrl:(0,e.U)("codex").resetCreditsUrl,resetCreditsConsumeUrl:(0,e.U)("codex").resetCreditsConsumeUrl};function g(a){if(!a)return null;let b=a instanceof Date?a:new Date("number"==typeof a&&a<1e12?1e3*a:a);return Number.isFinite(b.getTime())?b.toISOString():null}function h(a){return!a||"object"!=typeof a||Array.isArray(a)?null:a.rate_limit&&"object"==typeof a.rate_limit?a.rate_limit:a}function i(a){let b=Math.max(0,Math.min(100,(0,e.IQ)(a?.used_percent??a?.percent_used,0)));return{used:b,total:100,remaining:Math.max(0,100-b),resetAt:(0,e.eZ)(a?.reset_at??a?.resets_at??a?.resetAt??null),unlimited:!1}}function j(a,b,c){let d=h(c);if(!d)return!1;let e=d.primary_window||d.primary||c.primary_window||c.primary,f=d.secondary_window||d.secondary||c.secondary_window||c.secondary,g=!1;return e&&(a[b?`${b}_session`:"session"]=i(e),g=!0),f&&(a[b?`${b}_weekly`:"weekly"]=i(f),g=!0),g}async function k(a,b=null){try{let c=await (0,d.Fm)(f.usageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"},identity:"codex-cli",provider:"codex",format:"codex"},b);if(!c.ok)return{message:`Codex connected. Usage API temporarily unavailable (${c.status}).`};let g=await c.json(),i=g.rate_limit||g.rate_limits||g.rate_limits_by_limit_id?.codex||{},k=function(a){if(a.code_review_rate_limit||a.review_rate_limit)return a.code_review_rate_limit||a.review_rate_limit;let b=a.rate_limits_by_limit_id;return b&&"object"==typeof b&&!Array.isArray(b)?b.code_review||b.codex_review||b.review||null:(Array.isArray(a.additional_rate_limits)?a.additional_rate_limits:[]).find(a=>{let b=String(a?.limit_name||a?.metered_feature||a?.id||"").toLowerCase();return"code_review"===b||"codex_review"===b||"review"===b||b.includes("review")})||null}(g),l=Math.max(0,(0,e.IQ)(g.rate_limit_reset_credits?.available_count,0)),m={};return j(m,"",i),j(m,"review",k),{plan:g.plan_type||g.summary?.plan||"unknown",limitReached:h(i)?.limit_reached||!1,reviewLimitReached:h(k)?.limit_reached||!1,resetCredits:{availableCount:l},quotas:m}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function l(a,b=null,c=null){if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");let h=c?.workspaceId||c?.accountId||c?.chatgptAccountId||null,i={Authorization:`Bearer ${a}`,Accept:"application/json","OpenAI-Beta":"codex-1",originator:"codex_cli_rs"};h&&(i["ChatGPT-Account-ID"]=h);let j=await (0,d.Fm)(f.resetCreditsUrl,{method:"GET",headers:i,identity:"codex-cli",provider:"codex",format:"codex"},b),k=null;try{k=await j.json()}catch{k=null}if(!j.ok)throw Error(k?.message||k?.error||k?.detail||`Codex reset credits API unavailable (${j.status}).`);let m=Array.isArray(k?.credits)?k.credits:[];return{availableCount:Math.max(0,(0,e.IQ)(k?.available_count??k?.availableCount,0)),credits:m.map(a=>({status:String(a?.status||"unknown"),grantedAt:g(a?.granted_at??a?.grantedAt),expiresAt:g(a?.expires_at??a?.expiresAt)}))}}async function m(a,b,c=null){let g;if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");if(!b||"string"!=typeof b)throw Error("A redeem request id is required to consume a Codex reset credit.");let h=null;try{g=await (0,d.Fm)(f.resetCreditsConsumeUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({redeem_request_id:b}),identity:"codex-cli",provider:"codex",format:"codex"},c);let e=await g.text();h=e?JSON.parse(e):null}catch(a){throw Error(`Failed to consume Codex reset credit: ${a.message}`)}let i=h?.code||null,j=(0,e.IQ)(h?.windows_reset,0);return{ok:g.ok&&("reset"===i||j>0),noCredit:g.ok&&"no_credit"===i,status:g.status,code:i,windowsReset:j,message:h?.message||null,raw:h}}},56002:(a,b,c)=>{c.d(b,{RO:()=>o.RO,Yt:()=>o.Yt,my:()=>U});var d=c(46052),e=c(88705);async function f(a,b,c=null){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await (0,d.Fm)((0,e.U)("github").url,{headers:{Authorization:`token ${a}`,Accept:"application/json"},identity:"copilot",provider:"github",format:"openai"},c);if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let f=await b.json();if(f.quota_snapshots){let a=f.quota_snapshots,b=(0,e.eZ)(f.quota_reset_date);return{plan:f.copilot_plan,resetDate:f.quota_reset_date,quotas:{chat:{...g(a.chat),resetAt:b},completions:{...g(a.completions),resetAt:b},premium_interactions:{...g(a.premium_interactions),resetAt:b}}}}if(f.monthly_quotas||f.limited_user_quotas){let a=f.monthly_quotas||{},b=f.limited_user_quotas||{},c=(0,e.eZ)(f.limited_user_reset_date);return{plan:f.copilot_plan||f.access_type_sku,resetDate:f.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:c},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:c}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function g(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}var h=c(28730);let i=(0,e.U)("antigravity");async function j(a,b,c=null){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d=(0,e.gD)(b?.projectId),f="Free";if(!d){let b=await k(a,c);d=(0,e.gD)(b?.cloudaicompanionProject),f=b?.currentTier?.name||f}if(!d)return{plan:f,message:"Gemini CLI project ID not available. Reconnect Gemini CLI, or configure a Google Cloud project with Gemini Code Assist access before checking quota."};let g=await (0,e.u9)((0,e.U)("gemini-cli").quotaUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:d}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,c);if(!g.ok)return{plan:f,message:`Gemini CLI quota error (${g.status}).`};let h=await g.json(),i={};if(Array.isArray(h.buckets))for(let a of h.buckets){if(!a.modelId||null==a.remainingFraction)continue;let b=Number(a.remainingFraction)||0,c=Math.round(1e3*b),d=Math.max(0,1e3-c);i[a.modelId]={used:d,total:1e3,resetAt:(0,e.eZ)(a.resetTime),remainingPercentage:100*b,unlimited:!1}}return{plan:f,quotas:i}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function k(a,b=null){try{let c=await (0,e.u9)((0,e.U)("gemini-cli").loadCodeAssistUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,b);if(!c.ok)return null;return await c.json()}catch{return null}}async function l(a,b,c=null){try{let b=await m(a,c),d=b?.cloudaicompanionProject||null,f=await (0,e.u9)(i.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","X-Client-Name":"antigravity"},body:JSON.stringify({...d?{project:d}:{}}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,c);if(403===f.status)return{message:"Antigravity quota API access forbidden. Chat may still work.",quotas:{}};if(401===f.status)return{message:"Antigravity quota API authentication expired. Chat may still work.",quotas:{}};if(!f.ok)throw Error(`Antigravity API error: ${f.status}`);let g=await f.json(),h={};if(g.models){let a=["gemini-3-flash-agent","gemini-3.5-flash-low","gemini-3.5-flash-extra-low","gemini-pro-agent","gemini-3.1-pro-low","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash","gemini-3.1-flash-image","gemini-3-pro-image"];for(let[b,c]of Object.entries(g.models)){if(!c.quotaInfo||c.isInternal||!a.includes(b))continue;let d=c.quotaInfo.remainingFraction||0,f=100*d,g=Math.round(1e3*d),i=1e3-g;h[b]={used:i,total:1e3,resetAt:(0,e.eZ)(c.quotaInfo.resetTime),remainingPercentage:f,unlimited:!1,displayName:c.displayName||b}}}return{plan:b?.currentTier?.name||"Unknown",quotas:h,subscriptionInfo:b}}catch(a){return console.error("[Antigravity Usage] Error:",a.message,a.cause),{message:`Antigravity error: ${a.message}`}}}async function m(a,b=null){try{let c=await (0,e.u9)(i.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn,mode:1}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,b);if(!c.ok)return null;return await c.json()}catch(a){return console.error("[Antigravity Subscription] Error:",a.message),null}}var n=c(98594),o=c(49485),p=c(3148);async function q(a,b,c=null){let f=b?.authMethod||"builder-id",g="api_key"===f,h=g?{tokentype:"API_KEY"}:{},i="external_idp"===f?{TokenType:"EXTERNAL_IDP"}:{},j=g?b?.profileArn||"":b?.profileArn||(0,p.We)(f),k=new URLSearchParams({isEmailRequired:"true",origin:"AI_EDITOR",resourceType:"AGENTIC_REQUEST"}),l=!1,m=[];for(let b of[{name:"codewhisperer-get",run:async()=>(0,d.Fm)(`${(0,e.U)("kiro").cwHost}${(0,e.U)("kiro").limitsPath}?${k.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","x-amz-user-agent":"aws-sdk-js/1.0.0 KiroIDE","user-agent":"aws-sdk-js/1.0.0 KiroIDE",...h,...i}},c)},{name:"codewhisperer-post",run:async()=>(0,d.Fm)((0,e.U)("kiro").cwHost,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json",...h,...i},body:JSON.stringify({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"})},c)},{name:"q-get",run:async()=>{let b=new URLSearchParams({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"});return(0,d.Fm)(`${(0,e.U)("kiro").qHost}${(0,e.U)("kiro").limitsPath}?${b}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...h,...i}},c)}}])try{let a=await b.run();if(!a.ok){let c=await a.text().catch(()=>"");(401===a.status||403===a.status)&&(l=!0),m.push(`${b.name}:${a.status}${c?`:${c}`:""}`);continue}let c=await a.json();return function(a){let b=a.usageBreakdownList||[],c={},d=(0,e.eZ)(a.nextDateReset||a.resetDate);return b.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",f=a.currentUsageWithPrecision||0,g=a.usageLimitWithPrecision||0;if(c[b]={used:f,total:g,remaining:g-f,resetAt:d,unlimited:!1},a.freeTrialInfo){let f=a.freeTrialInfo.currentUsageWithPrecision||0,g=a.freeTrialInfo.usageLimitWithPrecision||0;c[`${b}_freetrial`]={used:f,total:g,remaining:g-f,resetAt:(0,e.eZ)(a.freeTrialInfo.freeTrialExpiry||d),unlimited:!1}}}),{plan:a.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:c}}(c)}catch(a){m.push(`${b.name}:${a.message}`)}return l&&"idc"===f?{message:"Kiro quota API is unavailable for the current AWS IAM Identity Center session. Chat may still work. If this persists after renewing your session, reconnect Kiro.",quotas:{}}:l&&("google"===f||"github"===f)?{message:"Kiro quota API authentication expired. Chat may still work.",quotas:{}}:l?{message:"Kiro quota API rejected the current token. Chat may still work.",quotas:{}}:{message:m.length>0?`Unable to fetch Kiro usage right now. (${m[m.length-1]})`:"Unable to fetch Kiro usage right now.",quotas:{}}}let r={minimax:(0,e.U)("minimax").urls,"minimax-cn":(0,e.U)("minimax-cn").urls};function s(a,b,c){return a&&"object"==typeof a?a[b]??a[c]??null:null}function t(a,b,c){if(!a||"object"!=typeof a)return null;let d=a[b]??a[c];if(null==d)return null;let e=Number(d);return Number.isFinite(e)?Math.max(0,Math.min(100,e)):null}function u(a){return Math.max(0,Number(s(a,"current_interval_total_count","currentIntervalTotalCount"))||0)}function v(a){return Math.max(0,Number(s(a,"current_weekly_total_count","currentWeeklyTotalCount"))||0)}function w(a){return!!(u(a)>0||v(a)>0)||null!==t(a,"current_interval_remaining_percent","currentIntervalRemainingPercent")||null!==t(a,"current_weekly_remaining_percent","currentWeeklyRemainingPercent")}function x(a,b,c,d,f,g,h,i,j,k){let l=d(c),m=t(c,h,i);if(l<=0&&null===m)return;let n=Math.max(0,Number(s(c,f,g))||0),o=l,p=n;l<=0&&(o=100,p=k?Math.round(m/100*o):Math.round(o*(1-m/100))),a[b]=function(a,b,c,d,e=null){var f,g,h;let i=Math.max(0,a),j=d?Math.max(i-b,0):Math.min(Math.max(0,b),i),k=Math.max(i-j,0),l=(f=e,g=k,h=i,null!=f&&Number.isFinite(f)?Math.max(0,Math.min(100,f)):h>0?Math.max(0,Math.min(100,g/h*100)):0);return{used:j,total:i,remaining:k,remainingPercentage:l,resetAt:c,unlimited:!1}}(o,p,function(a,b,c,d,f,g){let h=Number(s(a,c,d))||0;return h>0?new Date(b+h).toISOString():(0,e.eZ)(s(a,f,g))}(c,...j),k,m)}async function y(a,b,c=null){if(!a)return{message:"MiniMax API key not available."};let e=r[b]||[],f="";for(let b=0;b<e.length;b+=1){let g=e[b],h=b<e.length-1;try{let b=await (0,d.Fm)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}},c),e=await b.text(),i={};if(e)try{i=JSON.parse(e)}catch{i={}}let j=(i?.base_resp??i?.baseResp)||{},k=Number(j.status_code??j.statusCode)||0,l=String(j.status_msg??j.statusMsg??"").trim(),m=`${l} ${e}`.trim(),n=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===k||n.test(m))return{message:"MiniMax API key invalid or inactive. Use an active Token/Coding Plan key."};if(!b.ok){if(f=`MiniMax usage endpoint error (${b.status})`,(404===b.status||405===b.status||b.status>=500)&&h)continue;return{message:`MiniMax connected. ${f}`}}if(0!==k)return{message:`MiniMax connected. ${l||"Upstream quota API error"}`};let o=i?.model_remains??i?.modelRemains,p=(Array.isArray(o)?o:[]).filter(w);if(0===p.length)return{message:"MiniMax connected. No quota data was returned."};let q=Date.now(),r=g.includes("/coding_plan/remains"),t={};for(let a of p){let b=function(a){let b=String(s(a,"model_name","modelName")||"").trim();return b?"MiniMax-M*"===b||"general"===b?"M-series":b.replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase()).replace(/\bTo\b/g,"to").replace(/\bTts\b/g,"TTS").replace(/\bHd\b/g,"HD"):"MiniMax"}(a);x(t,`${b} (5h)`,a,u,"current_interval_usage_count","currentIntervalUsageCount","current_interval_remaining_percent","currentIntervalRemainingPercent",[q,"remains_time","remainsTime","end_time","endTime"],r),x(t,`${b} (7d)`,a,v,"current_weekly_usage_count","currentWeeklyUsageCount","current_weekly_remaining_percent","currentWeeklyRemainingPercent",[q,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"],r)}if(0===Object.keys(t).length)return{message:"MiniMax connected. Unable to extract quota usage."};return{quotas:t}}catch(a){if(f=a.message,!h)break}}return{message:f?`MiniMax connected. Unable to fetch usage: ${f}`:"MiniMax connected. Unable to fetch usage."}}var z=c(45350);let A="codebuddy-cn";function B(a,b){let c=Number(a??b);return Number.isFinite(c)?c:0}async function C(a,b,c,f=null){let g=a||b;if(!g)return{message:"CodeBuddy CN credential not available."};try{let a=await (0,d.Fm)((0,e.U)(A).url,{method:"POST",headers:{...z.xq[A]?.headers||{},Authorization:`Bearer ${g}`,"Content-Type":"application/json",Accept:"application/json"},body:"{}"},f);if(401===a.status||403===a.status)return{message:"CodeBuddy CN credential invalid or expired."};if(!a.ok)return{message:`CodeBuddy CN quota API error (${a.status}).`};let b=await a.json();if(b?.code!==0)return{message:`CodeBuddy CN quota error: ${b?.msg||"unknown"}`};let c=b?.data?.Response?.Data||{},h=Array.isArray(c.Accounts)?c.Accounts:[];if(0===h.length)return{message:"CodeBuddy CN connected. No credit package found."};let i=a=>{let b=(0,e.eZ)(a.CycleEndTime);return b?new Date(b).getTime():1/0},j=a=>{let b=i(a),c=Number(a.DeductionEndTime);return Number.isFinite(b)&&Number.isFinite(c)&&c-b>1728e5},k=(a,b)=>i(a)-i(b),l=h.filter(j).sort(k),m=h.filter(a=>!j(a)).sort(k),n={},o={};l.forEach(a=>{let b=function(a){let b=(0,e.eZ)(a.CycleStartTime),c=(0,e.eZ)(a.CycleEndTime);if(b&&c){let a=(new Date(c).getTime()-new Date(b).getTime())/864e5;if(a<=1.5)return"Daily";if(a<=10)return"Weekly"}return"Monthly"}(a);o[b]=(o[b]||0)+1,n[o[b]>1?`${b} ${o[b]}`:b]={used:B(a.CycleCapacityUsedPrecise,a.CycleCapacityUsed),total:B(a.CycleCapacitySizePrecise,a.CycleCapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!0}}),m.forEach((a,b)=>{n[`Bonus Pack ${b+1}`]={used:B(a.CapacityUsedPrecise,a.CapacityUsed),total:B(a.CapacitySizePrecise,a.CapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!1}});let p=l[0]||h[0]||{};return{plan:p.PackageName||p.SubProductName||"CodeBuddy CN",quotas:n}}catch(a){return{message:`CodeBuddy CN error: ${a.message}`}}}let D={LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"};function E({used:a,total:b,remaining:c,resetAt:d}){let f,g=Math.max(0,(0,e.IQ)(b,0)),h=Math.max(0,(0,e.IQ)(a,0));return f=g>0&&null!=c&&Number.isFinite(Number(c))?Math.max(0,Number(c))/g*100:g>0?Math.max(0,g-h)/g*100:0,{used:h,total:g,remainingPercentage:f,resetAt:d||null,unlimited:!1}}async function F(a=null,b=null,c=null,f=null){let g="string"==typeof b&&b.length>0,i=!g&&"string"==typeof a&&a.length>0;if(!g&&!i)return{message:"Kimi access token or API key not available."};let j=g?{"x-api-key":b}:{Authorization:`Bearer ${a}`,...(0,h.VK)(f?.deviceId)};try{let a,b=await (0,d.Fm)("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{...j,"Content-Type":"application/json",Accept:"application/json"}},c),f=await b.text().catch(()=>"");if(!b.ok)return{plan:"Kimi Coding",message:function(a,b){let c=null;try{c=JSON.parse(b||"")}catch{}let d=Array.isArray(c?.details)?c.details[0]:null,e=d?.debug||c?.debug||null,f=e?.reason||c?.reason||"",g=e?.localizedMessage?.message||d?.localizedMessage?.message||c?.message||"";if(401===a)return"Kimi authentication expired. Please re-authorize.";if(403===a&&("REASON_FEATURE_NO_PERMISSION"===f||/permission_denied|do not have permission|subscribe/i.test(`${c?.code||""} ${g} ${b||""}`)))return g||"Kimi connected, but this account has no permission to view usage. Subscribe to Kimi Code to access quota.";let h=(g||b||"").slice(0,100);return h?`Kimi Coding connected. API Error ${a}: ${h}`:`Kimi Coding connected. API Error ${a}`}(b.status,f)};try{a=JSON.parse(f||"{}")}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let g={},h=a?.usage&&"object"==typeof a.usage?a.usage:{},i=(0,e.IQ)(h.limit??h.Limit,0),k=(0,e.IQ)(h.used??h.Used,0),l=h.remaining??h.Remaining,m=null!=l&&""!==l?(0,e.IQ)(l,NaN):NaN,n=h.resetTime||h.ResetTime||h.reset_at||h.resetAt;for(let b of(i>0&&(g.Weekly=E({used:k,total:i,remaining:Number.isFinite(m)?m:null,resetAt:(0,e.eZ)(n)})),Array.isArray(a?.limits)?a.limits:[])){if(!b||"object"!=typeof b)continue;let a=b.detail&&"object"==typeof b.detail?b.detail:{},c=(0,e.IQ)(a.limit??a.Limit,0),d=(0,e.IQ)(a.remaining??a.Remaining,NaN),f=a.resetTime||a.reset_at||a.resetAt;if(c>0){let a=Number.isFinite(d)?d:Math.max(0,c);g.Ratelimit=E({used:Math.max(0,c-a),total:c,remaining:a,resetAt:(0,e.eZ)(f)})}}let o=a?.user?.membership?.level,p=function(a){if(!a)return"";let b=String(a);return D[b]?D[b]:b.replace(/^LEVEL_/,"").toLowerCase()}(o)||"Kimi Coding";if(Object.keys(g).length>0)return{plan:p,quotas:g};return{plan:p,message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function G(a=null,b=null){if(!a||"string"!=typeof a||!a.trim())return{message:"DeepSeek API key not available. Add a key to view usage."};try{let c=await (0,d.Fm)("https://api.deepseek.com/user/balance",{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,"Content-Type":"application/json",Accept:"application/json"}},b);if(401===c.status||403===c.status)return{plan:"DeepSeek",message:"DeepSeek authentication failed. Check the API key."};if(!c.ok){let a=await c.text().catch(()=>"");return{plan:"DeepSeek",message:`DeepSeek balance API error (${c.status})${a?`: ${a.slice(0,120)}`:""}`}}let f=await c.json().catch(()=>null);if(!f||"object"!=typeof f)return{message:"DeepSeek balance response was not JSON."};let g=function(a){let b=Array.isArray(a?.balance_infos)?a.balance_infos:[],c=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b="string"==typeof a.currency?a.currency.toUpperCase():"";if(!b)continue;let d=(0,e.IQ)(a.total_balance??a.totalBalance,0);c.push({currency:b,totalBalance:d,grantedBalance:(0,e.IQ)(a.granted_balance??a.grantedBalance,0),toppedUpBalance:(0,e.IQ)(a.topped_up_balance??a.toppedUpBalance,0)})}return c}(f);if(0===g.length)return{plan:"DeepSeek",message:"DeepSeek connected. No balance data returned."};let h=!0===f.is_available||!0===f.isAvailable,i={};for(let a of g){let b=Math.max(0,a.totalBalance);i[`Balance (${a.currency})`]={used:0,total:b,remainingPercentage:100*(b>0),resetAt:null,unlimited:b>0}}return{plan:h?"DeepSeek":"DeepSeek (Insufficient Balance)",quotas:i}}catch(a){return{message:`DeepSeek error: ${a.message}`}}}var H=c(13247);let I=(a,b=0)=>a&&"object"==typeof a&&"val"in a?(0,e.IQ)(a.val,b):(0,e.IQ)(a,b);function J(a,b,c=null){let d=Math.max(0,b),e=Math.max(0,a);return{used:e,total:d,remainingPercentage:d?Math.max(0,(d-e)/d*100):0,resetAt:c,unlimited:!1}}async function K(a,b=null,c=null){if(!a)return{message:"Grok CLI access token not available."};let f=(0,H.Ab)(a,b||{}),g=(0,e.U)("grok-cli");try{let[a,b]=await Promise.all([(0,d.Fm)(g.url,{method:"GET",headers:f,...H.Ai},c),(0,d.Fm)(g.userUrl,{method:"GET",headers:f,signal:AbortSignal.timeout(2e3),...H.Ai},c).catch(()=>null)]);if(401===a.status||403===a.status)return{message:"Grok CLI authentication expired. Please re-authorize."};if(!a.ok)return{message:`Grok CLI billing API error (${a.status})`};let h=await a.json(),i=b?.ok?await b.json().catch(()=>null):null,j=function(a,b=null){let c=a&&"object"==typeof a?a:{},d=c.config&&"object"==typeof c.config?c.config:c,f=(0,e.eZ)(d.billingPeriodEnd||d.currentPeriod?.end||d.resetAt),g=b?.subscriptionTier||b?.subscription_tier||b?.subscription?.tier||"",h="string"==typeof g&&""!==g&&!/^(free|none|null)$/i.test(g),i={},j=I(d.monthlyLimit??c.monthlyLimit,NaN),k=I(d.includedUsed??c.includedUsed??d.totalUsed??c.totalUsed,0);Number.isFinite(j)&&j>0&&(i["Monthly included"]=J(k,j,f));let l=I(d.onDemandCap??c.onDemandCap,NaN),m=I(d.onDemandUsed??c.onDemandUsed,0);Number.isFinite(l)&&l>0?i["On-demand"]=J(m,l,f):h||0!==l||(i["On-demand"]=J(1,1,f));let n=I(d.prepaidBalance??c.prepaidBalance,NaN);return Number.isFinite(n)&&n>0&&(i.Prepaid=J(0,n)),{plan:g?String(g).replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()):b?.hasGrokCodeAccess?"Grok Code":"Grok Build",quotas:i,subscriptionAccess:h}}(h,i);if(Object.keys(j.quotas).length)return{plan:j.plan,quotas:j.quotas};return{plan:j.plan,quotas:{},message:j.subscriptionAccess?"Subscription access is active; Grok does not expose a numeric included quota.":"Grok Build connected, but no credit allotment was returned."}}catch(a){return{message:`Grok CLI usage error: ${a.message}`}}}let L={international:(0,e.U)("glm").url,china:(0,e.U)("glm-cn").url},M=(0,e.U)("vercel-ai-gateway").url;async function N(a,b){try{if(!b?.resourceUrl)return{message:"Qwen connected. No resource URL available."};return{message:"Qwen connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qwen usage."}}}async function O(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}async function P(a,b,c=null){if(!a)return{message:"Ollama Cloud API key not available."};try{let b,f=await (0,d.Fm)("https://ollama.com/api/usage",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(401===f.status||403===f.status)return{message:"Ollama Cloud API key invalid or expired."};if(!f.ok)return{message:`Ollama Cloud usage API error (${f.status}).`};try{b=await f.json()}catch{return{message:"Ollama Cloud usage response was not JSON."}}let g=await (0,d.Fm)("https://ollama.com/api/me",{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Length":"0"}},c).then(a=>a.ok?a.json():null).catch(()=>null),h="string"==typeof g?.Plan?g.Plan:"",i=h?h.charAt(0).toUpperCase()+h.slice(1).toLowerCase():"Ollama Cloud",j=b?.limits&&"object"==typeof b.limits?b.limits:{};function e(a,b=null){let c=Math.max(0,Math.min(1,Number(a)||0)),d=Math.round(100*c);return{used:d,total:100,remainingPercentage:100-d,resetAt:b,unlimited:!1}}let k=j.session?.usage,l=j.weekly?.usage,m=Number(k),n=Number(l),o=null!=k&&!Number.isNaN(m),p=null!=l&&!Number.isNaN(n);if(!o&&!p)return{plan:i,message:"Ollama Cloud connected. No usage limits reported.",quotas:{}};let q={};return o&&(q["Session (5h)"]=e(m)),p&&(q["Weekly (7d)"]=e(n)),{plan:i,quotas:q}}catch(a){return{message:`Ollama Cloud error: ${a.message}`}}}async function Q(a,b,c=null){if(!a)return{message:"GLM API key not available."};let e=L["glm-cn"===b?"china":"international"];try{let b=await (0,d.Fm)(e,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(!b.ok){if(401===b.status)return{message:"GLM API key invalid or expired."};return{message:`GLM quota API error (${b.status}).`}}let f=await b.json(),g=f?.data&&"object"==typeof f.data?f.data:{},h=Array.isArray(g.limits)?g.limits:[],i={};for(let a of h){if(!a||"TOKENS_LIMIT"!==a.type)continue;let b=Number(a.percentage)||0,c=Number(a.nextResetTime)||0,d=Math.max(0,100-b);i.session={used:b,total:100,remaining:d,remainingPercentage:d,resetAt:c>0?new Date(c).toISOString():null,unlimited:!1}}let j="string"==typeof g.level?g.level:"";return{plan:j?j.charAt(0).toUpperCase()+j.slice(1).toLowerCase():"Unknown",quotas:i}}catch(a){return{message:`GLM error: ${a.message}`}}}async function R(a,b=null){if(!a)return{message:"Vercel AI Gateway API key not available."};try{let c=await (0,d.Fm)(M,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(401===c.status||403===c.status)return{message:"Vercel AI Gateway API key invalid or expired."};if(!c.ok){let a=await c.text().catch(()=>""),b=a?`: ${a.slice(0,200)}`:"";return{message:`Vercel AI Gateway credits API error (${c.status})${b}`}}let e=await c.json(),f=Number(e?.balance)||0,g=Number(e?.total_used)||0;if(f<=0&&g<=0)return{plan:"Pay-as-you-go",message:"Vercel AI Gateway connected. No credit allocation found (BYOK or unfunded account).",quotas:{}};return{plan:"Pay-as-you-go",quotas:{"Used (USD)":{used:g,total:0,remaining:0,remainingPercentage:100,unlimited:!0},"Remaining (USD)":{used:f,total:5,remaining:f,remainingPercentage:f/5*100,unlimited:!1}}}}catch(a){return{message:`Vercel AI Gateway error: ${a.message}`}}}async function S(a,b=null){if(!a)return{message:"Qoder usage unavailable: no access token"};try{let c=await (0,d.Fm)((0,e.U)("qoder").url,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!c.ok)return{message:`Qoder connected. Usage fetch returned ${c.status}.`};let f=await c.json().catch(()=>null);if(!f)return{message:"Qoder connected. Usage response was not JSON."};let g=f.userQuota||{},h=f.orgResourcePackage||{},i=Number.isFinite(Number(f.expiresAt))&&Number(f.expiresAt)>0?Number(f.expiresAt):null,j=i?new Date(i).toISOString():null;return{quotas:{user:{total:Number(g.total)||0,used:Number(g.used)||0,remaining:Number(g.remaining)||0,unit:g.unit||"credits",resetAt:j},organization:{total:Number(h.total)||0,used:Number(h.used)||0,remaining:Number(h.remaining)||0,unit:h.unit||"credits",resetAt:j}},totalUsagePercentage:Number(f.totalUsagePercentage)||0,isQuotaExceeded:!!f.isQuotaExceeded,expiresAt:i}}catch(a){return{message:`Qoder connected. Unable to fetch usage: ${a.message}`}}}let T={github:a=>f(a.accessToken,a.providerSpecificData,a.proxyOptions),"gemini-cli":a=>j(a.accessToken,a.providerDataWithProjectId,a.proxyOptions),antigravity:a=>l(a.accessToken,a.providerSpecificData,a.proxyOptions),claude:a=>(0,n.g)(a.accessToken,a.proxyOptions,{force:a.force}),codex:a=>(0,o.Tl)(a.accessToken,a.proxyOptions),kiro:a=>q(a.accessToken,a.providerSpecificData,a.proxyOptions),qoder:a=>S(a.accessToken,a.proxyOptions),qwen:a=>N(a.accessToken,a.providerSpecificData),iflow:a=>O(a.accessToken),ollama:a=>P(a.apiKey,a.providerSpecificData,a.proxyOptions),glm:a=>Q(a.apiKey,a.provider,a.proxyOptions),"glm-cn":a=>Q(a.apiKey,a.provider,a.proxyOptions),minimax:a=>y(a.apiKey,a.provider,a.proxyOptions),"minimax-cn":a=>y(a.apiKey,a.provider,a.proxyOptions),"vercel-ai-gateway":a=>R(a.apiKey,a.proxyOptions),"codebuddy-cn":a=>C(a.accessToken,a.apiKey,a.providerSpecificData,a.proxyOptions),kimi:a=>F(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),"kimi-coding":a=>F(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),deepseek:a=>G(a.apiKey,a.proxyOptions),"grok-cli":a=>K(a.accessToken,a.providerSpecificData,a.proxyOptions)};async function U(a,b=null,c={}){let{provider:d,accessToken:e,apiKey:f,providerSpecificData:g,projectId:h}=a,i={...g||{},...h?{projectId:h}:{}},j=T[d];return j?await j({provider:d,accessToken:e,apiKey:f,providerSpecificData:g,providerDataWithProjectId:i,proxyOptions:b,force:!0===c.force}):{message:`Usage API not implemented for ${d}`}}},66451:(a,b,c)=>{c.d(b,{Xh:()=>f,js:()=>h,sc:()=>g});var d=c(58976);let e={el:"elevenlabs",jina:"jina-ai","jina-ai":"jina-ai",polly:"aws-polly","aws-polly":"aws-polly"};for(let a of d.A)for(let b of(e[a.id]=a.id,a.alias&&(e[a.alias]=a.id),a.aliases||[]))e[b]=a.id;function f(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}function g(a,b){var c,d;if(!b||"string"!=typeof a)return null;let f=b[a];if(!f){for(let[c,d]of Object.entries(b))if("string"==typeof c&&c.includes("*"))try{let b="^"+c.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")+"$";if(RegExp(b,"i").test(a)){f=d;break}}catch{}}if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:"string"==typeof f?{provider:null,model:f}:null}async function h(a,b){let c=f(a);if(!c.isAlias)return{provider:c.provider,model:c.model};let d="function"==typeof b?await b():b,e=g(c.model,d);return e||{provider:function(a){if(!a)return"openai";let b=a.toLowerCase();return i.find(([a])=>a.test(b))?.[1]||"openai"}(c.model),model:c.model}}let i=[[/^grok-build$/,"grok-cli"],[/^claude-/,"anthropic"],[/^gemini-/,"gemini"],[/^gpt-/,"openai"],[/^o[134]/,"openai"],[/^deepseek-/,"openrouter"]]},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},88705:(a,b,c)=>{c.d(b,{IQ:()=>h,U:()=>f,eZ:()=>g,gD:()=>i,u9:()=>j});var d=c(45350),e=c(46052);let f=a=>d.xq[a]?.usage||{};function g(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a){if(/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}function h(a,b=0){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 i(a){return"string"==typeof a?a.trim()||null:a&&"object"==typeof a&&"string"==typeof a.id&&a.id.trim()||null}async function j(a,b,c=1e4,d=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c);try{return await (0,e.Fm)(a,{...b,signal:f.signal},d)}finally{clearTimeout(g)}}},98594:(a,b,c)=>{c.d(b,{g:()=>j});var d=c(46052),e=c(92675),f=c(88705);let g={oauthUsageUrl:(0,f.U)("claude").oauthUrl,usageUrl:(0,f.U)("claude").orgUrl,settingsUrl:(0,f.U)("claude").settingsUrl,apiVersion:e.b8},h=new Map,i=new Map;async function j(a,b=null,c={}){let d=c?.force===!0;if(!d&&a){let b=i.get(a);if(b?.promise)return b.promise;if(b&&b.expiresAt>Date.now())return b.result}let e=!d&&a&&i.get(a)?.result||null,f=(async()=>{let c=await k(a,b);return a&&c?.quotas?(i.set(a,{result:c,expiresAt:Date.now()+3e5}),c):e||c})();return a&&i.set(a,{promise:f}),f.then(()=>{let b=i.get(a);a&&b?.promise===f&&i.delete(a)}),f}async function k(a,b=null){try{let c=h.get(a);if(c&&Date.now()<c)return await l(a,b);let e=await (0,d.Fm)(g.oauthUsageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(e.ok){let a=await e.json(),b={},c=a=>a&&"object"==typeof a&&"number"==typeof a.utilization,d=a=>{let b=a.utilization,c=Math.max(0,100-b);return{used:b,total:100,remaining:c,remainingPercentage:c,resetAt:(0,f.eZ)(a.resets_at),unlimited:!1}};for(let[e,f]of(c(a.five_hour)&&(b["session (5h)"]=d(a.five_hour)),c(a.seven_day)&&(b["weekly (7d)"]=d(a.seven_day)),Object.entries(a)))if(e.startsWith("seven_day_")&&"seven_day"!==e&&c(f)){let a=e.replace("seven_day_","");b[`weekly ${a} (7d)`]=d(f)}return{plan:"Claude Code",extraUsage:a.extra_usage??null,quotas:b}}return 429===e.status&&h.set(a,Date.now()+18e4),console.warn(`[Claude Usage] OAuth endpoint returned ${e.status}, falling back to legacy`),await l(a,b)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function l(a,b=null){try{let c=await (0,d.Fm)(g.settingsUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(c.ok){let e=await c.json();if(e.organization_id){let c=await (0,d.Fm)(g.usageUrl.replace("{org_id}",e.organization_id),{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(c.ok){let a=await c.json();return{plan:e.plan||"Unknown",organization:e.organization_name,quotas:a}}}return{plan:e.plan||"Unknown",organization:e.organization_name,message:"Claude connected. Usage details require admin access."}}return{message:"Claude connected. Usage API requires admin permissions."}}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}}};
@@ -0,0 +1,2 @@
1
+ exports.id=1792,exports.ids=[1792],exports.modules={6547:(a,b,c)=>{"use strict";c.d(b,{$3:()=>p,$R:()=>h,Dm:()=>r,E$:()=>j,Zb:()=>g,jI:()=>i,ti:()=>m});var d=c(92675),e=c(70628),f=c(13247);let g=["Accept","Authorization","Content-Type","User-Agent","X-Claude-Code-Session-Id","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-OS","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","X-Stainless-Timeout","anthropic-beta","anthropic-dangerous-direct-browser-access","anthropic-version","x-app","x-client-request-id","Connection","Host","Accept-Encoding","Content-Length"],h=g.filter(a=>"X-Stainless-Timeout"!==a),i={"claude-cli":{id:"claude-cli",tls:"claude-code",alpn:["http/1.1"],headerOrder:g,source:{npm:"@anthropic-ai/claude-code",capture:"claude-code-native",tlsSpec:"claude-code"},headers:function(a){let b=a?.version||"2.1.258",c=a?.entrypoint||"cli";return{"Anthropic-Version":d.b8,"Anthropic-Beta":a?.betas||"claude-code-20250219,interleaved-thinking-2025-05-14,redact-thinking-2026-02-12,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,effort-2025-11-24,structured-outputs-2025-12-15","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":a?.userAgent||`claude-cli/${b} (external, ${c})`,"X-App":"cli","X-Stainless-Runtime-Version":a?.runtimeVersion||process.version,"X-Stainless-Package-Version":a?.packageVersion||"0.112.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":a?.arch||(0,e.Tc)(),"X-Stainless-Os":a?.os||(0,e.vv)(),"X-Stainless-Timeout":"600"}}},"codex-cli":{id:"codex-cli",tls:"chrome",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","originator","session_id","User-Agent","version","chatgpt-account-id"],source:{npm:"@openai/codex"},headers:function(a){let b=a?.version||"0.149.0";return{originator:"codex_cli_rs","User-Agent":`codex_cli_rs/${b}`,version:b}}},"gemini-cli":{id:"gemini-cli",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Content-Type","Authorization","User-Agent","X-Goog-Api-Client","Accept"],source:{npm:"@google/gemini-cli"},headers:function(a){let b=a?.version||"0.56.0",c=a?.upstreamModel||"unknown",d="ia32"===(0,e.LY)()?"x86":(0,e.LY)();return{"User-Agent":`GeminiCLI/${b}/${c} (${(0,e.ol)()}; ${d}; terminal)`,"X-Goog-Api-Client":a?.apiClient||"google-genai-sdk/1.41.0 gl-node/v22.19.0"}}},"openai-node":{id:"openai-node",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","User-Agent"],source:{npm:"openai"},headers:function(){return{"User-Agent":`OpenAI/NodeJS/${process.version.replace(/^v/,"")}`}}},cline:{id:"cline",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","HTTP-Referer","X-Title","User-Agent","X-PLATFORM","X-PLATFORM-VERSION","X-CLIENT-TYPE","X-CLIENT-VERSION","X-CORE-VERSION","X-IS-MULTIROOT"],source:{npm:"cline"},headers:function(a){let b=a?.version||"3.0.0";return{"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`Cline/${b}`,"X-PLATFORM":(0,e.ol)()||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"extension","X-CLIENT-VERSION":b,"X-CORE-VERSION":b,"X-IS-MULTIROOT":"false"}}},chrome:{id:"chrome",tls:"chrome",alpn:["h2","http/1.1"],headerOrder:["User-Agent","Accept","Accept-Language","Accept-Encoding"],source:{capture:"chrome"},headers:function(){return{"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"}}},cursor:{id:"cursor",tls:"node",alpn:["h2","http/1.1"],headerOrder:[],source:{capture:"cursor"},headers:()=>({})},antigravity:{id:"antigravity",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","User-Agent","Accept"],source:{capture:"antigravity"},headers:function(a){let b=a?.version||"1.107.0";return{"User-Agent":`antigravity/${b} ${(0,e.ol)()}/${(0,e.LY)()}`}}},copilot:{id:"copilot",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","copilot-integration-id","editor-version","editor-plugin-version","user-agent","openai-intent","x-github-api-version"],source:{capture:"github-copilot"},headers:function(a){let b=a?.vscodeVersion||"1.110.0",c=a?.chatVersion||a?.version||"0.38.0";return{"copilot-integration-id":"vscode-chat","editor-version":`vscode/${b}`,"editor-plugin-version":`copilot-chat/${c}`,"user-agent":`GitHubCopilotChat/${c}`,"openai-intent":"conversation-panel","x-github-api-version":a?.apiVersion||"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user"}}},qwen:{id:"qwen",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","User-Agent","X-Stainless-Arch","X-Stainless-Os"],source:{capture:"qwen-code"},headers:function(a){let{os:b,arch:c,stainlessOs:d,stainlessArch:f}=a?.qwenOsArch||{os:"win32"===(0,e.ol)()?"windows":"darwin"===(0,e.ol)()?"darwin":"linux",arch:"arm64"===(0,e.LY)()?"arm64":"x64",stainlessOs:(0,e.vv)(),stainlessArch:(0,e.Tc)()},g=a?.version||"0.12.3",h=`QwenCode/${g} (${b}; ${c})`;return{"User-Agent":h,"X-DashScope-UserAgent":h,"X-Stainless-Arch":f,"X-Stainless-Os":d,"X-Stainless-Lang":"js","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":a?.runtimeVersion||process.version,"X-Stainless-Package-Version":a?.packageVersion||"5.11.0"}}},kimi:{id:"kimi",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","X-Msh-Version","X-Msh-Device-Model"],source:{capture:"kimi-code"},headers:function(){return{"X-Msh-Version":"2.1.2","X-Msh-Device-Model":`${(0,e.ol)()} ${(0,e.LY)()}`}}},"grok-cli":{id:"grok-cli",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","User-Agent"],source:{capture:"grok-cli"},headers:function(a){return{"User-Agent":`grok-cli/${a?.version||"1.0.0"}`}}},"grok-build":{id:"grok-build",tls:"node",alpn:["h2","http/1.1"],headerOrder:["Authorization","Content-Type","Accept","User-Agent","x-grok-client-identifier","x-grok-client-version"],source:{capture:"@xai-official/grok 0.2.99"},headers:function(){return{"User-Agent":`grok-shell/${f.uG} (linux; x86_64)`,"x-grok-client-identifier":f.rK,"x-grok-client-version":f.uG}}}};function j(a){return i[a]||i["openai-node"]}let k=new Set(["openai","openai-responses","openai-compat"]),l=new Set(["claude"]);function m(a,b={}){if("string"==typeof a&&a)return a;if(a&&"object"==typeof a&&a.profile)return a.profile;let c=b.format||"",d=b.provider||"";return"claude"===c||l.has(c)||"claude"===d||d.startsWith("anthropic-compatible")?"claude-cli":"codex"===d?"codex-cli":"gemini-cli"===d?"gemini-cli":"antigravity"===d?"antigravity":"github"===d?"copilot":"qwen"===d?"qwen":"cline"===d||"clinepass"===d?"cline":"kimi"===d||"kimi-coding"===d?"kimi":"xai"===d?"grok-cli":"grok-cli"===d?"grok-build":"grok-web"===d?"chrome":"cursor"===d||"cursor"===c?"cursor":(k.has(c),"openai-node")}let n=new Set(["user-agent","anthropic-beta","x-stainless-package-version","x-stainless-runtime-version","x-stainless-os","x-stainless-arch"]),o=new Set(["x-stainless-helper-method","x-stainless-retry-count"]);function p(a,b,c={}){var d;let e,f=j(b),g=(d=c.snapshot,"function"==typeof(e=j(b)).headers?e.headers(d):{...e.headers||{}});!0===c.stream&&"claude-cli"===b?g["X-Stainless-Helper-Method"]="stream":"claude-cli"===b&&delete g["X-Stainless-Helper-Method"],"number"==typeof c.retryCount&&"claude-cli"===b&&(g["X-Stainless-Retry-Count"]=String(c.retryCount));let h=new Map;for(let[b,c]of Object.entries(a||{})){let a=b.toLowerCase();("authorization"===a||"x-api-key"===a||"api-key"===a||"cookie"===a)&&h.set(a,[b,c])}let i=q(a,g),k=c.overlay&&"object"==typeof c.overlay?"claude-cli"===b?function(a,b){let c,d,e={...a||{}},f=0!==(d=Object.values(c=Object.fromEntries([...n].map(a=>{let b;return[a,(b=Object.keys(e||{}).find(b=>b.toLowerCase()===a))?e[b]:void 0]}))).filter(a=>null!=a).length)&&d===n.size&&String(c["user-agent"]).match(/claude-(?:cli|code)\/(\d+\.\d+\.\d+)/i)?.[1]===b?.version;for(let a of Object.keys(e)){let b=a.toLowerCase();(o.has(b)||!f&&n.has(b))&&delete e[a]}return e}(c.overlay,c.snapshot):{...c.overlay}:{};for(let a of Object.keys(k))h.has(a.toLowerCase())&&delete k[a];let l=q(i,k);if("claude-cli"===b){if(!0===c.stream)l["X-Stainless-Helper-Method"]="stream";else for(let a of Object.keys(l))"x-stainless-helper-method"===a.toLowerCase()&&delete l[a];if("number"==typeof c.retryCount){for(let a of Object.keys(l))"x-stainless-retry-count"===a.toLowerCase()&&delete l[a];l["X-Stainless-Retry-Count"]=String(c.retryCount)}}for(let[a,[b,c]]of h){for(let b of Object.keys(l))b.toLowerCase()===a&&delete l[b];l[b]=c}return f?.headerOrder?r(l,f.headerOrder):l}function q(...a){let b={};for(let c of a)for(let[a,d]of Object.entries(c||{})){let c=Object.keys(b).find(b=>b.toLowerCase()===a.toLowerCase());c&&delete b[c],b[a]=d}return b}function r(a,b){if(!b||!b.length)return{...a};let c=new Set,d={},e=new Map;for(let[b,c]of Object.entries(a))e.set(b.toLowerCase(),[b,c]);for(let a of b){let b=e.get(a.toLowerCase());b&&(d[b[0]]=b[1],c.add(a.toLowerCase()))}for(let[b,e]of Object.entries(a))c.has(b.toLowerCase())||(d[b]=e);return d}},35570:(a,b,c)=>{"use strict";c.d(b,{I2:()=>A,Iq:()=>B,Kn:()=>v,dV:()=>w,zi:()=>x});var d=c(73024),e=c(76760),f=c(77598),g=c(6547),h=c(70628);let i=["claude-cli","codex-cli","gemini-cli"],j=new Map,k=new Map,l=new Set,m=null;function n(){let a=process.env.DATA_DIR||e.join(process.env.HOME||process.env.USERPROFILE||".",".switchboard");return e.join(a,"identity")}function o(a){return e.join(n(),`${a}.json`)}let p=function(){try{return JSON.parse(d.readFileSync(e.join(process.cwd(),"open-sse","identity","snapshots","versions.json"),"utf8"))}catch{try{return JSON.parse(d.readFileSync(new c.U(c(94552)),"utf8"))}catch{return{}}}}();function q(a){let b=p[a],c=b?.version;if(!c)return null;if("claude-cli"!==a)return{version:c,latestVersion:b.latestVersion};let d=b.tlsSpecRev||c;return{version:c,billingVersion:c,tlsSpecRev:d,latestVersion:b.latestVersion,capturedAt:b.capturedAt,entrypoint:b.entrypoint||"cli",userAgent:`claude-cli/${c} (external, ${b.entrypoint||"cli"})`,packageVersion:b.packageVersion||"0.112.1",runtimeVersion:b.runtimeVersion||"v26.3.0",betas:b.betas||"claude-code-20250219,interleaved-thinking-2025-05-14,redact-thinking-2026-02-12,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,effort-2025-11-24,structured-outputs-2025-12-15"}}function r(a){let b=String(a||"").split(".").map(Number);return 3===b.length&&b.every(Number.isInteger)?b:null}function s(a){let b=String(a?.tlsSpecRev||"").match(/(\d+\.\d+\.\d+)/);return b?.[1]||null}function t(a,b){let c=r(a),d=r(b);if(!c||!d)return 0;for(let a=0;a<3;a++)if(c[a]!==d[a])return c[a]-d[a];return 0}function u(a){return!!(a?.version&&a?.billingVersion===a.version&&s(a)===a.version&&a.version===(z(p["claude-cli"]?.tlsSpecRev)||p["claude-cli"]?.version||null)&&a?.userAgent?.includes(`claude-cli/${a.version}`)&&a?.packageVersion&&a?.runtimeVersion&&a?.betas)}function v(a){return{version:a?.version||null,billingVersion:a?.billingVersion||null,tlsVersion:s(a),userAgentVersion:z(a?.userAgent)}}function w(a){if(j.has(a))return j.get(a);let b=null;try{b=JSON.parse(d.readFileSync(o(a),"utf8"))}catch{b=q(a)}return"claude-cli"!==a||u(b)||(b=q(a)),b&&j.set(a,b),b}function x(a){let b=w(a);return"claude-cli"!==a||u(b)?b:q(a)}function y(a,b){if(b&&"object"==typeof b){j.set(a,b);try{d.mkdirSync(n(),{recursive:!0}),d.writeFileSync(o(a),JSON.stringify(b,null,2))}catch{}}}function z(a){if("string"!=typeof a)return null;let b=a.match(/claude-cli\/(\d+\.\d+\.\d+)/i)||a.match(/codex_cli_rs\/(\d+\.\d+\.\d+)/i)||a.match(/GeminiCLI\/(\d+\.\d+\.\d+)/i)||a.match(/Cline\/(\d+\.\d+\.\d+)/i)||a.match(/antigravity\/(\d+\.\d+\.\d+)/i)||a.match(/QwenCode\/(\d+\.\d+\.\d+)/i)||a.match(/GitHubCopilotChat\/(\d+\.\d+\.\d+)/i);return b?b[1]:null}function A(a,b){let c=function(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a))b[c.toLowerCase()]=d;return b}(b),d=c["user-agent"],e=z(d);if(!d||!e)return!1;if("claude-cli"===a){let b=c["x-stainless-package-version"],f=c["x-stainless-runtime-version"],g=c["anthropic-beta"];if(!b||!f||!g)return!1;let h=x(a)||{},i=s(h);return i&&e!==i?(C(a,`harvest ${e} does not match TLS capture ${h.tlsSpecRev}`),!1):(y(a,{...h,version:e,billingVersion:e,userAgent:d,packageVersion:b,runtimeVersion:f,betas:g,os:h.os||c["x-stainless-os"],arch:h.arch||c["x-stainless-arch"],entrypoint:/\(external,\s*([^)]+)\)/.exec(d)?.[1]||"cli",harvestedAt:Date.now()}),!0)}if("copilot"===a){let b=String(c["editor-plugin-version"]||"").match(/copilot-chat\/(\d+\.\d+\.\d+)/i)?.[1],f=String(c["editor-version"]||"").match(/vscode\/(\d+\.\d+\.\d+)/i)?.[1],g=c["x-github-api-version"];return!!b&&b===e&&!!f&&!!g&&(y(a,{...w(a),version:e,chatVersion:b,vscodeVersion:f,apiVersion:g,userAgent:d,harvestedAt:Date.now()}),!0)}return y(a,{...w(a),version:e,userAgent:d,harvestedAt:Date.now()}),!0}function B(a){let b=a||"anonymous";if(k.has(b))return k.get(b);let c=(0,f.createHash)("sha256").update(`device:${b}`).digest("hex"),d={buildHash:c.slice(0,3),deviceId:c,accountUuid:`${c.slice(0,8)}-${c.slice(8,12)}-4${c.slice(13,16)}-a${c.slice(17,20)}-${c.slice(20,32)}`,os:(0,h.vv)(),arch:(0,h.Tc)()};return k.set(b,d),d}function C(a,b){l.has(a)||(l.add(a),console.warn(`[IDENTITY_STALE] ${a}: ${b}`))}async function D(a,b){let c=g.jI[a]?.source?.npm;if(!c)return null;let d=await b(`https://registry.npmjs.org/${encodeURIComponent(c)}/latest`,{headers:{Accept:"application/json"}});if(!d.ok)return null;let e=await d.json();return r(e?.version)?e.version:null}async function E(a=globalThis.fetch){"function"==typeof a&&await Promise.all(i.map(async b=>{try{let c=await D(b,a);if(!c)return;let d=x(b)||q(b)||{};if("claude-cli"===b){t(c,d.version)>0&&(y(b,{...d,latestVersion:c,checkedAt:Date.now()}),C(b,`npm ${c} is ahead of captured tuple ${d.version}`));return}if(0>=t(c,d.version))return;let e="codex-cli"===b?`codex_cli_rs/${c}`:d.userAgent;y(b,{...d,version:c,...e?{userAgent:e}:{},checkedAt:Date.now()})}catch{}}))}function F(){let a=Date.now();for(let b of Object.keys(g.jI)){let c=x(b)||q(b),d=c?.capturedAt;if(!d)continue;let e=a-new Date(d).getTime();if(Number.isFinite(e)&&e>2592e6){let a=Math.floor(e/864e5);C(b,`snapshot is ${a}d old; run npm run identity:refresh`)}}}"1"!==process.env.SWITCHBOARD_DISABLE_IDENTITY_POLL&&queueMicrotask(()=>(function(a=globalThis.fetch){return m||"function"!=typeof a||(E(a),F(),m=setInterval(()=>{E(a),F()},216e5),m.unref?.()),m})())},39211:(a,b,c)=>{"use strict";c.d(b,{fX:()=>n});let d=/switchboard/i,e=/Switchboard\//i,f="https://github.com/Vijay-Duke/switchboard-router",g=new Set(["authorization","x-api-key","api-key","cookie"]);function h(a){return g.has(String(a).toLowerCase())}function i(a){let b={};for(let[c,g]of a?a instanceof Headers?[...a.entries()]:Object.entries(a):[])null!=g&&!function(a,b){let c=String(a),g=null==b?"":String(b),i=c.toLowerCase();return!!(i.startsWith("x-switchboard-")||"x-client-type"===i&&/^switchboard$/i.test(g.trim())||"x-msh-platform"===i&&/^switchboard$/i.test(g.trim())||"user-agent"===i&&e.test(g)||d.test(c)&&!h(c)||d.test(g)&&!h(c)||g.includes(f))}(c,g)&&(b[c]=String(g));return b}Object.freeze({SWITCHBOARD_RE:d,SWITCHBOARD_UA_RE:e,SWITCHBOARD_GITHUB:f});var j=c(6547),k=c(35570);let l={"claude-cli":"claude-cli/2.1.258 (external, cli)","codex-cli":"codex_cli_rs/0.149.0","gemini-cli":"GeminiCLI/0.56.0/unknown (linux; x64; terminal)",cline:"Cline/3.0.0","openai-node":"OpenAI/NodeJS/22",chrome:"Mozilla/5.0",antigravity:"antigravity/1.107.0 linux/x64",copilot:"GitHubCopilotChat/0.38.0",qwen:"QwenCode/0.12.3 (linux; x64)","grok-cli":"grok-cli/1.0.0","grok-build":"grok-shell/0.2.99"};function m(a){return Object.keys(a).find(a=>"user-agent"===a.toLowerCase())}function n(a,b={}){let c=i(a),d=(0,j.ti)(b.identity,{format:b.format,provider:b.provider}),e=b.snapshot||(0,k.zi)(d),f="claude-cli"===d?(0,k.Iq)(b.credentialId):null,g=(0,j.$3)(c,d,{snapshot:f?{...e,os:f.os,arch:f.arch}:e,overlay:b.overlay,stream:b.stream,retryCount:b.retryCount}),h=(0,j.E$)(d),o=i(g);if("claude-cli"===d&&b.requestPath?.startsWith("/v1/messages/count_tokens")){for(let a of Object.keys(o))"x-stainless-timeout"===a.toLowerCase()&&delete o[a];o=(0,j.Dm)(o,j.$R)}if(!m(o)&&"cursor"!==d){let a=e?.userAgent||l[d]||l["openai-node"];o["User-Agent"]=a}return"claude-cli"===d&&function(a,b){let c=(0,k.Kn)(b),d=m(a),e=String(d?a[d]:"").match(/claude-(?:cli|code)\/(\d+\.\d+\.\d+)/i)?.[1]||null;if(!c.version||c.billingVersion!==c.version||c.tlsVersion!==c.version||c.userAgentVersion!==c.version||e!==c.version)throw Error(`Claude identity mismatch: ua=${e||c.userAgentVersion} version=${c.version} billing=${c.billingVersion} tls=${c.tlsVersion}`)}(o,e),{headers:i(o),profileId:d,tls:h?.tls||"node",alpn:h?.alpn||["h2","http/1.1"],tlsSpecRev:e?.tlsSpecRev}}},46052:(a,b,c)=>{"use strict";let d;c.d(b,{wo:()=>P,Fm:()=>S,ip:()=>O,WV:()=>L});var e=c(27910),f=c(60290),g=c(39211),h=c(6547),i=c(31421),j=c(51455),k=c(76760),l=c(73136),m=c(57075);let n="2.1.258",o=Object.freeze(["http/1.1"]);Object.freeze(["TLS_AES_128_GCM_SHA256","TLS_AES_256_GCM_SHA384","TLS_CHACHA20_POLY1305_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256","TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA","TLS_RSA_WITH_AES_128_GCM_SHA256","TLS_RSA_WITH_AES_256_GCM_SHA384","TLS_RSA_WITH_AES_128_CBC_SHA","TLS_RSA_WITH_AES_256_CBC_SHA"]),Object.freeze(["server_name","extended_master_secret","renegotiation_info","supported_groups:x25519_mlkem768,x25519,secp256r1,secp384r1","ec_point_formats:uncompressed","session_ticket","alpn:http/1.1","status_request","signature_algorithms:ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256,rsa_pkcs1_sha256,ecdsa_secp384r1_sha384,rsa_pss_rsae_sha384,rsa_pkcs1_sha384,rsa_pss_rsae_sha512,rsa_pkcs1_sha512,rsa_pkcs1_sha1","signed_certificate_timestamp","key_share:x25519_mlkem768","psk_key_exchange_modes:psk_dhe_ke","supported_versions:TLS1.3,TLS1.2"]);let p=k.dirname((0,l.fileURLToPath)("file:///home/runner/work/switchboard-router/switchboard-router/open-sse/identity/tls/claude-code.js")),q="win32"===process.platform?"switchboard-claude-tls.exe":"switchboard-claude-tls",r=[process.env.SWITCHBOARD_CLAUDE_TLS_HELPER,k.join(process.cwd(),"open-sse","identity","tls","bin",process.platform,process.arch,q),k.join(p,"bin",process.platform,process.arch,q)].filter(Boolean);function s(a){let b=Number(a);return Number.isFinite(b)&&b>0?Math.floor(b):null}let t=i.spawn,u=function(a){if(null==a||""===a)return 2;let b=Number(a);return Number.isInteger(b)&&b>=0?b:2}(process.env.SWITCHBOARD_CLAUDE_TLS_POOL_CAP),v=new Map,w=null;function x(a){return t(a,[],{stdio:["pipe","pipe","pipe"],windowsHide:!0})}function y(a,b){for(let c of[a,a.stdin,a.stdout,a.stderr])c?.[b?"ref":"unref"]?.()}async function z(){if(d)return d;for(let a of r)try{return await (0,j.access)(a),d=a,a}catch{}throw Error(`Claude Code TLS helper is not installed for ${process.platform}-${process.arch}`)}function A(){return new DOMException("The operation was aborted.","AbortError")}let B=globalThis.fetch,C=new Map,D=new Map,E=async()=>async function(a,b={},c={}){var d,e,f,g;if(c.alpn?.length!==1||"http/1.1"!==c.alpn[0])throw Error("Claude Code TLS transport requires ALPN http/1.1 only");if(b.signal?.aborted)throw A();let h=await z(),i=function(){for(let[a,b]of v)if(b(),null==a.exitCode&&null==a.signalCode)return y(a,!0),a;return null}()??x(h);w||v.size>=u||(w=setImmediate(()=>{w=null,function(a){for(;v.size<u;){let b;try{b=x(a)}catch{return}!function(a){let b=()=>{clearTimeout(c),a.off("exit",b),a.off("error",b),v.delete(a)},c=setTimeout(()=>{b();try{a.kill("SIGTERM")}catch{}},6e4);c.unref?.(),a.once("exit",b),a.once("error",b),y(a,!1),v.set(a,b)}(b)}}(h)}),w.unref?.());let j=function(a){if(null==a)return null;if("string"==typeof a)return Buffer.from(a);if(Buffer.isBuffer(a))return a;if(a instanceof Uint8Array)return Buffer.from(a);throw TypeError("Claude Code TLS helper requires a string or byte request body")}(b.body),k={url:String(a),method:b.method||"GET",headers:(d=b.headers)instanceof Headers?[...d.entries()]:Object.entries(d||{}).map(([a,b])=>[a,String(b)]),headerOrder:c.headerOrder||[],proxyUrl:c.proxyUrl||"",tlsSpecRev:n,alpn:o,bodyLength:j?.byteLength||0,timeoutMs:s(b.timeoutMs)??s(c.timeoutMs)??6e4};return i.stdin.write(`${JSON.stringify(k)}
2
+ `),j&&i.stdin.write(j),i.stdin.end(),e=i.stdout,f=i.stderr,g=b.signal,new Promise((a,b)=>{let c=Buffer.alloc(0),d="",h=!1,j=a=>{d.length>=16384||(d+=a.toString("utf8",0,16384-d.length))},k=(a,b,c)=>{let e=d.trim(),f=`${null==a?"":` with code ${a}`}${b?` (${b})`:""}`;return Error(e||`Claude TLS helper exited${c}${f}`)},l=()=>{e.off("data",r),i.off("error",o),i.off("exit",p)},n=a=>{h||(h=!0,l(),f.off("data",j),g?.removeEventListener("abort",q),b(a))},o=a=>n(a),p=(a,b)=>n(k(a,b," before metadata")),q=()=>{n(A()),i.kill("SIGTERM")},r=b=>{let d,o=(c=Buffer.concat([c,b])).indexOf("\n");if(o<0)return;try{d=JSON.parse(c.subarray(0,o).toString("utf8"))}catch(a){n(Error(`Claude TLS helper returned invalid metadata: ${a.message}`));return}if(d.error)return void n(Error(d.error));h=!0,l(),g?.removeEventListener("abort",q);let p=new m.PassThrough,r=m.Readable.toWeb(p),s=!1,t=!1,u=!1,v=a=>{u||(u=!0,e.unpipe(p),e.off("end",y),e.off("error",x),f.off("data",j),i.off("error",x),i.off("exit",z),g?.removeEventListener("abort",B),a?p.destroy(a):p.end())},w=a=>{e.destroyed||(e.once("error",()=>{}),e.destroy(a)),v(a)},x=a=>v(a),y=()=>{s=!0,t&&v()},z=(a,b)=>{0!==a||b?w(k(a,b," after metadata")):(t=!0,s&&v())},B=()=>{w(A()),i.kill("SIGTERM")};e.once("end",y),e.once("error",x),i.once("error",x),i.once("exit",z),g?.addEventListener("abort",B,{once:!0}),p.write(c.subarray(o+1)),e.pipe(p,{end:!1}),a(new Response(r,{status:d.status,statusText:d.statusText||"",headers:new Headers(d.headers||[])}))};f.on("data",j),e.on("data",r),i.once("error",o),i.once("exit",p),g?.addEventListener("abort",q,{once:!0}),g?.aborted&&q()})},F=async()=>(await Promise.resolve().then(c.t.bind(c,36435,19))).Impit,G=new Map,H=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],I=["8.8.8.8","8.8.4.4"];function J(a){return null==a?"":String(a).trim()}async function K(a){let b=G.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,19)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,19)),e=new b.Resolver;e.setServers(I);let g=d(e.resolve4.bind(e)),h=await g(a);if(G.size>=f.v1.dnsCacheMaxSize){let a=Date.now();for(let[b,c]of G)c.expiry<=a&&G.delete(b);for(;G.size>=f.v1.dnsCacheMaxSize;)G.delete(G.keys().next().value)}return G.set(a,{ip:h[0],expiry:Date.now()+f.v1.dnsCacheTtlMs}),h[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function L(a){try{let b=new URL(a).hostname;return H.some(a=>b.includes(a))}catch{return!1}}function M(a,b){let c,d=J(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function N(a){let b=J(a);if(!b)return null;try{return new URL(b),b}catch{return`http://${b}`}}function O(a,b){return function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0)return null;let c=J(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=J(b?.noProxy??b?.connectionNoProxy);return d&&M(a,d)?null:N(c)}(a,b)||N(function(a){let b;if(M(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(a))}async function P(a){let b=N(a);if(!b)return null;if(!C.has(b)){if(C.size>=f.v1.proxyDispatchersMaxSize){let a=C.keys().next().value,b=C.get(a);C.delete(a),Promise.resolve(b?.close?.()).catch(()=>{})}let{ProxyAgent:a}=await c.e(7774).then(c.t.bind(c,47774,19));C.set(b,new a({uri:b}))}let d=C.get(b);return C.delete(b),C.set(b,d),d}async function Q(a){let b=a||"",c=D.get(b);return c||(c=new(await F())({browser:"chrome",...a?{proxyUrl:a}:{},followRedirects:!1}),D.set(b,c)),(a,b)=>c.fetch(a,b)}async function R(a,b,d){let f=await Promise.resolve().then(c.t.bind(c,55591,19)),g=await Promise.resolve().then(c.t.bind(c,91645,19)),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g,j=new i.Socket,k=!1;function l(){j.setTimeout(0),d.signal&&d.signal.removeEventListener("abort",m)}function m(){k||(k=!0,l(),j.destroy(),g?.destroy(),f(new DOMException("The operation was aborted.","AbortError")))}d.signal?.aborted?m():(d.signal&&d.signal.addEventListener("abort",m,{once:!0}),j.setTimeout(1e4,()=>{k||(k=!0,l(),j.destroy(),f(Error(`[ProxyFetch] connect timeout after 10000ms to ${b}`)))}),j.connect(443,b,()=>{j.setTimeout(0);let b={socket:j,servername:a.hostname,path:a.pathname+a.search,method:d.method||"POST",headers:{...d.headers,Host:a.hostname}};(g=h.request(b,a=>{let b=()=>{try{a.destroy(new DOMException("The operation was aborted.","AbortError"))}catch{a.destroy()}},g=()=>d.signal?.removeEventListener("abort",b);if(d.signal?.aborted){k=!0,l(),b(),g(),f(new DOMException("The operation was aborted.","AbortError"));return}d.signal?.addEventListener("abort",b,{once:!0}),a.once("end",g),a.once("close",g),a.once("error",g);let h={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:e.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await h.text())};k=!0,l(),c(h)})).on("error",a=>{k||(k=!0,l(),f(a))}),d.body&&g.write("string"==typeof d.body?d.body:JSON.stringify(d.body)),g.end()}),j.on("error",a=>{k||(k=!0,l(),f(a))}))})}async function S(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=function(a,b={}){let c=b.headers?.Accept||b.headers?.accept||"",d="string"==typeof c&&c.includes("text/event-stream"),e=(0,g.fX)(b.headers||{},{identity:b.identity,provider:b.provider,format:b.format,overlay:b.overlay,credentialId:b.credentialId,stream:b.stream??d,retryCount:b.retryCount,snapshot:b.snapshot,requestPath:new URL(a).pathname});return{...b,headers:e.headers,_identityTls:e.tls,_identityAlpn:e.alpn,_identityTlsSpecRev:e.tlsSpecRev,_identityProfile:e.profileId}}(d,b),f=function(a){let{_identityTls:b,_identityAlpn:c,_identityTlsSpecRev:d,_identityProfile:e,identity:f,provider:g,format:h,overlay:i,credentialId:j,stream:k,retryCount:l,snapshot:m,...n}=a;return n}(e),{_identityTls:i,_identityAlpn:j,_identityProfile:k}=e,l=J(c?.vercelRelayUrl);if(l){let a=new URL(d);return((...a)=>B(...a))(l,{...f,headers:{...f.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`}})}let m=O(d,c);if("node"!==i)try{let b={profileId:k,alpn:j,proxyUrl:m,headerOrder:"claude-cli"===k?new URL(d).pathname.startsWith("/v1/messages/count_tokens")?h.$R:h.Zb:(0,h.E$)(k)?.headerOrder||[]},c=/^claude-code-(\d+\.\d+\.\d+)$/.exec(e._identityTlsSpecRev||"")?.[1]||e._identityTlsSpecRev;if("claude-cli"===k&&c!==n)throw Error(`snapshot TLS spec ${e._identityTlsSpecRev||"missing"} does not match helper ${n}`);let g="chrome"===i?await Q(m):await E();return await g(a,f,b)}catch(b){if(b?.name==="AbortError")throw b;let a=Error(`[ProxyFetch] ${i} TLS (${k}) unavailable: ${b.message}`);throw a.status=503,a}if(L(d)){if(m)try{let b=await P(m);return await ((...a)=>B(...a))(a,{...f,dispatcher:b})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),b=await K(a.hostname);if(b)return await R(a,b,f)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}}if(m)try{let b=await P(m);return await ((...a)=>B(...a))(a,{...f,dispatcher:b})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${a.message}`)}return((...a)=>B(...a))(a,f)}async function T(a,b={}){return S(a,b,null)}globalThis.fetch!==T&&(globalThis.fetch=T)},70628:(a,b,c)=>{"use strict";c.d(b,{LY:()=>h,Tc:()=>f,ol:()=>g,vv:()=>e});var d=c(21820);function e(){switch((0,d.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,d.platform)()}`}}function f(){switch((0,d.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,d.arch)()}`}}function g(){return(0,d.platform)()}function h(){return(0,d.arch)()}},78335:()=>{},94552:(a,b,c)=>{"use strict";a.exports=c.p+"static/media/versions.4155c5ec.json"},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=159,exports.ids=[159],exports.modules={49263:(a,b,c)=>{c.d(b,{Bl:()=>j,Qo:()=>f,S5:()=>l,hk:()=>e,kJ:()=>k});var d=c(87252);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){let a=!1!==b.shouldFallback;if(b.backoff){let b=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:a,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(b),newBackoffLevel:b}}return{shouldFallback:a,cooldownMs:b.cooldownMs||0}}return a>=400&&a<500&&408!==a&&429!==a?{shouldFallback:!1,cooldownMs:0}:{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="modelLock_",h=`${g}__all`;function i(a){return a?`${g}${a}`:h}function j(a,b){let c=i(b);return[a?.[c],a?.[h]].some(a=>a&&new Date(a).getTime()>Date.now())}function k(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(g)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function l(a,b){return{[i(a)]:new Date(Date.now()+b).toISOString()}}},68988:(a,b,c)=>{c.d(b,{A9:()=>i,R8:()=>j,Sx:()=>h,mn:()=>k});var d=c(46052),e=c(13247),f=c(53129);async function g(a){let b=await a.text();try{return JSON.parse(b)}catch{return{error:"invalid_response",error_description:b}}}async function h(a){let b=new URLSearchParams({client_id:a.clientId,scope:a.scope});a.referrer&&b.set("referrer",a.referrer);let c=await (0,d.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:b,...e.Ai}),f=await g(c);if(!c.ok)throw Error(`Grok CLI device code request failed: ${f.error_description||f.error||c.status}`);return f}async function i(a,b){let c=await (0,d.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:b,client_id:a.clientId}),...e.Ai}),f=await g(c),h="authorization_pending"===f.error||"slow_down"===f.error;return{ok:c.ok||h,data:f}}async function j(a){try{let b=await (0,d.Fm)(`${e.Nr}/user`,{headers:(0,e.Ab)(a.access_token),...e.Ai});return{user:b.ok?await b.json():null}}catch{return{user:null}}}function k(a,b=null){let c=b?.user||{},d=(0,f.pG)(a.id_token)||(0,f.J_)(a.access_token)||c.email,e=c.userId||c.principalId||null,g=[c.firstName,c.lastName].filter(Boolean).join(" ").trim();return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,scope:a.scope,...d?{email:d}:{},...g?{displayName:g}:{},providerSpecificData:{authMethod:"device_code",idToken:a.id_token||null,email:d||null,userId:e,hasGrokCodeAccess:c.hasGrokCodeAccess??null,subscriptionTier:c.subscriptionTier??null}}}},74177:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{backfillCodexEmails:()=>x,exchangeTokens:()=>u,extractCodexAccountInfo:()=>l.YR,fetchKiroProfileArn:()=>l.gR,generateAuthData:()=>t,getProvider:()=>r,getProviderNames:()=>s,pollForToken:()=>w,requestDeviceCode:()=>v});var e=c(30369),f=c(55511),g=c.n(f),h=c(28730),i=c(13808),j=c(92990),k=c(73159),l=c(53129),m=c(75008),n=c(46052),o=c(68988),p=a([e]);e=(p.then?(await p)():p)[0];let y=null;async function q(){if(y)return y;try{let a=await (0,n.Fm)(k.o.discoveryUrl,{headers:{Accept:"application/json"},identity:"grok-cli",provider:"xai",format:"openai"});if(a.ok){let b=await a.json();return y={authorizeUrl:(0,l.js)(b.authorization_endpoint,"authorization_endpoint"),tokenUrl:(0,l.js)(b.token_endpoint,"token_endpoint")}}}catch{}return y={authorizeUrl:k.o.authorizeUrl,tokenUrl:k.o.tokenUrl}}let z={claude:{config:j.OV,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d)=>{let e=new URLSearchParams({code:"true",client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c});return`${a.authorizeUrl}?${e.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=b,g="";if(f.includes("#")){let a=f.split("#");f=a[0],g=a[1]||""}let h=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({code:f,state:g||e,grant_type:"authorization_code",client_id:a.clientId,redirect_uri:c,code_verifier:d}),...(0,l.ro)("claude")});if(!h.ok){let a=await h.text();throw Error(`Token exchange failed: ${a}`)}return await h.json()},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope})},codex:{config:j.DI,flowType:"authorization_code_pkce",fixedPort:j.DI.fixedPort,callbackPath:j.DI.callbackPath,buildAuthUrl:(a,b,c,d)=>{let e={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,...a.extraParams,state:c},f=Object.entries(e).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${f}`},exchangeToken:async(a,b,c,d)=>{let e=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d}),...(0,l.ro)("codex")});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b=(0,l.YR)(a.id_token),c={accessToken:a.access_token,refreshToken:a.refresh_token,idToken:a.id_token,expiresIn:a.expires_in,lastRefreshAt:new Date().toISOString()},d=b.email||(0,l.J_)(a.access_token);return d&&(c.email=d),(b.chatgptAccountId||b.chatgptPlanType)&&(c.providerSpecificData={chatgptAccountId:b.chatgptAccountId,chatgptPlanType:b.chatgptPlanType}),c}},xai:{config:k.o,flowType:"authorization_code_pkce",fixedPort:k.o.loopbackPort,callbackPath:k.o.callbackPath,pkceVerifierBytes:k.U,prepareConfig:async a=>{let b=await q();return{...a,authorizeUrl:b.authorizeUrl,tokenUrl:b.tokenUrl}},buildAuthUrl:(a,b,c,d)=>{let e=g().randomBytes(16).toString("hex"),f={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c,nonce:e,plan:"generic",referrer:"cli-proxy-api"},h=Object.entries(f).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${h}`},exchangeToken:async(a,b,c,d)=>{let e=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d}),identity:"grok-cli",provider:"xai",format:"openai"});if(!e.ok){let a=await e.text();throw Error(`xAI token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b={accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope},c=(0,l.pG)(a.id_token);return c&&(b.email=c),a.id_token&&(b.providerSpecificData={idToken:a.id_token}),b}},"grok-cli":{config:j.qp,flowType:"device_code",requestDeviceCode:o.Sx,pollToken:(a,b)=>(0,o.A9)(a,b),postExchange:o.R8,mapTokens:o.mn},"gemini-cli":{config:j.LT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c}),...(0,l.ro)("gemini-cli")});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b=await (0,n.Fm)(`${j.LT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`},...(0,l.ro)("gemini-cli")}),c=b.ok?await b.json():{},d="";try{let b=await (0,n.Fm)("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:(0,j.cD)(),mode:1}),...(0,l.ro)("gemini-cli")});if(b.ok){let a=await b.json();d=a.cloudaicompanionProject?.id||a.cloudaicompanionProject||""}}catch(a){console.log("Failed to fetch project ID:",a)}return{userInfo:c,projectId:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},antigravity:{config:j.YT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c}),identity:"antigravity",provider:"antigravity",format:"antigravity"});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b={Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json","X-Goog-Api-Client":j.YT.loadCodeAssistApiClient,"Client-Metadata":j.YT.loadCodeAssistClientMetadata},c=(0,j.cD)(),d=await (0,n.Fm)(`${j.YT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`},identity:"antigravity",provider:"antigravity",format:"antigravity"}),e=d.ok?await d.json():{},f="",g="legacy-tier";try{let a=await (0,n.Fm)(j.YT.loadCodeAssistEndpoint,{method:"POST",headers:b,body:JSON.stringify({metadata:c}),identity:"antigravity",provider:"antigravity",format:"antigravity"});if(a.ok){let b=await a.json();if(f=b.cloudaicompanionProject?.id||b.cloudaicompanionProject||"",Array.isArray(b.allowedTiers)){for(let a of b.allowedTiers)if(a.isDefault&&a.id){g=a.id.trim();break}}}}catch(a){console.log("Failed to load code assist:",a)}return f&&(async()=>{for(let a=0;a<10;a++){try{let a=await (0,n.Fm)(j.YT.onboardUserEndpoint,{method:"POST",headers:b,body:JSON.stringify({tierId:g,metadata:c}),identity:"antigravity",provider:"antigravity",format:"antigravity"});if(a.ok){let b=await a.json();if(!0===b.done)break}}catch(a){break}await new Promise(a=>setTimeout(a,5e3))}})().catch(()=>{}),{userInfo:e,projectId:f}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},iflow:{config:j.ZL,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({loginMethod:a.extraParams.loginMethod,type:a.extraParams.type,redirect:b,state:c,client_id:a.clientId});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret}),...(0,l.ro)("iflow")});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await (0,n.Fm)(`${j.ZL.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"},...(0,l.ro)("iflow")});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let d=c.data||{};if(!d.apiKey||""===d.apiKey.trim())throw Error("Empty API key returned from iFlow");if(!(d.email?.trim()||d.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})},qoder:{config:j.hF,flowType:"device_code",requestDeviceCode:async a=>{let{QoderService:b}=await c.e(3546).then(c.bind(c,73546)),d=new b().initiateDeviceFlow();return{device_code:d.nonce,user_code:d.nonce.slice(0,8).toUpperCase(),verification_uri:a.loginUrl,verification_uri_complete:d.verificationUriComplete,expires_in:300,interval:2,codeVerifier:d.codeVerifier,_qoderNonce:d.nonce,_qoderMachineId:d.machineId}},pollToken:async(a,b,d,e)=>{let f,{QoderService:g}=await c.e(3546).then(c.bind(c,73546)),h=new g,i=b||e?._qoderNonce,j=d||e?._qoderVerifier;if(!i||!j)return{ok:!1,data:{error:"invalid_request",error_description:"Missing nonce/verifier"}};try{f=await h.pollDeviceToken({nonce:i,codeVerifier:j})}catch(a){return{ok:!1,data:{error:"poll_failed",error_description:a.message}}}if("pending"===f.status)return{ok:!1,data:{error:"authorization_pending"}};let k=await h.fetchUserInfo(f.accessToken),l=Math.floor((f.expireTime-Date.now())/1e3),m=Math.max(86400,l);return{ok:!0,data:{access_token:f.accessToken,refresh_token:f.refreshToken,expires_in:m,_qoderUserId:f.userId,_qoderMachineId:e?._qoderMachineId||"",_qoderName:k.name,_qoderEmail:k.email,_qoderOrganizationId:k.organizationId}}},mapTokens:a=>{let b=(a._qoderEmail||"").trim(),c=(a._qoderName||"").trim()||null,d=a._qoderUserId||"",e=b||(d?`qoder-user-${d}`:null);return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,email:e,displayName:c,providerSpecificData:{authMethod:"device",userId:d,machineId:a._qoderMachineId||"",organizationId:a._qoderOrganizationId||""}}}},qwen:{config:j.Hp,flowType:"device_code",requestDeviceCode:async(a,b)=>{let c=await (0,n.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scope,code_challenge:b,code_challenge_method:a.codeChallengeMethod}),...(0,l.ro)("qwen")});if(!c.ok){let a=await c.text();throw Error(`Device code request failed: ${a}`)}return await c.json()},pollToken:async(a,b,c)=>{let d=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b,code_verifier:c}),...(0,l.ro)("qwen")});return{ok:d.ok,data:await d.json()}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{resourceUrl:a.resource_url}})},github:{config:j.Nu,flowType:"device_code",requestDeviceCode:async a=>{let b=await (0,n.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scopes}),...(0,l.ro)("github")});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}return await b.json()},pollToken:async(a,b)=>{let c,d=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,device_code:b,grant_type:"urn:ietf:params:oauth:grant-type:device_code"}),...(0,l.ro)("github")});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},postExchange:async a=>{let b=await (0,n.Fm)(j.Nu.copilotTokenUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json"},identity:"copilot",provider:"github",format:"openai"}),c=b.ok?await b.json():{},d=await (0,n.Fm)(j.Nu.userInfoUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":j.Nu.apiVersion},identity:"copilot",provider:"github",format:"openai"}),e=d.ok?await d.json():{};return{copilotToken:c,userInfo:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{copilotToken:b?.copilotToken?.token,copilotTokenExpiresAt:b?.copilotToken?.expires_at,githubUserId:b?.userInfo?.id,githubLogin:b?.userInfo?.login,githubName:b?.userInfo?.name,githubEmail:b?.userInfo?.email}})},kiro:{config:j.Tx,flowType:"device_code",requestDeviceCode:async(a,b,c={})=>{let d=("string"==typeof c.region?c.region.trim():"")||"us-east-1";(0,j.S6)(d);let e=("string"==typeof c.startUrl?c.startUrl.trim():"")||a.startUrl,f="idc"===c.authMethod?"idc":"builder-id",g=`https://oidc.${d}.amazonaws.com/client/register`,h=`https://oidc.${d}.amazonaws.com/device_authorization`,i=await (0,n.Fm)(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:a.clientName,clientType:a.clientType,scopes:a.scopes,grantTypes:a.grantTypes,issuerUrl:a.issuerUrl}),...(0,l.ro)("kiro")});if(!i.ok){let a=await i.text();throw Error(`Client registration failed: ${a}`)}let k=await i.json(),m=await (0,n.Fm)(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:k.clientId,clientSecret:k.clientSecret,startUrl:e}),...(0,l.ro)("kiro")});if(!m.ok){let a=await m.text();throw Error(`Device authorization failed: ${a}`)}let o=await m.json();return{device_code:o.deviceCode,user_code:o.userCode,verification_uri:o.verificationUri,verification_uri_complete:o.verificationUriComplete,expires_in:o.expiresIn,interval:o.interval||5,_clientId:k.clientId,_clientSecret:k.clientSecret,_region:d,_authMethod:f,_startUrl:e}},pollToken:async(a,b,c,d)=>{let e,f=d?._region||"us-east-1";(0,j.S6)(f);let g=(0,m.R)(d?._profileArn);if(d?._profileArn&&!g)throw Error("A valid Kiro profile ARN is required for IAM Identity Center");let h=`https://oidc.${f}.amazonaws.com/token`,i=await (0,n.Fm)(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:d?._clientId,clientSecret:d?._clientSecret,deviceCode:b,grantType:"urn:ietf:params:oauth:grant-type:device_code"}),...(0,l.ro)("kiro")});try{e=await i.json()}catch(b){let a=await i.text();e={error:"invalid_response",error_description:a}}if(e.accessToken){let a=(0,m.R)(e.profileArn),b=a?.profileArn||g?.profileArn||await (0,l.gR)(e.accessToken,f);if(d?._authMethod==="idc"&&!b)throw Error("Kiro did not return an enterprise profile. Check that the subscription is active, or enter a profile ARN from `kiro-cli whoami`.");return{ok:!0,data:{access_token:e.accessToken,refresh_token:e.refreshToken,expires_in:e.expiresIn,profile_arn:b,_clientId:d?._clientId,_clientSecret:d?._clientSecret,_region:d?._region,_authMethod:d?._authMethod,_startUrl:d?._startUrl}}}return{ok:!1,data:{error:e.error||"authorization_pending",error_description:e.error_description||e.message}}},mapTokens:a=>{let b=(0,l.J_)(a.access_token);return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,email:b,providerSpecificData:{profileArn:a?.profile_arn||null,clientId:a._clientId,clientSecret:a._clientSecret,region:a._region||"us-east-1",authMethod:a._authMethod||"builder-id",startUrl:a._startUrl||j.Tx.startUrl}}}},cursor:{config:j.WN,flowType:"import_token",mapTokens:a=>({accessToken:a.accessToken,refreshToken:null,expiresIn:a.expiresIn||86400,providerSpecificData:{machineId:a.machineId,authMethod:"imported"}})},"kimi-coding":{config:j.t,flowType:"device_code",requestDeviceCode:async a=>{let b=g().randomUUID(),c=await (0,n.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",...(0,h.VK)(b)},body:new URLSearchParams({client_id:a.clientId}),...(0,l.ro)("kimi-coding")});if(!c.ok){let a=await c.text();throw Error(`Device code request failed: ${a}`)}let d=await c.json();return{device_code:d.device_code,user_code:d.user_code,verification_uri:d.verification_uri||"https://www.kimi.com/code/authorize_device",verification_uri_complete:d.verification_uri_complete||`https://www.kimi.com/code/authorize_device?user_code=${d.user_code}`,expires_in:d.expires_in,interval:d.interval||5,_kimiDeviceId:b}},pollToken:async(a,b,c,d)=>{let e,f=d?._kimiDeviceId,g=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",...(0,h.VK)(f)},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b}),...(0,l.ro)("kimi-coding")});try{e=await g.json()}catch(b){let a=await g.text();e={error:"invalid_response",error_description:a}}return e.access_token&&f&&(e._kimiDeviceId=f),{ok:g.ok,data:e}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,...a._kimiDeviceId?{providerSpecificData:{deviceId:a._kimiDeviceId}}:{}})},kilocode:{config:j.MZ,flowType:"device_code",requestDeviceCode:async a=>{let b=await (0,n.Fm)(a.initiateUrl,{method:"POST",headers:{"Content-Type":"application/json"},...(0,l.ro)("kilocode")});if(!b.ok){if(429===b.status)throw Error("Too many pending authorization requests. Please try again later.");let a=await b.text();throw Error(`Device auth initiation failed: ${a}`)}let c=await b.json();return{device_code:c.code,user_code:c.code,verification_uri:c.verificationUrl,verification_uri_complete:c.verificationUrl,expires_in:c.expiresIn||300,interval:3}},pollToken:async(a,b)=>{let c=await (0,n.Fm)(`${a.pollUrlBase}/${b}`,{...(0,l.ro)("kilocode")});if(202===c.status)return{ok:!1,data:{error:"authorization_pending"}};if(403===c.status)return{ok:!1,data:{error:"access_denied",error_description:"Authorization denied by user"}};if(410===c.status)return{ok:!1,data:{error:"expired_token",error_description:"Authorization code expired"}};if(!c.ok)return{ok:!1,data:{error:"poll_failed",error_description:`Poll failed: ${c.status}`}};let d=await c.json();if("approved"===d.status&&d.token){let b=null;try{let c=await (0,n.Fm)(`${a.apiBaseUrl}/api/profile`,{headers:{Authorization:`Bearer ${d.token}`},...(0,l.ro)("kilocode")});if(c.ok){let a=await c.json();b=a.organizations?.[0]?.id||null}}catch{}return{ok:!0,data:{access_token:d.token,_userEmail:d.userEmail,_orgId:b}}}return{ok:!1,data:{error:"authorization_pending"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:null,expiresIn:null,email:a._userEmail,...a._orgId?{providerSpecificData:{orgId:a._orgId}}:{}})},cline:{config:j.lB,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await (0,n.Fm)(a.tokenExchangeUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c}),...(0,l.ro)("cline")});if(!d.ok){let a=await d.text();throw Error(`Cline token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},clinepass:{config:j.w1,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await (0,n.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c}),...(0,l.ro)("clinepass")});if(!d.ok){let a=await d.text();throw Error(`ClinePass token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},gitlab:{config:j.f7,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d,e={})=>{let f=e.baseUrl||a.defaultBaseUrl,g=e.clientId||"",h=new URLSearchParams({client_id:g,redirect_uri:b,response_type:"code",state:c,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod});return`${f}${a.authorizeUrlPath}?${h.toString()}`},exchangeToken:async(a,b,c,d,e,f={})=>{let g=f.baseUrl||a.defaultBaseUrl,h=f.clientId||"",i=f.clientSecret||"",j=new URLSearchParams({client_id:h,grant_type:"authorization_code",code:b,redirect_uri:c,code_verifier:d});i&&j.set("client_secret",i);let k=await (0,n.Fm)(`${g}${a.tokenUrlPath}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:j.toString(),...(0,l.ro)("gitlab")});if(!k.ok)throw Error(`GitLab token exchange failed: ${await k.text()}`);let m=await k.json(),o=await (0,n.Fm)(`${g}${a.userInfoUrlPath}`,{headers:{Authorization:`Bearer ${m.access_token}`},...(0,l.ro)("gitlab")}),p=o.ok?await o.json():{};return{...m,_user:p,_baseUrl:g,_clientId:h}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,providerSpecificData:{username:a._user?.username||"",email:a._user?.email||a._user?.public_email||"",name:a._user?.name||"",baseUrl:a._baseUrl,clientId:a._clientId,authKind:"oauth"}})},"codebuddy-cn":{config:j.Nl,flowType:"device_code",requestDeviceCode:async a=>{let b=await (0,n.Fm)(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:"{}",...(0,l.ro)("codebuddy-cn")});if(!b.ok)throw Error(`CodeBuddy state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=await (0,n.Fm)(`${a.tokenUrl}?state=${encodeURIComponent(b)}`,{method:"GET",headers:{Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"},...(0,l.ro)("codebuddy-cn")});if(!c.ok)return{ok:!1,data:{error:"request_failed"}};let d=await c.json();return 0===d.code&&d.data?.accessToken?{ok:!0,data:{access_token:d.data.accessToken,refresh_token:d.data.refreshToken||"",token_type:d.data.tokenType||"Bearer",expires_in:d.data.expiresIn}}:11217===d.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:d.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in||86400,providerSpecificData:{}})},kimchi:{config:j.Td,flowType:"browser_token",buildAuthUrl:(a,b,c)=>{let d=(a.webAppUrl||"https://app.kimchi.dev").replace(/\/+$/,""),e=new URLSearchParams({callback:b,state:c});return`${d}/cli-auth?${e.toString()}`},exchangeToken:async(a,b)=>{let c=String(b||"").trim();if(!c)throw Error("Missing Kimchi token");let d=a.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",e=await (0,n.Fm)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`},...(0,l.ro)("kimchi")});if(!e.ok)throw Error(`Kimchi token validation failed: ${e.status}`);let f={};if(a.userInfoUrl)try{let b=await (0,n.Fm)(a.userInfoUrl,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`},...(0,l.ro)("kimchi")});b.ok&&(f=await b.json())}catch{f={}}return{access_token:c,token_type:"Bearer",_kimchiUser:f}},mapTokens:a=>{let b=a._kimchiUser||{},c=b.id?String(b.id):"",d=b.username||"",e=b.email||(c?`kimchi-user-${c}`:null);return{accessToken:a.access_token,refreshToken:null,email:e,displayName:b.name||d||null,providerSpecificData:{authMethod:"browser_token",userId:c,username:d}}}}};function r(a){let b=z[a];if(!b)throw Error(`Unknown provider: ${a}`);return b}function s(){return Object.keys(z)}async function t(a,b,c){let d=r(a),e=d.prepareConfig?await d.prepareConfig(d.config,c||{}):d.config,{codeVerifier:f,codeChallenge:g,state:h}=(0,i.lz)(d.pkceVerifierBytes);return{authUrl:"device_code"===d.flowType?null:"authorization_code_pkce"===d.flowType?d.buildAuthUrl(e,b,h,g,c||{}):d.buildAuthUrl(e,b,h,void 0,c||{}),state:h,codeVerifier:f,codeChallenge:g,redirectUri:b,flowType:d.flowType,fixedPort:d.fixedPort,callbackPath:d.callbackPath||"/callback"}}async function u(a,b,c,d,e,f){let g=r(a),h=g.prepareConfig?await g.prepareConfig(g.config,f||{}):g.config,i=await g.exchangeToken(h,b,c,d,e,f||{}),j=null;return g.postExchange&&(j=await g.postExchange(i)),g.mapTokens(i,j)}async function v(a,b,c){let d=r(a);if("device_code"!==d.flowType)throw Error(`Provider ${a} does not support device code flow`);return await d.requestDeviceCode(d.config,b,c||{})}async function w(a,b,c,d){let e=r(a);if("device_code"!==e.flowType)throw Error(`Provider ${a} does not support device code flow`);let f=await e.pollToken(e.config,b,c,d);if(f.ok)if(f.data.access_token){let b=null;e.postExchange&&(b=await e.postExchange(f.data));let c=e.mapTokens(f.data,b);if("kiro"===a&&!c.providerSpecificData?.profileArn){let a=await (0,l.gR)(c.accessToken,c.providerSpecificData?.region);a&&(c.providerSpecificData.profileArn=a)}return{success:!0,tokens:c}}else if("authorization_pending"===f.data.error||"slow_down"===f.data.error)return{success:!1,error:f.data.error,errorDescription:f.data.error_description||f.data.message,pending:"authorization_pending"===f.data.error};else return{success:!1,error:f.data.error||"no_access_token",errorDescription:f.data.error_description||f.data.message||"No access token received"};return{success:!1,error:f.data.error,errorDescription:f.data.error_description}}let A=!1;async function x(){if(!A){A=!0;try{let{getProviderConnections:a,updateProviderConnection:b}=await Promise.resolve().then(c.bind(c,15717));for(let c of(await a()).filter(a=>{if("codex"!==a.provider||"oauth"!==a.authType||!a.idToken)return!1;let b=!!a.email,c=!!a.providerSpecificData?.chatgptAccountId;return!b||!c})){let a=(0,l.YR)(c.idToken);if(!a.email&&!a.chatgptAccountId)continue;let d={};!c.email&&a.email&&(d.email=a.email),(a.chatgptAccountId||a.chatgptPlanType)&&(d.providerSpecificData={...c.providerSpecificData||{},chatgptAccountId:a.chatgptAccountId,chatgptPlanType:a.chatgptPlanType}),Object.keys(d).length&&await b(c.id,d)}}catch(a){A=!1,console.log("backfillCodexEmails failed:",a?.message||a)}}}d()}catch(a){d(a)}})},89865:(a,b,c)=>{c.d(b,{A1:()=>h,lR:()=>j,wO:()=>i,yj:()=>f,zL:()=>g});var d=c(87252);async function e(a,b){let c=a?.body?.getReader?.();if(!c)try{return(await a.text()).slice(0,b)}catch{return""}let d=new TextDecoder,e="",f=0;try{for(;f<b;){let{done:a,value:g}=await c.read();if(a)break;let h=g instanceof Uint8Array?g:new Uint8Array(g),i=b-f;if(e+=d.decode(h.subarray(0,i),{stream:h.byteLength<=i}),f+=Math.min(h.byteLength,i),h.byteLength>i){try{await c.cancel("upstream error body limit")}catch{}break}}return e+d.decode()}catch{return e}finally{try{c.releaseLock?.()}catch{}}}function f(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json"}})}async function g(a,b=null){let c=await e(a,65536);if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs}}}catch{}let f="";try{let a=JSON.parse(c);f="string"==typeof a?.error?.message?a.error.message:"string"==typeof a?.message?a.message:"string"==typeof a?.error_description?a.error_description:"string"==typeof a?.error?a.error:""}catch{f=c}let h=("string"==typeof f?f:"")||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:h}}function h(a,b,c){return{success:!1,status:a,error:b,resetsAtMs:c,response:f(a,b)}}function i(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function j(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}}};
1
+ "use strict";exports.id=1837,exports.ids=[1837],exports.modules={43429:(a,b,c)=>{c.d(b,{Y:()=>e});let d=["user-agent","anthropic-beta","anthropic-version","anthropic-dangerous-direct-browser-access","x-app","x-stainless-helper-method","x-stainless-retry-count","x-stainless-runtime-version","x-stainless-package-version","x-stainless-runtime","x-stainless-lang","x-stainless-arch","x-stainless-os","x-stainless-timeout","x-claude-code-session-id","package-version","runtime-version","os","arch"];function e(a){if(!a||"object"!=typeof a)return null;let b={};for(let c of d)void 0!==a[c]&&null!==a[c]&&(b[c]=a[c]);return Object.keys(b).length>0?b:null}},68988:(a,b,c)=>{c.d(b,{A9:()=>i,R8:()=>j,Sx:()=>h,mn:()=>k});var d=c(46052),e=c(13247),f=c(53129);async function g(a){let b=await a.text();try{return JSON.parse(b)}catch{return{error:"invalid_response",error_description:b}}}async function h(a){let b=new URLSearchParams({client_id:a.clientId,scope:a.scope});a.referrer&&b.set("referrer",a.referrer);let c=await (0,d.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:b,...e.Ai}),f=await g(c);if(!c.ok)throw Error(`Grok CLI device code request failed: ${f.error_description||f.error||c.status}`);return f}async function i(a,b){let c=await (0,d.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:b,client_id:a.clientId}),...e.Ai}),f=await g(c),h="authorization_pending"===f.error||"slow_down"===f.error;return{ok:c.ok||h,data:f}}async function j(a){try{let b=await (0,d.Fm)(`${e.Nr}/user`,{headers:(0,e.Ab)(a.access_token),...e.Ai});return{user:b.ok?await b.json():null}}catch{return{user:null}}}function k(a,b=null){let c=b?.user||{},d=(0,f.pG)(a.id_token)||(0,f.J_)(a.access_token)||c.email,e=c.userId||c.principalId||null,g=[c.firstName,c.lastName].filter(Boolean).join(" ").trim();return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,scope:a.scope,...d?{email:d}:{},...g?{displayName:g}:{},providerSpecificData:{authMethod:"device_code",idToken:a.id_token||null,email:d||null,userId:e,hasGrokCodeAccess:c.hasGrokCodeAccess??null,subscriptionTier:c.subscriptionTier??null}}}},74177:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{backfillCodexEmails:()=>y,exchangeTokens:()=>v,extractCodexAccountInfo:()=>l.YR,fetchKiroProfileArn:()=>l.gR,generateAuthData:()=>u,getProvider:()=>s,getProviderNames:()=>t,pollForToken:()=>x,requestDeviceCode:()=>w});var e=c(30369),f=c(55511),g=c.n(f),h=c(28730),i=c(13808),j=c(92990),k=c(73159),l=c(53129),m=c(75008),n=c(22898),o=c(46052),p=c(68988),q=a([e]);e=(q.then?(await q)():q)[0];let z=null;async function r(){if(z)return z;try{let a=await (0,o.Fm)(k.o.discoveryUrl,{headers:{Accept:"application/json"},identity:"grok-cli",provider:"xai",format:"openai"});if(a.ok){let b=await a.json();return z={authorizeUrl:(0,l.js)(b.authorization_endpoint,"authorization_endpoint"),tokenUrl:(0,l.js)(b.token_endpoint,"token_endpoint")}}}catch{}return z={authorizeUrl:k.o.authorizeUrl,tokenUrl:k.o.tokenUrl}}let A={claude:{config:j.OV,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d)=>{let e=new URLSearchParams({code:"true",client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c});return`${a.authorizeUrl}?${e.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=b,g="";if(f.includes("#")){let a=f.split("#");f=a[0],g=a[1]||""}let h=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({code:f,state:g||e,grant_type:"authorization_code",client_id:a.clientId,redirect_uri:c,code_verifier:d}),...(0,l.ro)("claude")});if(!h.ok){let a=await h.text();throw Error(`Token exchange failed: ${a}`)}return await h.json()},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope})},codex:{config:j.DI,flowType:"authorization_code_pkce",fixedPort:j.DI.fixedPort,callbackPath:j.DI.callbackPath,buildAuthUrl:(a,b,c,d)=>{let e={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,...a.extraParams,state:c},f=Object.entries(e).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${f}`},exchangeToken:async(a,b,c,d)=>{let e=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d}),...(0,l.ro)("codex")});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b=(0,l.YR)(a.id_token),c={accessToken:a.access_token,refreshToken:a.refresh_token,idToken:a.id_token,expiresIn:a.expires_in,lastRefreshAt:new Date().toISOString()},d=b.email||(0,l.J_)(a.access_token);return d&&(c.email=d),(b.chatgptAccountId||b.chatgptPlanType)&&(c.providerSpecificData={chatgptAccountId:b.chatgptAccountId,chatgptPlanType:b.chatgptPlanType}),c}},xai:{config:k.o,flowType:"authorization_code_pkce",fixedPort:k.o.loopbackPort,callbackPath:k.o.callbackPath,pkceVerifierBytes:k.U,prepareConfig:async a=>{let b=await r();return{...a,authorizeUrl:b.authorizeUrl,tokenUrl:b.tokenUrl}},buildAuthUrl:(a,b,c,d)=>{let e=g().randomBytes(16).toString("hex"),f={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c,nonce:e,plan:"generic",referrer:"cli-proxy-api"},h=Object.entries(f).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${h}`},exchangeToken:async(a,b,c,d)=>{let e=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d}),identity:"grok-cli",provider:"xai",format:"openai"});if(!e.ok){let a=await e.text();throw Error(`xAI token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b={accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope},c=(0,l.pG)(a.id_token);return c&&(b.email=c),a.id_token&&(b.providerSpecificData={idToken:a.id_token}),b}},"grok-cli":{config:j.qp,flowType:"device_code",requestDeviceCode:p.Sx,pollToken:(a,b)=>(0,p.A9)(a,b),postExchange:p.R8,mapTokens:p.mn},"gemini-cli":{config:j.LT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c}),...(0,l.ro)("gemini-cli")});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b=await (0,o.Fm)(`${j.LT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`},...(0,l.ro)("gemini-cli")}),c=b.ok?await b.json():{},d="";try{let b=await (0,o.Fm)("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:(0,j.cD)(),mode:1}),...(0,l.ro)("gemini-cli")});if(b.ok){let a=await b.json();d=a.cloudaicompanionProject?.id||a.cloudaicompanionProject||""}}catch(a){console.log("Failed to fetch project ID:",a)}return{userInfo:c,projectId:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},antigravity:{config:j.YT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c}),identity:"antigravity",provider:"antigravity",format:"antigravity"});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b={Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json","X-Goog-Api-Client":j.YT.loadCodeAssistApiClient,"Client-Metadata":j.YT.loadCodeAssistClientMetadata},c=(0,j.cD)(),d=await (0,o.Fm)(`${j.YT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`},identity:"antigravity",provider:"antigravity",format:"antigravity"}),e=d.ok?await d.json():{},f="",g="legacy-tier";try{let a=await (0,o.Fm)(j.YT.loadCodeAssistEndpoint,{method:"POST",headers:b,body:JSON.stringify({metadata:c}),identity:"antigravity",provider:"antigravity",format:"antigravity"});if(a.ok){let b=await a.json();if(f=b.cloudaicompanionProject?.id||b.cloudaicompanionProject||"",Array.isArray(b.allowedTiers)){for(let a of b.allowedTiers)if(a.isDefault&&a.id){g=a.id.trim();break}}}}catch(a){console.log("Failed to load code assist:",a)}return f&&(async()=>{for(let a=0;a<10;a++){try{let a=await (0,o.Fm)(j.YT.onboardUserEndpoint,{method:"POST",headers:b,body:JSON.stringify({tierId:g,metadata:c}),identity:"antigravity",provider:"antigravity",format:"antigravity"});if(a.ok){let b=await a.json();if(!0===b.done)break}}catch(a){break}await new Promise(a=>setTimeout(a,5e3))}})().catch(()=>{}),{userInfo:e,projectId:f}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},iflow:{config:j.ZL,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({loginMethod:a.extraParams.loginMethod,type:a.extraParams.type,redirect:b,state:c,client_id:a.clientId});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret}),...(0,l.ro)("iflow")});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await (0,o.Fm)(`${j.ZL.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"},...(0,l.ro)("iflow")});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let d=c.data||{};if(!d.apiKey||""===d.apiKey.trim())throw Error("Empty API key returned from iFlow");if(!(d.email?.trim()||d.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})},qoder:{config:j.hF,flowType:"device_code",requestDeviceCode:async a=>{let{QoderService:b}=await c.e(3546).then(c.bind(c,73546)),d=new b().initiateDeviceFlow();return{device_code:d.nonce,user_code:d.nonce.slice(0,8).toUpperCase(),verification_uri:a.loginUrl,verification_uri_complete:d.verificationUriComplete,expires_in:300,interval:2,codeVerifier:d.codeVerifier,_qoderNonce:d.nonce,_qoderMachineId:d.machineId}},pollToken:async(a,b,d,e)=>{let f,{QoderService:g}=await c.e(3546).then(c.bind(c,73546)),h=new g,i=b||e?._qoderNonce,j=d||e?._qoderVerifier;if(!i||!j)return{ok:!1,data:{error:"invalid_request",error_description:"Missing nonce/verifier"}};try{f=await h.pollDeviceToken({nonce:i,codeVerifier:j})}catch(a){return{ok:!1,data:{error:"poll_failed",error_description:a.message}}}if("pending"===f.status)return{ok:!1,data:{error:"authorization_pending"}};let k=await h.fetchUserInfo(f.accessToken),l=Math.floor((f.expireTime-Date.now())/1e3),m=Math.max(86400,l);return{ok:!0,data:{access_token:f.accessToken,refresh_token:f.refreshToken,expires_in:m,_qoderUserId:f.userId,_qoderMachineId:e?._qoderMachineId||"",_qoderName:k.name,_qoderEmail:k.email,_qoderOrganizationId:k.organizationId}}},mapTokens:a=>{let b=(a._qoderEmail||"").trim(),c=(a._qoderName||"").trim()||null,d=a._qoderUserId||"",e=b||(d?`qoder-user-${d}`:null);return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,email:e,displayName:c,providerSpecificData:{authMethod:"device",userId:d,machineId:a._qoderMachineId||"",organizationId:a._qoderOrganizationId||""}}}},qwen:{config:j.Hp,flowType:"device_code",requestDeviceCode:async(a,b)=>{let c=await (0,o.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scope,code_challenge:b,code_challenge_method:a.codeChallengeMethod}),...(0,l.ro)("qwen")});if(!c.ok){let a=await c.text();throw Error(`Device code request failed: ${a}`)}return await c.json()},pollToken:async(a,b,c)=>{let d=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b,code_verifier:c}),...(0,l.ro)("qwen")});return{ok:d.ok,data:await d.json()}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{resourceUrl:a.resource_url}})},github:{config:j.Nu,flowType:"device_code",requestDeviceCode:async a=>{let b=await (0,o.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scopes}),...(0,l.ro)("github")});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}return await b.json()},pollToken:async(a,b)=>{let c,d=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,device_code:b,grant_type:"urn:ietf:params:oauth:grant-type:device_code"}),...(0,l.ro)("github")});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},postExchange:async a=>{let b=await (0,o.Fm)(j.Nu.copilotTokenUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json"},identity:"copilot",provider:"github",format:"openai"}),c=b.ok?await b.json():{},d=await (0,o.Fm)(j.Nu.userInfoUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":j.Nu.apiVersion},identity:"copilot",provider:"github",format:"openai"}),e=d.ok?await d.json():{};return{copilotToken:c,userInfo:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{copilotToken:b?.copilotToken?.token,copilotTokenExpiresAt:b?.copilotToken?.expires_at,githubUserId:b?.userInfo?.id,githubLogin:b?.userInfo?.login,githubName:b?.userInfo?.name,githubEmail:b?.userInfo?.email}})},kiro:{config:j.Tx,flowType:"device_code",requestDeviceCode:async(a,b,c={})=>{let d=("string"==typeof c.region?c.region.trim():"")||"us-east-1";(0,j.S6)(d);let e=("string"==typeof c.startUrl?c.startUrl.trim():"")||a.startUrl,f="idc"===c.authMethod?"idc":"builder-id",g=`https://oidc.${d}.amazonaws.com/client/register`,h=`https://oidc.${d}.amazonaws.com/device_authorization`,i=await (0,o.Fm)(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:a.clientName,clientType:a.clientType,scopes:a.scopes,grantTypes:a.grantTypes,issuerUrl:a.issuerUrl}),...(0,l.ro)("kiro")});if(!i.ok){let a=await i.text();throw Error(`Client registration failed: ${a}`)}let k=await i.json(),m=await (0,o.Fm)(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:k.clientId,clientSecret:k.clientSecret,startUrl:e}),...(0,l.ro)("kiro")});if(!m.ok){let a=await m.text();throw Error(`Device authorization failed: ${a}`)}let n=await m.json();return{device_code:n.deviceCode,user_code:n.userCode,verification_uri:n.verificationUri,verification_uri_complete:n.verificationUriComplete,expires_in:n.expiresIn,interval:n.interval||5,_clientId:k.clientId,_clientSecret:k.clientSecret,_region:d,_authMethod:f,_startUrl:e}},pollToken:async(a,b,c,d)=>{let e,f=d?._region||"us-east-1";(0,j.S6)(f);let g=(0,m.R)(d?._profileArn);if(d?._profileArn&&!g)throw Error("A valid Kiro profile ARN is required for IAM Identity Center");let h=`https://oidc.${f}.amazonaws.com/token`,i=await (0,o.Fm)(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:d?._clientId,clientSecret:d?._clientSecret,deviceCode:b,grantType:"urn:ietf:params:oauth:grant-type:device_code"}),...(0,l.ro)("kiro")});try{e=await i.json()}catch(b){let a=await i.text();e={error:"invalid_response",error_description:a}}if(e.accessToken){let a=(0,m.R)(e.profileArn),b=a?.profileArn||g?.profileArn||await (0,l.gR)(e.accessToken,f);if(d?._authMethod==="idc"&&!b)throw Error("Kiro did not return an enterprise profile. Check that the subscription is active, or enter a profile ARN from `kiro-cli whoami`.");return{ok:!0,data:{access_token:e.accessToken,refresh_token:e.refreshToken,expires_in:e.expiresIn,profile_arn:b,_clientId:d?._clientId,_clientSecret:d?._clientSecret,_region:d?._region,_authMethod:d?._authMethod,_startUrl:d?._startUrl}}}return{ok:!1,data:{error:e.error||"authorization_pending",error_description:e.error_description||e.message}}},mapTokens:a=>{let b=(0,l.J_)(a.access_token);return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,email:b,providerSpecificData:{profileArn:a?.profile_arn||null,clientId:a._clientId,clientSecret:a._clientSecret,region:a._region||"us-east-1",authMethod:a._authMethod||"builder-id",startUrl:a._startUrl||j.Tx.startUrl}}}},cursor:{config:j.WN,flowType:"import_token",mapTokens:a=>({accessToken:a.accessToken,refreshToken:null,expiresIn:a.expiresIn||86400,providerSpecificData:{machineId:a.machineId,authMethod:"imported"}})},"kimi-coding":{config:j.t,flowType:"device_code",requestDeviceCode:async a=>{let b=g().randomUUID(),c=await (0,o.Fm)(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",...(0,h.VK)(b)},body:new URLSearchParams({client_id:a.clientId}),...(0,l.ro)("kimi-coding")});if(!c.ok){let a=await c.text();throw Error(`Device code request failed: ${a}`)}let d=await c.json();return{device_code:d.device_code,user_code:d.user_code,verification_uri:d.verification_uri||"https://www.kimi.com/code/authorize_device",verification_uri_complete:d.verification_uri_complete||`https://www.kimi.com/code/authorize_device?user_code=${d.user_code}`,expires_in:d.expires_in,interval:d.interval||5,_kimiDeviceId:b}},pollToken:async(a,b,c,d)=>{let e,f=d?._kimiDeviceId,g=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",...(0,h.VK)(f)},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b}),...(0,l.ro)("kimi-coding")});try{e=await g.json()}catch(b){let a=await g.text();e={error:"invalid_response",error_description:a}}return e.access_token&&f&&(e._kimiDeviceId=f),{ok:g.ok,data:e}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,...a._kimiDeviceId?{providerSpecificData:{deviceId:a._kimiDeviceId}}:{}})},kilocode:{config:j.MZ,flowType:"device_code",requestDeviceCode:async a=>{let b=await (0,o.Fm)(a.initiateUrl,{method:"POST",headers:{"Content-Type":"application/json"},...(0,l.ro)("kilocode")});if(!b.ok){if(429===b.status)throw Error("Too many pending authorization requests. Please try again later.");let a=await b.text();throw Error(`Device auth initiation failed: ${a}`)}let c=await b.json();return{device_code:c.code,user_code:c.code,verification_uri:c.verificationUrl,verification_uri_complete:c.verificationUrl,expires_in:c.expiresIn||300,interval:3}},pollToken:async(a,b)=>{let c=await (0,o.Fm)(`${a.pollUrlBase}/${b}`,{...(0,l.ro)("kilocode")});if(202===c.status)return{ok:!1,data:{error:"authorization_pending"}};if(403===c.status)return{ok:!1,data:{error:"access_denied",error_description:"Authorization denied by user"}};if(410===c.status)return{ok:!1,data:{error:"expired_token",error_description:"Authorization code expired"}};if(!c.ok)return{ok:!1,data:{error:"poll_failed",error_description:`Poll failed: ${c.status}`}};let d=await c.json();if("approved"===d.status&&d.token){let b=null;try{let c=await (0,o.Fm)(`${a.apiBaseUrl}/api/profile`,{headers:{Authorization:`Bearer ${d.token}`},...(0,l.ro)("kilocode")});if(c.ok){let a=await c.json();b=a.organizations?.[0]?.id||null}}catch{}return{ok:!0,data:{access_token:d.token,_userEmail:d.userEmail,_orgId:b}}}return{ok:!1,data:{error:"authorization_pending"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:null,expiresIn:null,email:a._userEmail,...a._orgId?{providerSpecificData:{orgId:a._orgId}}:{}})},cline:{config:j.lB,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await (0,o.Fm)(a.tokenExchangeUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c}),...(0,l.ro)("cline")});if(!d.ok){let a=await d.text();throw Error(`Cline token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},clinepass:{config:j.w1,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await (0,o.Fm)(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c}),...(0,l.ro)("clinepass")});if(!d.ok){let a=await d.text();throw Error(`ClinePass token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},gitlab:{config:j.f7,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d,e={})=>{let f=e.baseUrl||a.defaultBaseUrl,g=e.clientId||"",h=new URLSearchParams({client_id:g,redirect_uri:b,response_type:"code",state:c,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod});return`${f}${a.authorizeUrlPath}?${h.toString()}`},exchangeToken:async(a,b,c,d,e,f={})=>{let g=f.baseUrl||a.defaultBaseUrl,h=f.clientId||"",i=f.clientSecret||"",j=new URLSearchParams({client_id:h,grant_type:"authorization_code",code:b,redirect_uri:c,code_verifier:d});i&&j.set("client_secret",i);let k=await (0,o.Fm)(`${g}${a.tokenUrlPath}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:j.toString(),...(0,l.ro)("gitlab")});if(!k.ok)throw Error(`GitLab token exchange failed: ${await k.text()}`);let m=await k.json(),n=await (0,o.Fm)(`${g}${a.userInfoUrlPath}`,{headers:{Authorization:`Bearer ${m.access_token}`},...(0,l.ro)("gitlab")}),p=n.ok?await n.json():{};return{...m,_user:p,_baseUrl:g,_clientId:h}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,providerSpecificData:{username:a._user?.username||"",email:a._user?.email||a._user?.public_email||"",name:a._user?.name||"",baseUrl:a._baseUrl,clientId:a._clientId,authKind:"oauth"}})},"codebuddy-cn":{config:j.Nl,flowType:"device_code",requestDeviceCode:async a=>{let b=await (0,o.Fm)(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:"{}",...(0,l.ro)("codebuddy-cn")});if(!b.ok)throw Error(`CodeBuddy state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=await (0,o.Fm)(`${a.tokenUrl}?state=${encodeURIComponent(b)}`,{method:"GET",headers:{Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"},...(0,l.ro)("codebuddy-cn")});if(!c.ok)return{ok:!1,data:{error:"request_failed"}};let d=await c.json();return 0===d.code&&d.data?.accessToken?{ok:!0,data:{access_token:d.data.accessToken,refresh_token:d.data.refreshToken||"",token_type:d.data.tokenType||"Bearer",expires_in:d.data.expiresIn}}:11217===d.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:d.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in||86400,providerSpecificData:{}})},kimchi:{config:j.Td,flowType:"browser_token",buildAuthUrl:(a,b,c)=>{let d=(a.webAppUrl||"https://app.kimchi.dev").replace(/\/+$/,""),e=new URLSearchParams({callback:b,state:c});return`${d}/cli-auth?${e.toString()}`},exchangeToken:async(a,b)=>{let c=String(b||"").trim();if(!c)throw Error("Missing Kimchi token");let d=a.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",e=await (0,o.Fm)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`},...(0,l.ro)("kimchi")});if(!e.ok)throw Error(`Kimchi token validation failed: ${e.status}`);let f={};if(a.userInfoUrl)try{let b=await (0,o.Fm)(a.userInfoUrl,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`},...(0,l.ro)("kimchi")});b.ok&&(f=await b.json())}catch{f={}}return{access_token:c,token_type:"Bearer",_kimchiUser:f}},mapTokens:a=>{let b=a._kimchiUser||{},c=b.id?String(b.id):"",d=b.username||"",e=b.email||(c?`kimchi-user-${c}`:null);return{accessToken:a.access_token,refreshToken:null,email:e,displayName:b.name||d||null,providerSpecificData:{authMethod:"browser_token",userId:c,username:d}}}}};function s(a){let b=A[a];if(!b)throw Error(`Unknown provider: ${a}`);return b}function t(){return Object.keys(A)}async function u(a,b,c){let d,e=s(a),f=e.prepareConfig?await e.prepareConfig(e.config,c||{}):e.config,{codeVerifier:g,codeChallenge:h,state:j}=(0,i.lz)(e.pkceVerifierBytes);return d="device_code"===e.flowType?null:"authorization_code_pkce"===e.flowType?e.buildAuthUrl(f,b,j,h,c||{}):e.buildAuthUrl(f,b,j,void 0,c||{}),(0,n.e_)({state:j,provider:a,codeVerifier:g,redirectUri:b||null}),{authUrl:d,state:j,codeVerifier:g,codeChallenge:h,redirectUri:b,flowType:e.flowType,fixedPort:e.fixedPort,callbackPath:e.callbackPath||"/callback"}}async function v(a,b,c,d,e,f){let g=s(a),h=g.prepareConfig?await g.prepareConfig(g.config,f||{}):g.config,i=await g.exchangeToken(h,b,c,d,e,f||{}),j=null;return g.postExchange&&(j=await g.postExchange(i)),g.mapTokens(i,j)}async function w(a,b,c){let d=s(a);if("device_code"!==d.flowType)throw Error(`Provider ${a} does not support device code flow`);return await d.requestDeviceCode(d.config,b,c||{})}async function x(a,b,c,d){let e=s(a);if("device_code"!==e.flowType)throw Error(`Provider ${a} does not support device code flow`);let f=await e.pollToken(e.config,b,c,d);if(f.ok)if(f.data.access_token){let b=null;e.postExchange&&(b=await e.postExchange(f.data));let c=e.mapTokens(f.data,b);if("kiro"===a&&!c.providerSpecificData?.profileArn){let a=await (0,l.gR)(c.accessToken,c.providerSpecificData?.region);a&&(c.providerSpecificData.profileArn=a)}return{success:!0,tokens:c}}else if("authorization_pending"===f.data.error||"slow_down"===f.data.error)return{success:!1,error:f.data.error,errorDescription:f.data.error_description||f.data.message,pending:"authorization_pending"===f.data.error};else return{success:!1,error:f.data.error||"no_access_token",errorDescription:f.data.error_description||f.data.message||"No access token received"};return{success:!1,error:f.data.error,errorDescription:f.data.error_description}}let B=!1;async function y(){if(!B){B=!0;try{let{getProviderConnections:a,updateProviderConnection:b}=await Promise.resolve().then(c.bind(c,15717));for(let c of(await a()).filter(a=>{if("codex"!==a.provider||"oauth"!==a.authType||!a.idToken)return!1;let b=!!a.email,c=!!a.providerSpecificData?.chatgptAccountId;return!b||!c})){let a=(0,l.YR)(c.idToken);if(!a.email&&!a.chatgptAccountId)continue;let d={};!c.email&&a.email&&(d.email=a.email),(a.chatgptAccountId||a.chatgptPlanType)&&(d.providerSpecificData={...c.providerSpecificData||{},chatgptAccountId:a.chatgptAccountId,chatgptPlanType:a.chatgptPlanType}),Object.keys(d).length&&await b(c.id,d)}}catch(a){B=!1,console.log("backfillCodexEmails failed:",a?.message||a)}}}d()}catch(a){d(a)}})},89865:(a,b,c)=>{c.d(b,{A1:()=>h,lR:()=>j,wO:()=>i,yj:()=>f,zL:()=>g});var d=c(87252);async function e(a,b){let c=a?.body?.getReader?.();if(!c)try{return(await a.text()).slice(0,b)}catch{return""}let d=new TextDecoder,e="",f=0;try{for(;f<b;){let{done:a,value:g}=await c.read();if(a)break;let h=g instanceof Uint8Array?g:new Uint8Array(g),i=b-f;if(e+=d.decode(h.subarray(0,i),{stream:h.byteLength<=i}),f+=Math.min(h.byteLength,i),h.byteLength>i){try{await c.cancel("upstream error body limit")}catch{}break}}return e+d.decode()}catch{return e}finally{try{c.releaseLock?.()}catch{}}}function f(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json"}})}async function g(a,b=null){let c=await e(a,65536);if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs}}}catch{}let f="";try{let a=JSON.parse(c);f="string"==typeof a?.error?.message?a.error.message:"string"==typeof a?.message?a.message:"string"==typeof a?.error_description?a.error_description:"string"==typeof a?.error?a.error:""}catch{f=c}let h=("string"==typeof f?f:"")||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:h}}function h(a,b,c){return{success:!1,status:a,error:b,resetsAtMs:c,response:f(a,b)}}function i(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function j(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}}};
@@ -3,7 +3,7 @@ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA8iMH5c02LilrsERw9t6Pv5Nc
3
3
  4k6Pz1EaDicBMpdpxKduSZu5OANqUq8er4GM95omAGIOPOh+Nx0spthYA2BqGz+l
4
4
  6HRkPJ7S236FZz73In/KVuLnwI8JJ2CbuJap8kvheCCZpmAWpb/cPx/3Vr/J6I17
5
5
  XcW+ML9FoCI6AOvOzwIDAQAB
6
- -----END PUBLIC KEY-----`},9155:(a,b,c)=>{c.d(b,{EV:()=>l,X5:()=>k});var d=c(55511),e=c(46052),f=c(99393),g=c(8298);let h=new Map,i=new Map;async function j(a,b,c=null){let d,h,i={userId:(h=a?.providerSpecificData||{}).userId,authToken:a.accessToken,name:a.displayName||"",email:a.email||"",machineId:h.machineId||""};if(!i.userId||!i.authToken)return null;let k={Accept:"application/json","Accept-Encoding":"identity",...(0,f.d)(Buffer.alloc(0),g.t6,i)},l=new AbortController,m=null,n=null;try{m=setTimeout(()=>l.abort("timeout"),15e3),b&&"function"==typeof b.addEventListener&&(b.aborted?l.abort(b.reason):(n=()=>l.abort(b.reason),b.addEventListener("abort",n))),d=await (0,e.Fm)(g.t6,{method:"GET",headers:k,signal:l.signal},c)}finally{m&&clearTimeout(m),b&&n&&b.removeEventListener("abort",n)}if(!d.ok)return null;let o=await d.json().catch(()=>null);if(!o||!Array.isArray(o.chat))return null;let p=[],q=new Map;for(let a of o.chat){if(!a||"object"!=typeof a)continue;let b=a.key;if(!b||(q.set(b,a),!1===a.enable))continue;let c=a.display_name||b,d=Number(a.max_input_tokens)||131072;p.push({id:b,name:`${c}`,contextLength:d,isVL:!!a.is_vl,isReasoning:!!a.is_reasoning,maxOutputTokens:Number(a.max_output_tokens)||0,description:a.description||""})}return{models:p,rawConfigs:q}}async function k(a,b,c={}){let d=await l(a,c);if(!d)return null;let e=d.rawConfigs.get(b);return e?{...e,key:b}:null}async function l(a,b={}){let c;if(!a?.accessToken||!(a.providerSpecificData||{}).userId)return null;let e=(c=(a?.providerSpecificData||{}).userId||a?.refreshToken||a?.accessToken||"anonymous",(0,d.createHash)("sha256").update(`qoder:${c}`).digest("hex")),f=Date.now();if(!b.forceRefresh){let a=h.get(e);if(a&&a.expiresAt>f)return a}let g=i.get(e);if(g&&!b.forceRefresh)return g;let k=(async()=>{let c=await j(a,b.signal,b.proxyOptions);if(!c)return null;let d={expiresAt:Date.now()+36e5,models:c.models,rawConfigs:c.rawConfigs,fetched:!0};return h.set(e,d),d})();i.set(e,k);try{return await k}finally{i.get(e)===k&&i.delete(e)}}},33026:(a,b,c)=>{c.d(b,{CP:()=>p,Y8:()=>o,yI:()=>m});var d=c(47293),e=c(74075);let f="1"===process.env.CURSOR_PROTOBUF_DEBUG,g=(a,...b)=>f&&console.log(`[PROTOBUF:${a}]`,...b);new TextDecoder;let h="1.1.3",i=new Set([1,2,3,9,10,11,27,1,25]);function j(a){let b=[];for(;a>=128;)b.push(127&a|128),a>>>=7;return b.push(127&a),new Uint8Array(b)}function k(a,b,c){let d=j(a<<3|b);if(0===b)return l(d,j(c));if(2===b){let a="string"==typeof c?new TextEncoder().encode(c):c instanceof Uint8Array?c:Buffer.isBuffer(c)?new Uint8Array(c):new Uint8Array(0);return l(d,j(a.length),a)}return new Uint8Array(0)}function l(...a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}function m(a,b,c=[],f=null,h=!1){g("BODY",`Generating: ${a.length} msgs, model=${b}, tools=${c.length}, reasoning=${f||"none"}, forceAgentMode=${h}`);let i=function(a,b,c=[],e=null,f=!1){return k(1,2,function(a,b,c=[],e=null,f=!1){let h,i=c?.length>0,m=i||f,n=[],o=[],p=[];for(let b=0;b<a.length;b++){let c=a[b],d=Array.isArray(c?.tool_calls)&&c.tool_calls.length>0,e=Array.isArray(c?.tool_results)&&c.tool_results.length>0;if(c?.role==="assistant"&&d&&e){g("ENCODE",`normalizing mixed assistant tool payload at msg[${b}] (calls=${c.tool_calls.length}, results=${c.tool_results.length})`),p.push({...c,tool_results:[]});let d=a[b+1],e=d?.role==="assistant"&&Array.isArray(d?.tool_results)&&d.tool_results.length>0,f=new Set(c.tool_results.map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),h=new Set((d?.tool_results||[]).map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),i=f.size>0&&f.size===h.size;if(i){for(let a of f)if(!h.has(a)){i=!1;break}}e&&i||p.push({role:"assistant",content:"",tool_results:c.tool_results});continue}p.push(c)}for(let a=0;a<p.length;a++){let b=p[a],c="user"===b.role?1:2,e=(0,d.A)(),f=a===p.length-1;n.push({content:b.content,role:c,messageId:e,isLast:f,hasTools:i,toolResults:b.tool_results||[]}),o.push({messageId:e,role:c})}let q=0;return"medium"===e?q=1:"high"===e&&(q=2),l(...n.map(a=>k(1,2,function(a,b,c,d=!1,e=!1,f=[],g=null){let h=f.length>0;return l(k(1,2,a),k(2,0,b),k(13,2,c),...g?[k(32,2,g)]:[],...h?f.map(a=>k(18,2,function(a){var b;let c,d,e=function(a){let b="string"==typeof a&&a.length>0?a:"tool";if(b.startsWith("mcp__")){let a=b.slice(5),c=a.indexOf("__");if(c>=0){let b=a.slice(0,c)||"custom",d=a.slice(c+2)||"tool";return`mcp_${b}_${d}`}return`mcp_custom_${a||"tool"}`}return b.startsWith("mcp_")?b:`mcp_custom_${b}`}(a.tool_name||a.name||""),f=a.raw_args||"{}",g=a.result_content||a.result||"",{toolCallId:h,modelCallId:i}=(b=a.tool_call_id||"",c="\nmc_",(d=b.indexOf(c))>=0?{toolCallId:b.slice(0,d),modelCallId:b.slice(d+c.length)}:{toolCallId:b,modelCallId:null}),j=a.tool_index||a.index||1,{serverName:m,selectedTool:n}=function(a){if("string"!=typeof a||!a.startsWith("mcp_"))return{serverName:"custom",selectedTool:a||"tool"};let b=a.slice(4),c=b.indexOf("_");return c<0?{serverName:"custom",selectedTool:b||"tool"}:{serverName:b.slice(0,c)||"custom",selectedTool:b.slice(c+1)||"tool"}}(e);return l(k(1,2,h),k(2,2,e),k(3,0,j>0?j:1),...i?[k(12,2,i)]:[],k(5,2,f),k(8,2,function(a,b,c,d,e=1){return l(k(1,0,19),k(28,2,l(k(1,2,c),k(2,2,d))),k(35,2,a),...b?[k(48,2,b)]:[],k(49,0,e>0?e:1))}(h,i,n,g,j)),k(11,2,function(a,b,c,d,e,f,g=1){let h;return l(k(1,0,19),k(27,2,(h=l(k(1,2,c),k(3,2,e),k(4,2,d)),k(1,2,h))),k(3,2,a),k(9,2,b),k(10,2,e),k(48,0,g>0?g:1),...f?[k(49,2,f)]:[])}(h,e,n,m,f,i,j)))}(a))):[],k(29,0,+!!e),k(47,0,e?2:1),...d&&e?[k(51,2,j(1))]:[])}(a.content,a.role,a.messageId,a.isLast,a.hasTools,a.toolResults))),k(2,0,1),k(3,2,new Uint8Array(0)),k(4,0,1),k(5,2,l(k(1,2,b),k(4,2,new Uint8Array(0)))),k(8,2,""),k(13,0,1),k(15,2,(h=l(k(1,2,new Uint8Array(0)),k(2,2,new Uint8Array(0))),l(k(1,2,"cursor\\aisettings"),k(3,2,new Uint8Array(0)),k(6,2,h),k(8,0,1),k(9,0,1)))),k(19,0,1),k(23,2,(0,d.A)()),k(26,2,l(k(1,2,process.platform||"linux"),k(2,2,process.arch||"x64"),k(3,2,process.version||"v20.0.0"),k(4,2,process.cwd?.()||"/"),k(5,2,new Date().toISOString()))),k(27,0,+!!m),...m?[k(29,2,j(1))]:[],...o.map(a=>k(30,2,function(a,b,c=null){return l(k(1,2,a),...c?[k(2,2,c)]:[],k(3,0,b))}(a.messageId,a.role))),...c?.length>0?c.map(a=>{let b,c,d;return k(34,2,(b=a.function?.name||a.name||"",c=a.function?.description||a.description||"",d=a.function?.parameters||a.input_schema||{},l(...b?[k(1,2,b)]:[],...c?[k(2,2,c)]:[],...Object.keys(d).length>0?[k(3,2,JSON.stringify(d))]:[],k(4,2,"custom"))))}):[],k(35,0,0),k(38,0,0),k(46,0,m?2:1),k(47,2,""),k(48,0,+!m),k(49,0,q),k(51,0,0),k(53,0,1),k(54,2,m?"Agent":"Ask"))}(a,b,c,e,f))}(a,b,c,f,h),n=function(a,b=!1){let c=a,d=0;b&&(c=new Uint8Array(e.gzipSync(Buffer.from(a))),d=1);let f=new Uint8Array(5+c.length);return f[0]=d,f[1]=c.length>>24&255,f[2]=c.length>>16&255,f[3]=c.length>>8&255,f[4]=255&c.length,f.set(c,5),f}(i,!1);return g("BODY",`Protobuf=${i.length}B, Framed=${n.length}B`),n}function n(a,b){let c=0,d=0,e=b;for(;e<a.length;){let b=a[e];if(c|=(127&b)<<d,e++,!(128&b))break;d+=7}return[c,e]}function o(a){let b=new Map,c=0;for(;c<a.length;){let[d,e,f,g]=function(a,b){let c;if(b>=a.length)return[null,null,null,b];let[d,e]=n(a,b),f=7&d,g=e;if(0===f)[c,g]=n(a,g);else if(2===f){let[b,d]=n(a,g);c=a.slice(d,d+b),g=d+b}else 1===f?(c=a.slice(g,g+8),g+=8):5===f?(c=a.slice(g,g+4),g+=4):c=null;return[d>>3,f,c,g]}(a,c);if(null===d)break;b.has(d)||b.set(d,[]),b.get(d).push({wireType:e,value:f}),c=g}return b}function p(a){try{let b=o(a);for(let a of b.keys())i.has(a)||g("SCHEMA",`Unknown response field #${a} detected. Schema v${h} may be outdated.`);if(b.has(1)){let a=function(a){let b=o(a),c="",d="",e="",f=!1;if(b.has(3)&&(c=new TextDecoder().decode(b.get(3)[0].value).split("\n")[0]),b.has(9)&&(d=new TextDecoder().decode(b.get(9)[0].value)),b.has(11)&&(f=0!==b.get(11)[0].value),b.has(27))try{let a=o(b.get(27)[0].value);if(a.has(1)){let b=o(a.get(1)[0].value);b.has(1)&&(d=new TextDecoder().decode(b.get(1)[0].value)),b.has(3)&&(e=new TextDecoder().decode(b.get(3)[0].value))}}catch(a){g("EXTRACT",`MCP parse error: ${a.message}`)}return(!e&&b.has(10)&&(e=new TextDecoder().decode(b.get(10)[0].value)),c&&d)?{id:c,type:"function",function:{name:d,arguments:e||"{}"},isLast:f}:null}(b.get(1)[0].value);if(a)return g("EXTRACT",`Tool call: ${a.function.name}`),{text:null,error:null,toolCall:a,thinking:null}}if(b.has(2)){let{text:a,thinking:c}=function(a){let b=o(a),c=null,d=null;if(b.has(1)&&(c=new TextDecoder().decode(b.get(1)[0].value)),b.has(25))try{let a=o(b.get(25)[0].value);a.has(1)&&(d=new TextDecoder().decode(a.get(1)[0].value))}catch(a){g("EXTRACT",`Thinking parse error: ${a.message}`)}return{text:c,thinking:d}}(b.get(2)[0].value);if(a||c)return{text:a,error:null,toolCall:null,thinking:c}}return{text:null,error:null,toolCall:null,thinking:null}}catch(b){return g("EXTRACT",`Decode failed (schema v${h}): ${b.message}`),{text:null,error:null,toolCall:null,thinking:null,raw:Buffer.from(a).toString("base64"),decodeError:b.message}}}},86925:(a,b,c)=>{c.d(b,{av:()=>o,gK:()=>m});var d=c(55511),e=c(46052);let f="https://llm.kimchi.dev",g=new Set([429,500,502,503,504]),h=new Map,i=new Map;function j(a){return(("string"==typeof a?a.trim():"")||f).replace(/\/+$/,"")}function k(a){return a?.accessToken||a?.apiKey||a?.providerSpecificData?.apiKey||null}function l(a){if(!a||"object"!=typeof a)return null;let b=a.slug||a.id||a.model||a.name;if("string"!=typeof b||""===b.trim())return null;let c=Array.isArray(a.input_modalities)?a.input_modalities.filter(a=>"text"===a||"image"===a):[],d=a.limits&&"object"==typeof a.limits?a.limits:{},e=Number(d.context_window||a.contextLength||a.context_length)||void 0,f=Number(d.max_output_tokens||a.maxOutputTokens||a.max_output_tokens)||void 0,g="string"==typeof a.provider?a.provider:"",h=!0===a.reasoning,i=Array.isArray(c)&&c.includes("image")?"imageToText":"llm",j={...a,id:b.trim(),name:String(a.display_name||a.displayName||a.name||b).trim(),provider:g,upstreamProvider:g,reasoning:h,inputModalities:c,kind:i,type:i,capabilities:{vision:c.includes("image"),reasoning:h,...e?{contextWindow:e}:{},...f?{maxOutput:f}:{},...g?{upstreamProvider:g}:{}},...e?{contextLength:e}:{},...f?{maxOutputTokens:f}:{}};return"anthropic"===g&&(j.compat={supportsReasoningEffort:!1,cacheControlFormat:"anthropic"}),j}function m(a){if("string"!=typeof a||""===a.trim())return null;let b=a.includes("/")?a.split("/").pop():a;return i.get(b)||i.get(b.toLowerCase())||null}async function n(a,b,c={}){let d=`${j(b)}/v1/models/metadata?include_in_cli=true`,f=new AbortController,h=setTimeout(()=>f.abort(Error("Kimchi models fetch timeout")),2e4),i=c.signal?AbortSignal.any([c.signal,f.signal]):f.signal;try{let b=await (0,e.Fm)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`,"User-Agent":"kimchi/0.1.40"},cache:"no-store",signal:i},c.proxyOptions||null);if(!b.ok){let a=Error(`Kimchi models ${b.status}: ${b.statusText}`);throw a.status=b.status,a.retryable=g.has(b.status),a}let f=await b.json();return Array.isArray(f?.models)?f.models:[]}finally{clearTimeout(h)}}async function o(a,b={}){let c,e,g,m=k(a);if(!m)return null;let p=a?.providerSpecificData?.kimchiEndpoint||b.endpoint||f,q=(g=(e=a?.providerSpecificData||{}).userId||e.username||a?.refreshToken||k(a)||"anonymous",(0,d.createHash)("sha256").update(`kimchi:${j(p)}:${g}`).digest("hex")),r=Date.now();if(!b.forceRefresh){let a=h.get(q);if(a&&a.expiresAt>r)return a}try{c=await n(m,p,b)}catch(a){return b.log?.warn?.("KIMCHI_MODELS",a.message),null}let s=c.map(l).filter(Boolean);if(0===s.length)return null;for(let a of s||[])a?.id&&(i.set(a.id,a),i.set(a.id.toLowerCase(),a));let t={expiresAt:Date.now()+3e5,models:s,rawModels:c};return h.set(q,t),t}},99393:(a,b,c)=>{c.d(b,{d:()=>h});var d=c(55511),e=c(47293),f=c(8298);function g(a){return d.createHash("md5").update(a).digest("hex")}function h(a,b,c){var h;let i,j;if(!c?.userId)throw Error("cosy: user id is empty");if(!c?.authToken)throw Error("cosy: auth token is empty");let k=Buffer.isBuffer(a)?a:"string"==typeof a?Buffer.from(a,"latin1"):Buffer.from(a||[]),{cosyKey:l,info:m}=(h={uid:c.userId,security_oauth_token:c.authToken,name:c.name||"",aid:"",email:c.email||""},i=(0,e.A)().slice(0,16),j=function(a,b){var c;let e,f,g=Buffer.from(b,"utf8");if(16!==g.length)throw Error(`aes key must be 16 bytes, got ${g.length}`);let h=g.subarray(0,16),i=d.createCipheriv("aes-128-cbc",g,h);i.setAutoPadding(!1);let j=(e=16-(c=Buffer.from(a,"utf8")).length%16,f=Buffer.alloc(c.length+e,e),c.copy(f,0),f);return Buffer.concat([i.update(j),i.final()]).toString("base64")}(JSON.stringify(h),i),{cosyKey:d.publicEncrypt({key:f.pr,padding:d.constants.RSA_PKCS1_PADDING},Buffer.from(i,"utf8")).toString("base64"),info:j}),n=String(Math.floor(Date.now()/1e3)),o=JSON.stringify({version:"v1",requestId:(0,e.A)(),info:m,cosyVersion:f.cT,ideVersion:""}),p=Buffer.from(o,"utf8").toString("base64"),q=function(a){let b;try{b=new URL(a).pathname||""}catch{return""}return b.startsWith("/algo")?b.slice(5):b}(b),r=`${p}
6
+ -----END PUBLIC KEY-----`},9155:(a,b,c)=>{c.d(b,{EV:()=>m,X5:()=>l});var d=c(55511),e=c(46052),f=c(45350),g=c(99393),h=c(8298);let i=new Map,j=new Map;async function k(a,b,c=null){let d,i,j={userId:(i=a?.providerSpecificData||{}).userId,authToken:a.accessToken,name:a.displayName||"",email:a.email||"",machineId:i.machineId||""};if(!j.userId||!j.authToken)return null;let l={Accept:"application/json","Accept-Encoding":"identity",...(0,g.d)(Buffer.alloc(0),h.t6,j)},m=new AbortController,n=null,o=null;try{n=setTimeout(()=>m.abort("timeout"),15e3),b&&"function"==typeof b.addEventListener&&(b.aborted?m.abort(b.reason):(o=()=>m.abort(b.reason),b.addEventListener("abort",o))),d=await (0,e.Fm)(h.t6,{method:"GET",headers:l,signal:m.signal,identity:f.xq.qoder.identity,provider:"qoder",format:f.xq.qoder.format},c)}finally{n&&clearTimeout(n),b&&o&&b.removeEventListener("abort",o)}if(!d.ok)return null;let p=await d.json().catch(()=>null);if(!p||!Array.isArray(p.chat))return null;let q=[],r=new Map;for(let a of p.chat){if(!a||"object"!=typeof a)continue;let b=a.key;if(!b||(r.set(b,a),!1===a.enable))continue;let c=a.display_name||b,d=Number(a.max_input_tokens)||131072;q.push({id:b,name:`${c}`,contextLength:d,isVL:!!a.is_vl,isReasoning:!!a.is_reasoning,maxOutputTokens:Number(a.max_output_tokens)||0,description:a.description||""})}return{models:q,rawConfigs:r}}async function l(a,b,c={}){let d=await m(a,c);if(!d)return null;let e=d.rawConfigs.get(b);return e?{...e,key:b}:null}async function m(a,b={}){let c;if(!a?.accessToken||!(a.providerSpecificData||{}).userId)return null;let e=(c=(a?.providerSpecificData||{}).userId||a?.refreshToken||a?.accessToken||"anonymous",(0,d.createHash)("sha256").update(`qoder:${c}`).digest("hex")),f=Date.now();if(!b.forceRefresh){let a=i.get(e);if(a&&a.expiresAt>f)return a}let g=j.get(e);if(g&&!b.forceRefresh)return g;let h=(async()=>{let c=await k(a,b.signal,b.proxyOptions);if(!c)return null;let d={expiresAt:Date.now()+36e5,models:c.models,rawConfigs:c.rawConfigs,fetched:!0};return i.set(e,d),d})();j.set(e,h);try{return await h}finally{j.get(e)===h&&j.delete(e)}}},33026:(a,b,c)=>{c.d(b,{CP:()=>p,Y8:()=>o,yI:()=>m});var d=c(47293),e=c(74075);let f="1"===process.env.CURSOR_PROTOBUF_DEBUG,g=(a,...b)=>f&&console.log(`[PROTOBUF:${a}]`,...b);new TextDecoder;let h="1.1.3",i=new Set([1,2,3,9,10,11,27,1,25]);function j(a){let b=[];for(;a>=128;)b.push(127&a|128),a>>>=7;return b.push(127&a),new Uint8Array(b)}function k(a,b,c){let d=j(a<<3|b);if(0===b)return l(d,j(c));if(2===b){let a="string"==typeof c?new TextEncoder().encode(c):c instanceof Uint8Array?c:Buffer.isBuffer(c)?new Uint8Array(c):new Uint8Array(0);return l(d,j(a.length),a)}return new Uint8Array(0)}function l(...a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}function m(a,b,c=[],f=null,h=!1){g("BODY",`Generating: ${a.length} msgs, model=${b}, tools=${c.length}, reasoning=${f||"none"}, forceAgentMode=${h}`);let i=function(a,b,c=[],e=null,f=!1){return k(1,2,function(a,b,c=[],e=null,f=!1){let h,i=c?.length>0,m=i||f,n=[],o=[],p=[];for(let b=0;b<a.length;b++){let c=a[b],d=Array.isArray(c?.tool_calls)&&c.tool_calls.length>0,e=Array.isArray(c?.tool_results)&&c.tool_results.length>0;if(c?.role==="assistant"&&d&&e){g("ENCODE",`normalizing mixed assistant tool payload at msg[${b}] (calls=${c.tool_calls.length}, results=${c.tool_results.length})`),p.push({...c,tool_results:[]});let d=a[b+1],e=d?.role==="assistant"&&Array.isArray(d?.tool_results)&&d.tool_results.length>0,f=new Set(c.tool_results.map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),h=new Set((d?.tool_results||[]).map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),i=f.size>0&&f.size===h.size;if(i){for(let a of f)if(!h.has(a)){i=!1;break}}e&&i||p.push({role:"assistant",content:"",tool_results:c.tool_results});continue}p.push(c)}for(let a=0;a<p.length;a++){let b=p[a],c="user"===b.role?1:2,e=(0,d.A)(),f=a===p.length-1;n.push({content:b.content,role:c,messageId:e,isLast:f,hasTools:i,toolResults:b.tool_results||[]}),o.push({messageId:e,role:c})}let q=0;return"medium"===e?q=1:"high"===e&&(q=2),l(...n.map(a=>k(1,2,function(a,b,c,d=!1,e=!1,f=[],g=null){let h=f.length>0;return l(k(1,2,a),k(2,0,b),k(13,2,c),...g?[k(32,2,g)]:[],...h?f.map(a=>k(18,2,function(a){var b;let c,d,e=function(a){let b="string"==typeof a&&a.length>0?a:"tool";if(b.startsWith("mcp__")){let a=b.slice(5),c=a.indexOf("__");if(c>=0){let b=a.slice(0,c)||"custom",d=a.slice(c+2)||"tool";return`mcp_${b}_${d}`}return`mcp_custom_${a||"tool"}`}return b.startsWith("mcp_")?b:`mcp_custom_${b}`}(a.tool_name||a.name||""),f=a.raw_args||"{}",g=a.result_content||a.result||"",{toolCallId:h,modelCallId:i}=(b=a.tool_call_id||"",c="\nmc_",(d=b.indexOf(c))>=0?{toolCallId:b.slice(0,d),modelCallId:b.slice(d+c.length)}:{toolCallId:b,modelCallId:null}),j=a.tool_index||a.index||1,{serverName:m,selectedTool:n}=function(a){if("string"!=typeof a||!a.startsWith("mcp_"))return{serverName:"custom",selectedTool:a||"tool"};let b=a.slice(4),c=b.indexOf("_");return c<0?{serverName:"custom",selectedTool:b||"tool"}:{serverName:b.slice(0,c)||"custom",selectedTool:b.slice(c+1)||"tool"}}(e);return l(k(1,2,h),k(2,2,e),k(3,0,j>0?j:1),...i?[k(12,2,i)]:[],k(5,2,f),k(8,2,function(a,b,c,d,e=1){return l(k(1,0,19),k(28,2,l(k(1,2,c),k(2,2,d))),k(35,2,a),...b?[k(48,2,b)]:[],k(49,0,e>0?e:1))}(h,i,n,g,j)),k(11,2,function(a,b,c,d,e,f,g=1){let h;return l(k(1,0,19),k(27,2,(h=l(k(1,2,c),k(3,2,e),k(4,2,d)),k(1,2,h))),k(3,2,a),k(9,2,b),k(10,2,e),k(48,0,g>0?g:1),...f?[k(49,2,f)]:[])}(h,e,n,m,f,i,j)))}(a))):[],k(29,0,+!!e),k(47,0,e?2:1),...d&&e?[k(51,2,j(1))]:[])}(a.content,a.role,a.messageId,a.isLast,a.hasTools,a.toolResults))),k(2,0,1),k(3,2,new Uint8Array(0)),k(4,0,1),k(5,2,l(k(1,2,b),k(4,2,new Uint8Array(0)))),k(8,2,""),k(13,0,1),k(15,2,(h=l(k(1,2,new Uint8Array(0)),k(2,2,new Uint8Array(0))),l(k(1,2,"cursor\\aisettings"),k(3,2,new Uint8Array(0)),k(6,2,h),k(8,0,1),k(9,0,1)))),k(19,0,1),k(23,2,(0,d.A)()),k(26,2,l(k(1,2,process.platform||"linux"),k(2,2,process.arch||"x64"),k(3,2,process.version||"v20.0.0"),k(4,2,process.cwd?.()||"/"),k(5,2,new Date().toISOString()))),k(27,0,+!!m),...m?[k(29,2,j(1))]:[],...o.map(a=>k(30,2,function(a,b,c=null){return l(k(1,2,a),...c?[k(2,2,c)]:[],k(3,0,b))}(a.messageId,a.role))),...c?.length>0?c.map(a=>{let b,c,d;return k(34,2,(b=a.function?.name||a.name||"",c=a.function?.description||a.description||"",d=a.function?.parameters||a.input_schema||{},l(...b?[k(1,2,b)]:[],...c?[k(2,2,c)]:[],...Object.keys(d).length>0?[k(3,2,JSON.stringify(d))]:[],k(4,2,"custom"))))}):[],k(35,0,0),k(38,0,0),k(46,0,m?2:1),k(47,2,""),k(48,0,+!m),k(49,0,q),k(51,0,0),k(53,0,1),k(54,2,m?"Agent":"Ask"))}(a,b,c,e,f))}(a,b,c,f,h),n=function(a,b=!1){let c=a,d=0;b&&(c=new Uint8Array(e.gzipSync(Buffer.from(a))),d=1);let f=new Uint8Array(5+c.length);return f[0]=d,f[1]=c.length>>24&255,f[2]=c.length>>16&255,f[3]=c.length>>8&255,f[4]=255&c.length,f.set(c,5),f}(i,!1);return g("BODY",`Protobuf=${i.length}B, Framed=${n.length}B`),n}function n(a,b){let c=0,d=0,e=b;for(;e<a.length;){let b=a[e];if(c|=(127&b)<<d,e++,!(128&b))break;d+=7}return[c,e]}function o(a){let b=new Map,c=0;for(;c<a.length;){let[d,e,f,g]=function(a,b){let c;if(b>=a.length)return[null,null,null,b];let[d,e]=n(a,b),f=7&d,g=e;if(0===f)[c,g]=n(a,g);else if(2===f){let[b,d]=n(a,g);c=a.slice(d,d+b),g=d+b}else 1===f?(c=a.slice(g,g+8),g+=8):5===f?(c=a.slice(g,g+4),g+=4):c=null;return[d>>3,f,c,g]}(a,c);if(null===d)break;b.has(d)||b.set(d,[]),b.get(d).push({wireType:e,value:f}),c=g}return b}function p(a){try{let b=o(a);for(let a of b.keys())i.has(a)||g("SCHEMA",`Unknown response field #${a} detected. Schema v${h} may be outdated.`);if(b.has(1)){let a=function(a){let b=o(a),c="",d="",e="",f=!1;if(b.has(3)&&(c=new TextDecoder().decode(b.get(3)[0].value).split("\n")[0]),b.has(9)&&(d=new TextDecoder().decode(b.get(9)[0].value)),b.has(11)&&(f=0!==b.get(11)[0].value),b.has(27))try{let a=o(b.get(27)[0].value);if(a.has(1)){let b=o(a.get(1)[0].value);b.has(1)&&(d=new TextDecoder().decode(b.get(1)[0].value)),b.has(3)&&(e=new TextDecoder().decode(b.get(3)[0].value))}}catch(a){g("EXTRACT",`MCP parse error: ${a.message}`)}return(!e&&b.has(10)&&(e=new TextDecoder().decode(b.get(10)[0].value)),c&&d)?{id:c,type:"function",function:{name:d,arguments:e||"{}"},isLast:f}:null}(b.get(1)[0].value);if(a)return g("EXTRACT",`Tool call: ${a.function.name}`),{text:null,error:null,toolCall:a,thinking:null}}if(b.has(2)){let{text:a,thinking:c}=function(a){let b=o(a),c=null,d=null;if(b.has(1)&&(c=new TextDecoder().decode(b.get(1)[0].value)),b.has(25))try{let a=o(b.get(25)[0].value);a.has(1)&&(d=new TextDecoder().decode(a.get(1)[0].value))}catch(a){g("EXTRACT",`Thinking parse error: ${a.message}`)}return{text:c,thinking:d}}(b.get(2)[0].value);if(a||c)return{text:a,error:null,toolCall:null,thinking:c}}return{text:null,error:null,toolCall:null,thinking:null}}catch(b){return g("EXTRACT",`Decode failed (schema v${h}): ${b.message}`),{text:null,error:null,toolCall:null,thinking:null,raw:Buffer.from(a).toString("base64"),decodeError:b.message}}}},86925:(a,b,c)=>{c.d(b,{av:()=>o,gK:()=>m});var d=c(55511),e=c(46052);let f="https://llm.kimchi.dev",g=new Set([429,500,502,503,504]),h=new Map,i=new Map;function j(a){return(("string"==typeof a?a.trim():"")||f).replace(/\/+$/,"")}function k(a){return a?.accessToken||a?.apiKey||a?.providerSpecificData?.apiKey||null}function l(a){if(!a||"object"!=typeof a)return null;let b=a.slug||a.id||a.model||a.name;if("string"!=typeof b||""===b.trim())return null;let c=Array.isArray(a.input_modalities)?a.input_modalities.filter(a=>"text"===a||"image"===a):[],d=a.limits&&"object"==typeof a.limits?a.limits:{},e=Number(d.context_window||a.contextLength||a.context_length)||void 0,f=Number(d.max_output_tokens||a.maxOutputTokens||a.max_output_tokens)||void 0,g="string"==typeof a.provider?a.provider:"",h=!0===a.reasoning,i=Array.isArray(c)&&c.includes("image")?"imageToText":"llm",j={...a,id:b.trim(),name:String(a.display_name||a.displayName||a.name||b).trim(),provider:g,upstreamProvider:g,reasoning:h,inputModalities:c,kind:i,type:i,capabilities:{vision:c.includes("image"),reasoning:h,...e?{contextWindow:e}:{},...f?{maxOutput:f}:{},...g?{upstreamProvider:g}:{}},...e?{contextLength:e}:{},...f?{maxOutputTokens:f}:{}};return"anthropic"===g&&(j.compat={supportsReasoningEffort:!1,cacheControlFormat:"anthropic"}),j}function m(a){if("string"!=typeof a||""===a.trim())return null;let b=a.includes("/")?a.split("/").pop():a;return i.get(b)||i.get(b.toLowerCase())||null}async function n(a,b,c={}){let d=`${j(b)}/v1/models/metadata?include_in_cli=true`,f=new AbortController,h=setTimeout(()=>f.abort(Error("Kimchi models fetch timeout")),2e4),i=c.signal?AbortSignal.any([c.signal,f.signal]):f.signal;try{let b=await (0,e.Fm)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`,"User-Agent":"kimchi/0.1.40"},cache:"no-store",signal:i},c.proxyOptions||null);if(!b.ok){let a=Error(`Kimchi models ${b.status}: ${b.statusText}`);throw a.status=b.status,a.retryable=g.has(b.status),a}let f=await b.json();return Array.isArray(f?.models)?f.models:[]}finally{clearTimeout(h)}}async function o(a,b={}){let c,e,g,m=k(a);if(!m)return null;let p=a?.providerSpecificData?.kimchiEndpoint||b.endpoint||f,q=(g=(e=a?.providerSpecificData||{}).userId||e.username||a?.refreshToken||k(a)||"anonymous",(0,d.createHash)("sha256").update(`kimchi:${j(p)}:${g}`).digest("hex")),r=Date.now();if(!b.forceRefresh){let a=h.get(q);if(a&&a.expiresAt>r)return a}try{c=await n(m,p,b)}catch(a){return b.log?.warn?.("KIMCHI_MODELS",a.message),null}let s=c.map(l).filter(Boolean);if(0===s.length)return null;for(let a of s||[])a?.id&&(i.set(a.id,a),i.set(a.id.toLowerCase(),a));let t={expiresAt:Date.now()+3e5,models:s,rawModels:c};return h.set(q,t),t}},99393:(a,b,c)=>{c.d(b,{d:()=>h});var d=c(55511),e=c(47293),f=c(8298);function g(a){return d.createHash("md5").update(a).digest("hex")}function h(a,b,c){var h;let i,j;if(!c?.userId)throw Error("cosy: user id is empty");if(!c?.authToken)throw Error("cosy: auth token is empty");let k=Buffer.isBuffer(a)?a:"string"==typeof a?Buffer.from(a,"latin1"):Buffer.from(a||[]),{cosyKey:l,info:m}=(h={uid:c.userId,security_oauth_token:c.authToken,name:c.name||"",aid:"",email:c.email||""},i=(0,e.A)().slice(0,16),j=function(a,b){var c;let e,f,g=Buffer.from(b,"utf8");if(16!==g.length)throw Error(`aes key must be 16 bytes, got ${g.length}`);let h=g.subarray(0,16),i=d.createCipheriv("aes-128-cbc",g,h);i.setAutoPadding(!1);let j=(e=16-(c=Buffer.from(a,"utf8")).length%16,f=Buffer.alloc(c.length+e,e),c.copy(f,0),f);return Buffer.concat([i.update(j),i.final()]).toString("base64")}(JSON.stringify(h),i),{cosyKey:d.publicEncrypt({key:f.pr,padding:d.constants.RSA_PKCS1_PADDING},Buffer.from(i,"utf8")).toString("base64"),info:j}),n=String(Math.floor(Date.now()/1e3)),o=JSON.stringify({version:"v1",requestId:(0,e.A)(),info:m,cosyVersion:f.cT,ideVersion:""}),p=Buffer.from(o,"utf8").toString("base64"),q=function(a){let b;try{b=new URL(a).pathname||""}catch{return""}return b.startsWith("/algo")?b.slice(5):b}(b),r=`${p}
7
7
  ${l}
8
8
  ${n}
9
9
  ${k.toString("latin1")}
@@ -1 +1 @@
1
- "use strict";exports.id=1998,exports.ids=[1998],exports.modules={3894:(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}}}}},6979:(a,b,c)=>{c.d(b,{F:()=>f,J:()=>e});var d=c(23211);function e(a,b="Unexpected error"){return a instanceof Error&&a.message?a.message:"string"==typeof a&&a?a:b}function f(a,b){return d.NextResponse.json({error:e(b)},{status:a})}},33016:(a,b,c)=>{c.d(b,{BS:()=>r,HI:()=>w,Ic:()=>v,ZT:()=>u,cx:()=>t,ow:()=>s,sW:()=>x});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120),j=c(3894);let k=g().join(i.nJ,"headroom"),l=g().join(k,"proxy.pid"),m=g().join(k,"proxy.log"),n=g().join(k,"install.log");function o(){e().existsSync(k)||e().mkdirSync(k,{recursive:!0})}function p(){try{e().existsSync(l)&&e().unlinkSync(l)}catch{}}function q(a){if(!a||"number"!=typeof a)return!1;try{return process.kill(a,0),!0}catch{return!1}}function r(){let a=function(){try{if(e().existsSync(l))return parseInt(e().readFileSync(l,"utf8"),10)}catch{}return null}();return a&&q(a)?a:null}async function s({port:a=8787,codeAware:b=!1,kompress:c=!0}={}){var d;let f=Number(a)>0&&65536>Number(a)?Number(a):8787,g=(0,j.kI)();if(!g){let a=Error("Headroom CLI not installed");throw a.code="NOT_INSTALLED",a}let i=r();if(i)return{pid:i,alreadyRunning:!0};o();let k=e().openSync(m,"a"),n=["proxy","--port",String(f),...function({codeAware:a,kompress:b}={}){let c=[];return a&&c.push("--code-aware"),!1===b&&c.push("--disable-kompress"),c}({codeAware:b,kompress:c})],t=(0,h.spawn)(g,n,{stdio:["ignore",k,k],detached:!0,windowsHide:!0,env:{...process.env}});if(!t.pid){e().closeSync(k);let a=Error("Failed to spawn headroom proxy");throw a.code="SPAWN_FAILED",a}return t.unref(),d=t.pid,o(),e().writeFileSync(l,String(d)),await new Promise((a,b)=>{let c=setTimeout(()=>{q(t.pid)?a():b(Error("headroom proxy exited during startup — see proxy.log"))},8e3);t.once("exit",a=>{clearTimeout(c),p(),e().closeSync(k);let d=Error(`headroom proxy exited early (code=${a}) — see proxy.log`);d.code="EARLY_EXIT",b(d)})}),e().closeSync(k),{pid:t.pid,alreadyRunning:!1}}function t(){let a=r();if(!a)return{stopped:!1,reason:"not_running"};try{return process.kill(a,"SIGTERM"),setTimeout(()=>{if(q(a))try{process.kill(a,"SIGKILL")}catch{}},2e3),p(),{stopped:!0,pid:a}}catch(b){p();let a=Error(`Failed to stop headroom proxy: ${b.message}`);throw a.code="STOP_FAILED",a}}async function u(a={}){let b=r();if(b){try{process.kill(b,"SIGTERM")}catch{}for(let a=0;a<30&&q(b);a++)await new Promise(a=>setTimeout(a,100));if(q(b)){try{process.kill(b,"SIGKILL")}catch{}await new Promise(a=>setTimeout(a,300))}p()}return s(a)}async function v(a=[]){let b=Array.isArray(a)?a.filter(a=>j.F_.includes(a)):[],c=(0,j.Su)();if(!c){let a=Error("Python >= 3.10 not found");throw a.code="NO_PYTHON",a}if(!(0,j.kI)()){let a=Error("headroom-ai not installed (run `pip install headroom-ai[proxy]` first)");throw a.code="NOT_INSTALLED",a}let d=["proxy",...b].join(","),f=`headroom-ai[${d}]`;o();let g=e().openSync(n,"w"),i=(0,h.spawn)(c,["-m","pip","install","--upgrade",f],{stdio:["ignore",g,g],windowsHide:!0,env:{...process.env}});return new Promise((a,d)=>{i.once("error",a=>{e().closeSync(g),d(a)}),i.once("exit",h=>{if(e().closeSync(g),0===h)a({success:!0,code:h,spec:f,extras:b,...(0,j.rl)(c)});else{let a=Error(`pip install exited with code=${h} — see headroom/install.log`);a.code="INSTALL_FAILED",d(a)}})})}async function w(a=[]){let b=Array.isArray(a)?a.filter(a=>j.F_.includes(a)):[],c=(0,j.Su)();if(!c){let a=Error("Python >= 3.10 not found");throw a.code="NO_PYTHON",a}let d=[...new Set(b.flatMap(a=>j.Nc[a]||[]))];if(0===d.length){let a=Error("No valid extras to remove");throw a.code="INVALID_EXTRAS",a}let f=["-m","pip","uninstall","-y",...d];o();let g=e().openSync(n,"w"),i=(0,h.spawn)(c,f,{stdio:["ignore",g,g],windowsHide:!0,env:{...process.env}});return new Promise((a,f)=>{i.once("error",a=>{e().closeSync(g),f(a)}),i.once("exit",h=>{if(e().closeSync(g),0===h)a({success:!0,code:h,removed:d,extras:b,...(0,j.rl)(c)});else{let a=Error(`pip uninstall exited with code=${h} — see headroom/install.log`);a.code="UNINSTALL_FAILED",f(a)}})})}function x(a=15){try{if(!e().existsSync(n))return"";return e().readFileSync(n,"utf8").split(/\r?\n/).filter(Boolean).slice(-a).join("\n")}catch{return""}}}};
1
+ "use strict";exports.id=1998,exports.ids=[1998],exports.modules={71998:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Qu:()=>d.Qu,S8:()=>d.S8,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fp:()=>d.fp,fv:()=>d.fv,ho:()=>d.ho,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,py:()=>d.py,rj:()=>d.updateProviderConnection,uL:()=>d.uL,uv:()=>d.uv});var d=c(15717)}};
@@ -1,4 +1,4 @@
1
- exports.id=3986,exports.ids=[3986],exports.modules={644:(a,b,c)=>{"use strict";function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},2142:(a,b,c)=>{"use strict";c.d(b,{B6:()=>A,C8:()=>C,GU:()=>H,HP:()=>F,HS:()=>S,Hq:()=>z,Hr:()=>x,Kx:()=>D,OQ:()=>K,Oe:()=>t,PI:()=>O,RL:()=>Q,Vp:()=>s,XE:()=>E,_6:()=>R,cX:()=>L,dC:()=>I,dN:()=>y,e8:()=>T,eV:()=>J,ex:()=>p,f8:()=>B,ii:()=>r,kT:()=>M,od:()=>N,p3:()=>u,tu:()=>m,uf:()=>v});var d=c(36366),e=c(644),f=c(55511),g=c(43957),h=c(5770),i=c(73274),j=c(5125);function k(){return new Date().toISOString()}let l=null;function m(a){l="function"==typeof a?a:null}function n(a){try{l?.(a)}catch{}}function o(a,b,c){let d=a.get("SELECT source, requests, errors, fallbacks FROM prometheusRoutingTotals WHERE source = ?",[b.source]);(0,j.BO)(d,b.source),(0,j.BO)({source:b.source,requests:d.requests+c,errors:d.errors+c*b.isError,fallbacks:d.fallbacks+c*b.fallbackUsed}),a.run(`UPDATE prometheusRoutingTotals
1
+ "use strict";exports.id=2142,exports.ids=[2142],exports.modules={644:(a,b,c)=>{function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},2142:(a,b,c)=>{c.d(b,{B6:()=>A,C8:()=>C,GU:()=>H,HP:()=>F,HS:()=>S,Hq:()=>z,Hr:()=>x,Kx:()=>D,OQ:()=>K,Oe:()=>t,PI:()=>O,RL:()=>Q,Vp:()=>s,XE:()=>E,_6:()=>R,cX:()=>L,dC:()=>I,dN:()=>y,e8:()=>T,eV:()=>J,ex:()=>p,f8:()=>B,ii:()=>r,kT:()=>M,od:()=>N,p3:()=>u,tu:()=>m,uf:()=>v});var d=c(36366),e=c(644),f=c(55511),g=c(43957),h=c(5770),i=c(73274),j=c(5125);function k(){return new Date().toISOString()}let l=null;function m(a){l="function"==typeof a?a:null}function n(a){try{l?.(a)}catch{}}function o(a,b,c){let d=a.get("SELECT source, requests, errors, fallbacks FROM prometheusRoutingTotals WHERE source = ?",[b.source]);(0,j.BO)(d,b.source),(0,j.BO)({source:b.source,requests:d.requests+c,errors:d.errors+c*b.isError,fallbacks:d.fallbacks+c*b.fallbackUsed}),a.run(`UPDATE prometheusRoutingTotals
2
2
  SET requests = requests + ?,
3
3
  errors = errors + ?,
4
4
  fallbacks = fallbacks + ?
@@ -118,4 +118,4 @@ exports.id=3986,exports.ids=[3986],exports.modules={644:(a,b,c)=>{"use strict";f
118
118
  FROM prometheusRoutingRequests WHERE ${b}`,c)||[],e=new Map;for(let a of d){(0,j.SQ)(a);let b=e.get(a.source)||{source:a.source,requests:0,errors:0,fallbacks:0};b.requests+=1,b.errors+=a.isError,b.fallbacks+=a.fallbackUsed,e.set(a.source,b)}for(let b of e.values()){let c=a.get("SELECT source, requests, errors, fallbacks FROM prometheusRoutingTotals WHERE source = ?",[b.source]);(0,j.BO)(c,b.source),(0,j.BO)({source:b.source,requests:c.requests-b.requests,errors:c.errors-b.errors,fallbacks:c.fallbacks-b.fallbacks}),a.run(`UPDATE prometheusRoutingTotals
119
119
  SET requests = requests - ?, errors = errors - ?, fallbacks = fallbacks - ?
120
120
  WHERE source = ?`,[b.requests,b.errors,b.fallbacks,b.source])}a.run(`DELETE FROM prometheusRoutingRequests WHERE ${b}`,c)}(b,"comboName = ?",[a])}),c=b.run("DELETE FROM routing_events WHERE comboName = ?",[a])?.changes??0,e=b.run("DELETE FROM router_learning_versions WHERE comboName = ?",[a])?.changes??0}),n(a),{events:c,versions:e}}async function T(a,b){if(!a||!b||a===b)return;let c=await (0,d.c)();c.transaction(()=>{c.run("UPDATE routing_events SET comboName = ? WHERE comboName = ?",[b,a]),c.run("UPDATE router_learning_versions SET comboName = ? WHERE comboName = ?",[b,a]),(0,j.Bq)(c,()=>{for(let b of c.all(`SELECT requestKey, terminalId, source, isError, fallbackUsed
121
- FROM prometheusRoutingRequests WHERE comboName = ?`,[a])||[])(0,j.SQ)(b);c.run("UPDATE prometheusRoutingRequests SET comboName = ? WHERE comboName = ?",[b,a])})}),n(a),n(b)}},5125:(a,b,c)=>{"use strict";c.d(b,{BO:()=>k,Bq:()=>i,Kd:()=>j,SQ:()=>l});var d=c(73274);let e=["requests","promptTokens","completionTokens","cachedTokens"],f=["requests","errors","fallbacks"];function g(a,b){return!!a.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",[b])}function h(a){g(a,"prometheusMetricState")&&a.run("UPDATE prometheusMetricState SET available = 0 WHERE id = 1")}function i(a,b){if(!function(a){if(!g(a,"prometheusMetricState"))return!1;let b=a.get("SELECT available FROM prometheusMetricState WHERE id = 1");try{let a=(0,d.T)(b?.available,"metricState.available",{integer:!0});if(![0,1].includes(a))throw Error("invalid Prometheus metric state");return 1===a}catch{return h(a),!1}}(a))return!1;try{return a.transaction(b),!0}catch{return h(a),!1}}function j(a,b=a?.provider||"usage"){if(!a||"string"!=typeof a.provider||!a.provider)throw Error(`invalid Prometheus usage metric: ${b}.provider`);for(let c of e)(0,d.T)(a[c],`${b}.${c}`,{integer:!0});return(0,d.T)(a.cost,`${b}.cost`),a}function k(a,b=a?.source||"routing"){if(!a||"string"!=typeof a.source||!a.source)throw Error(`invalid Prometheus routing metric: ${b}.source`);for(let c of f)(0,d.T)(a[c],`${b}.${c}`,{integer:!0});return a}function l(a,b=a?.requestKey||"routingRequest"){if(!a||"string"!=typeof a.source||!a.source)throw Error(`invalid Prometheus routing request: ${b}.source`);(0,d.T)(a.terminalId,`${b}.terminalId`,{integer:!0});let c=(0,d.T)(a.isError,`${b}.isError`,{integer:!0}),e=(0,d.T)(a.fallbackUsed,`${b}.fallbackUsed`,{integer:!0});if(![0,1].includes(c)||![0,1].includes(e))throw Error(`invalid Prometheus routing request: ${b}`);return a}},5770:(a,b,c)=>{"use strict";c.d(b,{Qm:()=>d,lc:()=>f,vL:()=>h});let d=2e4,e=new Map;function f(a){let b="string"==typeof a?a:String(a??""),c=b.indexOf("/");return -1===c?b:b.slice(0,c)}function g(a,b,c){let d=a?.[b];return Number.isFinite(d)?d:c}function h(a,b={}){let c=b.strategy??"off";if(!Array.isArray(a)||a.length<2||"off"===c)return a;let i=function(a){let b=new Set,c=[];for(let d of a){let a=f(d);b.has(a)||(b.add(a),c.push(a))}return c}(a),j=function(a,b,c){let d=new Map;if("priority"===b){let b=Array.isArray(c.providerOrder)?c.providerOrder:[];for(let c of a){let a=b.indexOf(c);d.set(c,-1===a?b.length:a)}return d}if("round-robin"===b){let b=c.rotationKey??"__default__",f=e.get(b)||0;e.set(b,f+1);let g=f%a.length;for(let b=0;b<a.length;b++)d.set(a[(g+b)%a.length],b);return d}for(let e of a){let f=c.providerQuota?.[e],h="fastest"===b?g(c.providerLatencyMs,e,1/0):"quota-first"===b?Number.isFinite(f)?100-f:1e6+g(c.providerUsage,e,0):a.indexOf(e);d.set(e,h)}return d}(i,c,b),k=Number.isFinite(b.guardMs)?b.guardMs:d;return a.map((a,c)=>{var d;let e,g=f(a);return{model:a,index:c,rank:j.get(g)??i.length,demoted:(d=b.providerLatencyMs,Number.isFinite(e=d?.[g])&&e>k)}}).sort((a,b)=>a.demoted!==b.demoted?Number(a.demoted)-Number(b.demoted):a.demoted?a.index-b.index:a.rank-b.rank||a.index-b.index).map(({model:a})=>a)}},36366:(a,b,c)=>{"use strict";c.d(b,{c:()=>l});var d=c(95658),e=c(92792);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let f=global._dbAdapter;async function g(a){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(4739).then(c.bind(c,24739));return await a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] bun:sqlite unavailable: ${b.message}`),null}}async function h(a){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(5258).then(c.bind(c,25258));return a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] better-sqlite3 unavailable: ${b.message}`),null}}async function i(a){if(process.versions.bun)return null;let[b,e]=process.versions.node.split(".").map(Number);if(b<22||22===b&&e<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(8520).then(c.bind(c,88520));return await a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] node:sqlite unavailable: ${b.message}`),null}}async function j(a){try{let{createSqlJsAdapter:a}=await c.e(3593).then(c.bind(c,53593));return await a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] sql.js unavailable: ${b.message}`),null}}async function k(){if((0,e.I)())throw Error(`[DB] refusing to open ${d.AL} during next build — mark the calling page 'force-dynamic'`);(0,d.Jh)();let a=[],b=await g(a);if(b||(b=await h(a)),b||(b=await i(a)),b||(b=await j(a)),!b){if(a.some(a=>a?.code==="SQLITE_CORRUPT"||/corrupt|malformed|not a database/i.test(a?.message||"")))throw Error(`[DB] Database appears corrupted: ${d.AL}. Restore one of the five automatic backups from ${d.KQ}.`);throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)")}if(!f.logged){let a="sql.js"===b.driver?"warn":"log";"sql.js"===b.driver?console.warn(`[DB] WARNING: using sql.js fallback (in-memory + full-file rewrite). Prefer Node ≥22.5 (node:sqlite) or install better-sqlite3. file: ${d.AL}`):console[a](`[DB] Driver: ${b.driver} | file: ${d.AL}`),f.logged=!0}let{runMigrationOnce:k}=await Promise.all([c.e(8976),c.e(5350),c.e(869),c.e(5781),c.e(940)]).then(c.bind(c,59282));return await k(b),b}async function l(){return f.instance?f.instance:(f.initPromise||(f.initPromise=k().then(a=>(f.instance=a,a))),f.initPromise)}},43957:(a,b,c)=>{"use strict";function d({workerOk:a,workerLatencyMs:b=null,clusterP50LatencyMs:c=null,fallbackUsed:e=!1,retries:f=0,hasCompletion:g=!1,tokensOut:h=null,userRating:i=null}){let j=0,k=!!(e||null!=f&&f>0);return a&&!k&&(j+=40),a||(j-=20),a&&"number"==typeof b&&"number"==typeof c&&c>0&&b<c&&(j+=15),k&&(j-=30),a&&(!0===g||"number"==typeof h&&h>0)&&(j+=10),1===i&&(j+=25),-1===i&&(j-=25),Math.max(0,Math.min(100,j))}function e(a){let b=Number(a);return Number.isFinite(b)?b>=8?1:b<=3?-1:0:0}function f(a,b,c={}){let g,h=a&&"object"==typeof a?{...a}:{},i=void 0!==c.userRating?0===c.userRating?null:c.userRating:h.userRating??null,j=void 0!==c.judgeScore?c.judgeScore:h.judgeScore??null,k=null!=j?e(j):0,l=1===i||-1===i?i:k||null,m=h.scoreInputs;g=m&&"object"==typeof m?d({...m,userRating:l}):Math.max(0,Math.min(100,("number"==typeof h.baseOutcomeScore?h.baseOutcomeScore:Number(b)||0)+25*(l||0))),h.userRating=i,null!=j&&(h.judgeScore=j),h.scoreAdjustedBy=1===i||-1===i?"user":k?"judge":null,h.judgeAdjusted=!!k&&1!==i&&-1!==i;let n=Number(b)!==g;return{outcomeScore:g,meta:h,changed:n}}c.d(b,{Uq:()=>e,_4:()=>d,al:()=>f})},49120:(a,b,c)=>{"use strict";c.d(b,{nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}function o(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},73274:(a,b,c)=>{"use strict";function d(a,b,{integer:c=!1}={}){if("number"!=typeof a||!Number.isFinite(a)||a<0||c&&!Number.isInteger(a))throw Error(`invalid Prometheus metric number: ${b}`);return Object.is(a,-0)?0:a}c.d(b,{T:()=>d})},78335:()=>{},92792:(a,b,c)=>{"use strict";function d(){return"phase-production-build"===process.env.NEXT_PHASE||"phase-export"===process.env.NEXT_PHASE||"phase-static"===process.env.NEXT_PHASE}c.d(b,{I:()=>d})},95658:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(49120);let i=e().join(h.nJ,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.nJ,"db.json"),usage:e().join(h.nJ,"usage.json"),disabled:e().join(h.nJ,"disabledModels.json"),details:e().join(h.nJ,"request-details.json")};function m(){for(let a of[h.nJ,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},96487:()=>{}};
121
+ FROM prometheusRoutingRequests WHERE comboName = ?`,[a])||[])(0,j.SQ)(b);c.run("UPDATE prometheusRoutingRequests SET comboName = ? WHERE comboName = ?",[b,a])})}),n(a),n(b)}},5125:(a,b,c)=>{c.d(b,{BO:()=>m,Bq:()=>k,Kd:()=>l,SQ:()=>n});var d=c(73274);let e=["requests","promptTokens","completionTokens","cachedTokens"],f=["requests","errors","fallbacks"],g=new WeakMap;function h(a,b){let c=g.get(a);if(c||(c=new Map,g.set(a,c)),c.has(b))return c.get(b);let d=!!a.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",[b]);return c.set(b,d),d}let i=new WeakMap;function j(a){i.delete(a),h(a,"prometheusMetricState")&&a.run("UPDATE prometheusMetricState SET available = 0 WHERE id = 1")}function k(a,b){if(!function(a){let b=Date.now(),c=i.get(a);if(c&&c.expiresAt>b)return c.value;let e=function(a){if(!h(a,"prometheusMetricState"))return!1;let b=a.get("SELECT available FROM prometheusMetricState WHERE id = 1");try{let a=(0,d.T)(b?.available,"metricState.available",{integer:!0});if(![0,1].includes(a))throw Error("invalid Prometheus metric state");return 1===a}catch{return j(a),!1}}(a);return i.set(a,{value:e,expiresAt:b+5e3}),e}(a))return!1;try{return a.transaction(b),!0}catch{return j(a),!1}}function l(a,b=a?.provider||"usage"){if(!a||"string"!=typeof a.provider||!a.provider)throw Error(`invalid Prometheus usage metric: ${b}.provider`);for(let c of e)(0,d.T)(a[c],`${b}.${c}`,{integer:!0});return(0,d.T)(a.cost,`${b}.cost`),a}function m(a,b=a?.source||"routing"){if(!a||"string"!=typeof a.source||!a.source)throw Error(`invalid Prometheus routing metric: ${b}.source`);for(let c of f)(0,d.T)(a[c],`${b}.${c}`,{integer:!0});return a}function n(a,b=a?.requestKey||"routingRequest"){if(!a||"string"!=typeof a.source||!a.source)throw Error(`invalid Prometheus routing request: ${b}.source`);(0,d.T)(a.terminalId,`${b}.terminalId`,{integer:!0});let c=(0,d.T)(a.isError,`${b}.isError`,{integer:!0}),e=(0,d.T)(a.fallbackUsed,`${b}.fallbackUsed`,{integer:!0});if(![0,1].includes(c)||![0,1].includes(e))throw Error(`invalid Prometheus routing request: ${b}`);return a}},5770:(a,b,c)=>{c.d(b,{Qm:()=>d,lc:()=>f,vL:()=>h});let d=2e4,e=new Map;function f(a){let b="string"==typeof a?a:String(a??""),c=b.indexOf("/");return -1===c?b:b.slice(0,c)}function g(a,b,c){let d=a?.[b];return Number.isFinite(d)?d:c}function h(a,b={}){let c=b.strategy??"off";if(!Array.isArray(a)||a.length<2||"off"===c)return a;let i=function(a){let b=new Set,c=[];for(let d of a){let a=f(d);b.has(a)||(b.add(a),c.push(a))}return c}(a),j=function(a,b,c){let d=new Map;if("priority"===b){let b=Array.isArray(c.providerOrder)?c.providerOrder:[];for(let c of a){let a=b.indexOf(c);d.set(c,-1===a?b.length:a)}return d}if("round-robin"===b){let b=c.rotationKey??"__default__",f=e.get(b)||0;e.set(b,f+1);let g=f%a.length;for(let b=0;b<a.length;b++)d.set(a[(g+b)%a.length],b);return d}for(let e of a){let f=c.providerQuota?.[e],h="fastest"===b?g(c.providerLatencyMs,e,1/0):"quota-first"===b?Number.isFinite(f)?100-f:1e6+g(c.providerUsage,e,0):a.indexOf(e);d.set(e,h)}return d}(i,c,b),k=Number.isFinite(b.guardMs)?b.guardMs:d;return a.map((a,c)=>{var d;let e,g=f(a);return{model:a,index:c,rank:j.get(g)??i.length,demoted:(d=b.providerLatencyMs,Number.isFinite(e=d?.[g])&&e>k)}}).sort((a,b)=>a.demoted!==b.demoted?Number(a.demoted)-Number(b.demoted):a.demoted?a.index-b.index:a.rank-b.rank||a.index-b.index).map(({model:a})=>a)}},36366:(a,b,c)=>{c.d(b,{c:()=>l});var d=c(95658),e=c(92792);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let f=global._dbAdapter;async function g(a){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(4739).then(c.bind(c,24739));return await a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] bun:sqlite unavailable: ${b.message}`),null}}async function h(a){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(5258).then(c.bind(c,25258));return a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] better-sqlite3 unavailable: ${b.message}`),null}}async function i(a){if(process.versions.bun)return null;let[b,e]=process.versions.node.split(".").map(Number);if(b<22||22===b&&e<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(8520).then(c.bind(c,88520));return await a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] node:sqlite unavailable: ${b.message}`),null}}async function j(a){try{let{createSqlJsAdapter:a}=await c.e(3593).then(c.bind(c,53593));return await a(d.AL)}catch(b){return a.push(b),console.warn(`[DB] sql.js unavailable: ${b.message}`),null}}async function k(){if((0,e.I)())throw Error(`[DB] refusing to open ${d.AL} during next build — mark the calling page 'force-dynamic'`);(0,d.Jh)();let a=[],b=await g(a);if(b||(b=await h(a)),b||(b=await i(a)),b||(b=await j(a)),!b){if(a.some(a=>a?.code==="SQLITE_CORRUPT"||/corrupt|malformed|not a database/i.test(a?.message||"")))throw Error(`[DB] Database appears corrupted: ${d.AL}. Restore one of the five automatic backups from ${d.KQ}.`);throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)")}if(!f.logged){let a="sql.js"===b.driver?"warn":"log";"sql.js"===b.driver?console.warn(`[DB] WARNING: using sql.js fallback (in-memory + full-file rewrite). Prefer Node ≥22.5 (node:sqlite) or install better-sqlite3. file: ${d.AL}`):console[a](`[DB] Driver: ${b.driver} | file: ${d.AL}`),f.logged=!0}let{runMigrationOnce:k}=await Promise.all([c.e(8976),c.e(5350),c.e(869),c.e(5781),c.e(4675)]).then(c.bind(c,59282));try{await k(b)}catch(a){try{await b.close?.()}catch{}throw a}return b}async function l(){return f.instance?f.instance:(f.initPromise||(f.initPromise=k().then(a=>(f.instance=a,a),a=>{throw f.initPromise=null,a})),f.initPromise)}},43957:(a,b,c)=>{function d({workerOk:a,workerLatencyMs:b=null,clusterP50LatencyMs:c=null,fallbackUsed:e=!1,retries:f=0,hasCompletion:g=!1,tokensOut:h=null,userRating:i=null}){let j=0,k=!!(e||null!=f&&f>0);return a&&!k&&(j+=40),a||(j-=20),a&&"number"==typeof b&&"number"==typeof c&&c>0&&b<c&&(j+=15),k&&(j-=30),a&&(!0===g||"number"==typeof h&&h>0)&&(j+=10),1===i&&(j+=25),-1===i&&(j-=25),Math.max(0,Math.min(100,j))}function e(a){let b=Number(a);return Number.isFinite(b)?b>=8?1:b<=3?-1:0:0}function f(a,b,c={}){let g,h=a&&"object"==typeof a?{...a}:{},i=void 0!==c.userRating?0===c.userRating?null:c.userRating:h.userRating??null,j=void 0!==c.judgeScore?c.judgeScore:h.judgeScore??null,k=null!=j?e(j):0,l=1===i||-1===i?i:k||null,m=h.scoreInputs;g=m&&"object"==typeof m?d({...m,userRating:l}):Math.max(0,Math.min(100,("number"==typeof h.baseOutcomeScore?h.baseOutcomeScore:Number(b)||0)+25*(l||0))),h.userRating=i,null!=j&&(h.judgeScore=j),h.scoreAdjustedBy=1===i||-1===i?"user":k?"judge":null,h.judgeAdjusted=!!k&&1!==i&&-1!==i;let n=Number(b)!==g;return{outcomeScore:g,meta:h,changed:n}}c.d(b,{Uq:()=>e,_4:()=>d,al:()=>f})},49120:(a,b,c)=>{c.d(b,{nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}function o(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},73274:(a,b,c)=>{c.d(b,{T:()=>d});function d(a,b,{integer:c=!1}={}){if("number"!=typeof a||!Number.isFinite(a)||a<0||c&&!Number.isInteger(a))throw Error(`invalid Prometheus metric number: ${b}`);return Object.is(a,-0)?0:a}},92792:(a,b,c)=>{c.d(b,{I:()=>d});function d(){return"phase-production-build"===process.env.NEXT_PHASE||"phase-export"===process.env.NEXT_PHASE||"phase-static"===process.env.NEXT_PHASE}},95658:(a,b,c)=>{c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(49120);let i=e().join(h.nJ,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.nJ,"db.json"),usage:e().join(h.nJ,"usage.json"),disabled:e().join(h.nJ,"disabledModels.json"),details:e().join(h.nJ,"request-details.json")};function m(){for(let a of[h.nJ,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}}};