switchboard-router 0.6.24 → 0.6.26

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 (809) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +10 -9
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/routes-manifest.json +6 -0
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js +2 -2
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js +2 -2
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js +2 -2
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js +2 -2
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/_global-error/page.js +2 -2
  82. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  88. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  90. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  93. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  95. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  96. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  97. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  98. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  99. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  100. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  101. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  102. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  103. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/agent-library/export/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/agent-library/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js +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 +1 -1
  118. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  122. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  124. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js +1 -2
  132. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  136. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  142. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  146. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  148. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  150. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  152. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  154. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -3
  156. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  158. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +5 -1
  160. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  162. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -5
  164. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js +1 -0
  166. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -0
  167. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route_client-reference-manifest.js +1 -0
  168. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/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 +1 -1
  187. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +5 -5
  191. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  237. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  249. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  251. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  299. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/routing/feedback/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/routing/insights/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/routing/learn/route.js +1 -1
  305. package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/routing/stats/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  317. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/skills/[id]/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js +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 +2 -2
  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 +1 -1
  331. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  347. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  349. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  355. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  357. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  363. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  365. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  366. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  367. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  368. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  369. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  370. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  371. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  372. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  373. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  374. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  375. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  376. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  377. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  378. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  379. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  380. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  381. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  383. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  384. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  385. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  386. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  388. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  389. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  390. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  391. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  392. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  393. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  394. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  395. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  396. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  397. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  398. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  399. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  400. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  401. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  402. package/app/.next-cli-build/server/app/callback/page.js +2 -2
  403. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  404. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  405. package/app/.next-cli-build/server/app/callback.html +1 -1
  406. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  407. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  408. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  410. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  411. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  412. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  414. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  418. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  419. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.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 +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  424. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  425. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  427. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  428. package/app/.next-cli-build/server/app/index.html +1 -1
  429. package/app/.next-cli-build/server/app/index.rsc +4 -4
  430. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  431. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  432. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  433. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  434. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  435. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  436. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  437. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  438. package/app/.next-cli-build/server/app/landing.html +1 -1
  439. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  440. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  441. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  442. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  443. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  444. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  445. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  446. package/app/.next-cli-build/server/app/login/page.js +2 -2
  447. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  448. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  449. package/app/.next-cli-build/server/app/login.html +1 -1
  450. package/app/.next-cli-build/server/app/login.rsc +4 -4
  451. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  452. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  454. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  455. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  456. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  457. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  458. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  459. package/app/.next-cli-build/server/app/page.js +2 -2
  460. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  461. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  462. package/app/.next-cli-build/server/app-paths-manifest.json +10 -9
  463. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  464. package/app/.next-cli-build/server/chunks/1421.js +1 -0
  465. package/app/.next-cli-build/server/chunks/194.js +1 -1
  466. package/app/.next-cli-build/server/chunks/2376.js +1 -1
  467. package/app/.next-cli-build/server/chunks/3787.js +2 -2
  468. package/app/.next-cli-build/server/chunks/4776.js +3 -3
  469. package/app/.next-cli-build/server/chunks/{1557.js → 6395.js} +26 -26
  470. package/app/.next-cli-build/server/chunks/6985.js +1 -0
  471. package/app/.next-cli-build/server/chunks/7374.js +2 -0
  472. package/app/.next-cli-build/server/chunks/7454.js +5 -0
  473. package/app/.next-cli-build/server/chunks/8658.js +1 -1
  474. package/app/.next-cli-build/server/chunks/869.js +1 -1
  475. package/app/.next-cli-build/server/chunks/8775.js +1 -1
  476. package/app/.next-cli-build/server/chunks/8998.js +1 -1
  477. package/app/.next-cli-build/server/chunks/9696.js +2 -2
  478. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  479. package/app/.next-cli-build/server/pages/404.html +1 -1
  480. package/app/.next-cli-build/server/pages/500.html +1 -1
  481. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  482. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  483. package/app/.next-cli-build/static/8zZFr7oLhUXwtIugtniTD/_buildManifest.js +1 -0
  484. package/app/.next-cli-build/static/chunks/{1321-142dde453364af1a.js → 1321-48e4d3c8dbd23568.js} +1 -1
  485. package/app/.next-cli-build/static/chunks/{7524-241508e7e1206938.js → 3531-5066ce0b15cf43af.js} +22 -22
  486. package/app/.next-cli-build/static/chunks/{5497-f7310b0eb1e78666.js → 5497-c8ebfe46caa621c7.js} +2 -2
  487. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-74404efb9312cac5.js → page-6633578a55a1a436.js} +1 -1
  488. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-8c149b74a68a90cc.js → page-3cbe5d8636bd2161.js} +1 -1
  489. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-b9cf2ef457d7eec5.js → page-59e54ef2021ad5bb.js} +1 -1
  490. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1ec149c6b914249d.js +10 -0
  491. package/app/.next-cli-build/static/chunks/app/_global-error/{page-ef4a253004436aeb.js → page-596c1bc92adc4d71.js} +1 -1
  492. package/app/.next-cli-build/static/chunks/app/api/agent-library/catalog/{route-ef4a253004436aeb.js → route-596c1bc92adc4d71.js} +1 -1
  493. package/app/.next-cli-build/static/chunks/app/api/agent-library/doctor/{route-ef4a253004436aeb.js → route-596c1bc92adc4d71.js} +1 -1
  494. package/app/.next-cli-build/static/chunks/app/api/agent-library/export/{route-ef4a253004436aeb.js → route-596c1bc92adc4d71.js} +1 -1
  495. package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-596c1bc92adc4d71.js +1 -0
  496. package/app/.next-cli-build/static/chunks/app/api/agent-library/route-596c1bc92adc4d71.js +1 -0
  497. package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-596c1bc92adc4d71.js +1 -0
  498. package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-596c1bc92adc4d71.js +1 -0
  499. package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-596c1bc92adc4d71.js +1 -0
  500. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-596c1bc92adc4d71.js +1 -0
  501. package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-596c1bc92adc4d71.js +1 -0
  502. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-596c1bc92adc4d71.js +1 -0
  503. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-596c1bc92adc4d71.js +1 -0
  504. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-596c1bc92adc4d71.js +1 -0
  505. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-full-catalog/route-596c1bc92adc4d71.js +1 -0
  506. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-picker-labels/route-596c1bc92adc4d71.js +1 -0
  507. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-596c1bc92adc4d71.js +1 -0
  508. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-596c1bc92adc4d71.js +1 -0
  509. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-596c1bc92adc4d71.js +1 -0
  510. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-596c1bc92adc4d71.js +1 -0
  511. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-596c1bc92adc4d71.js +1 -0
  512. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-596c1bc92adc4d71.js +1 -0
  513. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-596c1bc92adc4d71.js +1 -0
  514. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-596c1bc92adc4d71.js +1 -0
  515. package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-596c1bc92adc4d71.js +1 -0
  516. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-596c1bc92adc4d71.js +1 -0
  517. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-596c1bc92adc4d71.js +1 -0
  518. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-596c1bc92adc4d71.js +1 -0
  519. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-596c1bc92adc4d71.js +1 -0
  520. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-596c1bc92adc4d71.js +1 -0
  521. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-596c1bc92adc4d71.js +1 -0
  522. package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-596c1bc92adc4d71.js +1 -0
  523. package/app/.next-cli-build/static/chunks/app/api/cli-tools/picker-labels/route-596c1bc92adc4d71.js +1 -0
  524. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-596c1bc92adc4d71.js +1 -0
  525. package/app/.next-cli-build/static/chunks/app/api/combos/route-596c1bc92adc4d71.js +1 -0
  526. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-596c1bc92adc4d71.js +1 -0
  527. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-596c1bc92adc4d71.js +1 -0
  528. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-596c1bc92adc4d71.js +1 -0
  529. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-596c1bc92adc4d71.js +1 -0
  530. package/app/.next-cli-build/static/chunks/app/api/health/route-596c1bc92adc4d71.js +1 -0
  531. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-596c1bc92adc4d71.js +1 -0
  532. package/app/.next-cli-build/static/chunks/app/api/keys/route-596c1bc92adc4d71.js +1 -0
  533. package/app/.next-cli-build/static/chunks/app/api/locale/route-596c1bc92adc4d71.js +1 -0
  534. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-596c1bc92adc4d71.js +1 -0
  535. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-596c1bc92adc4d71.js +1 -0
  536. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-596c1bc92adc4d71.js +1 -0
  537. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-596c1bc92adc4d71.js +1 -0
  538. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-596c1bc92adc4d71.js +1 -0
  539. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-596c1bc92adc4d71.js +1 -0
  540. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-596c1bc92adc4d71.js +1 -0
  541. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-596c1bc92adc4d71.js +1 -0
  542. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-596c1bc92adc4d71.js +1 -0
  543. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-596c1bc92adc4d71.js +1 -0
  544. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-596c1bc92adc4d71.js +1 -0
  545. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-596c1bc92adc4d71.js +1 -0
  546. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-596c1bc92adc4d71.js +1 -0
  547. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-596c1bc92adc4d71.js +1 -0
  548. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-596c1bc92adc4d71.js +1 -0
  549. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-596c1bc92adc4d71.js +1 -0
  550. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-596c1bc92adc4d71.js +1 -0
  551. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-596c1bc92adc4d71.js +1 -0
  552. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-596c1bc92adc4d71.js +1 -0
  553. package/app/.next-cli-build/static/chunks/app/api/models/route-596c1bc92adc4d71.js +1 -0
  554. package/app/.next-cli-build/static/chunks/app/api/models/test/route-596c1bc92adc4d71.js +1 -0
  555. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-596c1bc92adc4d71.js +1 -0
  556. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-596c1bc92adc4d71.js +1 -0
  557. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-596c1bc92adc4d71.js +1 -0
  558. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-596c1bc92adc4d71.js +1 -0
  559. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-596c1bc92adc4d71.js +1 -0
  560. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-596c1bc92adc4d71.js +1 -0
  561. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-596c1bc92adc4d71.js +1 -0
  562. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-596c1bc92adc4d71.js +1 -0
  563. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-596c1bc92adc4d71.js +1 -0
  564. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-596c1bc92adc4d71.js +1 -0
  565. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-596c1bc92adc4d71.js +1 -0
  566. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-596c1bc92adc4d71.js +1 -0
  567. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-596c1bc92adc4d71.js +1 -0
  568. package/app/.next-cli-build/static/chunks/app/api/pricing/route-596c1bc92adc4d71.js +1 -0
  569. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-596c1bc92adc4d71.js +1 -0
  570. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-596c1bc92adc4d71.js +1 -0
  571. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-596c1bc92adc4d71.js +1 -0
  572. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-596c1bc92adc4d71.js +1 -0
  573. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-596c1bc92adc4d71.js +1 -0
  574. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-596c1bc92adc4d71.js +1 -0
  575. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-596c1bc92adc4d71.js +1 -0
  576. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-596c1bc92adc4d71.js +1 -0
  577. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-596c1bc92adc4d71.js +1 -0
  578. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-596c1bc92adc4d71.js +1 -0
  579. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-596c1bc92adc4d71.js +1 -0
  580. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-596c1bc92adc4d71.js +1 -0
  581. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-596c1bc92adc4d71.js +1 -0
  582. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-596c1bc92adc4d71.js +1 -0
  583. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-596c1bc92adc4d71.js +1 -0
  584. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-596c1bc92adc4d71.js +1 -0
  585. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-596c1bc92adc4d71.js +1 -0
  586. package/app/.next-cli-build/static/chunks/app/api/providers/route-596c1bc92adc4d71.js +1 -0
  587. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-596c1bc92adc4d71.js +1 -0
  588. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-596c1bc92adc4d71.js +1 -0
  589. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-596c1bc92adc4d71.js +1 -0
  590. package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-596c1bc92adc4d71.js +1 -0
  591. package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-596c1bc92adc4d71.js +1 -0
  592. package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-596c1bc92adc4d71.js +1 -0
  593. package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-596c1bc92adc4d71.js +1 -0
  594. package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-596c1bc92adc4d71.js +1 -0
  595. package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-596c1bc92adc4d71.js +1 -0
  596. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-596c1bc92adc4d71.js +1 -0
  597. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-596c1bc92adc4d71.js +1 -0
  598. package/app/.next-cli-build/static/chunks/app/api/settings/route-596c1bc92adc4d71.js +1 -0
  599. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-596c1bc92adc4d71.js +1 -0
  600. package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-596c1bc92adc4d71.js +1 -0
  601. package/app/.next-cli-build/static/chunks/app/api/tags/route-596c1bc92adc4d71.js +1 -0
  602. package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-596c1bc92adc4d71.js +1 -0
  603. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-596c1bc92adc4d71.js +1 -0
  604. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-596c1bc92adc4d71.js +1 -0
  605. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-596c1bc92adc4d71.js +1 -0
  606. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-596c1bc92adc4d71.js +1 -0
  607. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-596c1bc92adc4d71.js +1 -0
  608. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-596c1bc92adc4d71.js +1 -0
  609. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-596c1bc92adc4d71.js +1 -0
  610. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-596c1bc92adc4d71.js +1 -0
  611. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-596c1bc92adc4d71.js +1 -0
  612. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-596c1bc92adc4d71.js +1 -0
  613. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-596c1bc92adc4d71.js +1 -0
  614. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-596c1bc92adc4d71.js +1 -0
  615. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-596c1bc92adc4d71.js +1 -0
  616. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-596c1bc92adc4d71.js +1 -0
  617. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-596c1bc92adc4d71.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-596c1bc92adc4d71.js +1 -0
  619. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-596c1bc92adc4d71.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-596c1bc92adc4d71.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-596c1bc92adc4d71.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-596c1bc92adc4d71.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-596c1bc92adc4d71.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-596c1bc92adc4d71.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-596c1bc92adc4d71.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-596c1bc92adc4d71.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-596c1bc92adc4d71.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-596c1bc92adc4d71.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-596c1bc92adc4d71.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-596c1bc92adc4d71.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-596c1bc92adc4d71.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-596c1bc92adc4d71.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/v1/route-596c1bc92adc4d71.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-596c1bc92adc4d71.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-596c1bc92adc4d71.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-596c1bc92adc4d71.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-596c1bc92adc4d71.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/version/route-596c1bc92adc4d71.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-596c1bc92adc4d71.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/version/update/route-596c1bc92adc4d71.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/login/page-596c1bc92adc4d71.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-596c1bc92adc4d71.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/page-596c1bc92adc4d71.js +1 -0
  644. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-596c1bc92adc4d71.js +1 -0
  645. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-596c1bc92adc4d71.js +1 -0
  646. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-596c1bc92adc4d71.js +1 -0
  647. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-596c1bc92adc4d71.js +1 -0
  648. package/app/.next-cli-build/static/css/{6d16efb20ee41545.css → 80e62219e00082d5.css} +1 -1
  649. package/app/package.json +1 -1
  650. package/package.json +1 -1
  651. package/app/.next-cli-build/server/chunks/4658.js +0 -5
  652. package/app/.next-cli-build/server/chunks/4833.js +0 -1
  653. package/app/.next-cli-build/server/chunks/5139.js +0 -1
  654. package/app/.next-cli-build/server/chunks/5305.js +0 -1
  655. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-4ca7fef1bfee740a.js +0 -10
  656. package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-ef4a253004436aeb.js +0 -1
  657. package/app/.next-cli-build/static/chunks/app/api/agent-library/route-ef4a253004436aeb.js +0 -1
  658. package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-ef4a253004436aeb.js +0 -1
  659. package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-ef4a253004436aeb.js +0 -1
  660. package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-ef4a253004436aeb.js +0 -1
  661. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-ef4a253004436aeb.js +0 -1
  662. package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-ef4a253004436aeb.js +0 -1
  663. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-ef4a253004436aeb.js +0 -1
  664. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ef4a253004436aeb.js +0 -1
  665. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-ef4a253004436aeb.js +0 -1
  666. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-full-catalog/route-ef4a253004436aeb.js +0 -1
  667. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-picker-labels/route-ef4a253004436aeb.js +0 -1
  668. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-ef4a253004436aeb.js +0 -1
  669. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-ef4a253004436aeb.js +0 -1
  670. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-ef4a253004436aeb.js +0 -1
  671. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-ef4a253004436aeb.js +0 -1
  672. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-ef4a253004436aeb.js +0 -1
  673. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-ef4a253004436aeb.js +0 -1
  674. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-ef4a253004436aeb.js +0 -1
  675. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-ef4a253004436aeb.js +0 -1
  676. package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-ef4a253004436aeb.js +0 -1
  677. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-ef4a253004436aeb.js +0 -1
  678. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-ef4a253004436aeb.js +0 -1
  679. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-ef4a253004436aeb.js +0 -1
  680. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-ef4a253004436aeb.js +0 -1
  681. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-ef4a253004436aeb.js +0 -1
  682. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-ef4a253004436aeb.js +0 -1
  683. package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-ef4a253004436aeb.js +0 -1
  684. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-ef4a253004436aeb.js +0 -1
  685. package/app/.next-cli-build/static/chunks/app/api/combos/route-ef4a253004436aeb.js +0 -1
  686. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-ef4a253004436aeb.js +0 -1
  687. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-ef4a253004436aeb.js +0 -1
  688. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-ef4a253004436aeb.js +0 -1
  689. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-ef4a253004436aeb.js +0 -1
  690. package/app/.next-cli-build/static/chunks/app/api/health/route-ef4a253004436aeb.js +0 -1
  691. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-ef4a253004436aeb.js +0 -1
  692. package/app/.next-cli-build/static/chunks/app/api/keys/route-ef4a253004436aeb.js +0 -1
  693. package/app/.next-cli-build/static/chunks/app/api/locale/route-ef4a253004436aeb.js +0 -1
  694. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-ef4a253004436aeb.js +0 -1
  695. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-ef4a253004436aeb.js +0 -1
  696. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-ef4a253004436aeb.js +0 -1
  697. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ef4a253004436aeb.js +0 -1
  698. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-ef4a253004436aeb.js +0 -1
  699. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-ef4a253004436aeb.js +0 -1
  700. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-ef4a253004436aeb.js +0 -1
  701. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-ef4a253004436aeb.js +0 -1
  702. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-ef4a253004436aeb.js +0 -1
  703. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-ef4a253004436aeb.js +0 -1
  704. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-ef4a253004436aeb.js +0 -1
  705. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-ef4a253004436aeb.js +0 -1
  706. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-ef4a253004436aeb.js +0 -1
  707. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-ef4a253004436aeb.js +0 -1
  708. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-ef4a253004436aeb.js +0 -1
  709. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-ef4a253004436aeb.js +0 -1
  710. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-ef4a253004436aeb.js +0 -1
  711. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-ef4a253004436aeb.js +0 -1
  712. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-ef4a253004436aeb.js +0 -1
  713. package/app/.next-cli-build/static/chunks/app/api/models/route-ef4a253004436aeb.js +0 -1
  714. package/app/.next-cli-build/static/chunks/app/api/models/test/route-ef4a253004436aeb.js +0 -1
  715. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-ef4a253004436aeb.js +0 -1
  716. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-ef4a253004436aeb.js +0 -1
  717. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-ef4a253004436aeb.js +0 -1
  718. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-ef4a253004436aeb.js +0 -1
  719. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-ef4a253004436aeb.js +0 -1
  720. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-ef4a253004436aeb.js +0 -1
  721. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-ef4a253004436aeb.js +0 -1
  722. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-ef4a253004436aeb.js +0 -1
  723. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-ef4a253004436aeb.js +0 -1
  724. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-ef4a253004436aeb.js +0 -1
  725. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-ef4a253004436aeb.js +0 -1
  726. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-ef4a253004436aeb.js +0 -1
  727. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-ef4a253004436aeb.js +0 -1
  728. package/app/.next-cli-build/static/chunks/app/api/pricing/route-ef4a253004436aeb.js +0 -1
  729. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-ef4a253004436aeb.js +0 -1
  730. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-ef4a253004436aeb.js +0 -1
  731. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-ef4a253004436aeb.js +0 -1
  732. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-ef4a253004436aeb.js +0 -1
  733. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-ef4a253004436aeb.js +0 -1
  734. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-ef4a253004436aeb.js +0 -1
  735. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-ef4a253004436aeb.js +0 -1
  736. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-ef4a253004436aeb.js +0 -1
  737. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-ef4a253004436aeb.js +0 -1
  738. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-ef4a253004436aeb.js +0 -1
  739. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-ef4a253004436aeb.js +0 -1
  740. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-ef4a253004436aeb.js +0 -1
  741. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-ef4a253004436aeb.js +0 -1
  742. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-ef4a253004436aeb.js +0 -1
  743. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-ef4a253004436aeb.js +0 -1
  744. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-ef4a253004436aeb.js +0 -1
  745. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-ef4a253004436aeb.js +0 -1
  746. package/app/.next-cli-build/static/chunks/app/api/providers/route-ef4a253004436aeb.js +0 -1
  747. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-ef4a253004436aeb.js +0 -1
  748. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-ef4a253004436aeb.js +0 -1
  749. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-ef4a253004436aeb.js +0 -1
  750. package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-ef4a253004436aeb.js +0 -1
  751. package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-ef4a253004436aeb.js +0 -1
  752. package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-ef4a253004436aeb.js +0 -1
  753. package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-ef4a253004436aeb.js +0 -1
  754. package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-ef4a253004436aeb.js +0 -1
  755. package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-ef4a253004436aeb.js +0 -1
  756. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-ef4a253004436aeb.js +0 -1
  757. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-ef4a253004436aeb.js +0 -1
  758. package/app/.next-cli-build/static/chunks/app/api/settings/route-ef4a253004436aeb.js +0 -1
  759. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-ef4a253004436aeb.js +0 -1
  760. package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-ef4a253004436aeb.js +0 -1
  761. package/app/.next-cli-build/static/chunks/app/api/tags/route-ef4a253004436aeb.js +0 -1
  762. package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-ef4a253004436aeb.js +0 -1
  763. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-ef4a253004436aeb.js +0 -1
  764. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-ef4a253004436aeb.js +0 -1
  765. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-ef4a253004436aeb.js +0 -1
  766. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-ef4a253004436aeb.js +0 -1
  767. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-ef4a253004436aeb.js +0 -1
  768. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-ef4a253004436aeb.js +0 -1
  769. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-ef4a253004436aeb.js +0 -1
  770. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-ef4a253004436aeb.js +0 -1
  771. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-ef4a253004436aeb.js +0 -1
  772. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-ef4a253004436aeb.js +0 -1
  773. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-ef4a253004436aeb.js +0 -1
  774. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-ef4a253004436aeb.js +0 -1
  775. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-ef4a253004436aeb.js +0 -1
  776. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-ef4a253004436aeb.js +0 -1
  777. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-ef4a253004436aeb.js +0 -1
  778. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-ef4a253004436aeb.js +0 -1
  779. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-ef4a253004436aeb.js +0 -1
  780. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-ef4a253004436aeb.js +0 -1
  781. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-ef4a253004436aeb.js +0 -1
  782. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-ef4a253004436aeb.js +0 -1
  783. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-ef4a253004436aeb.js +0 -1
  784. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-ef4a253004436aeb.js +0 -1
  785. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-ef4a253004436aeb.js +0 -1
  786. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-ef4a253004436aeb.js +0 -1
  787. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-ef4a253004436aeb.js +0 -1
  788. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-ef4a253004436aeb.js +0 -1
  789. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-ef4a253004436aeb.js +0 -1
  790. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-ef4a253004436aeb.js +0 -1
  791. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-ef4a253004436aeb.js +0 -1
  792. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-ef4a253004436aeb.js +0 -1
  793. package/app/.next-cli-build/static/chunks/app/api/v1/route-ef4a253004436aeb.js +0 -1
  794. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-ef4a253004436aeb.js +0 -1
  795. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-ef4a253004436aeb.js +0 -1
  796. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-ef4a253004436aeb.js +0 -1
  797. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-ef4a253004436aeb.js +0 -1
  798. package/app/.next-cli-build/static/chunks/app/api/version/route-ef4a253004436aeb.js +0 -1
  799. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-ef4a253004436aeb.js +0 -1
  800. package/app/.next-cli-build/static/chunks/app/api/version/update/route-ef4a253004436aeb.js +0 -1
  801. package/app/.next-cli-build/static/chunks/app/login/page-ef4a253004436aeb.js +0 -1
  802. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-ef4a253004436aeb.js +0 -1
  803. package/app/.next-cli-build/static/chunks/app/page-ef4a253004436aeb.js +0 -1
  804. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-ef4a253004436aeb.js +0 -1
  805. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-ef4a253004436aeb.js +0 -1
  806. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-ef4a253004436aeb.js +0 -1
  807. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-ef4a253004436aeb.js +0 -1
  808. package/app/.next-cli-build/static/tsUZACnHKKvw7F_GimvdT/_buildManifest.js +0 -1
  809. /package/app/.next-cli-build/static/{tsUZACnHKKvw7F_GimvdT → 8zZFr7oLhUXwtIugtniTD}/_ssgManifest.js +0 -0
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchboard-app",
3
- "version": "0.6.24",
3
+ "version": "0.6.26",
4
4
  "description": "Switchboard — intelligent model routing dashboard",
5
5
  "private": true,
6
6
  "scripts": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchboard-router",
3
- "version": "0.6.24",
3
+ "version": "0.6.26",
4
4
  "description": "Switchboard CLI — local AI routing gateway (install: npm i -g switchboard-router; run: switchboard)",
5
5
  "bin": {
6
6
  "switchboard": "./cli.js",
@@ -1,5 +0,0 @@
1
- exports.id=4658,exports.ids=[4658],exports.modules={4126:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>C,GET:()=>y,POST:()=>B});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(23628),o=c(95510),p=c(24424);let q=(0,g.promisify)(f.exec),r=a=>"string"==typeof a?a:a&&"object"==typeof a?a.primary??"":"",s=()=>k().join(m().homedir(),".openclaw"),t=()=>k().join(s(),"openclaw.json"),u=()=>k().join(s(),"switchboard-backup.json"),v=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await q(a?"where openclaw":"which openclaw",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(t()),!0}catch{return!1}}},w=async()=>{try{let a=t(),b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},x=async a=>{try{let b=k().join(a,"models.json"),c=await i().readFile(b,"utf-8"),d=JSON.parse(c),e=d?.providers?.switchboard?.models;return e?.[0]?.id||null}catch{return null}};async function y(){try{if(!await v())return e.NextResponse.json({installed:!1,settings:null,message:"Open Claw CLI is not installed"});let a=await w(),b=a?.agents?.list||[],c=await Promise.all(b.map(async a=>{let b=a.agentDir?await x(a.agentDir):null;return{...a,model:r(a.model),currentModel:b}}));return e.NextResponse.json({installed:!0,settings:a,agents:c,hasSwitchboard:!!a&&!!a.models&&!!a.models.providers&&!!a.models.providers.switchboard,settingsPath:t()})}catch(a){return console.log("Error checking openclaw settings:",a),e.NextResponse.json({error:"Failed to check openclaw settings"},{status:500})}}let z=async a=>{let b=k().join(a,"models.json");try{return JSON.parse(await i().readFile(b,"utf-8"))}catch(a){if(a?.code==="ENOENT")return{};throw a}},A=async(a,b,c,d)=>{await i().mkdir(a,{recursive:!0});let e=k().join(a,"models.json"),f=await z(a);f.providers||(f.providers={}),f.providers.switchboard={baseUrl:c,apiKey:d||"your_api_key",api:"openai-completions",models:(0,n.rP)(b).map(a=>({id:a,name:a.split("/").pop()||a}))},await (0,o.Yb)(e,JSON.stringify(f,null,2),{secret:!0})};async function B(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,defaultModel:g,agentModels:h={}}=await a.json(),j=(0,n.rP)(f??d),k=j.includes(g||d)?g||d:j[0];if(!(0,n.uI)(b)||!(0,n.iU)(c)||0===j.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let l=s(),m=t();await i().mkdir(l,{recursive:!0});let p={};try{let a=await i().readFile(m,"utf-8");p=JSON.parse(a)}catch(a){if("ENOENT"!==a.code)throw a}let q=await (async()=>{try{return JSON.parse(await i().readFile(u(),"utf-8"))}catch(a){if(a?.code==="ENOENT")return{};throw a}})();1!==q.version&&(q.version=1,q.mainProvider=(0,o.EA)(p.models?.providers||{},["switchboard"]),q.defaultPrimary=(0,o.EA)(p.agents?.defaults?.model||{},["primary"]),q.defaultModels=Object.fromEntries(Object.entries(p.agents?.defaults?.models||{}).filter(([a])=>a.startsWith("switchboard/"))),q.agents={},q.agentProviders={}),q.agents||={},q.agentProviders||={},p.agents||(p.agents={}),p.agents.defaults||(p.agents.defaults={}),p.agents.defaults.model||(p.agents.defaults.model={}),p.agents.defaults.models||(p.agents.defaults.models={}),p.models||(p.models={}),p.models.providers||(p.models.providers={});let v=b.endsWith("/v1")?b:`${b}/v1`,w=`switchboard/${k}`;Object.keys(p.agents.defaults.models).filter(a=>a.startsWith("switchboard/")).forEach(a=>{delete p.agents.defaults.models[a]}),p.agents.defaults.model.primary=w;let x=new Set(j),y=Object.fromEntries(Object.entries(h).flatMap(([a,b])=>{let[c]=(0,n.rP)(b);return c?[[a,c]]:[]}));if(Object.values(y).forEach(a=>x.add(a)),x.forEach(a=>{p.agents.defaults.models[`switchboard/${a}`]={}}),Array.isArray(p.agents.list)){for(let a of p.agents.list)if(Object.hasOwn(q.agents,a.id)||(q.agents[a.id]=(0,o.EA)(a,["model"]).model),a.agentDir&&!Object.hasOwn(q.agentProviders,a.agentDir)){let b=await z(a.agentDir);q.agentProviders[a.agentDir]=(0,o.EA)(b.providers||{},["switchboard"]).switchboard}p.agents.list=p.agents.list.map(a=>{if(r(a.model).startsWith("switchboard/")){let{model:b,...c}=a;return c}return a})}return await (0,o.Yb)(u(),JSON.stringify(q,null,2),{secret:!0}),p.models.providers.switchboard={baseUrl:v,apiKey:c||"your_api_key",api:"openai-completions",models:[...x].map(a=>({id:a,name:a.split("/").pop()||a}))},Array.isArray(p.agents.list)&&(p.agents.list=p.agents.list.map(a=>{let b=y[a.id];return b?{...a,model:`switchboard/${b}`}:a}),await Promise.all(p.agents.list.map(async a=>{if(!a.agentDir)return;let b=y[a.id]||k;await A(a.agentDir,[b,...x],v,c)}))),await (0,o.Yb)(m,JSON.stringify(p,null,2),{secret:!0}),e.NextResponse.json({success:!0,message:"Open Claw settings applied successfully!",settingsPath:m})}catch(a){return console.log("Error updating openclaw settings:",a),e.NextResponse.json({error:"Failed to update openclaw settings"},{status:500})}}async function C(){try{let a=t(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}let c={};try{c=JSON.parse(await i().readFile(u(),"utf-8"))}catch(a){if(a?.code!=="ENOENT")throw a}if(b.models&&b.models.providers&&(1===c.version?(0,o.S3)(b.models.providers,c.mainProvider):delete b.models.providers.switchboard,0===Object.keys(b.models.providers).length&&delete b.models.providers),b.agents?.defaults?.models){for(let a of Object.keys(b.agents.defaults.models).filter(a=>a.startsWith("switchboard/")))delete b.agents.defaults.models[a];1===c.version&&Object.assign(b.agents.defaults.models,c.defaultModels||{}),0===Object.keys(b.agents.defaults.models).length&&delete b.agents.defaults.models}b.agents?.defaults?.model?.primary?.startsWith("switchboard/")&&(1===c.version?(0,o.S3)(b.agents.defaults.model,c.defaultPrimary):delete b.agents.defaults.model.primary),Array.isArray(b.agents?.list)&&(b.agents.list=b.agents.list.map(a=>{if(!r(a.model).startsWith("switchboard/"))return a;let b=1===c.version?c.agents?.[a.id]:null;if(b?.exists)return{...a,model:b.value};let{model:d,...e}=a;return e}));let d=new Set([...(b.agents?.list||[]).map(a=>a.agentDir).filter(Boolean),...Object.keys(c.agentProviders||{})]);await Promise.all([...d].map(async a=>{let b=await z(a);b.providers?.switchboard&&(1===c.version?(0,o.S3)(b.providers,{switchboard:c.agentProviders?.[a]}):delete b.providers.switchboard,0===Object.keys(b.providers||{}).length&&delete b.providers,await (0,o.Yb)(k().join(a,"models.json"),JSON.stringify(b,null,2),{secret:!0}))})),await (0,o.Yb)(a,JSON.stringify(b,null,2),{secret:!0});try{await i().unlink(u())}catch(a){if(a?.code!=="ENOENT")throw a}return e.NextResponse.json({success:!0,message:"Switchboard settings removed successfully"})}catch(a){return console.log("Error resetting openclaw settings:",a),e.NextResponse.json({error:"Failed to reset openclaw settings"},{status:500})}}(0,p.D)([y,B,C]),(0,d.A)(y,"00e223642c82e29d17dba16d9c95b1014924bea023",null),(0,d.A)(B,"404f0116a045439c2000b623bacdb83e54313c433f",null),(0,d.A)(C,"006d500d06cc11172f9a953bdc776abc273458e465",null)},23628:(a,b,c)=>{"use strict";c.d(b,{Ej:()=>u,F2:()=>j,JW:()=>x,L6:()=>l,TP:()=>s,XI:()=>w,gW:()=>t,hT:()=>r,iU:()=>h,oR:()=>v,rP:()=>i,uI:()=>g,xb:()=>m});var d=c(63294);let e="# switchboard-managed-aider:",f="# switchboard-managed-hermes:";function g(a){return"string"==typeof a&&a.trim().length>0}function h(a){return null==a||"string"==typeof a}function i(a){let b=Array.isArray(a)?a:"string"==typeof a?[a]:[],c=new Set,d=[];for(let a of b){if("string"!=typeof a)continue;let b=a.trim();!b||c.has(b)||(c.add(b),d.push(b))}return d}function j(a,b){let c="string"==typeof a?a.trim():"";return c&&b.includes(c)?c:b[0]||""}function k(a){let b=a.split("/");return b[b.length-1]||a}function l(a,b=[]){let c=new Map(b.filter(a=>a?.id).map(a=>[a.id,a]));return i(a).map(a=>({reasoning:!1,input:["text","image"],contextWindow:2e5,maxTokens:16384,...c.get(a),id:a,name:c.get(a)?.name||k(a)}))}function m({baseUrl:a,models:b,defaultModel:c}){let d=i(b);return{type:"openai-compatible",base_url:a,auth:"bearer",api_key_env:"JCODE_SWITCHBOARD_API_KEY",env_file:"provider-switchboard.env",default_model:j(c,d),model_catalog:!0,requires_api_key:!0,models:d.map(a=>({id:a}))}}function n(a){return Buffer.from(JSON.stringify(a),"utf8").toString("base64url")}function o(a,b){let c=a.split(/\r?\n/).find(a=>a.startsWith(b));if(!c)return null;try{return JSON.parse(Buffer.from(c.slice(b.length),"base64url").toString("utf8"))}catch{return null}}function p(a,b){return a.split(/\r?\n/).filter(a=>!a.startsWith(b)).join("\n")}function q(a){return a?.toJSON?a.toJSON():a}function r(a,{baseUrl:b,apiKey:c,models:f,defaultModel:g}){let h,k=o(a,e)?s(a):a,l=(0,d.Tp)(k||"");if(l.errors.length)throw Error(`Invalid Aider YAML: ${l.errors[0].message}`);let m=i(f),p=j(g,m),t=Object.fromEntries(["openai-api-base","openai-api-key","model","alias"].map(a=>[a,{exists:l.hasIn([a]),value:q(l.getIn([a]))}]));return l.setIn(["openai-api-base"],b),l.setIn(["openai-api-key"],c),l.setIn(["model"],`openai/${p}`),l.setIn(["alias"],(h=new Map,m.map(a=>{let b=a.replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-|-$/g,"")||"model",c=(h.get(b)||0)+1;h.set(b,c);let d=1===c?"":`-${c}`;return`switchboard-${b}${d}:openai/${a}`}))),`${l.toString().trimEnd()}
2
- ${e}${n(t)}
3
- `}function s(a){let b=o(a,e);if(!b)return a;let c=(0,d.Tp)(p(a,e));if(c.errors.length)throw Error(`Invalid Aider YAML: ${c.errors[0].message}`);for(let a of["openai-api-base","openai-api-key","model","alias"])b[a]?.exists?c.setIn([a],b[a].value):c.deleteIn([a]);return c.toString()}function t(a,{baseUrl:b,models:c,defaultModel:e}){let g=o(a,f)?u(a):a,h=(0,d.Tp)(g||"");if(h.errors.length)throw Error(`Invalid Hermes YAML: ${h.errors[0].message}`);let k=i(c),l=j(e,k),m=q(h.getIn(["custom_providers"])),p=Array.isArray(m)?m:[],r=p.find(a=>a?.name==="switchboard"),s=q(h.getIn(["model"])),v=p.filter(a=>a?.name!=="switchboard"),w=Object.fromEntries(k.map(a=>[a,{}]));return v.push({name:"switchboard",base_url:b,key_env:"SWITCHBOARD_API_KEY",api_mode:"chat_completions",models:w}),h.setIn(["custom_providers"],v),h.setIn(["model"],{...s&&"object"==typeof s?s:{},default:l,provider:"custom:switchboard"}),`${h.toString().trimEnd()}
4
- ${f}${n({previousProvider:r??null,previousModel:s??null})}
5
- `}function u(a){let b=o(a,f),c=(0,d.Tp)(p(a,f));if(c.errors.length)throw Error(`Invalid Hermes YAML: ${c.errors[0].message}`);let e=q(c.getIn(["custom_providers"]));if(Array.isArray(e)){let a=e.filter(a=>a?.name!=="switchboard");b?.previousProvider&&a.push(b.previousProvider),a.length?c.setIn(["custom_providers"],a):c.deleteIn(["custom_providers"])}return"custom:switchboard"===q(c.getIn(["model","provider"]))&&(b?.previousModel?c.setIn(["model"],b.previousModel):c.deleteIn(["model"])),c.toString()}function v(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f);return{...a,model:`switchboard/${g}`,provider:{...a.provider||{},switchboard:{npm:"@ai-sdk/openai-compatible",name:"Switchboard",options:{apiKey:c,baseURL:b},models:Object.fromEntries(f.map(a=>[a,{name:k(a)}]))}}}}function w(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f),h=a.providers||{},l=a.models||{};return{providers:{...h,providers:{...h.providers||{},switchboard:{type:"openai-compatible",name:"Switchboard",baseUrl:b,apiKey:c,defaultModelId:g}}},models:{...l,providers:{...l.providers||{},switchboard:{provider:{name:"Switchboard",baseUrl:b,defaultModelId:g},models:Object.fromEntries(f.map(a=>[a,{id:a,name:k(a)}]))}}}}}function x(a,{models:b,defaultModel:c}){let d=i(b),e=j(c,d),f=Object.fromEntries(Object.entries(a?.modelConfigs?.modelDefinitions&&"object"==typeof a.modelConfigs.modelDefinitions?a.modelConfigs.modelDefinitions:{}).filter(([,a])=>a?.family!=="switchboard"));return{...a,model:{...a.model||{},name:e},experimental:{...a.experimental||{},dynamicModelConfiguration:!0},modelConfigs:{...a.modelConfigs||{},modelDefinitions:{...f,...Object.fromEntries(d.map(a=>[a,{displayName:`Switchboard \xb7 ${k(a)}`,family:"switchboard",tier:"custom",isPreview:!1,isVisible:!0,features:{thinking:!0,multimodalToolUse:!0}}]))}}}}},57781:(a,b,c)=>{"use strict";c.d(b,{R:()=>h});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f);async function h(a,b,c="utf-8"){let d=g().dirname(a);await e().mkdir(d,{recursive:!0});let f=g().join(d,`.${g().basename(a)}.sb-tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await e().writeFile(f,b,c);try{let a=await e().open(f,"r+");try{await a.sync()}finally{await a.close()}}catch{}await e().rename(f,a)}catch(a){try{await e().unlink(f)}catch{}throw a}}},78335:()=>{},95510:(a,b,c)=>{"use strict";c.d(b,{EA:()=>i,M_:()=>h,S3:()=>j,Yb:()=>g});var d=c(51455),e=c.n(d),f=c(57781);async function g(a,b,{secret:c=!1}={}){if(await (0,f.R)(a,b,c?{encoding:"utf-8",mode:384}:"utf-8"),c)try{await e().chmod(a,384)}catch{}}async function h(a){let b=await Promise.all(a.map(async({filePath:a})=>{try{return{exists:!0,value:await e().readFile(a)}}catch(a){if(a?.code==="ENOENT")return{exists:!1,value:null};throw a}})),c=async({filePath:a,content:b,secret:c=!1})=>{if(null!==b)return void await g(a,b,{secret:c});try{await e().unlink(a)}catch(a){if(a?.code!=="ENOENT")throw a}};try{for(let b of a)await c(b)}catch(e){let d=(await Promise.allSettled(a.map(({filePath:a,secret:d=!1},e)=>c({filePath:a,content:b[e].exists?b[e].value:null,secret:d})))).filter(a=>"rejected"===a.status);if(d.length>0)throw AggregateError([e,...d.map(a=>a.reason)],"Failed to replace CLI files and roll them back cleanly");throw e}}function i(a,b){return Object.fromEntries(b.map(b=>[b,{exists:Object.hasOwn(a,b),value:a[b]}]))}function j(a,b){for(let[c,d]of Object.entries(b||{}))d?.exists?a[c]=d.value:delete a[c]}},96487:()=>{}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=4833,exports.ids=[4833],exports.modules={14833:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>L,GET:()=>H,POST:()=>J});var d=c(23211),e=c(79646),f=c(28354),g=c(79748),h=c.n(g),i=c(33873),j=c.n(i),k=c(21820),l=c.n(k),m=c(95510),n=c(68393);let o=(0,f.promisify)(e.exec),p=["ANTHROPIC_BASE_URL","ANTHROPIC_API_KEY","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_CUSTOM_HEADERS","ANTHROPIC_CUSTOM_MODEL_OPTION","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION","CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY","API_TIMEOUT_MS"],q=p.filter(a=>"ANTHROPIC_API_KEY"!==a),r=Promise.resolve(),s=a=>{let b=r.then(a,a);return r=b.catch(()=>{}),b},t=()=>j().join(l().homedir(),".claude"),u=()=>j().join(t(),"settings.json"),v=()=>j().join(t(),"switchboard-backup.json"),w=a=>!!a&&"object"==typeof a&&!Array.isArray(a),x=a=>w(a)&&"boolean"==typeof a.exists,y=async()=>{try{let a=await h().readFile(u(),"utf-8");return{exists:!0,raw:a,settings:(a=>{let b=JSON.parse(a.replace(/,(\s*[}\]])/g,"$1"));if(!w(b))throw TypeError("Claude settings must contain a JSON object");return b})(a)}}catch(a){if(a?.code==="ENOENT")return{exists:!1,raw:null,settings:{}};throw a}},z=async()=>{try{let a=await h().readFile(v(),"utf-8");return JSON.parse(a)}catch(a){if(a?.code==="ENOENT")return null;throw a}},A=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||"active"!==a.state||"boolean"!=typeof a.settingsFileExisted||"boolean"!=typeof a.canRestoreExact||null!==a.originalContent&&"string"!=typeof a.originalContent||!x(a.hasCompletedOnboarding)||!w(a.env)||!Array.isArray(a.managedEnvKeys)||!a.managedEnvKeys.every(b=>"string"==typeof b&&x(a.env[b]))||!w(a.managedSettings))throw Error("Unsupported or invalid Claude Code Switchboard backup file");return a},B=(a,b)=>JSON.stringify(a)===JSON.stringify(b),C=(a,b,c,d)=>{Object.hasOwn(a,b)===c.exists&&(!c.exists||B(a[b],c.value))&&(0,m.S3)(a,{[b]:d})},D=a=>{let b=w(a?.env)?a.env:{};return"1"===b.CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY||"sk_switchboard"===b.ANTHROPIC_AUTH_TOKEN||"pass-through"===E(a)||(a=>{try{let b=new URL(String(a||"")).hostname.toLowerCase();return"localhost"===b||"0.0.0.0"===b||/^127(?:\.\d{1,3}){3}$/.test(b)}catch{return!1}})(b.ANTHROPIC_BASE_URL)},E=a=>{let b=w(a?.env)?a.env:{};return(0,n.wN)(b.ANTHROPIC_CUSTOM_HEADERS)?"pass-through":b.ANTHROPIC_AUTH_TOKEN&&b.ANTHROPIC_BASE_URL?"proxy":null},F=async()=>{try{let a="win32"===l().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where claude":"which claude",{windowsHide:!0,env:b}),!0}catch{try{return await h().access(u()),!0}catch{return!1}}};async function G(){try{if(!await F())return d.NextResponse.json({installed:!1,settings:null,message:"Claude CLI is not installed"});let[{settings:a},b]=await Promise.all([y(),z()]),c=A(b),e=c?.state==="active",f=e||D(a);return d.NextResponse.json({installed:!0,settings:a,hasSwitchboard:f,hasBackup:e,routingMode:E(a),settingsPath:u()})}catch(a){return console.log("Error checking claude settings:",a),d.NextResponse.json({error:"Failed to check claude settings"},{status:500})}}async function H(){return s(G)}async function I(a){try{let b=await a.json(),c=b?.env;if(!w(c))return d.NextResponse.json({error:"Invalid env object"},{status:400});let e=b?.removeEnvKeys??[];if(!Array.isArray(e)||!e.every(a=>"string"==typeof a&&p.includes(a)))return d.NextResponse.json({error:"Invalid removeEnvKeys"},{status:400});let[{exists:f,raw:g,settings:i},j]=await Promise.all([y(),z()]),k=A(j),l=k?.state==="active"?k:null,n={...c};if(n.ANTHROPIC_BASE_URL){let a=String(n.ANTHROPIC_BASE_URL).replace(/\/+$/,"");n.ANTHROPIC_BASE_URL=a.endsWith("/v1")?a:`${a}/v1`}let o={...w(i.env)?i.env:{},...n};for(let a of e)delete o[a];let q={...i,hasCompletedOnboarding:!0,...Object.keys(o).length>0?{env:o}:{}};0===Object.keys(o).length&&delete q.env;let r=w(i.env)?i.env:{},s=Array.from(new Set([...Object.keys(n),...e])),x=l||{version:1,state:"active",settingsFileExisted:f,canRestoreExact:!0,originalContent:g,hasCompletedOnboarding:(0,m.EA)(i,["hasCompletedOnboarding"]).hasCompletedOnboarding,managedEnvKeys:s,env:(0,m.EA)(r,s)};if(l){x.canRestoreExact=x.canRestoreExact&&B(i,x.managedSettings);let a=new Set(x.managedEnvKeys),b=s.filter(b=>!a.has(b));Object.assign(x.env,(0,m.EA)(r,b)),x.managedEnvKeys.push(...b)}return x.managedSettings=q,await h().mkdir(t(),{recursive:!0}),await (0,m.M_)([{filePath:v(),content:JSON.stringify(x,null,2),secret:!0},{filePath:u(),content:JSON.stringify(q,null,2),secret:!0}]),d.NextResponse.json({success:!0,hasBackup:!0,message:"Claude Code connected to Switchboard"})}catch(a){return console.log("Error updating claude settings:",a),d.NextResponse.json({error:"Failed to update Claude Code settings."},{status:500})}}async function J(a){return s(()=>I(a))}async function K(){try{let a,[b,c]=await Promise.all([y(),z()]),e=A(c),f=D(b.settings),g=e?.state==="active"?e:null;if(e?.state==="restored"&&!f)return d.NextResponse.json({success:!0,restored:!0,message:"Claude Code is already disconnected"});if(!b.exists&&!g)return d.NextResponse.json({success:!0,restored:!1,message:"No Claude Code settings to disconnect"});if(!g&&!f)return d.NextResponse.json({success:!0,restored:!1,message:"Claude Code is not connected to Switchboard"});let i=!1,j=!1;if(g?.state==="active")if(i=!0,g.canRestoreExact&&(!b.exists||B(b.settings,g.managedSettings)))a=g.settingsFileExisted?g.originalContent:null;else{let c=b.settings,d=w(c.env)?c.env:{},e=w(g.managedSettings.env)?g.managedSettings.env:{};for(let a of g.managedEnvKeys)C(d,a,(0,m.EA)(e,[a])[a],g.env[a]);Object.keys(d).length>0?c.env=d:delete c.env,C(c,"hasCompletedOnboarding",(0,m.EA)(g.managedSettings,["hasCompletedOnboarding"]).hasCompletedOnboarding,g.hasCompletedOnboarding),a=g.settingsFileExisted||0!==Object.keys(c).length?JSON.stringify(c,null,2):null}else{j=!0;let c=b.settings;if(w(c.env)){for(let a of q)delete c.env[a];0===Object.keys(c.env).length&&delete c.env}a=JSON.stringify(c,null,2)}return await h().mkdir(t(),{recursive:!0}),await (0,m.M_)([{filePath:v(),content:JSON.stringify({version:1,state:"restored"},null,2),secret:!0},{filePath:u(),content:a,secret:!0}]),d.NextResponse.json({success:!0,restored:i,legacyCleanup:j,message:i?"Switchboard disconnected and previous Claude Code settings restored":"Switchboard disconnected; no Switchboard backup was available for overwritten values"})}catch(a){return console.log("Error disconnecting claude settings:",a),d.NextResponse.json({error:"Failed to disconnect Claude Code"},{status:500})}}async function L(){return s(K)}},68393:(a,b,c)=>{c.d(b,{AD:()=>w,El:()=>u,JF:()=>q,LU:()=>t,Ng:()=>n,OU:()=>s,Ro:()=>h,_1:()=>r,at:()=>A,i6:()=>z,iO:()=>v,s8:()=>y,wN:()=>x});let d=Object.freeze({PASS_THROUGH:"pass-through",PROXY:"proxy",FULL_CATALOG:"full-catalog"}),e="x-switchboard-claude-mode",f="x-switchboard-claude-models",g="x-switchboard-claude-labels",h="x-switchboard-key",i="claude-switchboard-v1/",j=/^(?:claude|anthropic)-[a-z0-9][a-z0-9._-]*$/i,k=Object.freeze(["ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION"]),l=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function m(a,b){if("string"!=typeof a)return"";for(let c of a.split(/\r?\n/)){let a=c.indexOf(":");if(!(a<0)&&c.slice(0,a).trim().toLowerCase()===b)return c.slice(a+1).trim()}return""}function n(a){return"string"==typeof a&&j.test(a)}function o(a){if(!Array.isArray(a))throw TypeError("Claude catalog models must be an array.");let b=[],c=new Set;for(let d of a){if("string"!=typeof d)throw TypeError("Each Claude catalog model must be a string.");let a=d.trim();if(a){if(/\r|\n/.test(a))throw TypeError("Claude catalog model IDs cannot contain newlines.");c.has(a)||(c.add(a),b.push(a))}}return b}function p(a){if("string"!=typeof a||!a.trim())return[];try{return o(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function q(a){return p(m(a,f))}function r(a){return p(a?.get(f))}function s(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(o(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[\r\n]+/g," ");a&&(d[b]=a.slice(0,48))}return d}function t(a){var b=a?.get(g);if("string"!=typeof b||!b.trim())return{};try{let a=JSON.parse(decodeURIComponent(b));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}}function u(a){let b=String(a||"").trim();if(!b)throw TypeError("A Switchboard model ID is required.");let c=b.split("/").map(encodeURIComponent).join("/");return`${i}${c}`}function v(a){if("string"!=typeof a||!a.startsWith(i))return null;let b=a.slice(i.length);if(!b)return null;try{let c=b.split("/").map(decodeURIComponent).join("/");return u(c)===a?c:null}catch{return null}}function w({baseUrl:a,gatewayKey:b,models:c=[],pickerLabels:h={}}){let i=String(a||"").trim().replace(/\/+$/,""),j=String(b||"").trim();if(!i)throw TypeError("A Switchboard endpoint is required.");if(!j)throw TypeError("A Switchboard API key is required.");let m=o(c),n=s(h,m),p={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:function(a=[],b={}){let c=o(a),h=[`${l(e)}: ${d.FULL_CATALOG}`,`${l(f)}: ${encodeURIComponent(JSON.stringify(o(c)))}`],i=function(a,b={}){let c=s(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${l(g)}: ${i}`),h.join("\n")}(m,n),ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)p[a]="";return{env:p,pickerLabels:n}}function x(a){return m(a,e).toLowerCase()===d.PASS_THROUGH}function y(a){let b=m(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function z(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function A(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=5139,exports.ids=[5139],exports.modules={2364:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>E,OPTIONS:()=>D,buildModelsList:()=>C});var d=c(81329),e=c(40615),f=c(44776),g=c(16655),h=c(19617),i=c(58569),j=c(86925),k=c(9155),l=c(89843),m=c(28730),n=c(41029);let o=new Map;async function p(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,l.proxyAwareFetch)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":`vscode/${m.x0.VSCODE_VERSION}`,"editor-plugin-version":`copilot-chat/${m.x0.COPILOT_CHAT_VERSION}`,"user-agent":m.x0.USER_AGENT,"x-github-api-version":m.x0.API_VERSION},cache:"no-store",signal:b||c.signal});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function q(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=o.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await p(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,n.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await p(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(o.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var r=c(40694),s=c(58255),t=c(67828),u=c(43904),v=c(32524),w=c(68393);let x={kiro:async(a,b={})=>{let c=await (0,i.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal});return c?.models?.length?{models:c.models}:null},qoder:async(a,b={})=>{let c=await (0,k.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}},{signal:b.signal});return c?.models?.length?{models:c.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async(a,b={})=>{let c=await (0,j.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal});return c?.models?.length?{models:c.models}:null},github:async(a,b={})=>{let c=await q({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal,onCredentialsRefreshed:async b=>{await (0,t.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return c?.models?.length?{models:c.models}:null},clinepass:async(a,b={})=>{let c=await (0,r.P)({accessToken:a.accessToken,apiKey:a.apiKey},{signal:b.signal});return c?.models?.length?{models:c.models}:null}},y={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText"};function z(a){let b=a?.kind||a?.type;return b&&y[b]||"llm"}async function A(a,b=null){if(!a?.apiKey)return[];let c="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!c)return[];let d=`${c}/models`,f={"Content-Type":"application/json",[h.M]:"1"};if((0,e.mq)(a.provider))f.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];d.endsWith("/messages/models")?d=d.slice(0,-9):d.endsWith("/messages")&&(d=`${d.slice(0,-9)}/models`),f["x-api-key"]=a.apiKey,f["anthropic-version"]="2023-06-01",f.Authorization=`Bearer ${a.apiKey}`}try{let a=new AbortController,c=setTimeout(()=>a.abort(),5e3);b&&"function"!=typeof AbortSignal.any&&b.addEventListener("abort",()=>{clearTimeout(c),a.abort(b.reason)},{once:!0});let e=b&&"function"==typeof AbortSignal.any?AbortSignal.any([b,a.signal]):a.signal;try{var g;let a=await fetch(d,{method:"GET",headers:f,cache:"no-store",signal:e});if(!a.ok)return[];let b=(g=await a.json(),Array.isArray(g)?g:g?.data||g?.models||g?.results||[]);return Array.from(new Set(b.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}finally{clearTimeout(c)}}catch{return[]}}function B(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function C(a,{signal:b=null,skipCompatibleDiscovery:c=!1}={}){let h=[];try{h=(h=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive)}catch(a){console.log("Could not fetch providers, returning all models")}let i=[];try{i=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let j=[];try{j=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let k={};try{k=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let l={};try{l=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let m=(a,b)=>Array.isArray(l[a])&&l[a].includes(b),n=new Map;for(let a of h){if(b?.aborted)break;n.has(a.provider)||n.set(a.provider,a)}let o=n.get("cursor");o&&n.set("cursor",await (0,t.Yx)(o,{force:!0}));let p=new Map;if(!c){let a=Array.from(n.entries()).filter(([a])=>(0,e.mq)(a)||(0,e.gb)(a));await Promise.all(a.map(async([a,c])=>{p.set(a,await A(c,b))}))}let q=new Map,r=Array.from(n.entries()).filter(([b])=>B(b,a)&&!(0,e.mq)(b)&&!(0,e.gb)(b));await Promise.all(r.map(async([a,c])=>{let d=x[a];try{let e=d?await d(c,{signal:b}):await (0,s.Mz)(c,{signal:b,..."cursor"===a?{log:console}:{}});e?.models?.length&&q.set(a,e)}catch(b){console.log(`Live model fetch failed for ${a}: ${b?.message||b}`)}}));let v=[];for(let b of i){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo",name:b.name};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),v.push(c)}if(a.includes("llm"))for(let a of Object.keys(k||{}))(0,w.Ng)(a)&&v.push({id:a,object:"model",owned_by:"switchboard-alias",display_name:`Switchboard \xb7 ${a}`});if(0===h.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.PROVIDER_MODELS))if(B(b[c]||c,a))for(let b of e)a.includes(z(b))&&(m(c,b.id)||v.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of j){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&v.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[f,g]of n.entries()){if(b?.aborted)break;if(!B(f,a))continue;let h=d.Xg[f]||f,i=(g?.providerSpecificData?.prefix||(0,e.wG)(f)||h).trim(),l=d.PROVIDER_MODELS[h]||[],n=g?.providerSpecificData?.enabledModels,o=Array.isArray(n)&&n.length>0,r=(0,e.mq)(f)||(0,e.gb)(f),s=new Map(l.map(a=>[a.id,z(a)])),t=new Map,w=new Map,x=o?Array.from(new Set(n.filter(a=>"string"==typeof a&&""!==a.trim()))):l.map(a=>a.id);if(r&&!c){let a=p.get(f)||[];a.length>0&&(x=a)}let y=q.get(f);y?.models?.length&&(x=y.models.map(a=>a.id),t=new Map(y.models.filter(a=>a?.id).map(a=>[a.id,z(a)])),w=new Map(y.models.filter(a=>a?.id&&a.capabilities).map(a=>[a.id,a.capabilities])));let A=x.map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),C=new Map;for(let b of Array.from(new Set([...A,...j.filter(b=>{if(!b?.id)return!1;let c=(0,d.CP)(b)||"llm";if(!a.includes(c)&&!("imageToText"===c&&a.includes("llm")))return!1;let e=b.providerAlias;return e===h||e===i||e===f}).map(a=>{let b=String(a.id).trim();return b&&C.set(b,(0,d.CP)(a)||"llm"),b}).filter(a=>""!==a),...Object.values(k||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${i}/`)||a.startsWith(`${h}/`)||a.startsWith(`${f}/`))).map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let c=C.get(b),d=t.get(b),e=c||d||s.get(b)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(b),f="imageToText"===e&&a.includes("llm");if(!a.includes(e)&&!f||m(i,b)||m(h,b))continue;let g={id:`${i}/${b}`,object:"model",owned_by:i},j=w.get(b)||(0,u.a0)(c||d);j&&(g.capabilities=j),v.push(g)}let D=e.AI_PROVIDERS[f];a.includes("webSearch")&&D?.searchConfig&&v.push({id:`${i}/search`,object:"model",kind:"webSearch",owned_by:i}),a.includes("webFetch")&&D?.fetchConfig&&v.push({id:`${i}/fetch`,object:"model",kind:"webFetch",owned_by:i})}let y=[],D=new Set;for(let a of v)!a?.id||D.has(a.id)||(D.add(a.id),y.push(a));return y}async function D(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function E(a){try{let b=await C(["llm"],{signal:a?.signal,skipCompatibleDiscovery:(0,h.k)(a)}),c=b;if((0,w.at)(a?.headers)){let d=(0,w._1)(a?.headers),e=new Set(d),f=(0,w.OU)((0,w.LU)(a?.headers),d),g=(0,v.HL)(d),h=[];for(let a of b){if(!e.has(a.id))continue;let b=f[a.id]||(0,v.u0)(a.id,g);h.push({id:(0,w.El)(a.id),object:"model",owned_by:"switchboard-catalog",display_name:b,description:a.id})}c=h}return Response.json({object:"list",data:c},{})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(44776)},19225:(a,b,c)=>{a.exports=c(44870)},32524:(a,b,c)=>{c.d(b,{HL:()=>i,pD:()=>h,u0:()=>j});let d=Object.freeze({"lite-llm":"llm",litellm:"llm"}),e=["opus","sonnet","haiku","fable","gemini","gpt","glm","deepseek","composer","kimi","qwen"],f=[{pattern:/ap-southeast|low-carbon-apac|\bapac\b/i,tag:"apac"},{pattern:/eu-west|europe|\beu\b/i,tag:"eu"},{pattern:/us-east|us-west|\bus\b/i,tag:"us"}],g=["bedrock","vertex","azure","openai"];function h(a){var b;let c,h,i,j,k,l,m,n=String(a||"").trim();if(!n)return"";let o=n.indexOf("/");if(o<0)return n;let p=d[c=String(n.slice(0,o)||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")]||c.slice(0,10),q=n.slice(o+1).split("/").filter(Boolean),r=(h=q.join("/").toLowerCase(),i=e.find(a=>h.includes(a))||null,j=f.find(a=>a.pattern.test(h))?.tag||null,k=g.find(a=>h.includes(a))||null,l=h.match(/\b(\d+m)\b/i)?.[1]?.toLowerCase()||null,m=(b=i?h.match(RegExp(`${i}[-._]?(\\d+(?:[._-]\\d+)*)`,"i"))?.[1]:null)?b.replace(/[._-]/g,"."):null,{family:i,region:j,infra:k,variant:l,version:m}),s=[p];if(r.region&&s.push(r.region),r.infra&&s.push(r.infra),r.family){let a=r.variant?`${r.family} ${r.variant}`:r.version?`${r.family} ${r.version}`:r.family;s.push(a)}else if(q.length>0){let a=q[q.length-1].replace(/^anthropic\./i,"").replace(/[._]/g," ").trim();a&&s.push(a.slice(0,24))}return s.join(" \xb7 ")}function i(a){let b=a.map(a=>String(a||"").trim()).filter(Boolean).map(a=>({modelId:a,base:h(a)})),c=new Map;for(let a of b){let b=c.get(a.base)||[];b.push(a.modelId),c.set(a.base,b)}let d=new Map;for(let[a,b]of c.entries()){if(1===b.length){d.set(b[0],a);continue}let c=new Set;b.forEach((b,e)=>{let f=`${a} \xb7 ${function(a,b){let c=String(a||"").split("/").filter(Boolean);return c.length>=3?c[1].replace(/[._-]/g," ").trim().slice(0,20):2===c.length?c[1].replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20):(c[c.length-1]||`model-${b+1}`).replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)||String(b+1)}(b,e)}`,g=2;for(;c.has(f);){let d=b.split("/").filter(Boolean).pop()||`alt-${g}`;f=`${a} \xb7 ${d.replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)}`,c.has(f)&&(f=`${a} \xb7 ${e+1}`),g+=1}c.add(f),d.set(b,f)})}return d}function j(a,b){let c=String(a||"").trim();return c?b?.get(c)||h(c):""}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=5305,exports.ids=[5305],exports.modules={25821:(a,b,c)=>{c.d(b,{rb:()=>d,rn:()=>j,v4:()=>g,CM:()=>f,aS:()=>t,a7:()=>q,m1:()=>r});let d={defaultConcurrency:4,maxConcurrency:16,defaultBatchSize:50,maxBatchSize:200,defaultTimeoutMs:2e4,maxTimeoutMs:6e4};function e(a,b,c){let d=Number(a);return Number.isFinite(d)?Math.max(1,Math.min(c,Math.floor(d))):b}function f(a={}){return{concurrency:e(a.concurrency,d.defaultConcurrency,d.maxConcurrency),batchSize:e(a.batchSize,d.defaultBatchSize,d.maxBatchSize),timeoutMs:e(a.timeoutMs,d.defaultTimeoutMs,d.maxTimeoutMs)}}function g(a,b=""){let c=String(a||"").trim();if(!c)return"";c=(c=c.replace(/\s+/g,"")).replace(/^models\//i,"");let d=String(b||"").trim();return d&&c.toLowerCase().startsWith(`${d.toLowerCase()}/`)&&(c=c.slice(d.length+1)),(c=c.replace(/\/{2,}/g,"/").replace(/^\/+|\/+$/g,"")).toLowerCase()}var h=c(77598);let i=["provider","authType","apiType","baseUrl","resourceUrl","region","projectId","accountId","azureEndpoint","apiVersion","deployment","organization","chatgptAccountId","workspaceId","tenantId"];function j(a={}){let b={...a.providerSpecificData||{},...a};delete b.providerSpecificData;let c={};for(let a of i){let d=function(a){if("string"!=typeof a)return null==a?null:String(a);let b=a.trim();return b?/^https?:\/\//i.test(b)?b.replace(/\/+$/g,"").toLowerCase():b:null}(b[a]);null!=d&&(c[a]=d)}let d=JSON.stringify(c,Object.keys(c).sort()),e=(0,h.createHash)("sha256").update(d).digest("hex").slice(0,24);return`pmp:v1:${e}`}var k=c(38238);function l(a){if(a?.ok===!0)return{status:"ok",failureClass:null};let b=a?"string"==typeof a?a:String(a.error||a.message||a.failureMessage||""):"",c=b.toLowerCase(),d=function(a,b){let c=Number(a?.status||a?.statusCode||a?.httpStatus);if(Number.isFinite(c)&&c>0)return c;let d=String(b||"").match(/\bHTTP\s+(\d{3})\b/i);return d?Number(d[1]):null}(a,b),e=String(a?.name||"").toLowerCase();return e.includes("abort")||e.includes("timeout")||c.includes("abortsignal.timeout")||c.includes("timed out")||c.includes("timeout")||c.includes("etimedout")?{status:"retryable",failureClass:"timeout"}:c.includes("fetch failed")||c.includes("network")||c.includes("econnreset")||c.includes("econnrefused")||c.includes("enotfound")||c.includes("socket hang up")?{status:"retryable",failureClass:"unknown"}:401===d?{status:"retryable",failureClass:"auth"}:429===d?{status:"retryable",failureClass:"throttled"}:d>=500?{status:"retryable",failureClass:"server_error"}:404===d||c.includes("model not found")||c.includes("no such model")||c.includes("unknown model")||c.includes("does not exist")||c.includes("not a valid model")||c.includes("invalid model")||c.includes("model identifier is invalid")||c.includes("model is deprecated")||c.includes("model is no longer supported")||c.includes("error_model_no_longer_supported")?{status:"dead",failureClass:"not_found"}:403===d||c.includes("access denied")||c.includes("permission denied")||c.includes("forbidden")||c.includes("not permitted")||c.includes("not authorized for model")||c.includes("model blocked")||c.includes("model is blocked")||c.includes("error_model_blocked")?{status:"dead",failureClass:"access_denied"}:{status:"retryable",failureClass:"unknown"}}function m(a){return a?.name||a?.id||a?.modelId||a?.model||""}async function n(a,b){let c=String(a?.id||a?.modelId||a?.model||a?.name||"").trim(),d=String(a?.kind||a?.type||"llm").trim()||"llm",e=g(c,b.providerAlias),f=a.fullModel||`${b.providerAlias}/${c}`,h=new Date().toISOString(),i=Date.now();try{let g=await b.ping(f,d,b.baseUrl,{timeoutMs:b.timeoutMs,signal:b.signal,connectionId:b.connectionId}),j=l(g);return{modelId:c,canonicalId:e,name:m(a)||c,kind:d,fullModel:f,ok:!0===g.ok,latencyMs:g.latencyMs??Date.now()-i,status:g.status??null,error:g.error||null,probeStatus:j.status,failureClass:j.failureClass,failureMessage:g.error||null,checkedAt:h}}catch(j){if(b.signal?.aborted)throw j;let g=l(j);return{modelId:c,canonicalId:e,name:m(a)||c,kind:d,fullModel:f,ok:!1,latencyMs:Date.now()-i,status:null,error:j?.message||"Probe failed",probeStatus:g.status,failureClass:g.failureClass,failureMessage:j?.message||"Probe failed",checkedAt:h}}}async function o(a,b){let c=await n(a,b);return b.onResult&&await b.onResult(c),c}async function p(a,b){let c=Array(a.length),d=0,e=Array.from({length:Math.min(b.concurrency,a.length)},async()=>{for(;d<a.length;){let e=d;d+=1,c[e]=await o(a[e],b)}});return await Promise.all(e),c}async function q(a){let b=f(a||{}),c=(Array.isArray(a?.models)?a.models:[]).slice(0,b.batchSize),d={...b,providerAlias:a.providerAlias,baseUrl:a.baseUrl,ping:a.ping||k.P,onResult:a.onResult,signal:a.signal,connectionId:a.connectionId};if(!d.providerAlias)throw Error("providerAlias required");if(0===c.length)return{results:[],caps:b};if(a.warmup&&c.length>1){let[a,...e]=c;return{results:[await o(a,d),...await p(e,d)],caps:b}}return{results:await p(c,d),caps:b}}async function r(a){let b=f(a||{}),c=Array.isArray(a?.models)?a.models:[],d=[];for(let e=0;e<c.length;e+=b.batchSize){let f=c.slice(e,e+b.batchSize),g=await q({...a,...b,models:f,warmup:a.warmup&&0===e});d.push(...g.results)}return{results:d,caps:b}}function s(a,b){return`${a||"llm"}|${b}`}function t(a){let b=Array.isArray(a?.models)?a.models:[],c=Array.isArray(a?.probes)?a.probes:[],d=a?.providerAlias||"",e=Math.max(0,Number(a?.freshOkMs||0)),f=a?.skipFreshOk===!0&&e>0,h=Date.now(),i=new Map;for(let a of c)a?.modelId&&i.set(s(a.kind||"llm",a.modelId),a);let j=new Set,k=[],l=[],m=[],n=[],o=0,p=0;for(let a of b){let b=String("string"==typeof a?a:a?.id||a?.modelId||a?.model||a?.name||"").trim();if(!b){o+=1;continue}let c=String(("string"==typeof a?"llm":a?.kind||a?.type||"llm")||"llm").trim()||"llm",q=g(b,d);if(!q){o+=1;continue}let r=s(c,q);if(j.has(r)){p+=1;continue}j.add(r);let t=i.get(r),u={id:b,modelId:b,canonicalId:q,name:"string"==typeof a?b:a?.name||a?.displayName||a?.display_name||b,kind:c,type:c,fullModel:"object"==typeof a?a.fullModel:void 0};if(t?.status==="dead"){l.push({...u,checkedAt:t.checkedAt,failureClass:t.failureClass||null});continue}if(t?.status==="ok"){n.push({...u,latencyMs:t.latencyMs??null,checkedAt:t.checkedAt});let a=t.checkedAt?Date.parse(t.checkedAt):NaN;if(f&&Number.isFinite(a)&&h-a<=e){m.push({...u,latencyMs:t.latencyMs??null,checkedAt:t.checkedAt});continue}}k.push(u)}return{eligible:k,skippedDead:l,skippedFreshOk:m,cachedOk:n,stats:{total:b.length,invalid:o,duplicates:p,skippedDead:l.length,skippedFreshOk:m.length,cachedOk:n.length,eligible:k.length}}}},38238:(a,b,c)=>{c.d(b,{P:()=>i});var d=c(44776),e=c(30869),f=c(41460),g=c(43157);async function h(){let a=null;try{let b=await (0,d.PX)();a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b[f.nF]=await (0,f.cb)(),b}async function i(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`,d={}){let f=await h();d.connectionId&&(f["x-connection-id"]=d.connectionId,f["x-switchboard-strict-connection"]="1");let j=Date.now(),k=function(a,b=null){let c=Number.isFinite(Number(a))?Number(a):6e4,d=AbortSignal.timeout(Math.max(1,Math.floor(c)));return(0,g.O)(b,d)}(d.timeoutMs||6e4,d.signal);if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:f,body:JSON.stringify({model:a,input:"test"}),signal:k}),d=Date.now()-j,e=await b.text().catch(()=>""),g=null;try{g=e?JSON.parse(e):null}catch{}if(!b.ok){let a=g?.error?.message||g?.error||e;return{ok:!1,latencyMs:d,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(g?.data)&&g.data.length>0&&Array.isArray(g.data[0]?.embedding)?{ok:!0,latencyMs:d,error:null,status:b.status}:{ok:!1,latencyMs:d,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:f,body:JSON.stringify({model:a,prompt:"test"}),signal:k}),d=Date.now()-j,e=await b.text().catch(()=>""),g=null;try{g=e?JSON.parse(e):null}catch{}if(!b.ok){let a=g?.error?.message||g?.msg||g?.message||g?.error||e;return{ok:!1,latencyMs:d,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(g?.data)&&g.data.length>0?{ok:!0,latencyMs:d,error:null,status:b.status}:{ok:!1,latencyMs:d,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,d,e,g,h=new FormData,i=(e=new DataView(d=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(g=(a,b)=>{for(let c=0;c<b.length;c+=1)e.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),e.setUint32(4,36+b,!0),g(8,"WAVE"),g(12,"fmt "),e.setUint32(16,16,!0),e.setUint16(20,1,!0),e.setUint16(22,1,!0),e.setUint32(24,16e3,!0),e.setUint32(28,32e3,!0),e.setUint16(32,2,!0),e.setUint16(34,16,!0),g(36,"data"),e.setUint32(40,b,!0),new Blob([d],{type:"audio/wav"}));h.append("file",i,"test.wav"),h.append("model",a);let l=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(f).filter(([a])=>"content-type"!==a.toLowerCase())),body:h,signal:k}),m=Date.now()-j,n=await l.text().catch(()=>""),o=null;try{o=n?JSON.parse(n):null}catch{}if(!l.ok){let a=o?.error?.message||o?.msg||o?.message||o?.error||n;return{ok:!1,latencyMs:m,error:`HTTP ${l.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:l.status}}return("string"==typeof o?.text?o.text:"").trim()?{ok:!0,latencyMs:m,error:null,status:l.status}:{ok:!1,latencyMs:m,status:l.status,error:"Provider returned no transcription text for this model"}}let l=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:f,body:JSON.stringify({model:a,max_tokens:16,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:k}),m=Date.now()-j,n=await l.text().catch(()=>""),o=null;try{o=n?JSON.parse(n):null}catch{}if(!l.ok){let a=o?.error?.message||o?.msg||o?.message||o?.error||n;return{ok:!1,latencyMs:m,error:`HTTP ${l.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:l.status}}let p=o?.status,q=o?.msg||o?.message;if(null!=p&&"200"!==String(p)&&"0"!==String(p)&&q)return{ok:!1,latencyMs:m,status:l.status,error:`Provider status ${p}: ${String(q).slice(0,240)}`};if(o?.error){let a=o?.error?.message||o?.error||"Provider returned an error";return{ok:!1,latencyMs:m,status:l.status,error:String(a).slice(0,240)}}return Array.isArray(o?.choices)&&o.choices.length>0?{ok:!0,latencyMs:m,error:null,status:l.status}:{ok:!1,latencyMs:m,status:l.status,error:"Provider returned no completion choices for this model"}}},41460:(a,b,c)=>{c.d(b,{cb:()=>h,gN:()=>i,nF:()=>f});var d=c(54603),e=c(38044);let f="x-switchboard-cli-token",g=null;async function h(){return g||(g=await (0,d.Xj)("switchboard-cli-auth")),g}async function i(a){let b=a?.headers?.get?.(f);return!!b&&(0,e.lO)(b,await h())}},43157:(a,b,c)=>{c.d(b,{O:()=>d});function d(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,e=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){e({target:a});break}a.addEventListener("abort",e,{once:!0})}return c.signal}},47293:(a,b,c)=>{c.d(b,{A:()=>f});let d=new Uint8Array(16);var e=c(50122);let f=function(a,b,c){return b||a||!crypto.randomUUID?function(a,b,c){let f=(a=a||{}).random??a.rng?.()??crypto.getRandomValues(d);if(f.length<16)throw Error("Random bytes length must be >= 16");if(f[6]=15&f[6]|64,f[8]=63&f[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=f[a];return b}return(0,e.k)(f)}(a,b,c):crypto.randomUUID()}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},54603:(a,b,c)=>{c.d(b,{Xj:()=>q});var d=c(96930),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.nJ,"machine-id"),m=h().join(k.nJ,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||function(){if(process.env.MACHINE_ID_SALT)return process.env.MACHINE_ID_SALT;let a=h().join(m,"machine-id-salt");try{let b=f().readFileSync(a,"utf8").trim();if(b)return b}catch{}let b=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0,mode:448}),f().writeFileSync(a,b,{mode:384})}catch{}return b}(),c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.nJ,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="switchboard-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}}};
@@ -1,10 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2134],{4003:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>W});var a=s(95155),i=s(12115),r=s(73321),l=s(98500),n=s.n(l),o=s(5772),d=s(35497),c=s(88105),m=s(28777),p=s(16600),u=s(47224);let x=["none","low","medium","high"],h=["none","thinking"],f=["none","low","medium","high","max"],g={openai:["none","minimal","low","medium","high","xhigh"],"claude-adaptive":f,"claude-budget":["none","low","medium","high","xhigh","max"],"gemini-level":["minimal","low","medium","high"],"gemini-budget":x,zai:h,qwen:x,kimi:f,deepseek:["none","high","max"],minimax:h,hunyuan:x,step:x},y=[{pattern:"*codex*",levels:["low","medium","high","xhigh"]}];function b(e,t){let s=(0,p.nl)(e,t);if(!s.reasoning)return null;let a=y.find(e=>(0,u.gH)(e.pattern,t)),i=a?.levels||g[s.thinkingFormat]||x;return!1===s.thinkingCanDisable&&(i=i.filter(e=>"none"!==e)),i}var v=s(11059),j=s(929),w=s(73006);let k=new Map;async function N(e){if(!e?.url||!e?.type||e.requiresAuth)return[];let t=k.get(e.url);if(t&&Date.now()<t.expiresAt)return t.data;try{let t=new URLSearchParams({url:e.url,type:e.type}),s=await fetch(`/api/providers/suggested-models?${t}`);if(!s.ok)return[];let a=(await s.json()).data??[];return k.set(e.url,{data:a,expiresAt:Date.now()+6e5}),a}catch{return[]}}var C=s(81231);function S(e,t={}){let s=t.kind||t.type;if(s&&"string"==typeof s){let e=s.toLowerCase();return"chat"===e||"text"===e||"language"===e?"llm":e}let a=String(e||"").toLowerCase();return/embed/.test(a)?"embedding":/(^|[-_/])(tts|speech)([-_/]|$)/.test(a)?"tts":/(whisper|transcri|speech-to-text|(^|[-_/])stt([-_/]|$))/.test(a)?"stt":/(imagine-video|video-gen|(^|[-_/])video([-_/]|$))/.test(a)&&!/revision/.test(a)?"video":/(imagine-image|dall-e|stable-diffusion|sdxl|flux|midjourney|image-gen)/.test(a)||/(^|[-_/])image([-_/]|$)/.test(a)&&!/(vision|vl|multimodal)/.test(a)?"image":"llm"}function $(e,t){let s=String(e||"").trim();if(!s)return"";if(s=s.replace(/^models\//,""),t){let e=`${t}/`;s.startsWith(e)&&(s=s.slice(e.length))}return(s=s.replace(/^(openai|anthropic|google|x-ai|xai|meta-llama|mistralai)\//i,"")).trim()}var A=s(14051),T=s.n(A);function O({model:e,fullModel:t,alias:s,copied:i,onCopy:r,testStatus:l,isCustom:n,isFree:o,onDeleteAlias:c,onTest:m,isTesting:p,onDisable:u,caps:x,thinkingSuffix:h,latencyMs:f,probeState:g}){let y=h?`${t}(${h})`:t,b="ok"===l?"#22c55e":"error"===l?"#ef4444":void 0;return(0,a.jsx)("div",{className:`group min-w-0 max-w-full rounded-lg border px-3 py-2 ${"ok"===l?"border-green-500/40":"error"===l?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:(0,a.jsxs)("div",{className:"flex min-w-0 items-start gap-2 sm:items-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 text-base",style:b?{color:b}:void 0,children:"ok"===l?"check_circle":"error"===l?"cancel":"smart_toy"}),(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("code",{className:"max-w-[72vw] truncate rounded bg-sidebar px-1.5 py-0.5 font-mono text-xs text-text-muted sm:max-w-[360px]",children:y}),g&&("testing"===g?(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 animate-spin text-[14px] text-text-muted",title:"Testing...",children:"progress_activity"}):(0,a.jsx)("span",{title:"ok"===g?"Reachable":"dead"===g?"Unavailable (dead)":"Retry later",className:`shrink-0 inline-block h-2 w-2 rounded-full ${"ok"===g?"bg-green-500":"dead"===g?"bg-red-500":"bg-amber-500"}`}))]}),(0,a.jsxs)("span",{className:"flex min-w-0 items-center text-[9px] gap-1 pl-1",children:[e.name&&(0,a.jsx)("span",{className:"truncate text-[9px] italic text-text-muted/70",children:e.name}),Number.isFinite(f)&&(0,a.jsxs)("span",{className:"shrink-0 text-[9px] text-text-muted/70 tabular-nums",children:[Math.round(f),"ms"]}),(0,a.jsx)(d.nh,{caps:x,colorOverride:"text-text-muted/70",size:12})]})]}),m&&(0,a.jsxs)("div",{className:"relative shrink-0 group/btn",children:[(0,a.jsx)("button",{onClick:m,disabled:p,className:`rounded p-0.5 text-text-muted transition-opacity hover:bg-sidebar hover:text-primary ${p?"opacity-100":"opacity-100 sm:opacity-0 sm:group-hover:opacity-100"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",style:p?{animation:"spin 1s linear infinite"}:void 0,children:p?"progress_activity":"science"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:p?"Testing...":"Test"})]}),(0,a.jsxs)("div",{className:"relative shrink-0 group/btn",children:[(0,a.jsx)("button",{onClick:()=>r(y,`model-${e.id}`),className:"rounded p-0.5 text-text-muted hover:bg-sidebar hover:text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:i===`model-${e.id}`?"check":"content_copy"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:i===`model-${e.id}`?"Copied!":"Copy"})]}),n?(0,a.jsx)("button",{onClick:c,className:"ml-auto rounded p-0.5 text-text-muted opacity-100 transition-opacity hover:bg-red-500/10 hover:text-red-500 sm:opacity-0 sm:group-hover:opacity-100",title:"Remove custom model",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})}):u?(0,a.jsx)("button",{onClick:u,className:"ml-auto rounded p-0.5 text-text-muted opacity-100 transition-opacity hover:bg-red-500/10 hover:text-red-500 sm:opacity-0 sm:group-hover:opacity-100",title:"Disable this model",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})}):null]})})}O.propTypes={model:T().shape({id:T().string.isRequired}).isRequired,fullModel:T().string.isRequired,alias:T().string,copied:T().string,onCopy:T().func.isRequired,testStatus:T().oneOf(["ok","error"]),isCustom:T().bool,isFree:T().bool,onDeleteAlias:T().func,onTest:T().func,isTesting:T().bool,onDisable:T().func,caps:T().object,thinkingSuffix:T().string,latencyMs:T().number,probeState:T().string};var E=s(78559);function R({modelId:e,fullModel:t,copied:s,onCopy:i,onDeleteAlias:r,onTest:l,testStatus:n,isTesting:o}){let d="ok"===n?"#22c55e":"error"===n?"#ef4444":void 0;return(0,a.jsxs)("div",{className:`flex items-center gap-3 p-3 rounded-lg border ${"ok"===n?"border-green-500/40":"error"===n?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",style:d?{color:d}:void 0,children:"ok"===n?"check_circle":"error"===n?"cancel":"smart_toy"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium truncate",children:e}),(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,a.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:t}),(0,a.jsxs)("div",{className:"relative group/btn",children:[(0,a.jsx)("button",{onClick:()=>i(t,`model-${e}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:s===`model-${e}`?"check":"content_copy"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:s===`model-${e}`?"Copied!":"Copy"})]}),l&&(0,a.jsxs)("div",{className:"relative group/btn",children:[(0,a.jsx)("button",{onClick:l,disabled:o,className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",style:o?{animation:"spin 1s linear infinite"}:void 0,children:o?"progress_activity":"science"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:o?"Testing...":"Test"})]})]})]}),(0,a.jsx)("button",{onClick:r,className:"p-1 hover:bg-red-50 rounded text-red-500",title:"Remove model",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]})}function D({providerStorageAlias:e,providerDisplayAlias:t,modelAliases:s,customModels:r,copied:l,onCopy:n,onDeleteAlias:o,onAddCustomModel:c,onDeleteCustomModel:m,onRefreshModels:p,connections:u,isAnthropic:x}){let[h,f]=(0,i.useState)(""),[g,y]=(0,i.useState)(!1),[b,v]=(0,i.useState)(!1),[j,w]=(0,i.useState)(""),[k,N]=(0,i.useState)(null),[S,$]=(0,i.useState)({}),A=async t=>{if(!k){N(t);try{let s=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${e}/${t}`})}),a=await s.json();$(e=>({...e,[t]:a.ok?"ok":"error"}))}catch{$(e=>({...e,[t]:"error"}))}finally{N(null)}}},T=(0,C.R3)({customModels:r,modelAliases:s,providerAlias:e,type:"llm"}),O=async()=>{if(!h.trim()||g)return;let e=h.trim();if(T.some(t=>t.id===e))return void(0,E.s)("Model already exists for this provider.");y(!0);try{await c(e),f("")}catch(e){(0,E.s)("Error adding model:",e)}finally{y(!1)}},I=async()=>{if(b)return;let t=u.find(e=>!1!==e.isActive);if(t){v(!0),w("");try{let s=await fetch(`/api/providers/${t.id}/models`),a=await s.json().catch(()=>({}));if(!s.ok)return void(0,E.s)(a.error||"Failed to import models");let i=a.models||[];if(0===i.length)return void(0,E.s)("No models returned from /models.");let r=new Set(T.map(e=>e.id)),l=[],n=new Set;for(let t of i){let s=String(t.id||t.name||t.model||"").trim();!s||r.has(s)||n.has(s)||(n.add(s),l.push({providerAlias:e,id:s,type:"llm",name:t.display_name||t.displayName||t.name||s}))}if(0===l.length)return void w("All models already in list");let o=await fetch("/api/models/custom",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({models:l})}),d=await o.json().catch(()=>({}));if(!o.ok){let e=0;for(let t of l)await c(t.id),e+=1;w(e?`Imported ${e} model(s)`:"No new models were added");return}w(`Imported ${d.added??l.length} model(s)`),"function"==typeof p?await p():window.dispatchEvent(new CustomEvent("customModelChanged"))}catch(e){(0,E.s)("Error importing models:",e),(0,E.s)(e?.message||"Import failed")}finally{v(!1)}}},P=u.some(e=>!1!==e.isActive);return(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["Add ",x?"Anthropic":"OpenAI","-compatible models manually or import them from the /models endpoint."]}),(0,a.jsxs)("div",{className:"flex items-end gap-2 flex-wrap",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-[240px]",children:[(0,a.jsx)("label",{htmlFor:"new-compatible-model-input",className:"text-xs text-text-muted mb-1 block",children:"Model ID"}),(0,a.jsx)("input",{id:"new-compatible-model-input",type:"text",value:h,onChange:e=>f(e.target.value),onKeyDown:e=>"Enter"===e.key&&O(),placeholder:x?"claude-3-opus-20240229":"gpt-4o",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:O,disabled:!h.trim()||g,children:g?"Adding...":"Add"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"cloud_download",onClick:I,disabled:!P||b,children:b?"Importing...":"Import models"})]}),!P&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Add a connection to enable importing models."}),j&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:j}),T.length>0&&(0,a.jsx)("div",{className:"flex flex-col gap-3",children:T.map(({id:s,alias:i,source:r})=>(0,a.jsx)(R,{modelId:s,fullModel:`${t}/${s}`,copied:l,onCopy:n,onDeleteAlias:()=>"custom"===r?m(s):o(i),onTest:u.length>0?()=>A(s):void 0,testStatus:S[s],isTesting:k===s},`${r}-${e}/${s}`))})]})}T().string.isRequired,T().string.isRequired,T().string,T().func.isRequired,T().func.isRequired,T().func,T().oneOf(["ok","error"]),T().bool,T().string.isRequired,T().object.isRequired,T().arrayOf(T().object),T().string,T().func.isRequired,T().func.isRequired,T().func.isRequired,T().func.isRequired,D.propTypes={providerStorageAlias:T().string.isRequired,providerDisplayAlias:T().string.isRequired,modelAliases:T().object.isRequired,customModels:T().arrayOf(T().object),copied:T().string,onCopy:T().func.isRequired,onDeleteAlias:T().func.isRequired,onAddCustomModel:T().func.isRequired,onDeleteCustomModel:T().func.isRequired,onRefreshModels:T().func,connections:T().arrayOf(T().shape({id:T().string,isActive:T().bool})).isRequired,isAnthropic:T().bool};var I=s(70217);function P({until:e}){let[t,s]=(0,i.useState)("");return((0,i.useEffect)(()=>{let t=()=>{let t=new Date(e).getTime()-Date.now();if(t<=0)return void s("");let a=Math.floor(t/1e3);if(a<60)s(`${a}s`);else if(a<3600)s(`${Math.floor(a/60)}m ${a%60}s`);else{let e=Math.floor(a/3600),t=Math.floor(a%3600/60);s(`${e}h ${t}m`)}};t();let a=setInterval(t,1e3);return()=>clearInterval(a)},[e]),t)?(0,a.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",t]}):null}function M({connection:e,isOAuth:t,isFirst:s,isLast:r,onMoveUp:l,onMoveDown:n,onToggleActive:o,onEdit:c,onDelete:m,onAllowlistHost:p=null,oneByOneStatus:u=null,autoPing:x=null}){let h=/SSRF blocked|Blocked URL: (private IP|internal host)/i.test(e.lastError||""),f=e.providerSpecificData?.connectionProxyEnabled===!0&&!!e.providerSpecificData?.connectionProxyUrl,g=f?`Proxy: ${e.providerSpecificData?.connectionProxyUrl}`:"",y=x?.provider==="codex"?"Auto-starts the next 5h Codex window after reset by sending a tiny gpt-5.5 request. Consumes a small amount of quota.":"When your 5h quota runs out, auto-sends a request the moment it resets so a new window starts right away.",b="";if(e.providerSpecificData?.connectionProxyUrl){let t=e.providerSpecificData?.connectionProxyUrl;try{let e=new URL(t);b=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`}catch{b=t}}let v=e.providerSpecificData?.connectionNoProxy||"",j=f?"success":"default",w=e.authType||(t?"oauth":"apikey"),k="oauth"===w,N="cookie"===w,C=e.name?.trim()||e.email?.trim()||e.displayName?.trim()||(k?"OAuth Account":N?"Cookie Account":"API Key"),S=e.name?.trim()&&e.email?.trim()&&e.name.trim()!==e.email.trim()?e.email.trim():e.name?.trim()&&e.displayName?.trim()&&e.name.trim()!==e.displayName.trim()?e.displayName.trim():null,[$,A]=(0,i.useState)(!1),T=Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>!!e).sort()[0]||null;(0,i.useEffect)(()=>{let t=()=>{A(!!Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>e).filter(e=>e&&new Date(e).getTime()>Date.now()).sort()[0])};t();let s=T?setInterval(t,1e3):null;return()=>{s&&clearInterval(s)}},[e,T]);let O="unavailable"!==e.testStatus||$?e.testStatus:"active",E=()=>u?"queued"===u.state?"queued":"testing"===u.state?"testing":"success"===u.state?"success":"failed"===u.state?u.error?`failed: ${u.error}`:"failed":null:null;return(0,a.jsxs)("div",{className:`group flex min-w-0 flex-col gap-3 rounded-lg p-2 transition-colors hover:bg-black/[0.02] dark:hover:bg-white/[0.02] sm:flex-row sm:items-center sm:justify-between ${!1===e.isActive?"opacity-60":""}`,children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-2 sm:items-center sm:gap-3",children:[(0,a.jsxs)("div",{className:"flex shrink-0 flex-col",children:[(0,a.jsx)("button",{onClick:l,disabled:s,className:`p-0.5 rounded ${s?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,a.jsx)("button",{onClick:n,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 text-base text-text-muted",children:N?"cookie":k?"lock":"key"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium truncate",children:C}),S&&(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:S}),(0,a.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1.5 sm:gap-2",children:[(0,a.jsx)(d.Ex,{variant:(0,I.g)(e.isActive,O),size:"sm",dot:!0,children:!1===e.isActive?"disabled":O||"Unknown"}),(0,a.jsx)(d.Ex,{variant:"default",size:"sm",children:k?"OAuth":N?"Cookie":"API Key"}),f&&(0,a.jsx)(d.Ex,{variant:j,size:"sm",children:"Proxy"}),$&&!1!==e.isActive&&(0,a.jsx)(P,{until:T}),e.lastError&&!1!==e.isActive&&(0,a.jsx)("span",{className:"max-w-full truncate text-xs text-red-500 sm:max-w-[300px]",title:e.lastError,children:e.lastError}),h&&!1!==e.isActive&&p&&(0,a.jsxs)("button",{onClick:p,title:"Trust this host past the SSRF guard and retry",className:"inline-flex items-center gap-1 rounded border border-amber-500/40 px-1.5 py-0.5 text-xs text-amber-600 hover:bg-amber-500/10 dark:text-amber-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"verified_user"}),"Add to allow list"]}),(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["#",e.priority]}),e.globalPriority&&(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["Auto: ",e.globalPriority]}),E()&&(0,a.jsx)(d.Ex,{variant:u?"success"===u.state?"success":"failed"===u.state?"error":"testing"===u.state?"primary":"default":"default",size:"sm",children:E()})]}),f&&(0,a.jsxs)("div",{className:"mt-1 flex items-center gap-2 flex-wrap",children:[(0,a.jsx)("span",{className:"max-w-full truncate text-[11px] text-text-muted sm:max-w-[420px]",title:g,children:g}),b&&(0,a.jsx)("code",{className:"max-w-full truncate rounded bg-black/5 px-1 py-0.5 font-mono text-[10px] text-text-muted dark:bg-white/5 sm:max-w-[260px]",children:b}),v&&(0,a.jsxs)("span",{className:"max-w-full truncate text-[11px] text-text-muted sm:max-w-[320px]",title:v,children:["no_proxy: ",v]})]})]})]}),(0,a.jsxs)("div",{className:"flex w-full items-center justify-between gap-2 sm:w-auto sm:justify-end",children:[(0,a.jsxs)("div",{className:"grid flex-1 grid-cols-3 gap-1 sm:flex sm:flex-none",children:[x&&(0,a.jsx)(d.m_,{text:y,children:(0,a.jsxs)("button",{onClick:()=>x.onToggle(!x.on),className:`flex w-full flex-col items-center rounded px-2 py-1 transition-colors hover:bg-black/5 dark:hover:bg-white/5 ${x.on?"text-primary":"text-text-muted hover:text-primary"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"bolt"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Auto-ping"})]})}),(0,a.jsxs)("button",{onClick:c,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,a.jsxs)("button",{onClick:m,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 hover:bg-red-500/10",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]}),(0,a.jsx)(d.lM,{size:"sm",checked:e.isActive??!0,onChange:o,title:e.isActive??!0?"Disable connection":"Enable connection"})]})]})}P.propTypes={until:T().string.isRequired},M.propTypes={connection:T().shape({id:T().string,name:T().string,email:T().string,displayName:T().string,modelLockUntil:T().string,testStatus:T().string,isActive:T().bool,lastError:T().string,priority:T().number,globalPriority:T().number,providerSpecificData:T().object}).isRequired,isOAuth:T().bool.isRequired,isFirst:T().bool.isRequired,isLast:T().bool.isRequired,onMoveUp:T().func.isRequired,onMoveDown:T().func.isRequired,onToggleActive:T().func.isRequired,onEdit:T().func.isRequired,onDelete:T().func.isRequired,onAllowlistHost:T().func,oneByOneStatus:T().shape({state:T().string,error:T().string}),autoPing:T().shape({on:T().bool,onToggle:T().func,provider:T().string})};let z=`name1|sk-key1
2
- name2|sk-key2
3
- sk-key-only-auto-named`;function U({isOpen:e,provider:t,providerName:s,isCompatible:r,isAnthropic:l,authType:n,authHint:o,website:m,error:p,onSave:u,onBulkDone:x,onClose:h}){let f="ollama-local"===t,g="cookie"===n,y="xai"===t&&!g,b=g?"Cookie Value":"API Key",v="azure"===t,j="cloudflare-ai"===t,w=c.Q2?.[t]?.regions||null,k=c.Q2?.[t]?.defaultRegion||w?.[0]?.id||"",[N,C]=(0,i.useState)({name:"",apiKey:"",defaultModel:"",priority:1,ollamaHostUrl:""}),[S,$]=(0,i.useState)({azureEndpoint:"",apiVersion:"2024-10-01-preview",deployment:"",organization:""}),[A,T]=(0,i.useState)({accountId:""}),[O,E]=(0,i.useState)(k),[R,D]=(0,i.useState)(!1),[I,P]=(0,i.useState)(null),[M,q]=(0,i.useState)(!1),[_,F]=(0,i.useState)("single"),[L,J]=(0,i.useState)(""),[K,B]=(0,i.useState)(null),H=N.name.trim().length>0,W=N.apiKey.trim().length>0,V=()=>f&&N.ollamaHostUrl.trim()?{baseUrl:N.ollamaHostUrl.trim()}:v?{azureEndpoint:S.azureEndpoint,apiVersion:S.apiVersion,deployment:S.deployment,organization:S.organization}:j?{accountId:A.accountId}:w&&O?{region:O}:void 0,G=async()=>{let e=N.apiKey.trim();if(e){D(!0);try{let s=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:e,providerSpecificData:V()})}),a=await s.json();P(a.valid?"success":"failed")}catch{P("failed")}finally{D(!1)}}},Q=async()=>{if(!t)return;let e=N.name.trim(),s=N.apiKey.trim();if((f||s)&&(f||e)&&(!r||N.defaultModel.trim())){q(!0);try{let a=!1;try{D(!0),P(null);let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:s,providerSpecificData:V()})});a=!!(await e.json()).valid,P(a?"success":"failed")}catch{P("failed")}finally{D(!1)}await u({name:e||(f?"Ollama Local":""),apiKey:s,defaultModel:r?N.defaultModel.trim():void 0,priority:N.priority,testStatus:a?"active":"unknown",providerSpecificData:V()})}finally{q(!1)}}},Z=async()=>{let e=L.split("\n").map(e=>e.trim()).filter(Boolean);if(!e.length)return;q(!0),B(null);let s=0,a=0;for(let i=0;i<e.length;i++){let r=e[i].split("|"),l=r.length>=2?r.slice(1).join("|").trim():r[0].trim();if(!l){a++;continue}let n=r.length>=2&&r[0].trim()||"Key",o=`${n} ${i+1}`;try{(await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t,apiKey:l,name:o,priority:1,testStatus:"unknown"})})).ok?s++:a++}catch{a++}}q(!1),B({success:s,failed:a}),s>0&&x&&x()};return t?(0,a.jsx)(d.aF,{isOpen:e,title:`Add ${s||t} ${b}`,onClose:h,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{size:"sm",variant:"single"===_?"primary":"ghost",onClick:()=>{F("single"),B(null)},children:"Single"}),(0,a.jsx)(d.$n,{size:"sm",variant:"bulk"===_?"primary":"ghost",onClick:()=>{F("bulk"),B(null)},children:"Bulk Add"})]}),"bulk"===_&&(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["One key per line. Format: ",(0,a.jsx)("code",{children:"name|apiKey"})," or just ",(0,a.jsx)("code",{children:"apiKey"})," (auto-named by index)."]}),(0,a.jsx)("textarea",{className:"w-full rounded border border-accent/30 bg-sidebar p-2 text-sm font-mono resize-y min-h-[140px] focus:outline-none focus:ring-1 focus:ring-primary",placeholder:z,value:L,onChange:e=>J(e.target.value)}),K&&(0,a.jsxs)("div",{className:`text-sm font-medium ${K.failed>0?"text-yellow-400":"text-green-400"}`,children:["✓ ",K.success," added",K.failed>0?`, ✗ ${K.failed} failed`:""]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{onClick:Z,fullWidth:!0,disabled:M||!L.trim(),children:M?"Adding...":"Add All Keys"}),(0,a.jsx)(d.$n,{onClick:h,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"single"===_&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.pd,{label:"Name",value:N.name,onChange:e=>C({...N,name:e.target.value}),placeholder:f?"Ollama Local":"Production Key"}),f&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.pd,{label:"Ollama Host URL",value:N.ollamaHostUrl,onChange:e=>C({...N,ollamaHostUrl:e.target.value}),placeholder:"http://localhost:11434",className:"flex-1"}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(d.$n,{onClick:G,disabled:R||M,variant:"secondary",children:R?"Checking...":"Check"})})]}),!f&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.pd,{label:b,type:g?"text":"password",autoComplete:"off",value:N.apiKey,onChange:e=>C({...N,apiKey:e.target.value}),placeholder:g?"grok-web"===t?"sso=xxxxx... or just the raw value":"eyJhbGciOi...":y?"xai-...":"",className:"flex-1"}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(d.$n,{onClick:G,disabled:!N.apiKey||R||M,variant:"secondary",children:R?"Checking...":"Check"})})]}),y&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Use a direct xAI API key from console.x.ai. This is separate from Grok Build OAuth."}),g&&o&&(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:[o,m&&(0,a.jsxs)(a.Fragment,{children:[" ",(0,a.jsxs)("a",{href:m,target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:["Open ",m.replace(/^https?:\/\//,"")]})]})]}),w&&(0,a.jsx)(d.l6,{label:"Region",value:O,onChange:e=>E(e.target.value),options:w.map(e=>({value:e.id,label:e.label}))}),r&&(0,a.jsx)(d.pd,{label:"Default Model",value:N.defaultModel,onChange:e=>C({...N,defaultModel:e.target.value}),placeholder:l?"claude-3-5-sonnet-latest":"gpt-4o-mini"}),f&&(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Leave blank to use ",(0,a.jsx)("code",{children:"http://localhost:11434"}),". For remote Ollama, enter the full host URL (e.g. ",(0,a.jsx)("code",{children:"http://192.168.1.10:11434"}),")."]}),I&&(0,a.jsx)(d.Ex,{variant:"success"===I?"success":"error",children:"success"===I?"Valid":"Invalid"}),p&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:p}),r&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Enter the model ID exactly as your compatible endpoint expects it. This model will be saved as the connection default."}),j&&(0,a.jsxs)("div",{className:"bg-sidebar/50 p-4 rounded-lg border border-accent/20",children:[(0,a.jsx)("h3",{className:"font-semibold mb-3 text-sm",children:"Cloudflare Workers AI"}),(0,a.jsx)(d.pd,{label:"Account ID",value:A.accountId,onChange:e=>T({...A,accountId:e.target.value}),placeholder:"abc123def456..."}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-2",children:["Find your Account ID in the right sidebar of ",(0,a.jsx)("a",{href:"https://dash.cloudflare.com",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"dash.cloudflare.com"})]})]}),v&&(0,a.jsxs)("div",{className:"bg-sidebar/50 p-4 rounded-lg border border-accent/20",children:[(0,a.jsx)("h3",{className:"font-semibold mb-3 text-sm",children:"Azure OpenAI Configuration"}),(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsx)(d.pd,{label:"Azure Endpoint",value:S.azureEndpoint,onChange:e=>$({...S,azureEndpoint:e.target.value}),placeholder:"https://your-resource.openai.azure.com"}),(0,a.jsx)(d.pd,{label:"Deployment Name",value:S.deployment,onChange:e=>$({...S,deployment:e.target.value}),placeholder:"gpt-4"}),(0,a.jsx)(d.pd,{label:"API Version",value:S.apiVersion,onChange:e=>$({...S,apiVersion:e.target.value}),placeholder:"2024-10-01-preview"}),(0,a.jsx)(d.pd,{label:"Organization",value:S.organization,onChange:e=>$({...S,organization:e.target.value}),placeholder:"Organization ID"})]})]}),(0,a.jsx)(d.pd,{label:"Priority",type:"number",min:1,value:N.priority,onChange:e=>C({...N,priority:Number.parseInt(e.target.value)||1})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{onClick:Q,fullWidth:!0,disabled:M||!f&&(!H||!W)||r&&!N.defaultModel.trim()||v&&(!S.azureEndpoint||!S.deployment||!S.organization)||j&&!A.accountId,children:M?"Saving...":"Save"}),(0,a.jsx)(d.$n,{onClick:h,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}function q({isOpen:e,node:t,onSave:s,onClose:r,isAnthropic:l}){let[n,o]=(0,i.useState)({name:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[c,m]=(0,i.useState)(!1),[p,u]=(0,i.useState)(""),[x,h]=(0,i.useState)(""),[f,g]=(0,i.useState)(!1),[y,b]=(0,i.useState)(null),v=function(e){try{return["http:","https:"].includes(new URL(e).protocol)}catch{return!1}}(n.baseUrl.trim());(0,i.useEffect)(()=>{t&&(o({name:t.name||"",apiType:t.apiType||"chat",baseUrl:t.baseUrl||(l?"https://api.anthropic.com/v1":"https://api.openai.com/v1")}),b(null),u(""),h(""))},[t,l]);let j=async()=>{if(n.name.trim()&&v){m(!0);try{let e={name:n.name.trim(),baseUrl:n.baseUrl.trim()};l||(e.apiType=n.apiType),await s(e)}finally{m(!1)}}},w=async()=>{g(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:n.baseUrl,apiKey:p,type:l?"anthropic-compatible":"openai-compatible",modelId:x.trim()||void 0})}),t=await e.json();b(t.valid?"success":"failed")}catch{b("failed")}finally{g(!1)}};return t?(0,a.jsx)(d.aF,{isOpen:e,title:`Edit ${l?"Anthropic":"OpenAI"} Compatible`,onClose:r,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(d.pd,{label:"Name",value:n.name,onChange:e=>o({...n,name:e.target.value}),placeholder:`${l?"Anthropic":"OpenAI"} Compatible`,hint:"Friendly label for this provider."}),!l&&(0,a.jsx)(d.l6,{label:"API Type",options:[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}],value:n.apiType,onChange:e=>o({...n,apiType:e.target.value})}),(0,a.jsx)(d.pd,{label:"Base URL",value:n.baseUrl,onChange:e=>o({...n,baseUrl:e.target.value}),placeholder:l?"https://api.anthropic.com/v1":"https://api.openai.com/v1",hint:`Base URL ending in /v1 for your ${l?"Anthropic":"OpenAI"}-compatible API.`}),t.prefix?(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Model IDs use prefix ",(0,a.jsx)("code",{className:"bg-sidebar px-1 rounded font-mono",children:t.prefix})," ","(auto-assigned; stable so combos keep working)."]}):null,(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.pd,{label:"API Key (for Check)",type:"password",autoComplete:"off",value:p,onChange:e=>u(e.target.value),className:"flex-1"}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(d.$n,{onClick:w,disabled:!p||f||!v,variant:"secondary",children:f?"Checking...":"Check"})})]}),(0,a.jsx)(d.pd,{label:"Model ID (optional)",value:x,onChange:e=>h(e.target.value),placeholder:"e.g. my-model-id",hint:"If the provider has no /models endpoint, test with a model ID."}),y&&(0,a.jsx)(d.Ex,{variant:"success"===y?"success":"error",children:"success"===y?"Valid":"Invalid"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{onClick:j,fullWidth:!0,disabled:!n.name.trim()||!v||c,children:c?"Saving...":"Save"}),(0,a.jsx)(d.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function _({isOpen:e,providerAlias:t,providerDisplayAlias:s,onSave:r,onClose:l}){let[n,o]=(0,i.useState)(""),[c,m]=(0,i.useState)(null),[p,u]=(0,i.useState)(""),[x,h]=(0,i.useState)(!1);(0,i.useEffect)(()=>{e&&(o(""),m(null),u(""))},[e]);let f=e=>{let s=`${t}/`;return e.startsWith(s)?e.slice(s.length):e},g=async()=>{let e=f(n.trim());if(e){m("testing"),u("");try{let s=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${t}/${e}`})}),a=await s.json();m(a.ok?"ok":"error"),u(a.error||"")}catch(e){m("error"),u(e.message)}}},y=async()=>{let e=f(n.trim());if(e&&!x){h(!0);try{await r(e)}finally{h(!1)}}};return(0,a.jsx)(d.aF,{isOpen:e,onClose:l,title:"Add Custom Model",children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Model ID"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{type:"text",value:n,onChange:e=>{o(e.target.value),m(null),u("")},onKeyDown:e=>{"Enter"===e.key&&g()},placeholder:"e.g. claude-opus-4-5",className:"flex-1 px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",autoFocus:!0}),(0,a.jsx)(d.$n,{variant:"secondary",icon:"science",loading:"testing"===c,onClick:g,disabled:!n.trim()||"testing"===c,children:"testing"===c?"Testing...":"Test"})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Sent to provider as: ",(0,a.jsx)("code",{className:"font-mono bg-sidebar px-1 rounded",children:f(n.trim())||"model-id"})]})]}),"ok"===c&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base",children:"check_circle"}),"Model is reachable"]}),"error"===c&&(0,a.jsxs)("div",{className:"flex items-start gap-2 text-sm text-red-500",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base shrink-0",children:"cancel"}),(0,a.jsx)("span",{children:p||"Model not reachable"})]}),(0,a.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,a.jsx)(d.$n,{onClick:l,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,a.jsx)(d.$n,{onClick:y,fullWidth:!0,size:"sm",disabled:!n.trim()||x,children:x?"Adding...":"Add Model"})]})]})})}U.propTypes={isOpen:T().bool.isRequired,provider:T().string,providerName:T().string,isCompatible:T().bool,isAnthropic:T().bool,authType:T().string,authHint:T().string,website:T().string,error:T().string,onSave:T().func.isRequired,onBulkDone:T().func,onClose:T().func.isRequired},q.propTypes={isOpen:T().bool.isRequired,node:T().shape({id:T().string,name:T().string,prefix:T().string,apiType:T().string,baseUrl:T().string}),onSave:T().func.isRequired,onClose:T().func.isRequired,isAnthropic:T().bool},_.propTypes={isOpen:T().bool.isRequired,providerAlias:T().string.isRequired,providerDisplayAlias:T().string.isRequired,onSave:T().func.isRequired,onClose:T().func.isRequired};let F=`[
4
- {
5
- "accessToken": "eyJhbGc...",
6
- "refreshToken": "rt_...",
7
- "idToken": "eyJhbGc...",
8
- "email": "user@example.com"
9
- }
10
- ]`;function L({isOpen:e,onClose:t,onSuccess:s}){let[r,l]=(0,i.useState)(""),[n,o]=(0,i.useState)(!1),[c,m]=(0,i.useState)(""),[p,u]=(0,i.useState)(null),x=()=>{n||(l(""),m(""),u(null),t())},h=async()=>{var e;let t;m(""),u(null);let a=r.trim();if(!a)return;try{t=JSON.parse(a)}catch(e){m(`${(0,w.Tl)("Invalid JSON")}: ${e.message}`);return}let i=Array.isArray(e=t)?e:e&&"object"==typeof e?Array.isArray(e.accounts)?e.accounts:[e]:null;if(!i||0===i.length)return void m((0,w.Tl)("No accounts found in input"));o(!0);try{let e=await fetch("/api/oauth/codex/bulk-import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accounts:i})}),t=await e.json();if(!e.ok)return void m(t?.error||`Request failed: ${e.status}`);u(t),t.success>0&&"function"==typeof s&&s()}catch(e){m(e.message||(0,w.Tl)("Request failed"))}finally{o(!1)}},f=p?.results?.filter(e=>!e.ok)||[];return(0,a.jsx)(d.aF,{isOpen:e,title:(0,w.Tl)("Bulk Add Codex Accounts"),onClose:x,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)("p",{className:"text-xs text-text-muted",children:(0,w.Tl)("Paste an array of codex account JSON objects. Each must include accessToken (and ideally refreshToken, idToken).")}),(0,a.jsx)("textarea",{className:"w-full rounded border border-accent/30 bg-sidebar p-2 text-sm font-mono resize-y min-h-[240px] focus:outline-none focus:ring-1 focus:ring-primary",placeholder:F,value:r,onChange:e=>l(e.target.value),disabled:n}),c&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:c}),p&&(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:`text-sm font-medium ${p.failed>0?"text-yellow-400":"text-green-400"}`,children:["✓ ",p.success," ",(0,w.Tl)("added"),p.failed>0?`, ✗ ${p.failed} ${(0,w.Tl)("failed")}`:""]}),f.length>0&&(0,a.jsx)("ul",{className:"rounded border border-accent/20 bg-sidebar/50 p-2 text-xs font-mono max-h-40 overflow-y-auto",children:f.map(e=>(0,a.jsxs)("li",{className:"text-red-400",children:["[",e.index,"] ",e.error]},e.index))})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{onClick:h,fullWidth:!0,disabled:n||!r.trim(),children:n?(0,w.Tl)("Importing..."):(0,w.Tl)("Import All")}),(0,a.jsx)(d.$n,{onClick:x,variant:"ghost",fullWidth:!0,disabled:n,children:(0,w.Tl)("Close")})]})]})})}L.propTypes={isOpen:T().bool.isRequired,onClose:T().func.isRequired,onSuccess:T().func};var J=s(77251);function K({connectionId:e,providerAlias:t,models:s,jobSnapshot:r,onComplete:l,onStarted:n,onClose:o}){let[c,m]=(0,i.useState)(4),[p,u]=(0,i.useState)(50),[x,h]=(0,i.useState)(Math.round(20)),[f,g]=(0,i.useState)(!1),[y,b]=(0,i.useState)(null),[v,j]=(0,i.useState)(null),[w,k]=(0,i.useState)(""),[N,C]=(0,i.useState)(""),[S,$]=(0,i.useState)(""),A=(0,i.useRef)({onComplete:l,onStarted:n}),T=(0,i.useRef)(null),O=(0,i.useRef)(e),E=(0,i.useRef)(null),R=s?.length||0,D=(0,i.useMemo)(()=>`max concurrency 16 \xb7 batch 200 \xb7 timeout ${60}s`,[]);function I(e){if(e){if("idle"===e.status){E.current=null,g(!1);return}if(b({done:e.done||0,total:e.total||0,ok:e.ok||0,dead:e.dead||0,retryable:e.retryable||0,skippedDead:e.skippedDead||0,skippedDup:e.skippedDup||0}),"running"===e.status&&(E.current=e.connectionId||O.current,T.current=null,g(!0)),e.currentRange&&C(`Probing ${e.currentRange.from}–${e.currentRange.to} of ${e.total}…`),e.error&&k(e.error),"done"===e.status||"cancelled"===e.status||"error"===e.status){E.current=null,g(!1);let t={ok:e.ok||0,dead:e.dead||0,retryable:e.retryable||0,tested:e.done||0,skippedDead:e.skippedDead||0,skippedDup:e.skippedDup||0,cancelled:"cancelled"===e.status};j(t),C("cancelled"===e.status?"Cancelled (partial results saved).":"error"===e.status?"Stopped.":"Done.");let s=`${e.startedAt||"unknown"}:${e.status}`;T.current!==s&&(T.current=s,A.current.onComplete?.(t))}}}async function P(){if(f||!e||0===R)return;g(!0),k(""),j(null),C("Starting…");let a={concurrency:Math.max(1,Math.min(16,Number(c)||4)),batchSize:Math.max(1,Math.min(200,Number(p)||50)),timeoutMs:Math.max(1e3,Math.min(6e4,1e3*(Number(x)||20)))};E.current=e;try{let i=await fetch(`/api/providers/${e}/model-probes/verify/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({models:s,providerAlias:t,...a,timeoutMs:a.timeoutMs})}),r=await i.json().catch(()=>({}));if(O.current!==e){E.current=null,g(!1);return}if(!i.ok){E.current=null,k(r.error||"Failed to start"),g(!1);return}A.current.onStarted?.(r),I(r),"running"!==r.status&&g(!1)}catch(e){E.current=null,k(e?.message||"Verify failed"),g(!1)}}async function M(){let t=E.current||e;await fetch(`/api/providers/${t}/model-probes/verify/cancel`,{method:"POST"}).catch(()=>{})}async function z(s){if(!e)return;let a="retryable"===s,i=a?Number(v?.retryable||0):Number(v?.dead||0);if(!a||await (0,J.l)({title:"Remove retry-failed models?",message:`Remove ${i} custom model(s) that failed with a retryable error? Timeouts, rate limits, network failures, and provider errors may be temporary. Credential failures are kept. Removed models can be imported again later.`,confirmText:`Remove ${i}`})){$(s),k(""),C(`Removing ${a?"retry-failed":"dead"} custom models…`);try{let i=await fetch(`/api/providers/${e}/model-probes/remove-unavailable`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:t,kind:"llm",status:s})}),r=await i.json().catch(()=>({}));if(!i.ok)return void k(r.error||"Remove failed");let l=Number(r.removed||0);j(v?{...v,[a?"retryable":"dead"]:0}:v),C(`Removed ${l} ${a?"retry-failed":"dead"} custom model(s).`),A.current.onComplete?.({...v||{},removed:l,removedStatus:s})}catch(e){k(e?.message||"Remove failed")}finally{$("")}}}async function U(){if(!e)return;let t=await fetch(`/api/providers/${e}/model-probes/cache`,{method:"DELETE"}),s=await t.json().catch(()=>({}));t.ok?(C(`Cleared probe cache (${s.cleared||0} rows). Next verify will re-test everything.`),j(null),b(null),A.current.onComplete?.({cacheCleared:!0,cleared:s.cleared||0})):k(s.error||"Clear cache failed")}(0,i.useEffect)(()=>{A.current={onComplete:l,onStarted:n},O.current=e}),(0,i.useEffect)(()=>{I(r)},[r]);let q=y?.total?Math.min(100,Math.round(y.done/y.total*100)):0;return(0,a.jsxs)("div",{className:"mb-4 rounded-lg border border-border bg-sidebar/40 p-3 space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Verify models"}),(0,a.jsxs)("p",{className:"text-[11px] text-text-muted mt-0.5",children:["Batch-ping availability and latency. Dead = permanently unavailable (missing, blocked, or deprecated) and can be removed; retry = transient (timeout/429/5xx). Known-dead models are skipped until you Clear cache. Caps: ",D,"."]})]}),o&&(0,a.jsx)("button",{type:"button",onClick:o,className:"p-1 text-text-muted hover:text-text-main rounded",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3 items-end",children:[(0,a.jsxs)("label",{className:"text-xs text-text-muted",children:["Concurrency",(0,a.jsx)("input",{type:"number",min:1,max:16,value:c,disabled:f,onChange:e=>m(e.target.value),className:"mt-1 block w-20 rounded-md border border-border bg-background px-2 py-1 text-xs"})]}),(0,a.jsxs)("label",{className:"text-xs text-text-muted",children:["Batch size",(0,a.jsx)("input",{type:"number",min:1,max:200,value:p,disabled:f,onChange:e=>u(e.target.value),className:"mt-1 block w-20 rounded-md border border-border bg-background px-2 py-1 text-xs"})]}),(0,a.jsxs)("label",{className:"text-xs text-text-muted",children:["Timeout (s)",(0,a.jsx)("input",{type:"number",min:1,max:60,value:x,disabled:f,onChange:e=>h(e.target.value),className:"mt-1 block w-20 rounded-md border border-border bg-background px-2 py-1 text-xs"})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[f?(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"stop",onClick:M,children:"Cancel"}):(0,a.jsx)(d.$n,{size:"sm",icon:"science",onClick:P,disabled:!e||0===R,children:"Start"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"delete_sweep",onClick:U,disabled:f,children:"Clear cache"})]})]}),y&&(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"h-1.5 w-full rounded-full bg-border overflow-hidden",children:(0,a.jsx)("div",{className:"h-full bg-primary transition-all",style:{width:`${q}%`}})}),(0,a.jsxs)("p",{className:"text-[11px] text-text-muted flex flex-wrap gap-x-2",children:[(0,a.jsxs)("span",{title:"Models probed this run",children:[y.done,"/",y.total," tested"]}),(0,a.jsxs)("span",{title:"Reachable",children:["\xb7 ok ",y.ok]}),(0,a.jsxs)("span",{title:"Permanently unavailable this run (missing, blocked, or deprecated)",children:["\xb7 dead ",y.dead]}),(0,a.jsxs)("span",{title:"Transient failure this run (timeout / 429 / 5xx / network); re-testable",children:["\xb7 retry ",y.retryable]}),y.skippedDead?(0,a.jsxs)("span",{title:"Not probed — cache already marks them dead. Clear cache to re-test.",children:["\xb7 skipped known-dead ",y.skippedDead]}):null,y.skippedDup?(0,a.jsxs)("span",{title:"Duplicate ids collapsed",children:["\xb7 dupes ",y.skippedDup]}):null]})]}),N&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:N}),w&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:w}),v&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 pt-1",children:[(0,a.jsxs)("span",{className:"text-xs text-text-main",children:["Summary: ",v.ok," ok \xb7 ",v.dead," dead \xb7 ",v.retryable," retry",v.skippedDead?` \xb7 ${v.skippedDead} skipped known-dead`:"",v.cancelled?" \xb7 cancelled":""]}),v.dead>0&&(0,a.jsxs)(d.$n,{size:"sm",variant:"primary",icon:"delete_sweep",onClick:()=>z("dead"),disabled:f||!!S,loading:"dead"===S,children:["Remove ",v.dead," dead"]}),v.retryable>0&&(0,a.jsxs)(d.$n,{size:"sm",variant:"danger",icon:"delete_sweep",onClick:()=>z("retryable"),disabled:f||!!S,loading:"retryable"===S,children:["Remove ",v.retryable," retry failures"]})]})]})}function B(e,t=""){let s=String(e||"").trim();if(!s)return"";s=(s=s.replace(/\s+/g,"")).replace(/^models\//i,"");let a=String(t||"").trim();return a&&s.toLowerCase().startsWith(`${a.toLowerCase()}/`)&&(s=s.slice(a.length+1)),(s=s.replace(/\/{2,}/g,"/").replace(/^\/+|\/+$/g,"")).toLowerCase()}K.propTypes={connectionId:T().string,providerAlias:T().string,models:T().arrayOf(T().object),jobSnapshot:T().object,onComplete:T().func,onStarted:T().func,onClose:T().func};let H={claude:"claudeAutoPing",codex:"codexAutoPing"};function W(){let e,t,s,l=(0,r.useParams)(),p=(0,r.useRouter)(),u=l.id,{getCaps:x}=(0,j.y)(),[h,f]=(0,i.useState)([]),[g,y]=(0,i.useState)([]),[k,A]=(0,i.useState)(!0),[T,R]=(0,i.useState)(null),[I,P]=(0,i.useState)(!1),[z,F]=(0,i.useState)(!1),[J,W]=(0,i.useState)(!1),[V,G]=(0,i.useState)(""),[Q,Z]=(0,i.useState)(!1),[X,Y]=(0,i.useState)(!1),[ee,et]=(0,i.useState)(!1),[es,ea]=(0,i.useState)(null),[ei,er]=(0,i.useState)({}),[el,en]=(0,i.useState)([]),[eo,ed]=(0,i.useState)(!1),[ec,em]=(0,i.useState)({}),[ep,eu]=(0,i.useState)(""),[ex,eh]=(0,i.useState)(()=>new Set),[ef,eg]=(0,i.useState)(!1),[ey,eb]=(0,i.useState)(null),[ev,ej]=(0,i.useState)(""),[ew,ek]=(0,i.useState)("auto"),[eN,eC]=(0,i.useState)({enabled:!1,connections:{}}),[eS,e$]=(0,i.useState)([]),[eA,eT]=(0,i.useState)([]),[eO,eE]=(0,i.useState)([]),[eR,eD]=(0,i.useState)([]),[eI,eP]=(0,i.useState)(null),[eM,ez]=(0,i.useState)(!1),[eU,eq]=(0,i.useState)(!1),[e_,eF]=(0,i.useState)(!1),[eL,eJ]=(0,i.useState)(null),[eK,eB]=(0,i.useState)({}),[eH,eW]=(0,i.useState)(null),eV=(0,i.useRef)(!1),eG=(0,i.useRef)(null),eQ=(0,i.useRef)(0),eZ=(0,i.useRef)(0),[eX,eY]=(0,i.useState)(!1),[e0,e1]=(0,i.useState)(""),[e2,e5]=(0,i.useState)(!1),[e3,e4]=(0,i.useState)(null),[e7,e6]=(0,i.useState)({}),[e8,e9]=(0,i.useState)({}),[te,tt]=(0,i.useState)("all"),{copied:ts,copy:ta}=(0,v.C)(),ti="ag_risk_confirmed",tr=()=>{P(!0)},tl=()=>{"antigravity"===u&&"true"!==window.localStorage.getItem(ti)?ez(!0):tm?tr():(G(""),W(!0))},tn=()=>{G(""),W(!0)},to=()=>{tm?tl():tn()},td=T?{id:T.id,name:T.name||("anthropic-compatible"===T.type?"Anthropic Compatible":"OpenAI Compatible"),color:"anthropic-compatible"===T.type?"#D97757":"#10A37F",textIcon:"anthropic-compatible"===T.type?"AC":"OC",apiType:T.apiType,baseUrl:T.baseUrl,type:T.type}:c.zN[u]||c.fg[u]||c.IS[u]||c.nJ[u]||c.br[u],tc=td?.authModes||[],tm=!!c.zN[u]||!!c.IS[u]||tc.includes("oauth"),tp=!!c.fg[u]||tc.includes("apikey"),tu=!!c.IS[u]?.noAuth,tx=(0,m.KC)(u),th=(()=>{let e=new Map(tx.map(e=>[e.id,e]));for(let t of eA)t?.id&&e.set(t.id,{...e.get(t.id),...t});return[...e.values()]})(),tf=(0,c.wG)(u),tg=(0,c.mq)(u),ty=(0,c.gb)(u),tb=tg||ty,tv=h.some(e=>!1!==e.isActive),tj=function({isCompatible:e,hasActiveConnection:t}){let s=!e,a=!e;return{showToolbar:s||t||a,showImport:s,showVerify:t,showBulkControls:a}}({isCompatible:tb,hasActiveConnection:tv}),tw=!tb&&tm&&tp,tk="xai"===u?"Grok Build OAuth":"OAuth",tN="xai"===u?"xAI API Key":"API Key",tC=e=>{if(!ew||"auto"===ew)return null;let t=b(u,e);return t&&t.includes(ew)?ew:null},tS=(()=>{let e=new Set;for(let t of th){let s=b(u,t.id);s&&s.forEach(t=>{"none"!==t&&e.add(t)})}return e.size?["auto",...e]:null})(),t$=tb?u:tf,tA=tb?T?.prefix||u:tf,tT=(0,i.useCallback)(async()=>{try{let e=await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(t$)}`,{cache:"no-store"}),t=await e.json();e.ok&&eD(t.ids||[])}catch(e){(0,E.s)("Error fetching disabled models:",e)}},[t$]),tO=async e=>{try{(await fetch("/api/models/disabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:t$,ids:[e]})})).ok&&await tT()}catch(e){(0,E.s)("Error disabling model:",e)}},tE=async e=>{try{(await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(t$)}&id=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await tT()}catch(e){(0,E.s)("Error enabling model:",e)}},tR=async e=>{e.length&&eP({title:"Disable All Models",message:`Disable all ${e.length} model(s)?`,onConfirm:async()=>{eP(null);try{(await fetch("/api/models/disabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:t$,ids:e})})).ok&&await tT()}catch(e){(0,E.s)("Error disabling all models:",e)}}})},tD=async()=>{try{(await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(t$)}`,{method:"DELETE"})).ok&&await tT()}catch(e){(0,E.s)("Error enabling all models:",e)}},tI=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&er(t.aliases||{})}catch(e){(0,E.s)("Error fetching aliases:",e)}},[]),tP=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/models/custom",{cache:"no-store"}),t=await e.json();e.ok&&en(t.models||[])}catch(e){(0,E.s)("Error fetching custom models:",e)}},[]);(0,i.useEffect)(()=>{"kilocode"===u&&fetch("/api/providers/kilo/free-models").then(e=>e.json()).then(e=>{e.models?.length&&eE(e.models)}).catch(()=>{})},[u]);let tM=(0,i.useCallback)(async()=>{try{let[e,t,s]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/provider-nodes",{cache:"no-store"}),fetch("/api/settings",{cache:"no-store"})]),a=await e.json(),i=await t.json(),r=s.ok?await s.json():{};if(e.ok){let e=(a.connections||[]).filter(e=>e.provider===u);f(e)}let l=(r.providerStrategies||{})[u]||{};eb(l.fallbackStrategy||null),ej(null!=l.stickyRoundRobinLimit?String(l.stickyRoundRobinLimit):"1");let n=(r.providerThinking||{})[u]||{};ek(n.mode||"auto");let o=H[u],d=o&&r[o]||{};if(eC({enabled:!0===d.enabled,connections:d.connections||{}}),t.ok){let e=(i.nodes||[]).find(e=>e.id===u)||null;if(!e&&tb)for(let t=0;t<3;t+=1){await new Promise(e=>setTimeout(e,150));let t=await fetch("/api/provider-nodes",{cache:"no-store"});if(t.ok&&(e=((await t.json()).nodes||[]).find(e=>e.id===u)||null))break}R(e)}}catch(e){(0,E.s)("Error fetching connections:",e)}finally{A(!1)}},[u,tb]),tz=(0,i.useCallback)(async(e=null)=>{let t=++eZ.current,s=e?h.find(t=>t.id===e&&!1!==t.isActive):h.find(e=>g.includes(e.id)&&!1!==e.isActive)||h.find(e=>!1!==e.isActive);if(!s){e9({}),e6({});return}try{let e=await fetch(`/api/providers/${s.id}/model-probes`,{cache:"no-store"});if(!e.ok)return;let a=await e.json().catch(()=>({})),i={},r={};for(let e of a.probes||[])i[e.modelId]="ok"===e.status?"ok":"dead"===e.status?"dead":"retry",null!=e.latencyMs&&(r[e.modelId]=e.latencyMs);if(t!==eZ.current)return;e9(i),e6(r)}catch{}},[h,g]),tU=async e=>{try{let t=await fetch(`/api/provider-nodes/${u}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),s=await t.json();t.ok&&(R(s.node),await tM(),et(!1))}catch(e){(0,E.s)("Error updating provider node:",e)}},tq=async(e,t)=>{try{let s=await fetch("/api/settings",{cache:"no-store"}),a=(s.ok?await s.json():{}).providerStrategies||{},i={};e&&(i.fallbackStrategy=e),"round-robin"===e&&""!==t&&(i.stickyRoundRobinLimit=Number(t)||3);let r={...a};0===Object.keys(i).length?delete r[u]:r[u]=i,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerStrategies:r})})}catch(e){(0,E.s)("Error saving provider strategy:",e)}},t_=async e=>{try{let t=await fetch("/api/settings",{cache:"no-store"}),s={...(t.ok?await t.json():{}).providerThinking||{}};e&&"auto"!==e?s[u]={mode:e}:delete s[u],await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerThinking:s})})}catch(e){(0,E.s)("Error saving thinking config:",e)}},tF=async e=>{let t=H[u];if(t){eC(e);try{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({[t]:e})})}catch(e){(0,E.s)("Error saving auto-ping config:",e)}}};(0,i.useEffect)(()=>{tM(),tI(),tP(),tT()},[tM,tI,tP,tT]),(0,i.useEffect)(()=>{tz()},[tz]),(0,i.useEffect)(()=>{if(tb)return;let e=h.find(e=>!1!==e.isActive);if(!e)return void eT([]);let t=!1;return fetch(`/api/providers/${e.id}/models`,{cache:"no-store"}).then(e=>e.json().catch(()=>({}))).then(e=>{!t&&Array.isArray(e.models)&&e.models.length>0&&eT(e.models)}).catch(()=>{}),()=>{t=!0}},[h,tb]),(0,i.useEffect)(()=>{let e=(c.zN[u]||c.fg[u]||c.IS[u]||c.nJ[u])?.modelsFetcher;e&&N(e).then(e$)},[u]);let tL=(0,i.useCallback)(e=>{let t=++eQ.current;eG.current&&(clearTimeout(eG.current),eG.current=null);let s=async()=>{try{let a=await fetch(`/api/providers/${e}/model-probes/verify/status`,{cache:"no-store"}),i=await a.json().catch(()=>null);if(t!==eQ.current)return;if(!a.ok||!i?.status)throw Error("Verify status temporarily unavailable");e4(i&&i.status?i:null),i?.status==="running"?eG.current=setTimeout(s,1500):(eG.current=null,await tz(e))}catch{t===eQ.current&&(eG.current=setTimeout(s,1500))}};eG.current=setTimeout(s,0)},[tz]);(0,i.useEffect)(()=>{let e=h.find(e=>g.includes(e.id)&&!1!==e.isActive)||h.find(e=>!1!==e.isActive);return e?(tL(e.id),()=>{eQ.current+=1,eG.current&&(clearTimeout(eG.current),eG.current=null)}):void e4(null)},[h,g,tL]);let tJ=async(e,t,s=tf)=>{let a=`${s}/${e}`;try{let e=await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a,alias:t})});if(e.ok)await tI();else{let t=await e.json();(0,E.s)(t.error||"Failed to set alias")}}catch(e){(0,E.s)("Error setting alias:",e)}},tK=async e=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await tI()}catch(e){(0,E.s)("Error deleting alias:",e)}},tB=async(e,t="llm",s=t$)=>{try{let a=await fetch("/api/models/custom",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:s,id:e,type:t})});if(a.ok)await tP(),window.dispatchEvent(new CustomEvent("customModelChanged"));else{let e=await a.json();(0,E.s)(e.error||"Failed to add custom model")}}catch(e){(0,E.s)("Error adding custom model:",e)}},tH=async(e,t="llm",s=t$)=>{try{let a=new URLSearchParams({providerAlias:s,id:e,type:t});(await fetch(`/api/models/custom?${a}`,{method:"DELETE"})).ok&&(await tP(),window.dispatchEvent(new CustomEvent("customModelChanged")))}catch(e){(0,E.s)("Error deleting custom model:",e)}},tW=async()=>{if(eX)return;let e=h.find(e=>g.includes(e.id)&&!1!==e.isActive)||h.find(e=>!1!==e.isActive);if(!e)return void(0,E.s)((0,w.Tl)("Add an active connection first"));eY(!0),e1("");try{let t=await fetch(`/api/providers/${e.id}/models`),s=await t.json().catch(()=>({}));if(!t.ok)return void(0,E.s)(s.error||(0,w.Tl)("Failed to fetch models"));let a=s.models||[];if(0===a.length)return void(0,E.s)(s.warning||(0,w.Tl)("No models returned"));let i=new Set;try{let t=await fetch(`/api/providers/${e.id}/model-probes`,{cache:"no-store"});for(let e of(await t.json().catch(()=>({}))).probes||[])"dead"===e.status&&i.add(e.modelId)}catch{}let r=0,l=new Set(th.map(e=>e.id)),n=[],o=[],d=new Set;for(let e of a){let t=function(e,t){if(null==e)return null;if("string"==typeof e){let s=$(e,t);return s?{id:s,name:s,type:S(s)}:null}let s=e.id||e.name||e.model||e.slug;if(!s)return null;let a=$(s,t);if(!a)return null;let i=e.display_name||e.displayName||e.name||e.title||a;return{id:a,name:String(i),type:S(a,e)}}(e,t$);if(!t)continue;let{id:s,name:a,type:c}=t;if(i.has(B(s,t$))){r+=1;continue}let m=`${c}|${s}`;if(d.has(m))continue;if(d.add(m),l.has(s)){eR.includes(s)&&o.push(s);continue}if(el.some(e=>e.providerAlias===t$&&e.id===s&&(e.kind||e.type||"llm")===c))continue;let p=`${t$}/${s}`;Object.values(ei).includes(p)||n.push({providerAlias:t$,id:s,type:c,name:a})}let c=0;if(o.length>0)try{for(let e of o)(await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(t$)}&id=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&(c+=1);await tT()}catch{}let m=0;if(n.length>0){let e=await fetch("/api/models/custom",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({models:n})}),t=await e.json().catch(()=>({}));if(!e.ok)return void(0,E.s)(t.error||(0,w.Tl)("Failed to save models"));m=t.added??n.length,await tP(),window.dispatchEvent(new CustomEvent("customModelChanged"))}let p=n.filter(e=>"llm"!==e.type).length,u=[];if(m>0&&u.push(`${m} new`),c>0&&u.push(`${c} re-enabled`),0===u.length)e1((0,w.Tl)("All models already in list"));else{let e=`Imported ${u.join(" \xb7 ")} (${a.length} from provider)`;p>0&&(e+=" \xb7 non-chat types stored for media pages"),s.warning&&(e+=` \xb7 ${s.warning}`),e1(e)}if(r>0&&e1(e=>`${e} \xb7 ${r} skipped (known dead)`),m>0||c>0)try{let t=[...th,...n.map(e=>({id:e.id,name:e.name,kind:e.type}))],s=await fetch(`/api/providers/${e.id}/model-probes/verify/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({models:t,providerAlias:t$})}),a=await s.json().catch(()=>({}));if(!s.ok)throw Error(a.error||"Failed to start auto-verify");e4(a&&a.status?a:null),tL(e.id)}catch(e){e1(t=>`${t} \xb7 auto-verify failed: ${e?.message||e}`)}}catch(e){(0,E.s)("Error importing models:",e),(0,E.s)((0,w.Tl)("Error fetching models")+": "+(e?.message||e))}finally{eY(!1)}},tV=async()=>{if(eU||0===h.length)return;let e=Object.fromEntries(h.map(e=>[e.id,{state:"queued",error:null}]));eV.current=!1,eq(!0),eF(!1),eJ(null),eB(e),eW({total:h.length,completed:0,passed:0,failed:0,stopped:!1});let t=0,s=0;try{for(let e=0;e<h.length;e+=1){if(eV.current){eW({total:h.length,completed:e,passed:t,failed:s,stopped:!0});break}let a=h[e];eJ(a.id),eB(e=>({...e,[a.id]:{state:"testing",error:null}}));try{let e=await fetch(`/api/providers/${a.id}/test`,{method:"POST"}),i=await e.json(),r=!!i.valid;r?t+=1:s+=1,eB(e=>({...e,[a.id]:{state:r?"success":"failed",error:r?null:i.error||null}}))}catch(e){s+=1,eB(t=>({...t,[a.id]:{state:"failed",error:e.message||"Test failed"}}))}eW({total:h.length,completed:e+1,passed:t,failed:s,stopped:!1}),e<h.length-1&&await new Promise(e=>setTimeout(e,1e3))}}finally{eJ(null),eq(!1),eF(!1),eV.current=!1}},tG=async e=>{let t=h.find(t=>t.id===e),s=t?.name?.trim()||t?.email?.trim()||e;eP({title:"Delete Connection",message:`Delete connection “${s}”?`,onConfirm:async()=>{eP(null);try{(await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok&&f(t=>t.filter(t=>t.id!==e))}catch(e){(0,E.s)("Error deleting connection:",e)}}})},tQ=()=>{tM(),P(!1)},tZ=async e=>{G("");try{let t=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:u,...e})}),s=null;try{s=await t.json()}catch{s=null}if(t.ok){await tM(),W(!1);return}G(s?.error||"Failed to save connection")}catch(e){(0,E.s)("Error saving connection:",e),G("Failed to save connection")}},tX=async e=>{try{(await fetch(`/api/providers/${es.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await tM(),Y(!1))}catch(e){(0,E.s)("Error updating connection:",e)}},tY=async(e,t)=>{try{(await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&f(s=>s.map(s=>s.id===e?{...s,isActive:t}:s))}catch(e){(0,E.s)("Error updating connection status:",e)}},t0=async e=>{let t,s=e?.providerSpecificData?.baseUrl;if(s){try{t=new URL(s).hostname.toLowerCase().replace(/^\[|\]$/g,"")}catch{(0,E.s)("Cannot allow-list: invalid base URL",s);return}try{let e=await fetch("/api/settings",{cache:"no-store"});if(!e.ok)throw Error(`Failed to load settings (${e.status})`);let s=await e.json(),a=[...new Set([...s.ssrfAllowHosts||[],t])],i=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({ssrfAllowHosts:a})});if(!i.ok)throw Error(`Failed to update allow list (${i.status})`);await tM()}catch(e){(0,E.s)("Error adding host to allow list:",e)}}},t1=async(e,t)=>{let s=[...h];[s[e],s[t]]=[s[t],s[e]],f(s);try{await Promise.all([fetch(`/api/providers/${s[e].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:e})}),fetch(`/api/providers/${s[t].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:t})})])}catch(e){(0,E.s)("Error swapping priority:",e),await tM()}},t2=h.length>0&&g.length===h.length,t5=(0,a.jsx)("div",{className:"flex min-w-0 flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:h.map((e,t)=>(0,a.jsxs)("div",{className:"flex min-w-0 items-stretch",children:[(0,a.jsx)("div",{className:"flex shrink-0 items-center pl-1 sm:pl-2",children:(0,a.jsx)("input",{type:"checkbox",checked:g.includes(e.id),onChange:()=>{var t;return t=e.id,void y(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])},className:"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary"})}),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:(0,a.jsx)(M,{connection:e,isOAuth:tm,isFirst:0===t,isLast:t===h.length-1,onMoveUp:()=>t1(t,t-1),onMoveDown:()=>t1(t,t+1),onToggleActive:t=>tY(e.id,t),autoPing:H[u]&&"oauth"===e.authType?{on:!0===eN.connections[e.id],onToggle:t=>{var s;return s=e.id,void tF({...eN,connections:{...eN.connections,[s]:t}})},provider:u}:null,onEdit:()=>{ea(e),Y(!0)},onDelete:()=>tG(e.id),onAllowlistHost:()=>t0(e),oneByOneStatus:eK[e.id]||null})})]},e.id))}),t3=async e=>{if(!ex.has(e)){eh(t=>new Set(t).add(e));try{let t=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${t$}/${e}`})}),s=await t.json();em(t=>({...t,[e]:s.ok?"ok":"error"})),eu(s.ok?"":s.error||"Model not reachable")}catch{em(t=>({...t,[e]:"error"})),eu("Network error")}finally{eh(t=>{let s=new Set(t);return s.delete(e),s})}}};return k?(0,a.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,a.jsx)(d.Qv,{}),(0,a.jsx)(d.Qv,{})]}):td?(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:gap-8 sm:px-0",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)(n(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to Providers"]}),(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-3 sm:gap-4",children:[(0,a.jsx)("div",{className:"flex size-12 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${td.color}15`},children:eo?(0,a.jsx)("span",{className:"text-sm font-bold",style:{color:td.color},children:td.textIcon||td.id.slice(0,2).toUpperCase()}):(0,a.jsx)(o.default,{src:tg&&td.apiType?"responses"===td.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":ty?"/providers/anthropic-m.png":`/providers/${td.id}.png`,alt:td.name,width:48,height:48,className:"max-h-12 max-w-12 rounded-lg object-contain",sizes:"48px",onError:()=>ed(!0)})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,a.jsx)("h1",{className:"truncate text-2xl font-semibold tracking-tight sm:text-3xl",children:td.name}),(td.notice?.apiKeyUrl||td.notice?.signupUrl||td.website)&&(0,a.jsxs)("a",{href:td.notice?.apiKeyUrl||td.notice?.signupUrl||td.website,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary hover:underline inline-flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"open_in_new"}),td.notice?.apiKeyUrl?"Get API Key":"Sign up / Learn more"]})]}),(0,a.jsxs)("p",{className:"text-text-muted",children:[h.length," connection",1===h.length?"":"s"]})]})]})]}),td.deprecated&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-yellow-500/10 border border-yellow-500/30",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-yellow-500 mt-0.5 shrink-0",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-red-600 dark:text-yellow-400 leading-relaxed",children:td.deprecationNotice})]}),td.notice?.text&&!td.deprecated&&(0,a.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-blue-500/30 bg-blue-500/10 px-3 py-2 sm:flex-row sm:items-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-blue-500 shrink-0",children:"info"}),(0,a.jsx)("p",{className:"min-w-0 flex-1 text-xs leading-relaxed text-blue-600 dark:text-blue-400",children:td.notice.text}),td.notice.apiKeyUrl&&(0,a.jsx)("a",{href:td.notice.apiKeyUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex justify-center rounded bg-blue-500 px-2 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-600 sm:py-0.5",children:"Get API Key →"})]}),tb&&T&&(0,a.jsx)(d.Zp,{children:(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:ty?"Anthropic Compatible Details":"OpenAI Compatible Details"}),(0,a.jsxs)("p",{className:"break-all text-sm text-text-muted",children:[ty?"Messages API":"responses"===T.apiType?"Responses API":"Chat Completions"," \xb7 ",(T.baseUrl||"").replace(/\/$/,""),"/",ty?"messages":"responses"===T.apiType?"responses":"chat/completions"]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:()=>{G(""),W(!0)},className:"w-full sm:w-auto",children:"Add API Key"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"edit",onClick:()=>et(!0),className:"w-full sm:w-auto",children:"Edit"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:async()=>{eP({title:"Delete Compatible Node",message:`Delete this ${ty?"Anthropic":"OpenAI"} Compatible node?`,onConfirm:async()=>{eP(null);try{(await fetch(`/api/provider-nodes/${u}`,{method:"DELETE"})).ok&&p.push("/dashboard/providers")}catch(e){(0,E.s)("Error deleting provider node:",e)}}})},className:"w-full sm:w-auto",children:"Delete"})]})]})}),tu?(0,a.jsx)(d.gw,{providerId:u}):(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Connections"}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4",children:[h.length>0&&(0,a.jsxs)(a.Fragment,{children:[g.length>0&&(0,a.jsxs)(d.$n,{size:"sm",variant:"danger",icon:"delete",onClick:()=>{let e=g.length;0!==e&&eP({title:`Delete ${e} Connection${e>1?"s":""}`,message:`Delete ${e} connection${e>1?"s":""}? This cannot be undone.`,onConfirm:async()=>{eP(null);let e=0,t=[...g];for(let s of t)try{(await fetch(`/api/providers/${s}`,{method:"DELETE"})).ok||(e+=1)}catch(t){(0,E.s)("Error deleting connection:",t),e+=1}f(e=>e.filter(e=>!t.includes(e.id))),y([]),e>0&&(0,E.s)(`Deleted ${t.length-e} connection(s), ${e} failed.`)}})},children:["Delete Selected (",g.length,")"]}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"sync",onClick:tV,disabled:eU,children:eU?"Testing Connection One-by-One...":"Test Connection One-by-One"}),eU&&(0,a.jsx)(d.$n,{size:"sm",variant:"ghost",icon:"stop",onClick:()=>{eU&&(eV.current=!0,eF(!0))},disabled:e_,children:e_?"Stopping...":"Stop"})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,a.jsx)(d.lM,{checked:"round-robin"===ey,onChange:e=>{let t=e?"round-robin":null,s=e?ev||"1":ev;e&&!ev&&ej("1"),eb(t),tq(t,s)}}),"round-robin"===ey&&(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"Sticky:"}),(0,a.jsx)("input",{type:"number",min:1,value:ev,onChange:e=>{var t;ej(t=e.target.value),tq("round-robin",t)},placeholder:"1",className:"w-14 px-2 py-1 text-xs border border-border rounded-md bg-background focus:outline-none focus:border-primary"})]})]})]})]}),0===h.length?(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"inline-flex items-center justify-center w-9 h-9 rounded-full bg-primary/10 text-primary shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:tm?"lock":"key"})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"No connections yet"}),tw&&(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Choose ",tk," or ",tN,"."]})]})]}),(0,a.jsx)("div",{className:"flex gap-2",children:tw?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.$n,{size:"sm",icon:"lock",variant:"secondary",onClick:tl,children:tk}),(0,a.jsx)(d.$n,{size:"sm",icon:"key",onClick:tn,children:tN})]}):(0,a.jsxs)(a.Fragment,{children:[!tb&&"iflow"===u&&(0,a.jsx)(d.$n,{size:"sm",icon:"cookie",variant:"secondary",onClick:()=>F(!0),children:"Cookie"}),"codex"===u&&(0,a.jsx)(d.$n,{size:"sm",icon:"playlist_add",variant:"secondary",onClick:()=>Z(!0),children:(0,w.Tl)("Bulk Add")}),(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:to,children:tb?"Add API Key":"iflow"===u?"OAuth":"Add Connection"})]})})]}):(0,a.jsxs)(a.Fragment,{children:[eH&&(0,a.jsx)("div",{className:"mb-4 rounded-lg border border-black/10 bg-black/[0.02] px-3 py-2 text-xs text-text-muted dark:border-white/10 dark:bg-white/[0.03]",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,a.jsxs)("span",{children:["Total: ",eH.total]}),(0,a.jsxs)("span",{children:["Completed: ",eH.completed]}),(0,a.jsxs)("span",{children:["Passed: ",eH.passed]}),(0,a.jsxs)("span",{children:["Failed: ",eH.failed]}),eH.stopped&&(0,a.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Stopped"}),eU&&eL&&(0,a.jsxs)("span",{children:["Running: ",h.find(e=>e.id===eL)?.name||eL]})]})}),h.length>0&&(0,a.jsx)("div",{className:"mb-3 flex items-center gap-2 border-b border-black/[0.03] pb-2 dark:border-white/[0.03]",children:(0,a.jsxs)("label",{className:"flex cursor-pointer items-center gap-1.5 text-xs text-text-muted hover:text-primary",children:[(0,a.jsx)("input",{type:"checkbox",checked:t2,onChange:()=>{t2?y([]):y(h.map(e=>e.id))},className:"h-3.5 w-3.5 rounded border-gray-300 text-primary focus:ring-primary"}),"Select All"]})}),t5,!tb&&(0,a.jsxs)("div",{className:"mt-4 grid grid-cols-1 gap-2 sm:flex",children:["iflow"===u&&(0,a.jsx)(d.$n,{size:"sm",icon:"cookie",variant:"secondary",onClick:()=>F(!0),title:"Add connection using browser cookie",className:"w-full sm:w-auto",children:"Cookie"}),"codex"===u&&(0,a.jsx)(d.$n,{size:"sm",icon:"playlist_add",variant:"secondary",onClick:()=>Z(!0),title:(0,w.Tl)("Bulk import codex accounts from JSON"),className:"w-full sm:w-auto",children:(0,w.Tl)("Bulk Add")}),tw?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.$n,{size:"sm",icon:"lock",variant:"secondary",onClick:tl,className:"w-full sm:w-auto",children:tk}),(0,a.jsx)(d.$n,{size:"sm",icon:"key",onClick:tn,className:"w-full sm:w-auto",children:tN})]}):(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:to,className:"w-full sm:w-auto",children:"Add"})]})]})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Available Models"}),tS&&(0,a.jsx)("select",{value:ew,onChange:e=>{var t;ek(t=e.target.value),t_(t)},title:"Appends (level) suffix to copied model names",className:"rounded-md border border-border bg-background px-2 py-1 text-xs focus:border-primary focus:outline-none",children:tS.map(e=>(0,a.jsx)("option",{value:e,children:`Thinking: ${e.charAt(0).toUpperCase()+e.slice(1)}`},e))})]}),tj.showToolbar&&(e=(tj.showBulkControls?[...th,...eO.filter(e=>!th.some(t=>t.id===e.id))].filter(e=>{let t=(0,m.CP)(e);return!t||"llm"===t}).map(e=>e.id):[]).filter(e=>!eR.includes(e)),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[tj.showImport&&(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:eX?"progress_activity":"cloud_download",onClick:tW,disabled:eX||!tv,title:tv?"Import models from the active connection":"Add an active connection to import models",children:eX?"Importing...":"Import models"}),tj.showVerify&&(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:e3?.status==="running"?"progress_activity":"science",onClick:()=>e5(e=>!e),children:e3?.status==="running"?`Verifying ${e3.done}/${e3.total}`:e2?"Hide verify":"Verify models"}),tj.showBulkControls&&eR.length>0&&(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"restart_alt",onClick:tD,children:"Active All"}),tj.showBulkControls&&e.length>0&&(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"block",onClick:()=>tR(e),children:"Disable All"})]}))]}),!!ep&&(0,a.jsx)("p",{className:"text-xs text-red-500 mb-3 break-words",children:ep}),e0&&(0,a.jsx)("p",{className:"text-xs text-text-muted mb-3",children:e0}),e2&&(t=h.find(e=>g.includes(e.id)&&!1!==e.isActive)||h.find(e=>!1!==e.isActive),s=[...(0,C.R3)({customModels:el,modelAliases:ei,providerAlias:t$,builtInModels:th,type:"llm"}).map(e=>({id:e.id,name:e.name||e.id,kind:"llm"})),...th.filter(e=>{let t=(0,m.CP)(e);return(!t||"llm"===t)&&!eR.includes(e.id)}).map(e=>({id:e.id,name:e.name||e.id,kind:"llm"}))],(0,a.jsx)(K,{connectionId:t?.id,providerAlias:t$,models:s,jobSnapshot:e3,onClose:()=>e5(!1),onStarted:e=>{e4(e&&e.status?e:null);let s=e?.connectionId||t?.id;s&&tL(s)},onComplete:async e=>{e?.removed>0&&await tP(),(e?.removed>0||e?.cacheCleared)&&await tz(t?.id)}})),(()=>{let e,t,s;if(tb)return(0,a.jsx)(D,{providerStorageAlias:t$,providerDisplayAlias:tA,modelAliases:ei,customModels:el,copied:ts,onCopy:ta,onSetAlias:tJ,onDeleteAlias:tK,onAddCustomModel:e=>tB(e,"llm",t$),onDeleteCustomModel:e=>tH(e,"llm",t$),onRefreshModels:tP,connections:h,isAnthropic:ty});let i=[...th,...eO.filter(e=>!th.some(t=>t.id===e.id))].filter(e=>{let t=(0,m.CP)(e);return!t||"llm"===t}),r=new Set(eR),l=i.filter(e=>!r.has(e.id)),n=i.filter(e=>r.has(e.id)),o=(0,C.R3)({customModels:el,modelAliases:ei,providerAlias:t$,builtInModels:th,type:"llm"}),d=o.filter(e=>"all"===te||(e8[B(e.id,t$)]||null)===te),c=l.filter(e=>"all"===te||(e8[B(e.id,t$)]||null)===te);return(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsx)("div",{className:"mb-2 flex gap-1 text-xs",children:["all","ok","dead","retry"].map(e=>(0,a.jsx)("button",{onClick:()=>tt(e),className:`rounded px-2 py-0.5 ${te===e?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:"all"===e?"All":"ok"===e?"OK":"dead"===e?"Dead":"Retry"},e))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[d.map(e=>{let t=B(e.id,t$);return(0,a.jsx)(O,{model:{id:e.id,name:e.name},fullModel:`${tA}/${e.id}`,alias:e.alias,copied:ts,onCopy:ta,onSetAlias:()=>{},onDeleteAlias:()=>{"custom"===e.source?tH(e.id,"llm",t$):tK(e.alias)},testStatus:ec[e.id],onTest:h.length>0||tu?()=>t3(e.id):void 0,isTesting:ex.has(e.id),isCustom:!0,isFree:!1,caps:x(`${u}/${e.id}`),thinkingSuffix:tC(e.id),latencyMs:e7[e.id]??e7[t],probeState:e3?.status==="running"&&e3?.perModel?.[t]?e3.perModel[t]:e8[t]||null},`${e.source}-${e.fullModel}`)}),c.map(e=>{let t=`${t$}/${e.id}`,s=`${u}/${e.id}`,i=Object.entries(ei).find(([,e])=>e===t||e===s)?.[0],r=B(e.id,t$);return(0,a.jsx)(O,{model:e,fullModel:`${tA}/${e.id}`,alias:i,copied:ts,onSetAlias:t=>tJ(e.id,t,t$),onCopy:ta,onDeleteAlias:()=>tK(i),testStatus:ec[e.id],onTest:h.length>0||tu?()=>t3(e.id):void 0,isTesting:ex.has(e.id),isFree:e.isFree,onDisable:()=>tO(e.id),caps:x(`${u}/${e.id}`),thinkingSuffix:tC(e.id),latencyMs:e7[e.id]??e7[r],probeState:e3?.status==="running"&&e3?.perModel?.[r]?e3.perModel[r]:e8[r]||null},e.id)}),(0,a.jsxs)("button",{onClick:()=>eg(!0),className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-primary/40 px-3 py-2 text-xs text-primary transition-colors hover:border-primary hover:bg-primary/5 sm:w-auto",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"add"}),"Add Model"]}),eS.length>0&&(e=new Set([...Object.values(ei),...o.map(e=>e.fullModel)]),t=new Set(th.map(e=>e.id)),0===(s=eS.filter(s=>!e.has(`${t$}/${s.id}`)&&!t.has(s.id))).length?null:(0,a.jsxs)("div",{className:"w-full mt-2",children:[(0,a.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"Suggested free models (≥200k context):"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map(e=>(0,a.jsxs)("button",{onClick:async()=>{await tB(e.id,"llm",t$)},className:"flex items-center gap-1 px-2.5 py-1.5 rounded-lg border border-black/10 dark:border-white/10 text-xs text-text-muted hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-colors",title:`${e.name} \xb7 ${(e.contextLength/1e3).toFixed(0)}k ctx`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"add"}),e.id.split("/").pop()]},e.id))})]})),n.length>0&&(0,a.jsxs)("div",{className:"w-full mt-2",children:[(0,a.jsxs)("p",{className:"text-xs text-text-muted mb-2",children:["Disabled models (",n.length,"):"]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:n.map(e=>(0,a.jsxs)("button",{onClick:()=>tE(e.id),className:"flex items-center gap-1 px-2.5 py-1.5 rounded-lg border border-dashed border-black/10 dark:border-white/10 text-xs text-text-muted hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-colors",title:"Restore model",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"add"}),e.id]},e.id))})]})]})]})})()]}),"kiro"===u?(0,a.jsx)(d.Mh,{isOpen:I,providerInfo:td,onSuccess:tQ,onClose:()=>P(!1)}):"cursor"===u?(0,a.jsx)(d.G9,{isOpen:I,onSuccess:tQ,onClose:()=>P(!1)}):"gitlab"===u?(0,a.jsx)(d.vj,{isOpen:I,providerInfo:td,onSuccess:tQ,onClose:()=>P(!1)}):(0,a.jsx)(d.LF,{isOpen:I,provider:u,providerInfo:td,onSuccess:tQ,onClose:()=>P(!1)}),"iflow"===u&&(0,a.jsx)(d.vE,{isOpen:z,onSuccess:()=>{tM(),F(!1)},onClose:()=>F(!1)}),(0,a.jsx)(U,{isOpen:J,provider:u,providerName:td.name,isCompatible:tb,isAnthropic:ty,authType:td?.authType,authHint:td?.authHint,website:td?.website,error:V,onSave:tZ,onBulkDone:tM,onClose:()=>{G(""),W(!1)}}),(0,a.jsx)(d.wI,{isOpen:X,connection:es,onSave:tX,onClose:()=>Y(!1)}),tb&&(0,a.jsx)(q,{isOpen:ee,node:T,onSave:tU,onClose:()=>et(!1),isAnthropic:ty}),!tb&&(0,a.jsx)(_,{isOpen:ef,providerAlias:t$,providerDisplayAlias:tA,onSave:async e=>{await tB(e,"llm",t$),eg(!1)},onClose:()=>eg(!1)}),"codex"===u&&(0,a.jsx)(L,{isOpen:Q,onClose:()=>Z(!1),onSuccess:tM}),(0,a.jsx)(d.uo,{isOpen:eM,onClose:()=>ez(!1),onConfirm:()=>{(window.localStorage.setItem(ti,"true"),ez(!1),tm)?tr():tn()},title:"Risk Notice",message:td?.deprecationNotice,confirmText:"I Understand, Continue",cancelText:"Cancel",variant:"danger"}),(0,a.jsx)(d.uo,{isOpen:!!eI,onClose:()=>eP(null),onConfirm:eI?.onConfirm,title:eI?.title||"Confirm",message:eI?.message,variant:"danger"})]}):(0,a.jsxs)("div",{className:"text-center py-20",children:[(0,a.jsx)("p",{className:"text-text-muted",children:"Provider not found"}),(0,a.jsx)(n(),{href:"/dashboard/providers",className:"text-primary mt-4 inline-block",children:"Back to Providers"})]})}},7687:(e,t,s)=>{Promise.resolve().then(s.bind(s,4003))},70217:(e,t,s)=>{"use strict";function a(e,t){return!1===e?"default":"active"===t||"success"===t?"success":"error"===t||"expired"===t||"unavailable"===t?"error":"default"}s.d(t,{g:()=>a})}},e=>{e.O(0,[2574,3862,782,8500,594,1321,7592,5497,8441,3794,7358],()=>e(e.s=7687)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67,101,163,174,181,204,335,342,387,501,516,552,675,747,748,907,931,948,992,997,1088,1091,1110,1200,1337,1382,1451,1512,1566,1579,1626,1661,1666,1697,1704,1860,1898,1907,1910,1946,1949,2118,2121,2198,2284,2296,2366,2484,2527,2536,2643,2756,2772,2785,2919,2922,3001,3015,3025,3038,3079,3472,3549,3568,3701,3836,3883,3888,4010,4042,4061,4245,4286,4422,4444,4520,4612,4648,4656,4761,4820,4896,4993,5018,5107,5177,5190,5211,5226,5362,5415,5466,5576,5637,5745,5922,6067,6107,6121,6122,6181,6268,6319,6479,6503,6520,6525,6529,6580,6740,6743,6819,6919,6954,6988,7132,7158,7241,7311,7429,7457,7473,7508,7520,7580,7752,7851,7954,8167,8207,8246,8264,8453,8573,8586,8648,8720,8736,8791,8814,8835,8870,8948,8974,8975,9027,9036,9056,9069,9088,9141,9199,9321,9455,9461,9869],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);