switchboard-router 0.9.31 → 0.9.32

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 (357) hide show
  1. package/app/{.next-cli-build/static/chunks/1321-6882bd1e6e21df5b.js → .next/static/chunks/1321-8a3603dbafbb81bb.js} +1 -1
  2. package/app/.next/static/chunks/979-04a907a12847a634.js +1 -0
  3. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-99d3be5c7da63d57.js +1 -0
  4. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/routing/{page-ef491ec5a2ccecfb.js → page-650dc0927f999aaf.js} +1 -1
  5. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-68344fb15a77b2c5.js +10 -0
  6. package/app/.next-cli-build/BUILD_ID +1 -1
  7. package/app/.next-cli-build/app-path-routes-manifest.json +9 -9
  8. package/app/.next-cli-build/build-manifest.json +2 -2
  9. package/app/.next-cli-build/prerender-manifest.json +3 -3
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  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 +1 -1
  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 +1 -1
  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.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  68. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  69. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  70. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  71. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  72. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  75. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  76. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  77. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  78. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  79. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +1 -1
  91. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  93. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  95. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  113. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  115. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  117. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  119. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  121. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  123. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/pricing/defaults/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  255. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  285. package/app/.next-cli-build/server/app/callback.html +1 -1
  286. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  287. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  288. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  289. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  290. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  294. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  295. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  296. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  297. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/index.html +1 -1
  299. package/app/.next-cli-build/server/app/index.rsc +3 -3
  300. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  301. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  302. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  305. package/app/.next-cli-build/server/app/landing.html +1 -1
  306. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  307. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  308. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  309. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  310. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  312. package/app/.next-cli-build/server/app/login.html +1 -1
  313. package/app/.next-cli-build/server/app/login.rsc +4 -4
  314. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  315. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  316. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  317. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  320. package/app/.next-cli-build/server/app-paths-manifest.json +9 -9
  321. package/app/.next-cli-build/server/chunks/3423.js +1 -1
  322. package/app/.next-cli-build/server/chunks/403.js +1 -1
  323. package/app/.next-cli-build/server/chunks/519.js +1 -1
  324. package/app/.next-cli-build/server/chunks/5624.js +1 -0
  325. package/app/.next-cli-build/server/chunks/5717.js +2 -2
  326. package/app/.next-cli-build/server/chunks/7454.js +1 -1
  327. package/app/.next-cli-build/server/chunks/845.js +1 -0
  328. package/app/.next-cli-build/server/chunks/869.js +1 -1
  329. package/app/.next-cli-build/server/chunks/8998.js +1 -1
  330. package/app/.next-cli-build/server/chunks/9264.js +2 -2
  331. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  332. package/app/.next-cli-build/server/middleware.js +1 -1
  333. package/app/.next-cli-build/server/pages/404.html +1 -1
  334. package/app/.next-cli-build/server/pages/500.html +1 -1
  335. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  336. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  337. package/app/{.next/static/chunks/1321-6882bd1e6e21df5b.js → .next-cli-build/static/chunks/1321-8a3603dbafbb81bb.js} +1 -1
  338. package/app/.next-cli-build/static/chunks/979-04a907a12847a634.js +1 -0
  339. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-99d3be5c7da63d57.js +1 -0
  340. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/routing/{page-ef491ec5a2ccecfb.js → page-650dc0927f999aaf.js} +1 -1
  341. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-68344fb15a77b2c5.js +10 -0
  342. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  343. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  344. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  345. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  346. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  347. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  348. package/app/package.json +3 -3
  349. package/package.json +3 -3
  350. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-aaae06cada500532.js +0 -1
  351. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-cb9292ca42b61d7d.js +0 -10
  352. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-aaae06cada500532.js +0 -1
  353. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-cb9292ca42b61d7d.js +0 -10
  354. /package/app/.next/static/{XtGHu6Ssc2Uu-DQPIVvn0 → e7Ha89rDlp2qPIlpARdsI}/_buildManifest.js +0 -0
  355. /package/app/.next/static/{XtGHu6Ssc2Uu-DQPIVvn0 → e7Ha89rDlp2qPIlpARdsI}/_ssgManifest.js +0 -0
  356. /package/app/.next-cli-build/static/{XtGHu6Ssc2Uu-DQPIVvn0 → e7Ha89rDlp2qPIlpARdsI}/_buildManifest.js +0 -0
  357. /package/app/.next-cli-build/static/{XtGHu6Ssc2Uu-DQPIVvn0 → e7Ha89rDlp2qPIlpARdsI}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=403,exports.ids=[403],exports.modules={49263:(a,b,c)=>{c.d(b,{Bl:()=>k,Qo:()=>f,RU:()=>g,S5:()=>m,hk:()=>e,kJ:()=>l});var d=c(87252);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){let a=!1!==b.shouldFallback;if(b.backoff){let b=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:a,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(b),newBackoffLevel:b}}return{shouldFallback:a,cooldownMs:b.cooldownMs||0}}return a>=400&&a<500&&408!==a&&429!==a?{shouldFallback:!1,cooldownMs:0}:{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="reauth_required",h="modelLock_",i=`${h}__all`;function j(a){return a?`${h}${a}`:i}function k(a,b){let c=j(b);return[a?.[c],a?.[i]].some(a=>a&&new Date(a).getTime()>Date.now())}function l(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(h)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function m(a,b){return{[j(a)]:new Date(Date.now()+b).toISOString()}}},87557:(a,b,c)=>{c.d(b,{MA:()=>l,RE:()=>x,bK:()=>z,g_:()=>h,uq:()=>q,wx:()=>u});var d=c(15717),e=c(60290),f=c(3072);let g=/^[a-zA-Z0-9_.\-]+$/;class h extends Error{constructor(a,b=400){super(a),this.name="ComboWriteError",this.status=b}}function i(a){if(!g.test(a))throw new h("Name can only contain letters, numbers, -, _ and .")}async function j(a,b){let c=await (0,d.Dj)(a);if(c&&c.id!==b)throw new h("Combo name already exists")}async function k(a,b){let c=Array.isArray(b)?b:[];if(c.includes(a))throw new h(`Combo "${a}" cannot contain itself`,400);let f=new Map([[a,1]]);async function g(a,b,c){if(Array.isArray(a))for(let i of a){let a;if("string"!=typeof i)continue;if(c.has(i))throw new h(`Combo cycle detected: ${b.join(" → ")} → ${i}`,400);let j=b.length+1,k=f.get(i);if(void 0!==k&&k>=j)continue;try{a=await (0,d.Dj)(i)}catch{throw new h(`Combo validation unavailable (member lookup failed for "${i}") — please retry`,503)}if(!a)continue;let l=[...b,i];if(l.length>e.wg)throw new h(`Combo nesting too deep (>${e.wg}): ${l.join(" → ")}`,400);f.set(i,j),await g(a.models,l,new Set([...c,i]))}}await g(c,[a],new Set([a]))}function l(a){if(!a||"object"!=typeof a)return null;for(let[b,c]of Object.entries(a)){if(!c||"auto"!==c.fallbackStrategy)continue;let a=c.routerModel;if(!a||"string"!=typeof a||!a.trim())return b}return null}let m=new Set(["fallbackStrategy","routerModel","objective","judgeModel","explorationRate","explorationRateCap","learningEnabled","learningWindowDays","freezeLearning","activeLearningVersionId","autoLearnIntervalHours","capacityAutoSwitch","emitAutoRouterHeaders","fusionTuning","autoTuning"]),n=new Set(["heuristicFirst","maxFewShots","minEventsBeforeLearn"]),o=new Set(["cachedRoutes","policyFastPath","routerTimeoutMs"]);function p(a,b){let c={};for(let[d,e]of Object.entries(a))b.has(d)&&(c[d]=e);return c}async function q(a,b){let c=function(a){if(!a||"object"!=typeof a||Array.isArray(a))throw new h("Strategy must be a JSON object",400);let b=p(a,m);for(let[a,c]of[["autoTuning",n],["fusionTuning",o]]){if(!(a in b))continue;let d=b[a];if(!d||"object"!=typeof d||Array.isArray(d)){delete b[a];continue}b[a]=p(d,c)}return b}(b),e={...(await (0,d.mt)()).comboStrategies||{},[a]:c},g=l({[a]:c});if(g)throw new h(`Auto combo "${g}" requires a router model — select one in the combo's Auto settings (a cheap, fast model such as Haiku works well).`,400);return await (0,d.Xx)({comboStrategies:e}),(0,f.UP)(a),e[a]}async function r(a,b){if(!a||a===b)return;let c={...(await (0,d.mt)()).comboStrategies||{}};a in c&&(!b||b in c||(c[b]=c[a]),delete c[a],await (0,d.Xx)({comboStrategies:c}))}let s=Promise.resolve();function t(a){let b=s.then(a,a);return s=b.then(()=>{},()=>{}),b}async function u(a){return t(()=>v(a))}async function v(a){let{name:b,models:c,kind:e}=a;if(!b)throw new h("Name is required");return i(b),await j(b,void 0),await k(b,Array.isArray(c)?c:[]),(0,d.jd)({name:b,models:c||[],kind:e||null})}let w=["name","models","kind"];async function x(a,b){return t(()=>y(a,b))}async function y(a,b){let c={};for(let a of w)b&&Object.prototype.hasOwnProperty.call(b,a)&&(c[a]=b[a]);let e=await (0,d.L)(a);c.name&&(i(c.name),await j(c.name,a));let g=Object.prototype.hasOwnProperty.call(c,"models"),h=!!c.name&&c.name!==e?.name;if(e&&(g||h)){let a=c.name||e.name,b=g?c.models:e.models;await k(a,b)}let l=await (0,d.oG)(a,c);if(!l)return null;if(e?.name&&(0,f.UP)(e.name),l.name&&l.name!==e?.name){(0,f.UP)(l.name),await r(e.name,l.name);try{await (0,d.e8)(e.name,l.name)}catch(a){console.warn("rekey routing data failed:",a?.message||a)}}return l}async function z(a){let b=await (0,d.L)(a);if(!await (0,d.CG)(a))return!1;if(b?.name){(0,f.UP)(b.name),await r(b.name,null);try{await (0,d.HS)(b.name)}catch(a){console.warn("delete routing data failed:",a?.message||a)}}return!0}}};
1
+ "use strict";exports.id=403,exports.ids=[403],exports.modules={49263:(a,b,c)=>{c.d(b,{Bl:()=>k,Qo:()=>f,RU:()=>g,S5:()=>m,hk:()=>e,kJ:()=>l});var d=c(87252);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){let a=!1!==b.shouldFallback;if(b.backoff){let b=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:a,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(b),newBackoffLevel:b}}return{shouldFallback:a,cooldownMs:b.cooldownMs||0}}return a>=400&&a<500&&408!==a&&429!==a?{shouldFallback:!1,cooldownMs:0}:{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="reauth_required",h="modelLock_",i=`${h}__all`;function j(a){return a?`${h}${a}`:i}function k(a,b){let c=j(b);return[a?.[c],a?.[i]].some(a=>a&&new Date(a).getTime()>Date.now())}function l(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(h)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function m(a,b){return{[j(a)]:new Date(Date.now()+b).toISOString()}}},87557:(a,b,c)=>{c.d(b,{MA:()=>m,RE:()=>A,bK:()=>C,g_:()=>i,uq:()=>t,wx:()=>x});var d=c(15717),e=c(60290),f=c(3072),g=c(60845);let h=/^[a-zA-Z0-9_.\-]+$/;class i extends Error{constructor(a,b=400){super(a),this.name="ComboWriteError",this.status=b}}function j(a){if(!h.test(a))throw new i("Name can only contain letters, numbers, -, _ and .")}async function k(a,b){let c=await (0,d.Dj)(a);if(c&&c.id!==b)throw new i("Combo name already exists")}async function l(a,b){let c=Array.isArray(b)?b:[];if(c.includes(a))throw new i(`Combo "${a}" cannot contain itself`,400);let f=new Map([[a,1]]);async function g(a,b,c){if(Array.isArray(a))for(let h of a){let a;if("string"!=typeof h)continue;if(c.has(h))throw new i(`Combo cycle detected: ${b.join(" → ")} → ${h}`,400);let j=b.length+1,k=f.get(h);if(void 0!==k&&k>=j)continue;try{a=await (0,d.Dj)(h)}catch{throw new i(`Combo validation unavailable (member lookup failed for "${h}") — please retry`,503)}if(!a)continue;let l=[...b,h];if(l.length>e.wg)throw new i(`Combo nesting too deep (>${e.wg}): ${l.join(" → ")}`,400);f.set(h,j),await g(a.models,l,new Set([...c,h]))}}await g(c,[a],new Set([a]))}function m(a){if(!a||"object"!=typeof a)return null;for(let[b,c]of Object.entries(a)){if(!c||"auto"!==c.fallbackStrategy)continue;let a=c.routerModel;if(!a||"string"!=typeof a||!a.trim())return b}return null}let n=new Set(["fallbackStrategy","routerModel","objective","judgeModel","explorationRate","explorationRateCap","learningEnabled","learningWindowDays","freezeLearning","activeLearningVersionId","autoLearnIntervalHours","capacityAutoSwitch","emitAutoRouterHeaders","fusionTuning","autoTuning","modelAvailability"]),o=new Set(["heuristicFirst","maxFewShots","minEventsBeforeLearn"]),p=new Set(["cachedRoutes","policyFastPath","routerTimeoutMs"]);function q(a,b){let c={};for(let[d,e]of Object.entries(a))b.has(d)&&(c[d]=e);return c}function r(a,b){return Object.fromEntries(Object.entries(a||{}).filter(([a])=>b?.includes(a)))}async function s(a){try{let b=await (0,d.Dj)(a);if(!b)return;await (0,d.H3)("comboStrategies",c=>{let d=c||{},e=d[a]?.modelAvailability;if(!e||!Object.keys(e).length)return;let f=r(e,b.models);if(Object.keys(f).length===Object.keys(e).length)return;let g={...d,[a]:{...d[a]}};return Object.keys(f).length?g[a].modelAvailability=f:delete g[a].modelAvailability,g})}catch(a){console.warn("prune modelAvailability failed:",a?.message||a)}}async function t(a,b){let c=function(a){if(!a||"object"!=typeof a||Array.isArray(a))throw new i("Strategy must be a JSON object",400);let b=q(a,n);if(Object.prototype.hasOwnProperty.call(b,"modelAvailability")){let a=(0,g.ud)(b.modelAvailability);if(a.error)throw new i(a.error,400);a.value?b.modelAvailability=a.value:delete b.modelAvailability}for(let[a,c]of[["autoTuning",o],["fusionTuning",p]]){if(!(a in b))continue;let d=b[a];if(!d||"object"!=typeof d||Array.isArray(d)){delete b[a];continue}b[a]=q(d,c)}return b}(b);if(c.modelAvailability){let b=await (0,d.Dj)(a);if(b){let a=r(c.modelAvailability,b.models);Object.keys(a).length?c.modelAvailability=a:delete c.modelAvailability}}let e=m({[a]:c});if(e)throw new i(`Auto combo "${e}" requires a router model — select one in the combo's Auto settings (a cheap, fast model such as Haiku works well).`,400);return await (0,d.H3)("comboStrategies",b=>({...b||{},[a]:c})),(0,f.UP)(a),c}async function u(a,b){if(!a||a===b)return;let c={...(await (0,d.mt)()).comboStrategies||{}};a in c&&(!b||b in c||(c[b]=c[a]),delete c[a],await (0,d.Xx)({comboStrategies:c}))}let v=Promise.resolve();function w(a){let b=v.then(a,a);return v=b.then(()=>{},()=>{}),b}async function x(a){return w(()=>y(a))}async function y(a){let{name:b,models:c,kind:e}=a;if(!b)throw new i("Name is required");return j(b),await k(b,void 0),await l(b,Array.isArray(c)?c:[]),(0,d.jd)({name:b,models:c||[],kind:e||null})}let z=["name","models","kind"];async function A(a,b){return w(()=>B(a,b))}async function B(a,b){let c={};for(let a of z)b&&Object.prototype.hasOwnProperty.call(b,a)&&(c[a]=b[a]);let e=await (0,d.L)(a);c.name&&(j(c.name),await k(c.name,a));let g=Object.prototype.hasOwnProperty.call(c,"models"),h=!!c.name&&c.name!==e?.name;if(e&&(g||h)){let a=c.name||e.name,b=g?c.models:e.models;await l(a,b)}let i=await (0,d.oG)(a,c);if(!i)return null;if(g&&i.name&&await s(i.name),e?.name&&(0,f.UP)(e.name),i.name&&i.name!==e?.name){(0,f.UP)(i.name),await u(e.name,i.name);try{await (0,d.e8)(e.name,i.name)}catch(a){console.warn("rekey routing data failed:",a?.message||a)}}return i}async function C(a){let b=await (0,d.L)(a);if(!await (0,d.CG)(a))return!1;if(b?.name){(0,f.UP)(b.name),await u(b.name,null);try{await (0,d.HS)(b.name)}catch(a){console.warn("delete routing data failed:",a?.message||a)}}return!0}}};
@@ -1 +1 @@
1
- "use strict";exports.id=519,exports.ids=[519],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},21350:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>Q,GET:()=>O,POST:()=>P});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(54603),q=c(24424);let r=o.h0.appPort,s=`http://localhost:${r}/api/mcp/`,t=null,u=async()=>(t||(t=await (0,p.Xj)("switchboard-cli-auth")),t),v=async a=>{let b=await u();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(s)&&(c.headers={...c.headers||{},"x-switchboard-cli-token":b});return a},w="gateway",x={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},y=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},z=async()=>{let a=y();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},A=()=>y()[0],B=async()=>i().join(await z(),"configLibrary"),C=()=>i().join(A(),"configLibrary"),D=async()=>i().join(await B(),"_meta.json"),E=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},F=()=>i().join(E(),"claude_desktop_config.json"),G=async()=>{try{let a=(await g().readFile(F(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)||{}}catch(a){return{}}},H=async a=>{await g().mkdir(E(),{recursive:!0}),await g().writeFile(F(),JSON.stringify(a,null,2))},I=async()=>{let a=await G();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await H(a),!0)},J=async()=>{let a=await G();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await H(a)},K=async()=>{for(let a of[...y(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},L=async a=>{try{let b=(await g().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},M=async()=>{let a=i().join(C(),"_meta.json"),b=await L(a);if(!b||!b.appliedId){let c=await L(await D());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(C(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function N(a){let b=i().join(A(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(A(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function O(){try{if(!await K())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await L(await D()),b=a?.appliedId||null,c=await B(),d=b?i().join(c,`${b}.json`):null,f=d?await L(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===w&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasSwitchboard:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function P(a){try{let b;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:c,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=b||{};if(!c||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});try{let a=new URL(c);if(!["http:","https:"].includes(a.protocol))throw Error("unsupported protocol")}catch{return e.NextResponse.json({error:"baseUrl must be a valid HTTP(S) URL"},{status:400})}let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],p=(Array.isArray(k)?k:[]).filter(a=>a?.url),q=await v((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${r}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await v((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&c?.url&&b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0});return b})(p)),t=[...(0,n.buildManagedMcpServers)(m),...q,...s],u=await I(),y=await M(),z=i().join(C(),`${y.appliedId}.json`),A={...x,inferenceProvider:w,inferenceGatewayBaseUrl:c.endsWith("/v1")?c:`${c}/v1`,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};t.length>0&&(A.managedMcpServers=t),await g().writeFile(z,JSON.stringify(A,null,2));let B=null;try{B=await N(t)}catch(a){B={error:a.message}}try{await J()}catch{}return e.NextResponse.json({success:!0,bootstrapped:u,message:u?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:z,skipApprovals:B,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function Q(){try{let a=await L(await D());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await B(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await N([])}catch{}try{await J()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,q.D)([O,P,Q]),(0,d.A)(O,"002efcd3af1416dc2b9c3e5ff57e5f04140b039a5a",null),(0,d.A)(P,"4072219a04d55ffc23d139ea41238b0a75044ce763",null),(0,d.A)(Q,"00c9bbc39c948a4061688a5b50f149f44cbdf86660",null)},28286:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},49120:(a,b,c)=>{c.d(b,{nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}function o(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},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
+ "use strict";exports.id=519,exports.ids=[519],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},21350:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>Q,GET:()=>O,POST:()=>P});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(54603),q=c(24424);let r=o.h0.appPort,s=`http://localhost:${r}/api/mcp/`,t=null,u=async()=>(t||(t=await (0,p.Xj)("switchboard-cli-auth")),t),v=async a=>{let b=await u();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(s)&&(c.headers={...c.headers||{},"x-switchboard-cli-token":b});return a},w="gateway",x={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},y=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},z=async()=>{let a=y();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},A=()=>y()[0],B=async()=>i().join(await z(),"configLibrary"),C=()=>i().join(A(),"configLibrary"),D=async()=>i().join(await B(),"_meta.json"),E=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},F=()=>i().join(E(),"claude_desktop_config.json"),G=async()=>{try{let a=(await g().readFile(F(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)||{}}catch(a){return{}}},H=async a=>{await g().mkdir(E(),{recursive:!0}),await g().writeFile(F(),JSON.stringify(a,null,2))},I=async()=>{let a=await G();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await H(a),!0)},J=async()=>{let a=await G();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await H(a)},K=async()=>{for(let a of[...y(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},L=async a=>{try{let b=(await g().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},M=async()=>{let a=i().join(C(),"_meta.json"),b=await L(a);if(!b||!b.appliedId){let c=await L(await D());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(C(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function N(a){let b=i().join(A(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(A(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function O(){try{if(!await K())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await L(await D()),b=a?.appliedId||null,c=await B(),d=b?i().join(c,`${b}.json`):null,f=d?await L(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===w&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasSwitchboard:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function P(a){try{let b;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:c,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=b||{};if(!c||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});try{let a=new URL(c);if(!["http:","https:"].includes(a.protocol))throw Error("unsupported protocol")}catch{return e.NextResponse.json({error:"baseUrl must be a valid HTTP(S) URL"},{status:400})}let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],p=(Array.isArray(k)?k:[]).filter(a=>a?.url),q=await v((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${r}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await v((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&c?.url&&b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0});return b})(p)),t=[...(0,n.buildManagedMcpServers)(m),...q,...s],u=await I(),y=await M(),z=i().join(C(),`${y.appliedId}.json`),A={...x,inferenceProvider:w,inferenceGatewayBaseUrl:c.endsWith("/v1")?c:`${c}/v1`,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};t.length>0&&(A.managedMcpServers=t),await g().writeFile(z,JSON.stringify(A,null,2));let B=null;try{B=await N(t)}catch(a){B={error:a.message}}try{await J()}catch{}return e.NextResponse.json({success:!0,bootstrapped:u,message:u?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:z,skipApprovals:B,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function Q(){try{let a=await L(await D());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await B(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await N([])}catch{}try{await J()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,q.D)([O,P,Q]),(0,d.A)(O,"00705fddabd247fe983c49ac3635836c385b12dcb9",null),(0,d.A)(P,"4049a880931f177d60bb0871cd58676a8b875ceadd",null),(0,d.A)(Q,"00827b109ceb40a351e059e2ea636deedbc7c06a1a",null)},28286:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},49120:(a,b,c)=>{c.d(b,{nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}function o(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},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)}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=5624,exports.ids=[5624],exports.modules={50412:(a,b,c)=>{c.d(b,{x0:()=>x.default,Ex:()=>j.default,$n:()=>d.default,nh:()=>C.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,CK:()=>o.default,uo:()=>h.ConfirmModal,G9:()=>t.default,wI:()=>w.default,vj:()=>v.default,vE:()=>u.default,pd:()=>e.default,Mh:()=>s.default,uR:()=>n.default,Nf:()=>p.default,aF:()=>h.default,rq:()=>m.default,gw:()=>y.default,LF:()=>l.default,Wx:()=>B.default,gM:()=>r.default,Iz:()=>z.default,l6:()=>f.default,lM:()=>k.default,m_:()=>A.default,jK:()=>q.default});var d=c(99070),e=c(83552),f=c(4770),g=c(17660),h=c(95145),i=c(74812);c(25919);var j=c(75171),k=c(95514);c(43878),c(19308),c(42196),c(32456),c(48781);var l=c(79346),m=c(83352),n=c(39645),o=c(62727),p=c(20084),q=c(87226);c(267),c(3236),c(11229);var r=c(91809);c(4481);var s=c(5291);c(56110);var t=c(51109),u=c(79488),v=c(43182),w=c(51585),x=c(67738),y=c(50585),z=c(91099),A=c(32971),B=c(11633),C=c(38930);c(5993),c(53838)},81847:(a,b,c)=>{c.d(b,{NA:()=>e,WX:()=>r,Z3:()=>v,Z9:()=>i,bC:()=>q,de:()=>f,v2:()=>t,yW:()=>p,zt:()=>u});let d=["peak","offPeak"],e=["always","peak-only","off-peak-only"],f=["mon","tue","wed","thu","fri","sat","sun"],g=new Set(f),h=/^([01]\d|2[0-3]):([0-5]\d)$/,i=[{id:"deepseek-current",label:"DeepSeek (current): peak 01:00–04:00 & 06:00–10:00 UTC, Mon–Fri",config:{timezone:"UTC",defaultState:"offPeak",windows:[{type:"peak",start:"01:00",end:"04:00",days:["mon","tue","wed","thu","fri"]},{type:"peak",start:"06:00",end:"10:00",days:["mon","tue","wed","thu","fri"]}]}},{id:"deepseek-2025-02",label:"DeepSeek (Feb 2025): off-peak 16:30–00:30 UTC daily",config:{timezone:"UTC",defaultState:"peak",windows:[{type:"offPeak",start:"16:30",end:"00:30"}]}}],j=new Map;function k(a){let b=j.get(a);return b||(b=new Intl.DateTimeFormat("en-US",{timeZone:a,hourCycle:"h23",weekday:"short",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),j.set(a,b)),b}function l(a,b){let c={};for(let d of k(b).formatToParts(new Date(a)))"literal"!==d.type&&(c[d.type]=d.value);let d=Number(c.hour),e=Number(c.minute);return{weekday:c.weekday.toLowerCase(),year:Number(c.year),month:Number(c.month),day:Number(c.day),hour:d,minute:e,minutes:60*d+e}}function m(a,b){let c=Date.UTC(a.year,a.month-1,a.day,a.hour,a.minute),d=c;for(let a=0;a<3;a++){let a=l(d,b),e=Date.UTC(a.year,a.month-1,a.day,a.hour,a.minute)-c;if(0===e)break;d-=e}return d}function n(a){let b=h.exec(String(a||""));return b?60*Number(b[1])+Number(b[2]):-1}function o(a){return new Set(Array.isArray(a?.days)&&a.days.length?a.days.filter(a=>g.has(a)):f)}function p(a,b=Date.now()){if(!a||"object"!=typeof a||!Array.isArray(a.windows)||!a.windows.length)return"unscheduled";try{let c="string"==typeof a.timezone&&a.timezone?a.timezone:"UTC",d=l(b,c);for(let b of a.windows)if(b&&"object"==typeof b&&function(a,b,c,d){let e=n(a.start),g=n(a.end);if(e<0||g<0||e===g)return!1;if(e<g)return b.has(c)&&d>=e&&d<g;if(b.has(c)&&d>=e)return!0;let h=(f.indexOf(c)+6)%7,i=f[h];return b.has(i)&&d<g}(b,o(b),d.weekday,d.minutes))return"peak"===b.type?"peak":"offPeak";return"peak"===a.defaultState?"peak":"offPeak"}catch{return"unscheduled"}}function q(a,b=Date.now()){let c=p(a,b);if("unscheduled"===c)return null;let d="string"==typeof a.timezone&&a.timezone?a.timezone:"UTC",e=[],f=l(b,d);for(let b=-1;b<8;b++){let c=l(m({year:f.year,month:f.month,day:f.day,hour:12,minute:0},d)+864e5*b,d),g=l(m({year:f.year,month:f.month,day:f.day,hour:12,minute:0},d)+(b-1)*864e5,d);for(let b of a.windows){if(!b||"object"!=typeof b)continue;let a=n(b.start),f=n(b.end);if(a<0||f<0||a===f)continue;let h=o(b),i={year:c.year,month:c.month,day:c.day,hour:0,minute:0},j=a=>(function(a,b){let c=m(a,b),d=c+36e5,e=l(c,b),f=l(d,b);return e.year===f.year&&e.month===f.month&&e.day===f.day&&e.hour===f.hour&&e.minute===f.minute?[c,d]:[c]})({...i,hour:Math.floor(a/60),minute:a%60},d);h.has(c.weekday)&&(e.push(...j(a)),f>a&&e.push(...j(f))),f<a&&h.has(g.weekday)&&e.push(...j(f))}}for(let d of(e.sort((a,b)=>a-b),e))if(!(d<=b)&&p(a,d)!==c)return d;return null}function r(a){let b="string"==typeof a?a:String(a??""),c=b.indexOf("/");return -1===c?b:b.slice(0,c)}function s(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function t(a,b){if(!s(a))return{error:`Provider "${b}" schedule must be an object.`};let c=("string"==typeof a.timezone?a.timezone.trim():"")||"UTC";if(!function(a){if("string"!=typeof a||!a)return!1;try{return k(a),!0}catch{return j.delete(a),!1}}(c))return{error:`Provider "${b}" schedule timezone "${c}" is not a valid IANA zone.`};let e=c;try{e=k(c).resolvedOptions().timeZone||c}catch{}if(!Array.isArray(a.windows)||0===a.windows.length)return{error:`Provider "${b}" schedule needs at least one time window.`};if(a.windows.length>14)return{error:`Provider "${b}" schedule allows at most 14 windows.`};if(null!=a.defaultState&&!d.includes(a.defaultState))return{error:`Provider "${b}" defaultState must be "peak" or "offPeak".`};let i=[];for(let[c,d]of a.windows.entries()){if(!s(d))return{error:`Provider "${b}" window ${c+1} must be an object.`};if("peak"!==d.type&&"offPeak"!==d.type)return{error:`Provider "${b}" window ${c+1} type must be "peak" or "offPeak".`};if(!h.test(String(d.start||""))||!h.test(String(d.end||"")))return{error:`Provider "${b}" window ${c+1} start/end must be HH:MM (24h).`};if(d.start===d.end)return{error:`Provider "${b}" window ${c+1} start and end must differ.`};let a=f;if(void 0!==d.days){if(!Array.isArray(d.days)||!d.days.length||!d.days.every(a=>g.has(a)))return{error:`Provider "${b}" window ${c+1} days must be a non-empty subset of ${f.join(", ")}.`};a=[...new Set(d.days)].sort((a,b)=>f.indexOf(a)-f.indexOf(b))}i.push({type:d.type,start:d.start,end:d.end,days:a})}return{value:{timezone:e,defaultState:"peak"===a.defaultState?"peak":"offPeak",windows:i}}}function u(a){let b=Math.max(1,Math.round(a/6e4));if(b<60)return`${b} min`;let c=Math.floor(b/60),d=b%60;return d?`${c}h ${d}m`:`${c}h`}function v(a,b){return b?Object.keys(b).filter(b=>"unscheduled"===p(a?.[r(b)])):[]}}};
@@ -1,7 +1,7 @@
1
1
  "use strict";exports.id=5717,exports.ids=[5717],exports.modules={1129:(a,b,c)=>{c.r(b),c.d(b,{createProviderNode:()=>l,deleteProviderNode:()=>n,getProviderNodeById:()=>k,getProviderNodes:()=>j,updateProviderNode:()=>m});var d=c(47293),e=c(36366),f=c(644),g=c(2903);function h(a){return a?{...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function i(a,b){let c=function(a){let{id:b,type:c,name:d,createdAt:e,updatedAt:g,...h}=a;return{id:b,type:c??null,name:d??null,data:(0,f.s)(h),createdAt:e,updatedAt:g}}(b);a.run(`INSERT INTO providerNodes(id, type, name, data, createdAt, updatedAt)
2
2
  VALUES(?, ?, ?, ?, ?, ?)
3
3
  ON CONFLICT(id) DO UPDATE SET
4
- type=excluded.type, name=excluded.name, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.type,c.name,c.data,c.createdAt,c.updatedAt])}async function j(a={}){let b=await (0,e.c)(),c=[],d=[];a.type&&(c.push("type = ?"),d.push(a.type));let f=`SELECT * FROM providerNodes${c.length?` WHERE ${c.join(" AND ")}`:""}`;return b.all(f,d).map(h)}async function k(a){return h((await (0,e.c)()).get("SELECT * FROM providerNodes WHERE id = ?",[a]))}async function l(a){let b=await (0,e.c)(),c=new Date().toISOString(),f={id:a.id||(0,d.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,createdAt:c,updatedAt:c};return i(b,f),f}async function m(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM providerNodes WHERE id = ?",[a]);if(!e)return;let f={...h(e),...b,updatedAt:new Date().toISOString()};i(c,f),d=f}),d}async function n(a){let b=await (0,e.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM providerNodes WHERE id = ?",[a]);d&&(c=h(d),b.run("DELETE FROM providerNodes WHERE id = ?",[a]),(0,g.uQ)(b,a))}),c}},9460:(a,b,c)=>{c.d(b,{L9:()=>s,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>r,o5:()=>k,py:()=>p,uL:()=>q,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.c)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p(a){if(!Array.isArray(a)||0===a.length)return{added:0,skipped:0};let b=await (0,d.c)(),c=0,f=0;return b.transaction(()=>{for(let d of a){let a=d?.providerAlias,g=d?.id;if(!a||!g){f+=1;continue}let h=d.type||d.kind||"llm",i=m(a,g,h);if(b.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[i])){f+=1;continue}let j=(0,e.s)({providerAlias:a,id:g,type:h,name:d.name||g});b.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[i,j]),c+=1}}),{added:c,skipped:f}}async function q({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function r(a){return a?await i.get(a)||{}:await i.getAll()}async function s(a,b){await i.set(a,b||{})}},15717:(a,b,c)=>{let d;c.d(b,{S8:()=>u.S8,py:()=>u.py,E5:()=>H.E5,PW:()=>k.authenticateApiKey,zL:()=>G,Iq:()=>k.createApiKey,jd:()=>q,iE:()=>g.createProviderConnection,i0:()=>j.createProviderNode,Lh:()=>k.deleteApiKey,CG:()=>t,uL:()=>u.uL,fv:()=>u.fv,fK:()=>g.deleteProviderConnection,op:()=>g.deleteProviderConnectionsByProvider,Pc:()=>j.deleteProviderNode,HS:()=>af.HS,tm:()=>A,oF:()=>B,zP:()=>ag,rg:()=>H.rg,yg:()=>k.getApiKeyById,PX:()=>k.getApiKeys,j$:()=>H.j$,fz:()=>k.getClientKeySpend,L:()=>o,Dj:()=>p,Uv:()=>n,b7:()=>H.b7,uv:()=>u.uv,vF:()=>z,c:()=>u.getMitmAlias,OM:()=>u.OM,p_:()=>F,r4:()=>v.r4,rr:()=>E,p3:()=>af.p3,Mc:()=>g.getProviderConnectionById,getProviderConnections:()=>g.getProviderConnections,Qu:()=>j.getProviderNodeById,Fh:()=>j.getProviderNodes,vY:()=>H.vY,Zx:()=>H.Zx,Rw:()=>ab,SL:()=>aa,mt:()=>i.getSettings,BY:()=>H.BY,K1:()=>ah,wJ:()=>k.normalizeClientKeyPatch,fp:()=>g.redactSecrets,e8:()=>af.e8,VT:()=>v.VT,yF:()=>v.yF,ox:()=>_,sZ:()=>H.sZ,L9:()=>u.L9,o5:()=>u.o5,_V:()=>H._V,uw:()=>H.uw,XW:()=>k.updateApiKey,oG:()=>s,KJ:()=>v.KJ,updateProviderConnection:()=>g.updateProviderConnection,ho:()=>j.updateProviderNode,Xx:()=>i.Xx,Fq:()=>D,ek:()=>k.validateApiKey});var e=c(36366),f=c(644),g=c(5781),h=c(38044),i=c(42655),j=c(1129),k=c(74452),l=c(47293);function m(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function n(){return(await (0,e.c)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(m)}async function o(a){return m((await (0,e.c)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function p(a){return m((await (0,e.c)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function q(a){let b=await (0,e.c)(),c=new Date().toISOString(),d={id:(0,l.A)(),name:a.name,kind:a.kind||null,models:a.models||[],createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[d.id,d.name,d.kind,(0,f.s)(d.models),d.createdAt,d.updatedAt]),d}let r=["name","kind","models"];async function s(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!e)return;let g={...m(e),updatedAt:new Date().toISOString()};for(let a of r)b&&Object.prototype.hasOwnProperty.call(b,a)&&(g[a]=b[a]);c.run("UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?",[g.name,g.kind,(0,f.s)(g.models||[]),g.updatedAt,a]),d=g}),d}async function t(a){let b=(await (0,e.c)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var u=c(9460),v=c(97914),w=c(65089);let x="disabledModels";function y(a,b){return[...new Set((Array.isArray(b)?b:[]).map(b=>(0,w.v)(b,a)).filter(Boolean))]}async function z(){let a=(await (0,e.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[x]),b={};for(let c of a)b[c.key]=(0,f.q)(c.value,[]);return b}async function A(a,b){if(!a||!Array.isArray(b))return;let c=await (0,e.c)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[x,a]),e=y(a,[...d&&(0,f.q)(d.value,[])||[],...b]);c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[x,a,(0,f.s)(e)])})}async function B(a,b){if(!a)return;let c=await (0,e.c)();c.transaction(()=>{let d;if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[x,a]);let e=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[x,a]),g=e&&(0,f.q)(e.value,[])||[],h=(d=new Set(y(a,b)),y(a,g).filter(a=>!d.has(a)));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[x,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[x,a,(0,f.s)(h)])})}function C(a){return a?{providerId:a.provider_id,scopeKey:a.scope_key,modelId:a.model_id,kind:a.kind||"llm",status:a.status,latencyMs:null==a.latency_ms?null:Number(a.latency_ms),failureClass:a.failure_class||null,failureMessage:a.failure_message||null,checkedAt:a.checked_at}:null}async function D(a){let b=String(a?.providerId||"").trim(),c=String(a?.scopeKey||"").trim(),d=String(a?.modelId||"").trim(),f=String(a?.kind||"llm").trim()||"llm",g=String(a?.status||"").trim();if(!b||!c||!d||!["ok","dead","retryable"].includes(g))throw Error("Invalid probe result");let h=await (0,e.c)(),i=a.checkedAt||new Date().toISOString(),j=Number.isFinite(a.latencyMs)?Math.max(0,Math.round(Number(a.latencyMs))):null;return h.run(`INSERT INTO provider_model_probe(
4
+ type=excluded.type, name=excluded.name, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.type,c.name,c.data,c.createdAt,c.updatedAt])}async function j(a={}){let b=await (0,e.c)(),c=[],d=[];a.type&&(c.push("type = ?"),d.push(a.type));let f=`SELECT * FROM providerNodes${c.length?` WHERE ${c.join(" AND ")}`:""}`;return b.all(f,d).map(h)}async function k(a){return h((await (0,e.c)()).get("SELECT * FROM providerNodes WHERE id = ?",[a]))}async function l(a){let b=await (0,e.c)(),c=new Date().toISOString(),f={id:a.id||(0,d.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,createdAt:c,updatedAt:c};return i(b,f),f}async function m(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM providerNodes WHERE id = ?",[a]);if(!e)return;let f={...h(e),...b,updatedAt:new Date().toISOString()};i(c,f),d=f}),d}async function n(a){let b=await (0,e.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM providerNodes WHERE id = ?",[a]);d&&(c=h(d),b.run("DELETE FROM providerNodes WHERE id = ?",[a]),(0,g.uQ)(b,a))}),c}},9460:(a,b,c)=>{c.d(b,{L9:()=>s,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>r,o5:()=>k,py:()=>p,uL:()=>q,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.c)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p(a){if(!Array.isArray(a)||0===a.length)return{added:0,skipped:0};let b=await (0,d.c)(),c=0,f=0;return b.transaction(()=>{for(let d of a){let a=d?.providerAlias,g=d?.id;if(!a||!g){f+=1;continue}let h=d.type||d.kind||"llm",i=m(a,g,h);if(b.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[i])){f+=1;continue}let j=(0,e.s)({providerAlias:a,id:g,type:h,name:d.name||g});b.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[i,j]),c+=1}}),{added:c,skipped:f}}async function q({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function r(a){return a?await i.get(a)||{}:await i.getAll()}async function s(a,b){await i.set(a,b||{})}},15717:(a,b,c)=>{let d;c.d(b,{S8:()=>u.S8,py:()=>u.py,E5:()=>H.E5,PW:()=>k.authenticateApiKey,zL:()=>G,Iq:()=>k.createApiKey,jd:()=>q,iE:()=>g.createProviderConnection,i0:()=>j.createProviderNode,Lh:()=>k.deleteApiKey,CG:()=>t,uL:()=>u.uL,fv:()=>u.fv,fK:()=>g.deleteProviderConnection,op:()=>g.deleteProviderConnectionsByProvider,Pc:()=>j.deleteProviderNode,HS:()=>af.HS,tm:()=>A,oF:()=>B,zP:()=>ag,rg:()=>H.rg,yg:()=>k.getApiKeyById,PX:()=>k.getApiKeys,j$:()=>H.j$,fz:()=>k.getClientKeySpend,L:()=>o,Dj:()=>p,Uv:()=>n,b7:()=>H.b7,uv:()=>u.uv,vF:()=>z,c:()=>u.getMitmAlias,OM:()=>u.OM,p_:()=>F,r4:()=>v.r4,rr:()=>E,p3:()=>af.p3,Mc:()=>g.getProviderConnectionById,getProviderConnections:()=>g.getProviderConnections,Qu:()=>j.getProviderNodeById,Fh:()=>j.getProviderNodes,vY:()=>H.vY,Zx:()=>H.Zx,Rw:()=>ab,SL:()=>aa,mt:()=>i.getSettings,BY:()=>H.BY,K1:()=>ah,wJ:()=>k.normalizeClientKeyPatch,fp:()=>g.redactSecrets,e8:()=>af.e8,VT:()=>v.VT,yF:()=>v.yF,ox:()=>_,sZ:()=>H.sZ,L9:()=>u.L9,o5:()=>u.o5,_V:()=>H._V,uw:()=>H.uw,XW:()=>k.updateApiKey,oG:()=>s,KJ:()=>v.KJ,updateProviderConnection:()=>g.updateProviderConnection,ho:()=>j.updateProviderNode,Xx:()=>i.Xx,H3:()=>i.H3,Fq:()=>D,ek:()=>k.validateApiKey});var e=c(36366),f=c(644),g=c(5781),h=c(38044),i=c(42655),j=c(1129),k=c(74452),l=c(47293);function m(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function n(){return(await (0,e.c)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(m)}async function o(a){return m((await (0,e.c)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function p(a){return m((await (0,e.c)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function q(a){let b=await (0,e.c)(),c=new Date().toISOString(),d={id:(0,l.A)(),name:a.name,kind:a.kind||null,models:a.models||[],createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[d.id,d.name,d.kind,(0,f.s)(d.models),d.createdAt,d.updatedAt]),d}let r=["name","kind","models"];async function s(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!e)return;let g={...m(e),updatedAt:new Date().toISOString()};for(let a of r)b&&Object.prototype.hasOwnProperty.call(b,a)&&(g[a]=b[a]);c.run("UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?",[g.name,g.kind,(0,f.s)(g.models||[]),g.updatedAt,a]),d=g}),d}async function t(a){let b=(await (0,e.c)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var u=c(9460),v=c(97914),w=c(65089);let x="disabledModels";function y(a,b){return[...new Set((Array.isArray(b)?b:[]).map(b=>(0,w.v)(b,a)).filter(Boolean))]}async function z(){let a=(await (0,e.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[x]),b={};for(let c of a)b[c.key]=(0,f.q)(c.value,[]);return b}async function A(a,b){if(!a||!Array.isArray(b))return;let c=await (0,e.c)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[x,a]),e=y(a,[...d&&(0,f.q)(d.value,[])||[],...b]);c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[x,a,(0,f.s)(e)])})}async function B(a,b){if(!a)return;let c=await (0,e.c)();c.transaction(()=>{let d;if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[x,a]);let e=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[x,a]),g=e&&(0,f.q)(e.value,[])||[],h=(d=new Set(y(a,b)),y(a,g).filter(a=>!d.has(a)));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[x,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[x,a,(0,f.s)(h)])})}function C(a){return a?{providerId:a.provider_id,scopeKey:a.scope_key,modelId:a.model_id,kind:a.kind||"llm",status:a.status,latencyMs:null==a.latency_ms?null:Number(a.latency_ms),failureClass:a.failure_class||null,failureMessage:a.failure_message||null,checkedAt:a.checked_at}:null}async function D(a){let b=String(a?.providerId||"").trim(),c=String(a?.scopeKey||"").trim(),d=String(a?.modelId||"").trim(),f=String(a?.kind||"llm").trim()||"llm",g=String(a?.status||"").trim();if(!b||!c||!d||!["ok","dead","retryable"].includes(g))throw Error("Invalid probe result");let h=await (0,e.c)(),i=a.checkedAt||new Date().toISOString(),j=Number.isFinite(a.latencyMs)?Math.max(0,Math.round(Number(a.latencyMs))):null;return h.run(`INSERT INTO provider_model_probe(
5
5
  provider_id, scope_key, model_id, kind, status, latency_ms,
6
6
  failure_class, failure_message, checked_at
7
7
  )
@@ -26,7 +26,7 @@
26
26
  FROM ${e} JOIN vault_entries ON vault_entries.id = ${e}.entryId
27
27
  WHERE ${e} MATCH ? AND ${e}.conversationId = ? AND vault_entries.expiresAt > ?${d} ORDER BY rank LIMIT ?`,f)}catch{o=[]}if(0===o.length&&l.length>0){var h;let b=l.map(()=>"lower(vault_chunks.text) LIKE ?").join(" OR "),d=c?[a,n,c,...l.map(a=>`%${a}%`),4*i]:[a,n,...l.map(a=>`%${a}%`),4*i];h=m.all(`SELECT vault_chunks.entryId AS entryId, vault_chunks.chunkIndex AS chunkIndex, vault_chunks.text AS text
28
28
  FROM vault_chunks JOIN vault_entries ON vault_entries.id = vault_chunks.entryId
29
- WHERE vault_chunks.conversationId = ? AND vault_entries.expiresAt > ?${c?" AND vault_chunks.entryId = ?":""} AND (${b}) LIMIT ?`,d),o=Array.isArray(h)&&Array.isArray(l)?h.map(a=>({...a,score:l.reduce((b,c)=>b+Number(String(a?.text||"").toLowerCase().includes(c)),0)})).sort((a,b)=>b.score-a.score).slice(0,i):[]}let p=function(a,b){if(!Array.isArray(b))return[];let c=new Map;for(let d of b.slice(0,20)){let b=d?.entryId;if(!(!b||c.has(b)))try{c.set(b,a.get("SELECT toolName FROM vault_entries WHERE id = ?",[b])?.toolName??null)}catch{c.set(b,null)}}return b.map(a=>({entryId:a.entryId,chunkIndex:a.chunkIndex,text:a.text,toolName:c.get(a.entryId)??null}))}(m,o.slice(0,i));var j=[...new Set(p.map(a=>a.entryId))],k=new Date().toISOString();if(Array.isArray(j)&&k)for(let a of j.slice(0,20))try{m.run("UPDATE vault_entries SET lastAccessedAt = ? WHERE id = ?",[k,a])}catch{}return p}catch{return[]}}async function j(a){try{if("string"!=typeof a||!a)return null;let b=await (0,d.c)(),c=b.get("SELECT id, conversationId, toolName, content, expiresAt FROM vault_entries WHERE id = ?",[a]);if(!c)return null;let f=new Date().toISOString();if(c.expiresAt<f){try{b.run("DELETE FROM vault_chunks WHERE entryId = ?",[a]),g(b)&&b.run(`DELETE FROM ${e} WHERE entryId = ?`,[a]),b.run("DELETE FROM vault_entries WHERE id = ?",[a])}catch{}return null}try{b.run("UPDATE vault_entries SET lastAccessedAt = ? WHERE id = ?",[f,a])}catch{}return{id:c.id,conversationId:c.conversationId,toolName:c.toolName,content:c.content}}catch{return null}}async function k(){try{var a=await (0,d.c)(),b=new Date().toISOString();if("string"!=typeof b||!b)return 0;let c="SELECT id FROM vault_entries WHERE expiresAt < ?";if(a.run(`DELETE FROM vault_chunks WHERE entryId IN (${c})`,[b]),g(a))try{a.run(`DELETE FROM ${e} WHERE entryId IN (${c})`,[b])}catch{}return a.run("DELETE FROM vault_entries WHERE expiresAt < ?",[b])?.changes??0}catch{return 0}}},42655:(a,b,c)=>{c.d(b,{Xx:()=>l,bI:()=>i,exportSettings:()=>m,getSettings:()=>k});var d=c(36366),e=c(644);let f={stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:process.env.HEADROOM_URL||"http://localhost:8787",headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",pxpipeEnabled:!1,pxpipeAutoInstall:!0,pxpipeMinChars:25e3,pxpipeTimeoutMs:15e3,requireApiKey:!0,ssrfAllowHosts:[],capacityAdapter:{vision:{enabled:!0,roundRobin:!1,models:[]},pdf:{enabled:!1,roundRobin:!1,models:[]},audioInput:{enabled:!0,roundRobin:!1,models:[]},videoInput:{enabled:!1,roundRobin:!1,models:[]}}};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}let h={value:null,at:0};function i(){h={value:null,at:0}}function j(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);let c=function(){let a=process.env.REQUIRE_API_KEY;if(null==a||""===a)return null;let b=String(a).trim().toLowerCase();return"1"===b||"true"===b||"yes"===b||"0"!==b&&"false"!==b&&"no"!==b&&null}();return null!==c&&(b.requireApiKey=c),b}async function k(){return h.value&&Date.now()-h.at<2e3?{...h.value}:{...(h={value:j(await g()),at:Date.now()}).value}}async function l(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h.at=0,j(b)}async function m(){return h.at=0,await g()}},44196:(a,b,c)=>{c.d(b,{OS:()=>g,d_:()=>h,l0:()=>f});var d=c(36366),e=c(73274);async function f(a){try{let b=await (0,d.c)(),c=b.get("SELECT cacheKey, kind, url, content, contentType, expiresAt FROM fetchCache WHERE cacheKey = ?",[a]);if(!c)return null;let e=new Date().toISOString();if(c.expiresAt<e){try{b.run("DELETE FROM fetchCache WHERE cacheKey = ?",[a])}catch{}return null}return b.run("UPDATE fetchCache SET lastAccessedAt = ? WHERE cacheKey = ?",[e,a]),{content:c.content,contentType:c.contentType,kind:c.kind,url:c.url}}catch{return null}}async function g({cacheKey:a,kind:b,url:c,content:e,contentType:f,ttlMs:h}){try{if(!e||Buffer.byteLength(e,"utf8")>5242880)return;let g=Number(h);if(!Number.isFinite(g)||g<=0)return;let i=await (0,d.c)(),j=Date.now(),k=new Date(j).toISOString(),l=new Date(j+g).toISOString();i.run(`INSERT OR REPLACE INTO fetchCache(
29
+ WHERE vault_chunks.conversationId = ? AND vault_entries.expiresAt > ?${c?" AND vault_chunks.entryId = ?":""} AND (${b}) LIMIT ?`,d),o=Array.isArray(h)&&Array.isArray(l)?h.map(a=>({...a,score:l.reduce((b,c)=>b+Number(String(a?.text||"").toLowerCase().includes(c)),0)})).sort((a,b)=>b.score-a.score).slice(0,i):[]}let p=function(a,b){if(!Array.isArray(b))return[];let c=new Map;for(let d of b.slice(0,20)){let b=d?.entryId;if(!(!b||c.has(b)))try{c.set(b,a.get("SELECT toolName FROM vault_entries WHERE id = ?",[b])?.toolName??null)}catch{c.set(b,null)}}return b.map(a=>({entryId:a.entryId,chunkIndex:a.chunkIndex,text:a.text,toolName:c.get(a.entryId)??null}))}(m,o.slice(0,i));var j=[...new Set(p.map(a=>a.entryId))],k=new Date().toISOString();if(Array.isArray(j)&&k)for(let a of j.slice(0,20))try{m.run("UPDATE vault_entries SET lastAccessedAt = ? WHERE id = ?",[k,a])}catch{}return p}catch{return[]}}async function j(a){try{if("string"!=typeof a||!a)return null;let b=await (0,d.c)(),c=b.get("SELECT id, conversationId, toolName, content, expiresAt FROM vault_entries WHERE id = ?",[a]);if(!c)return null;let f=new Date().toISOString();if(c.expiresAt<f){try{b.run("DELETE FROM vault_chunks WHERE entryId = ?",[a]),g(b)&&b.run(`DELETE FROM ${e} WHERE entryId = ?`,[a]),b.run("DELETE FROM vault_entries WHERE id = ?",[a])}catch{}return null}try{b.run("UPDATE vault_entries SET lastAccessedAt = ? WHERE id = ?",[f,a])}catch{}return{id:c.id,conversationId:c.conversationId,toolName:c.toolName,content:c.content}}catch{return null}}async function k(){try{var a=await (0,d.c)(),b=new Date().toISOString();if("string"!=typeof b||!b)return 0;let c="SELECT id FROM vault_entries WHERE expiresAt < ?";if(a.run(`DELETE FROM vault_chunks WHERE entryId IN (${c})`,[b]),g(a))try{a.run(`DELETE FROM ${e} WHERE entryId IN (${c})`,[b])}catch{}return a.run("DELETE FROM vault_entries WHERE expiresAt < ?",[b])?.changes??0}catch{return 0}}},42655:(a,b,c)=>{c.d(b,{H3:()=>m,Xx:()=>l,bI:()=>i,exportSettings:()=>n,getSettings:()=>k});var d=c(36366),e=c(644);let f={stickyRoundRobinLimit:3,providerStrategies:{},providerSchedules:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:process.env.HEADROOM_URL||"http://localhost:8787",headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",pxpipeEnabled:!1,pxpipeAutoInstall:!0,pxpipeMinChars:25e3,pxpipeTimeoutMs:15e3,requireApiKey:!0,ssrfAllowHosts:[],capacityAdapter:{vision:{enabled:!0,roundRobin:!1,models:[]},pdf:{enabled:!1,roundRobin:!1,models:[]},audioInput:{enabled:!0,roundRobin:!1,models:[]},videoInput:{enabled:!1,roundRobin:!1,models:[]}}};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}let h={value:null,at:0};function i(){h={value:null,at:0}}function j(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);let c=function(){let a=process.env.REQUIRE_API_KEY;if(null==a||""===a)return null;let b=String(a).trim().toLowerCase();return"1"===b||"true"===b||"yes"===b||"0"!==b&&"false"!==b&&"no"!==b&&null}();return null!==c&&(b.requireApiKey=c),b}async function k(){return h.value&&Date.now()-h.at<2e3?{...h.value}:{...(h={value:j(await g()),at:Date.now()}).value}}async function l(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h.at=0,j(b)}async function m(a,b){let c,f=await (0,d.c)();return f.transaction(()=>{let d=f.get("SELECT data FROM settings WHERE id = 1"),g=d?(0,e.q)(d.data,{}):{},h=b(g[a]);c=void 0===h?g:{...g,[a]:h},f.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(c)])}),h.at=0,j(c)}async function n(){return h.at=0,await g()}},44196:(a,b,c)=>{c.d(b,{OS:()=>g,d_:()=>h,l0:()=>f});var d=c(36366),e=c(73274);async function f(a){try{let b=await (0,d.c)(),c=b.get("SELECT cacheKey, kind, url, content, contentType, expiresAt FROM fetchCache WHERE cacheKey = ?",[a]);if(!c)return null;let e=new Date().toISOString();if(c.expiresAt<e){try{b.run("DELETE FROM fetchCache WHERE cacheKey = ?",[a])}catch{}return null}return b.run("UPDATE fetchCache SET lastAccessedAt = ? WHERE cacheKey = ?",[e,a]),{content:c.content,contentType:c.contentType,kind:c.kind,url:c.url}}catch{return null}}async function g({cacheKey:a,kind:b,url:c,content:e,contentType:f,ttlMs:h}){try{if(!e||Buffer.byteLength(e,"utf8")>5242880)return;let g=Number(h);if(!Number.isFinite(g)||g<=0)return;let i=await (0,d.c)(),j=Date.now(),k=new Date(j).toISOString(),l=new Date(j+g).toISOString();i.run(`INSERT OR REPLACE INTO fetchCache(
30
30
  cacheKey, kind, url, content, contentType, sizeBytes, createdAt, expiresAt, lastAccessedAt
31
31
  ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)`,[a,b||null,c||null,e,f||null,Buffer.byteLength(e,"utf8"),k,l,k]);let m=i.get("SELECT COUNT(*) AS count FROM fetchCache")?.count||0,n=Number(m)-200;n>0&&i.run(`DELETE FROM fetchCache WHERE cacheKey IN (
32
32
  SELECT cacheKey FROM fetchCache ORDER BY lastAccessedAt ASC LIMIT ?
@@ -2,4 +2,4 @@ exports.id=7454,exports.ids=[7454],exports.modules={23628:(a,b,c)=>{"use strict"
2
2
  ${e}${n(t)}
3
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
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}}},68393:(a,b,c)=>{"use strict";c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});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"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(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 o(a){return"string"==typeof a&&j.test(a)}function p(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 q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(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 v(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 w(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 v(c)===a?c:null}catch{return null}}function x({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 l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}},78335:()=>{},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>O,POST:()=>Q});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(63294),o=c(23628),p=c(95510),q=c(68393),r=c(24424);let s=(0,g.promisify)(f.exec),t="switchboard",u=Promise.resolve(),v=a=>{let b=u.then(a,a);return u=b.catch(()=>{}),b},w=()=>k().join(m().homedir(),".pi","agent"),x=()=>k().join(w(),"models.json"),y=()=>k().join(w(),"settings.json"),z=()=>k().join(w(),"switchboard-backup.json"),A=()=>k().join(w(),"models.yml"),B=async()=>{try{let a="win32"===m().platform();return await s(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(w()),!0}catch{return!1}}},C=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a JSON object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},D=()=>C(x(),{providers:{}}),E=()=>C(y(),{}),F=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=""===b.trim()?{}:(0,n.qg)(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a YAML object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},G=()=>F(A(),{providers:{}}),H=a=>Array.isArray(a)?a.map(H):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,H(a[b])])):a,I=(a,b)=>JSON.stringify(H(a))===JSON.stringify(H(b)),J=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,K=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!J(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>J(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},L=async(a,b,c,d)=>{await i().mkdir(w(),{recursive:!0}),await (0,p.M_)([{filePath:z(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:A(),content:(0,n.As)(a),secret:!0},{filePath:x(),content:JSON.stringify(b,null,2),secret:!0},{filePath:y(),content:JSON.stringify(c,null,2),secret:!0}])},M=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===t)&&I(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function N(){try{if(!await B())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([G(),D(),E()]),d=a?.providers?.[t]||null,f=d||b?.providers?.[t]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[t]?.models)?b.providers[t].models:[],h=g.map(a=>a?.id).filter(Boolean),i=Object.fromEntries(g.filter(a=>a?.id&&a?.name).map(a=>[a.id,a.name])),j=(c.defaultProvider===t&&h.includes(c.defaultModel)?c.defaultModel:null)||h[0]||null,k=f?.baseUrl||null,l=!!(f&&(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}})(k)),m=l&&h.length>0;return e.NextResponse.json({installed:!0,hasSwitchboard:l,settings:{baseUrl:k,model:j,defaultModel:j,models:h,pickerLabels:i,apiKeySet:!!f?.apiKey,provider:t,scopeConfigured:m},configPath:A(),settingsPath:y()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function O(){return v(N)}async function P(a){try{let b,c;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:d,apiKey:f,model:g,models:h,defaultModel:i,pickerLabels:j}=b||{},[k,l,m,n]=await Promise.all([G(),D(),E(),C(z(),null)]),r=K(n),s=r?.state==="restored"?null:r,u=Array.isArray(k?.providers?.[t]?.models)?k.providers[t].models:Array.isArray(l?.providers?.[t]?.models)?l.providers[t].models:[],v=void 0===h?[g,...u.map(a=>a?.id)]:h,w=(0,o.rP)(v),x=void 0===j||j&&"object"==typeof j&&!Array.isArray(j)&&Object.values(j).every(a=>"string"==typeof a);if(!(0,o.uI)(d)||!(0,o.iU)(f)||0===w.length||!x)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let B=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,F=f||"sk_switchboard",H=(0,o.F2)(i||g,w),I=(0,q.OU)(j,w),J=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};J(k),J(l);let M={baseUrl:B,api:"openai-completions",apiKey:F,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(w,u,I)},N={...M,discovery:{type:"openai-models-list"}},O=s?.version===1?s:{version:1,state:"active",provider:(0,p.EA)(k.providers,[t])[t],legacyProvider:(0,p.EA)(l.providers,[t])[t],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[t]=N,l.providers[t]=M,m.defaultProvider=t,m.defaultModel=H;let P=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,w.map(a=>`${t}/${a}`));return P?m.enabledModels=P:delete m.enabledModels,O.managedProvider=N,O.managedLegacyProvider=M,O.managedSettings={defaultProvider:t,defaultModel:H,enabledModels:m.enabledModels},await L(k,l,m,O),e.NextResponse.json({success:!0,message:`Pi configured with ${w.length} model${1===w.length?"":"s"}. ${H} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(M.models.map(a=>[a.id,a.name])),configPath:A(),settingsPath:y()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function Q(a){return v(()=>P(a))}async function R(){try{let[a,b,c,d]=await Promise.all([G(),D(),E(),C(z(),null)]),f=K(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[t],h=b?.providers?.[t],i=!!(g||h),j=c.defaultProvider===t||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${t}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||I(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[t]:f.provider}):delete a.providers[t]),h&&(!f?.managedLegacyProvider||I(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[t]:f.legacyProvider??f.provider}):delete b.providers[t]),f?.version===1?(M(c,f,"defaultModel"),M(c,f,"defaultProvider"),M(c,f,"enabledModels")):c.defaultProvider===t&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`)),0===c.enabledModels.length&&delete c.enabledModels),await L(a,b,c,{version:1,state:"restored"}),e.NextResponse.json({success:!0,message:"Switchboard provider removed and previous Pi model settings restored"})}catch(a){return console.log("Error resetting pi settings:",a),e.NextResponse.json({error:"Failed to reset pi settings"},{status:500})}}async function S(){return v(R)}(0,r.D)([O,Q,S]),(0,d.A)(O,"00db4bd4ea91ce53f7b383e68d664864437be931a0",null),(0,d.A)(Q,"40263d9a048fc79676459e29f0c8330ac9e4475770",null),(0,d.A)(S,"002e23c30dce3849cee94a2e9413cf2bdd689f83b4",null)},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:()=>{}};
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}}},68393:(a,b,c)=>{"use strict";c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});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"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(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 o(a){return"string"==typeof a&&j.test(a)}function p(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 q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(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 v(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 w(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 v(c)===a?c:null}catch{return null}}function x({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 l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}},78335:()=>{},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>O,POST:()=>Q});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(63294),o=c(23628),p=c(95510),q=c(68393),r=c(24424);let s=(0,g.promisify)(f.exec),t="switchboard",u=Promise.resolve(),v=a=>{let b=u.then(a,a);return u=b.catch(()=>{}),b},w=()=>k().join(m().homedir(),".pi","agent"),x=()=>k().join(w(),"models.json"),y=()=>k().join(w(),"settings.json"),z=()=>k().join(w(),"switchboard-backup.json"),A=()=>k().join(w(),"models.yml"),B=async()=>{try{let a="win32"===m().platform();return await s(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(w()),!0}catch{return!1}}},C=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a JSON object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},D=()=>C(x(),{providers:{}}),E=()=>C(y(),{}),F=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=""===b.trim()?{}:(0,n.qg)(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a YAML object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},G=()=>F(A(),{providers:{}}),H=a=>Array.isArray(a)?a.map(H):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,H(a[b])])):a,I=(a,b)=>JSON.stringify(H(a))===JSON.stringify(H(b)),J=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,K=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!J(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>J(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},L=async(a,b,c,d)=>{await i().mkdir(w(),{recursive:!0}),await (0,p.M_)([{filePath:z(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:A(),content:(0,n.As)(a),secret:!0},{filePath:x(),content:JSON.stringify(b,null,2),secret:!0},{filePath:y(),content:JSON.stringify(c,null,2),secret:!0}])},M=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===t)&&I(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function N(){try{if(!await B())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([G(),D(),E()]),d=a?.providers?.[t]||null,f=d||b?.providers?.[t]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[t]?.models)?b.providers[t].models:[],h=g.map(a=>a?.id).filter(Boolean),i=Object.fromEntries(g.filter(a=>a?.id&&a?.name).map(a=>[a.id,a.name])),j=(c.defaultProvider===t&&h.includes(c.defaultModel)?c.defaultModel:null)||h[0]||null,k=f?.baseUrl||null,l=!!(f&&(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}})(k)),m=l&&h.length>0;return e.NextResponse.json({installed:!0,hasSwitchboard:l,settings:{baseUrl:k,model:j,defaultModel:j,models:h,pickerLabels:i,apiKeySet:!!f?.apiKey,provider:t,scopeConfigured:m},configPath:A(),settingsPath:y()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function O(){return v(N)}async function P(a){try{let b,c;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:d,apiKey:f,model:g,models:h,defaultModel:i,pickerLabels:j}=b||{},[k,l,m,n]=await Promise.all([G(),D(),E(),C(z(),null)]),r=K(n),s=r?.state==="restored"?null:r,u=Array.isArray(k?.providers?.[t]?.models)?k.providers[t].models:Array.isArray(l?.providers?.[t]?.models)?l.providers[t].models:[],v=void 0===h?[g,...u.map(a=>a?.id)]:h,w=(0,o.rP)(v),x=void 0===j||j&&"object"==typeof j&&!Array.isArray(j)&&Object.values(j).every(a=>"string"==typeof a);if(!(0,o.uI)(d)||!(0,o.iU)(f)||0===w.length||!x)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let B=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,F=f||"sk_switchboard",H=(0,o.F2)(i||g,w),I=(0,q.OU)(j,w),J=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};J(k),J(l);let M={baseUrl:B,api:"openai-completions",apiKey:F,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(w,u,I)},N={...M,discovery:{type:"openai-models-list"}},O=s?.version===1?s:{version:1,state:"active",provider:(0,p.EA)(k.providers,[t])[t],legacyProvider:(0,p.EA)(l.providers,[t])[t],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[t]=N,l.providers[t]=M,m.defaultProvider=t,m.defaultModel=H;let P=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,w.map(a=>`${t}/${a}`));return P?m.enabledModels=P:delete m.enabledModels,O.managedProvider=N,O.managedLegacyProvider=M,O.managedSettings={defaultProvider:t,defaultModel:H,enabledModels:m.enabledModels},await L(k,l,m,O),e.NextResponse.json({success:!0,message:`Pi configured with ${w.length} model${1===w.length?"":"s"}. ${H} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(M.models.map(a=>[a.id,a.name])),configPath:A(),settingsPath:y()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function Q(a){return v(()=>P(a))}async function R(){try{let[a,b,c,d]=await Promise.all([G(),D(),E(),C(z(),null)]),f=K(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[t],h=b?.providers?.[t],i=!!(g||h),j=c.defaultProvider===t||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${t}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||I(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[t]:f.provider}):delete a.providers[t]),h&&(!f?.managedLegacyProvider||I(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[t]:f.legacyProvider??f.provider}):delete b.providers[t]),f?.version===1?(M(c,f,"defaultModel"),M(c,f,"defaultProvider"),M(c,f,"enabledModels")):c.defaultProvider===t&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`)),0===c.enabledModels.length&&delete c.enabledModels),await L(a,b,c,{version:1,state:"restored"}),e.NextResponse.json({success:!0,message:"Switchboard provider removed and previous Pi model settings restored"})}catch(a){return console.log("Error resetting pi settings:",a),e.NextResponse.json({error:"Failed to reset pi settings"},{status:500})}}async function S(){return v(R)}(0,r.D)([O,Q,S]),(0,d.A)(O,"00f43d377739fd22edf1cc5fcc1ee26857ea13f7e0",null),(0,d.A)(Q,"407e9984bb8c7cb44fdf32a79992b212d06d8e72fd",null),(0,d.A)(S,"00b559960e717a56d1f50c73769b685de7ab6aaa0f",null)},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:()=>{}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=845,exports.ids=[845],exports.modules={60845:(a,b,c)=>{c.d(b,{bC:()=>q,ud:()=>u,v2:()=>t,yW:()=>p,zY:()=>r,zt:()=>v});let d=["peak","offPeak"],e=["always","peak-only","off-peak-only"],f=["mon","tue","wed","thu","fri","sat","sun"],g=new Set(f),h=new Set(e),i=/^([01]\d|2[0-3]):([0-5]\d)$/,j=new Map;function k(a){let b=j.get(a);return b||(b=new Intl.DateTimeFormat("en-US",{timeZone:a,hourCycle:"h23",weekday:"short",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),j.set(a,b)),b}function l(a,b){let c={};for(let d of k(b).formatToParts(new Date(a)))"literal"!==d.type&&(c[d.type]=d.value);let d=Number(c.hour),e=Number(c.minute);return{weekday:c.weekday.toLowerCase(),year:Number(c.year),month:Number(c.month),day:Number(c.day),hour:d,minute:e,minutes:60*d+e}}function m(a,b){let c=Date.UTC(a.year,a.month-1,a.day,a.hour,a.minute),d=c;for(let a=0;a<3;a++){let a=l(d,b),e=Date.UTC(a.year,a.month-1,a.day,a.hour,a.minute)-c;if(0===e)break;d-=e}return d}function n(a){let b=i.exec(String(a||""));return b?60*Number(b[1])+Number(b[2]):-1}function o(a){return new Set(Array.isArray(a?.days)&&a.days.length?a.days.filter(a=>g.has(a)):f)}function p(a,b=Date.now()){if(!a||"object"!=typeof a||!Array.isArray(a.windows)||!a.windows.length)return"unscheduled";try{let c="string"==typeof a.timezone&&a.timezone?a.timezone:"UTC",d=l(b,c);for(let b of a.windows)if(b&&"object"==typeof b&&function(a,b,c,d){let e=n(a.start),g=n(a.end);if(e<0||g<0||e===g)return!1;if(e<g)return b.has(c)&&d>=e&&d<g;if(b.has(c)&&d>=e)return!0;let h=(f.indexOf(c)+6)%7,i=f[h];return b.has(i)&&d<g}(b,o(b),d.weekday,d.minutes))return"peak"===b.type?"peak":"offPeak";return"peak"===a.defaultState?"peak":"offPeak"}catch{return"unscheduled"}}function q(a,b=Date.now()){let c=p(a,b);if("unscheduled"===c)return null;let d="string"==typeof a.timezone&&a.timezone?a.timezone:"UTC",e=[],f=l(b,d);for(let b=-1;b<8;b++){let c=l(m({year:f.year,month:f.month,day:f.day,hour:12,minute:0},d)+864e5*b,d),g=l(m({year:f.year,month:f.month,day:f.day,hour:12,minute:0},d)+(b-1)*864e5,d);for(let b of a.windows){if(!b||"object"!=typeof b)continue;let a=n(b.start),f=n(b.end);if(a<0||f<0||a===f)continue;let h=o(b),i={year:c.year,month:c.month,day:c.day,hour:0,minute:0},j=a=>(function(a,b){let c=m(a,b),d=c+36e5,e=l(c,b),f=l(d,b);return e.year===f.year&&e.month===f.month&&e.day===f.day&&e.hour===f.hour&&e.minute===f.minute?[c,d]:[c]})({...i,hour:Math.floor(a/60),minute:a%60},d);h.has(c.weekday)&&(e.push(...j(a)),f>a&&e.push(...j(f))),f<a&&h.has(g.weekday)&&e.push(...j(f))}}for(let d of(e.sort((a,b)=>a-b),e))if(!(d<=b)&&p(a,d)!==c)return d;return null}function r(a,b,c,d=Date.now()){let e=[],f=[],g=new Map,h=a=>{let c=g.get(a);if(!c){let e=b?.[a],f=p(e,d);c={status:f,untilMs:"unscheduled"===f?0:q(e,d)??d+864e5},g.set(a,c)}return c};for(let b of Array.isArray(a)?a:[]){let a=c?.[b];if(!a||"always"===a){e.push(b);continue}let d=function(a){let b="string"==typeof a?a:String(a??""),c=b.indexOf("/");return -1===c?b:b.slice(0,c)}(b),{status:g,untilMs:i}=h(d);if("unscheduled"===g){e.push(b);continue}("peak-only"===a?"peak"===g:"offPeak"===g)?e.push(b):f.push({model:b,provider:d,availability:a,status:g,untilMs:i})}return{models:e,skipped:f}}function s(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function t(a,b){if(!s(a))return{error:`Provider "${b}" schedule must be an object.`};let c=("string"==typeof a.timezone?a.timezone.trim():"")||"UTC";if(!function(a){if("string"!=typeof a||!a)return!1;try{return k(a),!0}catch{return j.delete(a),!1}}(c))return{error:`Provider "${b}" schedule timezone "${c}" is not a valid IANA zone.`};let e=c;try{e=k(c).resolvedOptions().timeZone||c}catch{}if(!Array.isArray(a.windows)||0===a.windows.length)return{error:`Provider "${b}" schedule needs at least one time window.`};if(a.windows.length>14)return{error:`Provider "${b}" schedule allows at most 14 windows.`};if(null!=a.defaultState&&!d.includes(a.defaultState))return{error:`Provider "${b}" defaultState must be "peak" or "offPeak".`};let h=[];for(let[c,d]of a.windows.entries()){if(!s(d))return{error:`Provider "${b}" window ${c+1} must be an object.`};if("peak"!==d.type&&"offPeak"!==d.type)return{error:`Provider "${b}" window ${c+1} type must be "peak" or "offPeak".`};if(!i.test(String(d.start||""))||!i.test(String(d.end||"")))return{error:`Provider "${b}" window ${c+1} start/end must be HH:MM (24h).`};if(d.start===d.end)return{error:`Provider "${b}" window ${c+1} start and end must differ.`};let a=f;if(void 0!==d.days){if(!Array.isArray(d.days)||!d.days.length||!d.days.every(a=>g.has(a)))return{error:`Provider "${b}" window ${c+1} days must be a non-empty subset of ${f.join(", ")}.`};a=[...new Set(d.days)].sort((a,b)=>f.indexOf(a)-f.indexOf(b))}h.push({type:d.type,start:d.start,end:d.end,days:a})}return{value:{timezone:e,defaultState:"peak"===a.defaultState?"peak":"offPeak",windows:h}}}function u(a){let b=function(a){if(null==a)return{value:{}};if(!s(a))return{error:"modelAvailability must be an object mapping combo members to an availability rule."};let b={};for(let[c,d]of Object.entries(a)){if(!c||"string"!=typeof c||"__proto__"===c||"constructor"===c||"prototype"===c)return{error:`modelAvailability key "${c}" is not a valid combo member.`};if("string"!=typeof d||!h.has(d))return{error:`modelAvailability["${c}"] must be one of: ${e.join(", ")}.`};"always"!==d&&(b[c]=d)}return{value:b}}(a);return b.error?b:{value:Object.keys(b.value).length?b.value:null}}function v(a){let b=Math.max(1,Math.round(a/6e4));if(b<60)return`${b} min`;let c=Math.floor(b/60),d=b%60;return d?`${c}h ${d}m`:`${c}h`}}};
@@ -1 +1 @@
1
- "use strict";exports.id=869,exports.ids=[869],exports.modules={4489:(a,b,c)=>{c.d(b,{ki:()=>e});let d=new Set(["chat","text","language","model"]);function e(a){if("string"!=typeof a||!a)return a;let b=a.toLowerCase();return d.has(b)?"llm":b}},27335:(a,b,c)=>{c.d(b,{Xg:()=>r,vq:()=>f.vq,fZ:()=>j,cY:()=>t,ez:()=>n,ux:()=>m,OA:()=>o,kt:()=>p,KC:()=>s,SM:()=>i});var d=c(4630),e=c(58976),f=c(45350),g=c(6595);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];return c?(0,g.ec)(l(c,b,a)):null}function o(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function p(a,b){let c="string"==typeof b?b.match(/\([^()]+\)\s*$/):null,d=c?c[0]:"",e=d?b.slice(0,c.index).trim():b,g=l(f.vq[a],e,a);return g?.upstreamModelId?g.upstreamModelId+d:g?.id?g.id+d:"cx"===a&&"string"==typeof e&&e.endsWith(h)?e.slice(0,-h.length)+d:e+d}let q=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),r=Object.fromEntries(Object.keys(d.xq).map(a=>[a,q[a]||a]));function s(a){let b=r[a]||a;return f.vq[b]||[]}function t(a,b){return(0,g.g5)(l(f.vq[a],b,a))}},30869:(a,b,c)=>{c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});var d=c(39006),e=c(40615),f=c(81329);d.rE;let g={npmPackageName:"switchboard-router",installCmd:"npm i -g switchboard-router",installCmdLatest:"npm i -g switchboard-router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:2200,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,statusStartupTimeoutMs:2e3,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},39006:a=>{a.exports=JSON.parse('{"UU":"switchboard-app","rE":"0.9.31"}')},40615:(a,b,c)=>{c.d(b,{Q2:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(58976);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.aliases?.length?{aliases:a.aliases}:{},...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a||b.aliases?.includes(a))return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},81329:(a,b,c)=>{c.d(b,{CP:()=>h,PROVIDER_MODELS:()=>d.vq,Xg:()=>d.Xg,eh:()=>g});var d=c(27335),e=c(40615),f=c(4489);Object.entries(e.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a);let g=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),h=(a,b=null)=>{let c=a?.kind||a?.type||b;return c?(0,f.ki)(c):c}}};
1
+ "use strict";exports.id=869,exports.ids=[869],exports.modules={4489:(a,b,c)=>{c.d(b,{ki:()=>e});let d=new Set(["chat","text","language","model"]);function e(a){if("string"!=typeof a||!a)return a;let b=a.toLowerCase();return d.has(b)?"llm":b}},27335:(a,b,c)=>{c.d(b,{Xg:()=>r,vq:()=>f.vq,fZ:()=>j,cY:()=>t,ez:()=>n,ux:()=>m,OA:()=>o,kt:()=>p,KC:()=>s,SM:()=>i});var d=c(4630),e=c(58976),f=c(45350),g=c(6595);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];return c?(0,g.ec)(l(c,b,a)):null}function o(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function p(a,b){let c="string"==typeof b?b.match(/\([^()]+\)\s*$/):null,d=c?c[0]:"",e=d?b.slice(0,c.index).trim():b,g=l(f.vq[a],e,a);return g?.upstreamModelId?g.upstreamModelId+d:g?.id?g.id+d:"cx"===a&&"string"==typeof e&&e.endsWith(h)?e.slice(0,-h.length)+d:e+d}let q=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),r=Object.fromEntries(Object.keys(d.xq).map(a=>[a,q[a]||a]));function s(a){let b=r[a]||a;return f.vq[b]||[]}function t(a,b){return(0,g.g5)(l(f.vq[a],b,a))}},30869:(a,b,c)=>{c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});var d=c(39006),e=c(40615),f=c(81329);d.rE;let g={npmPackageName:"switchboard-router",installCmd:"npm i -g switchboard-router",installCmdLatest:"npm i -g switchboard-router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:2200,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,statusStartupTimeoutMs:2e3,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},39006:a=>{a.exports=JSON.parse('{"UU":"switchboard-app","rE":"0.9.32"}')},40615:(a,b,c)=>{c.d(b,{Q2:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(58976);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.aliases?.length?{aliases:a.aliases}:{},...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a||b.aliases?.includes(a))return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},81329:(a,b,c)=>{c.d(b,{CP:()=>h,PROVIDER_MODELS:()=>d.vq,Xg:()=>d.Xg,eh:()=>g});var d=c(27335),e=c(40615),f=c(4489);Object.entries(e.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a);let g=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),h=(a,b=null)=>{let c=a?.kind||a?.type||b;return c?(0,f.ki)(c):c}}};
@@ -351,7 +351,7 @@ REMEMBER: When in doubt, write LESS per operation. Multiple small operations > o
351
351
  <max_thinking_length>${b}</max_thinking_length>`}function o(a){return!!a&&!!a.includes("<thinking_mode>")&&(a.includes("<thinking_mode>enabled</thinking_mode>")||a.includes("<thinking_mode>interleaved</thinking_mode>"))}},44140:(a,b,c)=>{"use strict";c.d(b,{AU:()=>o,fX:()=>q});let d=/switchboard/i,e=/Switchboard\//i,f="https://github.com/Vijay-Duke/switchboard-router",g=new Set(["authorization","x-api-key","api-key","cookie"]);function h(a){return g.has(String(a).toLowerCase())}function i(a){let b={};for(let[c,g]of a?a instanceof Headers?[...a.entries()]:Object.entries(a):[])null!=g&&!function(a,b){let c=String(a),g=null==b?"":String(b),i=c.toLowerCase();return!!(i.startsWith("x-switchboard-")||"x-client-type"===i&&/^switchboard$/i.test(g.trim())||"x-msh-platform"===i&&/^switchboard$/i.test(g.trim())||"user-agent"===i&&e.test(g)||d.test(c)&&!h(c)||d.test(g)&&!h(c)||g.includes(f))}(c,g)&&(b[c]=String(g));return b}Object.freeze({SWITCHBOARD_RE:d,SWITCHBOARD_UA_RE:e,SWITCHBOARD_GITHUB:f});var j=c(59882),k=c(70625),l=c(3507);let m="oauth-2025-04-20",n="extended-cache-ttl-2025-04-11";function o(a){let b=[],c=new Set;for(let d of String(a||"").split(",")){let a=d.trim();a&&!c.has(a)&&(b.push(a),c.add(a))}if(!c.has(m)){let a=+("claude-code-20250219"===b[0]);b.splice(a,0,m)}return c.has(n)||b.push(n),b.join(",")}function p(a){return Object.keys(a).find(a=>"user-agent"===a.toLowerCase())}function q(a,b={}){let c=i(a),d=(0,j.ti)(b.identity,{format:b.format,provider:b.provider}),e=b.snapshot||(0,k.zi)(d),f="claude-cli"===d?(0,k.Iq)(b.credentialId):null,g=(0,j.$3)(c,d,{snapshot:f?{...e,os:f.os,arch:f.arch}:e,overlay:b.overlay,stream:b.stream,retryCount:b.retryCount,preserveUserAgent:!b.identity}),h=(0,j.E$)(d),m=i(g);if("claude-cli"===d&&b.requestPath?.startsWith("/v1/messages/count_tokens")){for(let a of Object.keys(m))"x-stainless-timeout"===a.toLowerCase()&&delete m[a];m=(0,j.Dm)(m,j.$R)}if(!p(m)){let a=e?.userAgent||function(a,b){let c=b?.version,d=(0,l.ol)()||"linux",e="ia32"===(0,l.LY)()?"x86":(0,l.LY)()||"x64";switch(a){case"claude-cli":return`claude-cli/${c||"2.1.263"} (external, cli)`;case"codex-cli":return`codex_cli_rs/${c||"0.149.0"}`;case"gemini-cli":return`GeminiCLI/${c||"0.56.0"}/unknown (${d}; ${e}; terminal)`;case"cline":return`Cline/${c||"3.0.0"}`;case"antigravity":return`antigravity/${c||"2.9.1"} ${d}/${e}`;case"copilot":return`GitHubCopilotChat/${c||"0.38.0"}`;case"qwen":return`QwenCode/${c||"0.12.3"} (${d}; ${e})`;case"grok-cli":return`grok-cli/${c||"1.0.0"}`;case"grok-build":return`grok-shell/${c||"0.2.99"} (${d}; ${e})`;case"chrome":return"Mozilla/5.0";default:return`OpenAI/NodeJS/${"u">typeof process&&process.version?process.version.replace(/^v/,""):"unknown"}`}}(d,e);m["User-Agent"]=a}return"claude-cli"===d&&function(a,b){let c=(0,k.Kn)(b),d=p(a),e=String(d?a[d]:"").match(/claude-(?:cli|code)\/(\d+\.\d+\.\d+)/i)?.[1]||null;if(!c.version||c.billingVersion!==c.version||c.tlsVersion!==c.version||c.userAgentVersion!==c.version||e!==c.version)throw Error(`Claude identity mismatch: ua=${e||c.userAgentVersion} version=${c.version} billing=${c.billingVersion} tls=${c.tlsVersion}`)}(m,e),{headers:i(m),profileId:d,tls:h?.tls||"node",alpn:h?.alpn||["h2","http/1.1"],tlsSpecRev:e?.tlsSpecRev}}},45221:(a,b,c)=>{"use strict";let{runtimeFeatures:d}=c(56758),{maxUnsigned16Bit:e,opcodes:f}=c(62026),g=null,h=8192,i=d.has("crypto")?c(77598).randomFillSync:null;function j(){return 8192===h&&(h=0,i(g??=Buffer.allocUnsafeSlow(8192),0,8192)),[g[h++],g[h++],g[h++],g[h++]]}class k{constructor(a){this.frameData=a}createFrame(a){let b=this.frameData,c=j(),d=b?.byteLength??0,f=d,g=6;d>e?(g+=8,f=127):d>125&&(g+=2,f=126);let h=Buffer.allocUnsafe(d+g);h[0]=h[1]=0,h[0]|=128,h[0]=(240&h[0])+a,h[g-4]=c[0],h[g-3]=c[1],h[g-2]=c[2],h[g-1]=c[3],h[1]=f,126===f?h.writeUInt16BE(d,2):127===f&&(h[2]=h[3]=0,h.writeUIntBE(d,4,6)),h[1]|=128;for(let a=0;a<d;++a)h[g+a]=b[a]^c[3&a];return h}static createFastTextFrame(a){let b=j(),c=a.length;for(let d=0;d<c;++d)a[d]^=b[3&d];let d=c,g=6;c>e?(g+=8,d=127):c>125&&(g+=2,d=126);let h=Buffer.allocUnsafeSlow(g);return h[0]=128|f.TEXT,h[1]=128|d,h[g-4]=b[0],h[g-3]=b[1],h[g-2]=b[2],h[g-1]=b[3],126===d?h.writeUInt16BE(c,2):127===d&&(h[2]=h[3]=0,h.writeUIntBE(c,4,6)),[h,a]}}a.exports={WebsocketFrameSend:k,generateMask:j}},45431:(a,b,c)=>{"use strict";c.d(b,{A:()=>e});var d=c(83382);let e={id:"grok-cli",priority:275,alias:"gcli",aliases:["grok-build","gb"],uiAlias:"gcli",display:{name:"Grok CLI (Grok Build)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GC",website:"https://x.ai",notice:{text:"Sign in with your xAI account via device code. Uses Grok Build subscription credits.",signupUrl:"https://grok.com/supergrok"}},category:"oauth",authModes:["oauth"],hasOAuth:!0,thinkingConfig:{options:["low","medium","high","xhigh"],defaultMode:"high"},transport:{identity:d.s2,baseUrl:`${d.Nr}/responses`,format:"openai-responses",forceStream:!0,modelsUrl:`${d.Nr}/models`,userUrl:`${d.Nr}/user`,tokenAuth:"xai-grok-cli",clientIdentifier:d.rK,clientVersion:d.uG,usage:{url:`${d.Nr}/billing?format=credits`,userUrl:`${d.Nr}/user?include=subscription`},retry:{429:{attempts:2,delayMs:2e3},502:{attempts:2,delayMs:1500},503:{attempts:2,delayMs:1500}}},models:[{id:d.to,name:"Grok Build",contextLength:5e5,maxOutputTokens:64e3},{id:"grok-4.5",name:"Grok 4.5",contextLength:5e5,maxOutputTokens:64e3},{id:"grok-4.5-high",name:"Grok 4.5 (High)",upstreamModelId:"grok-4.5"},{id:"grok-4.5-medium",name:"Grok 4.5 (Medium)",upstreamModelId:"grok-4.5"},{id:"grok-4.5-low",name:"Grok 4.5 (Low)",upstreamModelId:"grok-4.5"}],serviceKinds:["llm"],oauth:{clientId:"b1a00492-073a-47ea-816f-4c329264a828",deviceCodeUrl:"https://auth.x.ai/oauth2/device/code",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token",scope:"openid profile email offline_access grok-cli:access api:access conversations:read conversations:write",referrer:"grok-build",refreshLeadMs:3e5},features:{usage:!0}}},45504:(a,b,c)=>{"use strict";var d=c(99887),e=c(68531),f=c(10962),g=c(26408),h=c(11897),i=c(90242),j=c(30816);function k(a){return"string"!=typeof a?"":a.replace(/^x-anthropic-billing-header:[^\n]*(?:\r?\n)?/i,"")}function l(a){let b=a.source||{};return"base64"===b.type&&b.data?{type:h.x4.FILE,file:{file_data:(0,g.$q)(b.media_type||"application/pdf",b.data),...a.name?{filename:a.name}:{}}}:"url"===b.type&&b.url?{type:h.x4.TEXT,text:`[Document: ${b.url}]`}:"text"===b.type&&"string"==typeof b.data?{type:h.x4.TEXT,text:b.data}:{type:h.x4.TEXT,text:`[Document: ${a.name||"omitted"}]`}}(0,d.kz)(e.h.CLAUDE,e.h.OPENAI,function(a,b,c){let d={model:a,messages:[],stream:c};if(b.max_tokens&&(d.max_tokens=(0,f.M)(b)),void 0!==b.temperature&&(d.temperature=b.temperature),void 0!==b.stop_sequences?d.stop=b.stop_sequences:void 0!==b.stop&&(d.stop=b.stop),void 0!==b.top_p&&(d.top_p=b.top_p),void 0!==b.top_k&&(d.top_k=b.top_k),b.system){let a=Array.isArray(b.system)?b.system.map(a=>k(a.text||"")).filter(Boolean).join("\n"):k(b.system);a&&d.messages.push({role:h.z7.SYSTEM,content:a})}if(b.messages&&Array.isArray(b.messages))for(let a=0;a<b.messages.length;a++){let c=function(a){if(a.role===h.z7.SYSTEM){var b;let c,d=(c=(Array.isArray(b=a.content)?b.filter(a=>a?.type===h.R4.TEXT).map(a=>a.text||""):["string"==typeof b?b:""]).filter(Boolean).join("\n")).trim()?`<instructions>
352
352
  ${c}
353
353
  </instructions>`:"";return d?{role:h.z7.USER,content:d}:null}let c=a.role===h.z7.USER||a.role===h.z7.TOOL?h.z7.USER:h.z7.ASSISTANT;if("string"==typeof a.content)return{role:c,content:a.content};if(Array.isArray(a.content)){let b=[],d=[],e=[],f="",j=null;for(let c of a.content)switch(c.type){case h.R4.TEXT:b.push({type:h.x4.TEXT,text:c.text});break;case h.R4.THINKING:c.thinking&&(f=f?`${f}
354
- ${c.thinking}`:c.thinking),c.signature&&!j&&(j=c.signature);break;case h.R4.REDACTED_THINKING:c.signature&&!j&&(j=c.signature);break;case h.R4.DOCUMENT:b.push(l(c));break;case h.R4.IMAGE:c.source?.type==="base64"?b.push({type:h.x4.IMAGE_URL,image_url:{url:(0,g.$q)(c.source.media_type,c.source.data)}}):c.source?.type==="url"&&c.source.url&&b.push({type:h.x4.IMAGE_URL,image_url:{url:c.source.url}});break;case h.R4.TOOL_USE:d.push({id:c.id,type:h.x4.FUNCTION,function:{name:c.name,arguments:"string"==typeof c.input?c.input:JSON.stringify(c.input||{})}});break;case h.R4.TOOL_RESULT:let a="";if("string"==typeof c.content)a=c.content;else if(Array.isArray(c.content)){let b=[],d=[];for(let a of c.content)a&&"object"==typeof a&&(a.type===h.R4.TEXT&&"string"==typeof a.text?b.push(a.text):a.type===h.R4.IMAGE?a.source?.type==="base64"&&a.source?.data?d.push({type:h.x4.IMAGE_URL,image_url:{url:(0,g.$q)(a.source.media_type,a.source.data)}}):a.source?.type==="url"&&a.source.url&&d.push({type:h.x4.IMAGE_URL,image_url:{url:a.source.url}}):a.type===h.R4.DOCUMENT&&d.push(l(a)));if(d.length>0){let c=[];b.length>0&&c.push({type:h.x4.TEXT,text:b.join("\n")}),c.push(...d),a=c}else a=b.length>0?b.join("\n"):JSON.stringify(c.content)}else c.content&&(a=JSON.stringify(c.content));let i={role:h.z7.TOOL,tool_call_id:c.tool_use_id,content:a};void 0!==c.is_error&&(i.is_error=!!c.is_error),e.push(i)}if(e.length>0)return b.length>0?[{role:h.z7.USER,content:(0,i.z)(b)},...e]:e;if(d.length>0){let a={role:h.z7.ASSISTANT};return b.length>0&&(a.content=(0,i.z)(b)),f&&(a.reasoning_content=f),j&&(a.reasoning_signature=j),a.tool_calls=d,a}if(b.length>0||f){let a={role:c};return b.length>0&&(a.content=(0,i.z)(b)),f&&(a.reasoning_content=f),j&&(a.reasoning_signature=j),a}if(0===a.content.length)return{role:c,content:""}}return null}(b.messages[a]);c&&(Array.isArray(c)?d.messages.push(...c):d.messages.push(c))}return function(a){for(let b=0;b<a.length;b++){let c=a[b];if(c.role===h.z7.ASSISTANT&&c.tool_calls&&c.tool_calls.length>0){let d=c.tool_calls.map(a=>a.id),e=new Set,f=b+1;for(let c=b+1;c<a.length;c++){let b=a[c];if(b.role===h.z7.TOOL&&b.tool_call_id)e.add(b.tool_call_id),f=c+1;else break}let g=d.filter(a=>!e.has(a));if(g.length>0){let c=g.map(a=>({role:h.z7.TOOL,tool_call_id:a,content:""}));a.splice(f,0,...c),b=f+c.length-1}}}}(d.messages),b.tools&&Array.isArray(b.tools)&&(d.tools=b.tools.map(a=>({type:h.x4.FUNCTION,function:{name:a.name,description:"string"==typeof a.description?a.description:String(a.description||""),parameters:(0,j.M)(a.input_schema||{type:"object",properties:{}})}}))),b.tool_choice&&(d.tool_choice=function(a){if(!a)return"auto";if("string"==typeof a)return"none"===a||"auto"===a||"required"===a?a:"auto";switch(a.type){case"auto":default:return"auto";case"none":return"none";case"any":return"required";case"tool":return{type:h.x4.FUNCTION,function:{name:a.name}}}}(b.tool_choice)),void 0!==b.reasoning_effort?d.reasoning_effort=b.reasoning_effort:b.reasoning?.effort!==void 0&&(d.reasoning_effort=b.reasoning.effort),void 0!==b.reasoning&&(d.reasoning=b.reasoning),d},null)},45518:(a,b,c)=>{var d,e,f,g,h,i=c(45654);function j(a,b){i.cipher.registerAlgorithm(a,function(){return new i.aes.Algorithm(a,b)})}c(66568),c(19396),c(33889),a.exports=i.aes=i.aes||{},i.aes.startEncrypting=function(a,b,c,d){var e=o({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},i.aes.createEncryptionCipher=function(a,b){return o({key:a,output:null,decrypt:!1,mode:b})},i.aes.startDecrypting=function(a,b,c,d){var e=o({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},i.aes.createDecryptionCipher=function(a,b){return o({key:a,output:null,decrypt:!0,mode:b})},i.aes.Algorithm=function(a,b){k||l();var c=this;c.name=a,c.mode=new b({blockSize:16,cipher:{encrypt:function(a,b){return n(c._w,a,b,!1)},decrypt:function(a,b){return n(c._w,a,b,!0)}}}),c._init=!1},i.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var b,c=a.key;if("string"==typeof c&&(16===c.length||24===c.length||32===c.length))c=i.util.createBuffer(c);else if(i.util.isArray(c)&&(16===c.length||24===c.length||32===c.length)){b=c,c=i.util.createBuffer();for(var d=0;d<b.length;++d)c.putByte(b[d])}if(!i.util.isArray(c)){b=c,c=[];var e=b.length();if(16===e||24===e||32===e){e>>>=2;for(var d=0;d<e;++d)c.push(b.getInt32())}}if(!i.util.isArray(c)||4!==c.length&&6!==c.length&&8!==c.length)throw Error("Invalid key parameter.");var f=-1!==["CFB","OFB","CTR","GCM"].indexOf(this.mode.name);this._w=m(c,a.decrypt&&!f),this._init=!0}},i.aes._expandKey=function(a,b){return k||l(),m(a,b)},i.aes._updateBlock=n,j("AES-ECB",i.cipher.modes.ecb),j("AES-CBC",i.cipher.modes.cbc),j("AES-CFB",i.cipher.modes.cfb),j("AES-OFB",i.cipher.modes.ofb),j("AES-CTR",i.cipher.modes.ctr),j("AES-GCM",i.cipher.modes.gcm);var k=!1;function l(){k=!0,f=[0,1,2,4,8,16,32,64,128,27,54];for(var a=Array(256),b=0;b<128;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;d=Array(256),e=Array(256),g=[,,,,],h=[,,,,];for(var b=0;b<4;++b)g[b]=Array(256),h[b]=Array(256);for(var c,i,j,l,m,n,o,p=0,q=0,b=0;b<256;++b){l=(l=q^q<<1^q<<2^q<<3^q<<4)>>8^255&l^99,d[p]=l,e[l]=p,m=a[l],c=a[p],i=a[c],j=a[i],n=m<<24^l<<16^l<<8^(l^m),o=(c^i^j)<<24^(p^j)<<16^(p^i^j)<<8^(p^c^j);for(var r=0;r<4;++r)g[r][p]=n,h[r][l]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^j]]],q^=a[a[q]])}}function m(a,b){for(var c,e=a.slice(0),g=1,i=e.length,j=4*(i+6+1),k=i;k<j;++k)c=e[k-1],k%i==0?(c=d[c>>>16&255]<<24^d[c>>>8&255]<<16^d[255&c]<<8^d[c>>>24]^f[g]<<24,g++):i>6&&k%i==4&&(c=d[c>>>24]<<24^d[c>>>16&255]<<16^d[c>>>8&255]<<8^d[255&c]),e[k]=e[k-i]^c;if(b){var l,m=h[0],n=h[1],o=h[2],p=h[3],q=e.slice(0);j=e.length;for(var k=0,r=j-4;k<j;k+=4,r-=4)if(0===k||k===j-4)q[k]=e[r],q[k+1]=e[r+3],q[k+2]=e[r+2],q[k+3]=e[r+1];else for(var s=0;s<4;++s)l=e[r+s],q[k+(3&-s)]=m[d[l>>>24]]^n[d[l>>>16&255]]^o[d[l>>>8&255]]^p[d[255&l]];e=q}return e}function n(a,b,c,f){var i,j,k,l,m,n,o,p,q,r,s,t,u=a.length/4-1;f?(i=h[0],j=h[1],k=h[2],l=h[3],m=e):(i=g[0],j=g[1],k=g[2],l=g[3],m=d),n=b[0]^a[0],o=b[f?3:1]^a[1],p=b[2]^a[2],q=b[f?1:3]^a[3];for(var v=3,w=1;w<u;++w)r=i[n>>>24]^j[o>>>16&255]^k[p>>>8&255]^l[255&q]^a[++v],s=i[o>>>24]^j[p>>>16&255]^k[q>>>8&255]^l[255&n]^a[++v],t=i[p>>>24]^j[q>>>16&255]^k[n>>>8&255]^l[255&o]^a[++v],q=i[q>>>24]^j[n>>>16&255]^k[o>>>8&255]^l[255&p]^a[++v],n=r,o=s,p=t;c[0]=m[n>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v],c[f?3:1]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&n]^a[++v],c[2]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[n>>>8&255]<<8^m[255&o]^a[++v],c[f?1:3]=m[q>>>24]<<24^m[n>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v]}function o(a){var b,c="AES-"+((a=a||{}).mode||"CBC").toUpperCase(),d=(b=a.decrypt?i.cipher.createDecipher(c,a.key):i.cipher.createCipher(c,a.key)).start;return b.start=function(a,c){var e=null;c instanceof i.util.ByteBuffer&&(e=c,c={}),(c=c||{}).output=e,c.iv=a,d.call(b,c)},b}},45654:a=>{a.exports={options:{usePureJavaScript:!1}}},45874:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>k,exportSettings:()=>l,getSettings:()=>j});var d=c(24081),e=c(50743);let f={stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:process.env.HEADROOM_URL||"http://localhost:8787",headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",pxpipeEnabled:!1,pxpipeAutoInstall:!0,pxpipeMinChars:25e3,pxpipeTimeoutMs:15e3,requireApiKey:!0,ssrfAllowHosts:[],capacityAdapter:{vision:{enabled:!0,roundRobin:!1,models:[]},pdf:{enabled:!1,roundRobin:!1,models:[]},audioInput:{enabled:!0,roundRobin:!1,models:[]},videoInput:{enabled:!1,roundRobin:!1,models:[]}}};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}let h={value:null,at:0};function i(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);let c=function(){let a=process.env.REQUIRE_API_KEY;if(null==a||""===a)return null;let b=String(a).trim().toLowerCase();return"1"===b||"true"===b||"yes"===b||"0"!==b&&"false"!==b&&"no"!==b&&null}();return null!==c&&(b.requireApiKey=c),b}async function j(){return h.value&&Date.now()-h.at<2e3?{...h.value}:{...(h={value:i(await g()),at:Date.now()}).value}}async function k(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h.at=0,i(b)}async function l(){return h.at=0,await g()}},46036:(a,b,c)=>{"use strict";c(68531)},46248:(a,b,c)=>{"use strict";c.d(b,{L:()=>t});var d=c(22256),e=c(60802),f=c(74570),g=c(22884),h=c(10793),i=c(44140),j=c(50969),k=c(77321),l=c(29137),m=c(49623);let n={combined:!0,header:"Authorization",scheme:"bearer"},o={combined:!0,header:"x-api-key",scheme:"raw"},p=Object.fromEntries(Object.entries(e.xq).filter(([,a])=>a.auth).map(([a,b])=>[a,b.auth]));function q(a,b,c){a[b.header]="bearer"===b.scheme?`Bearer ${c}`:c}let r={kimiHeaders:(a,b)=>Object.assign(a,(0,h.VK)(b?.providerSpecificData?.deviceId)),clineHeaders:(a,b)=>Object.assign(a,function(a,b={}){let c,d=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",{headers:e}=(0,i.fX)({...d?{Authorization:d}:{},...b},{identity:"cline"});return e}(b.apiKey||b.accessToken)),kilocodeOrg:(a,b)=>{b.providerSpecificData?.orgId&&(a["X-Kilocode-OrganizationID"]=b.providerSpecificData.orgId)}},s=Object.fromEntries(Object.entries(e.sr).filter(([,a])=>a.refresh).map(([a,b])=>{let c=b.tokenUrl,d=b.refresh.encoding,e=b.refresh.scope?{scope:b.refresh.scope}:{};return[a,{encoding:d,url:()=>c,params:c=>"gemini"===a?{client_id:c.config.clientId,client_secret:c.config.clientSecret,...e}:{client_id:b.clientId,...e}}]}));class t extends d.Hv{constructor(a){super(a,e.xq[a]||e.xq.openai)}transformRequest(a,b,c,e){super.transformRequest(a,b,c,e);let f=this.applyJsonSchemaFallback(b);if(f&&"object"==typeof f){this.config.quirks?.dropClientMetadata&&delete f.client_metadata,(0,l.c)(this.provider,a,f);let b=(0,g.jJ)(this.provider,e);c&&("openai"===b||"ollama"===b)&&Array.isArray(f.messages)&&!f.stream_options&&(f.stream_options={include_usage:!0}),(0,d._2)(this.config)?delete f.stream:c&&!0!==f.stream&&(f.stream=!0)}return(0,k.Z)({provider:this.provider,model:a,body:f})}applyJsonSchemaFallback(a){if(!this.provider?.startsWith?.("openai-compatible-"))return a;let b=a?.response_format;if(b?.type!=="json_schema"||!b.json_schema?.schema)return a;let c=JSON.stringify(b.json_schema.schema,null,2),d=`You must respond with valid JSON that strictly follows this JSON schema:
354
+ ${c.thinking}`:c.thinking),c.signature&&!j&&(j=c.signature);break;case h.R4.REDACTED_THINKING:c.signature&&!j&&(j=c.signature);break;case h.R4.DOCUMENT:b.push(l(c));break;case h.R4.IMAGE:c.source?.type==="base64"?b.push({type:h.x4.IMAGE_URL,image_url:{url:(0,g.$q)(c.source.media_type,c.source.data)}}):c.source?.type==="url"&&c.source.url&&b.push({type:h.x4.IMAGE_URL,image_url:{url:c.source.url}});break;case h.R4.TOOL_USE:d.push({id:c.id,type:h.x4.FUNCTION,function:{name:c.name,arguments:"string"==typeof c.input?c.input:JSON.stringify(c.input||{})}});break;case h.R4.TOOL_RESULT:let a="";if("string"==typeof c.content)a=c.content;else if(Array.isArray(c.content)){let b=[],d=[];for(let a of c.content)a&&"object"==typeof a&&(a.type===h.R4.TEXT&&"string"==typeof a.text?b.push(a.text):a.type===h.R4.IMAGE?a.source?.type==="base64"&&a.source?.data?d.push({type:h.x4.IMAGE_URL,image_url:{url:(0,g.$q)(a.source.media_type,a.source.data)}}):a.source?.type==="url"&&a.source.url&&d.push({type:h.x4.IMAGE_URL,image_url:{url:a.source.url}}):a.type===h.R4.DOCUMENT&&d.push(l(a)));if(d.length>0){let c=[];b.length>0&&c.push({type:h.x4.TEXT,text:b.join("\n")}),c.push(...d),a=c}else a=b.length>0?b.join("\n"):JSON.stringify(c.content)}else c.content&&(a=JSON.stringify(c.content));let i={role:h.z7.TOOL,tool_call_id:c.tool_use_id,content:a};void 0!==c.is_error&&(i.is_error=!!c.is_error),e.push(i)}if(e.length>0)return b.length>0?[{role:h.z7.USER,content:(0,i.z)(b)},...e]:e;if(d.length>0){let a={role:h.z7.ASSISTANT};return b.length>0&&(a.content=(0,i.z)(b)),f&&(a.reasoning_content=f),j&&(a.reasoning_signature=j),a.tool_calls=d,a}if(b.length>0||f){let a={role:c};return b.length>0&&(a.content=(0,i.z)(b)),f&&(a.reasoning_content=f),j&&(a.reasoning_signature=j),a}if(0===a.content.length)return{role:c,content:""}}return null}(b.messages[a]);c&&(Array.isArray(c)?d.messages.push(...c):d.messages.push(c))}return function(a){for(let b=0;b<a.length;b++){let c=a[b];if(c.role===h.z7.ASSISTANT&&c.tool_calls&&c.tool_calls.length>0){let d=c.tool_calls.map(a=>a.id),e=new Set,f=b+1;for(let c=b+1;c<a.length;c++){let b=a[c];if(b.role===h.z7.TOOL&&b.tool_call_id)e.add(b.tool_call_id),f=c+1;else break}let g=d.filter(a=>!e.has(a));if(g.length>0){let c=g.map(a=>({role:h.z7.TOOL,tool_call_id:a,content:""}));a.splice(f,0,...c),b=f+c.length-1}}}}(d.messages),b.tools&&Array.isArray(b.tools)&&(d.tools=b.tools.map(a=>({type:h.x4.FUNCTION,function:{name:a.name,description:"string"==typeof a.description?a.description:String(a.description||""),parameters:(0,j.M)(a.input_schema||{type:"object",properties:{}})}}))),b.tool_choice&&(d.tool_choice=function(a){if(!a)return"auto";if("string"==typeof a)return"none"===a||"auto"===a||"required"===a?a:"auto";switch(a.type){case"auto":default:return"auto";case"none":return"none";case"any":return"required";case"tool":return{type:h.x4.FUNCTION,function:{name:a.name}}}}(b.tool_choice)),void 0!==b.reasoning_effort?d.reasoning_effort=b.reasoning_effort:b.reasoning?.effort!==void 0&&(d.reasoning_effort=b.reasoning.effort),void 0!==b.reasoning&&(d.reasoning=b.reasoning),d},null)},45518:(a,b,c)=>{var d,e,f,g,h,i=c(45654);function j(a,b){i.cipher.registerAlgorithm(a,function(){return new i.aes.Algorithm(a,b)})}c(66568),c(19396),c(33889),a.exports=i.aes=i.aes||{},i.aes.startEncrypting=function(a,b,c,d){var e=o({key:a,output:c,decrypt:!1,mode:d});return e.start(b),e},i.aes.createEncryptionCipher=function(a,b){return o({key:a,output:null,decrypt:!1,mode:b})},i.aes.startDecrypting=function(a,b,c,d){var e=o({key:a,output:c,decrypt:!0,mode:d});return e.start(b),e},i.aes.createDecryptionCipher=function(a,b){return o({key:a,output:null,decrypt:!0,mode:b})},i.aes.Algorithm=function(a,b){k||l();var c=this;c.name=a,c.mode=new b({blockSize:16,cipher:{encrypt:function(a,b){return n(c._w,a,b,!1)},decrypt:function(a,b){return n(c._w,a,b,!0)}}}),c._init=!1},i.aes.Algorithm.prototype.initialize=function(a){if(!this._init){var b,c=a.key;if("string"==typeof c&&(16===c.length||24===c.length||32===c.length))c=i.util.createBuffer(c);else if(i.util.isArray(c)&&(16===c.length||24===c.length||32===c.length)){b=c,c=i.util.createBuffer();for(var d=0;d<b.length;++d)c.putByte(b[d])}if(!i.util.isArray(c)){b=c,c=[];var e=b.length();if(16===e||24===e||32===e){e>>>=2;for(var d=0;d<e;++d)c.push(b.getInt32())}}if(!i.util.isArray(c)||4!==c.length&&6!==c.length&&8!==c.length)throw Error("Invalid key parameter.");var f=-1!==["CFB","OFB","CTR","GCM"].indexOf(this.mode.name);this._w=m(c,a.decrypt&&!f),this._init=!0}},i.aes._expandKey=function(a,b){return k||l(),m(a,b)},i.aes._updateBlock=n,j("AES-ECB",i.cipher.modes.ecb),j("AES-CBC",i.cipher.modes.cbc),j("AES-CFB",i.cipher.modes.cfb),j("AES-OFB",i.cipher.modes.ofb),j("AES-CTR",i.cipher.modes.ctr),j("AES-GCM",i.cipher.modes.gcm);var k=!1;function l(){k=!0,f=[0,1,2,4,8,16,32,64,128,27,54];for(var a=Array(256),b=0;b<128;++b)a[b]=b<<1,a[b+128]=b+128<<1^283;d=Array(256),e=Array(256),g=[,,,,],h=[,,,,];for(var b=0;b<4;++b)g[b]=Array(256),h[b]=Array(256);for(var c,i,j,l,m,n,o,p=0,q=0,b=0;b<256;++b){l=(l=q^q<<1^q<<2^q<<3^q<<4)>>8^255&l^99,d[p]=l,e[l]=p,m=a[l],c=a[p],i=a[c],j=a[i],n=m<<24^l<<16^l<<8^(l^m),o=(c^i^j)<<24^(p^j)<<16^(p^i^j)<<8^(p^c^j);for(var r=0;r<4;++r)g[r][p]=n,h[r][l]=o,n=n<<24|n>>>8,o=o<<24|o>>>8;0===p?p=q=1:(p=c^a[a[a[c^j]]],q^=a[a[q]])}}function m(a,b){for(var c,e=a.slice(0),g=1,i=e.length,j=4*(i+6+1),k=i;k<j;++k)c=e[k-1],k%i==0?(c=d[c>>>16&255]<<24^d[c>>>8&255]<<16^d[255&c]<<8^d[c>>>24]^f[g]<<24,g++):i>6&&k%i==4&&(c=d[c>>>24]<<24^d[c>>>16&255]<<16^d[c>>>8&255]<<8^d[255&c]),e[k]=e[k-i]^c;if(b){var l,m=h[0],n=h[1],o=h[2],p=h[3],q=e.slice(0);j=e.length;for(var k=0,r=j-4;k<j;k+=4,r-=4)if(0===k||k===j-4)q[k]=e[r],q[k+1]=e[r+3],q[k+2]=e[r+2],q[k+3]=e[r+1];else for(var s=0;s<4;++s)l=e[r+s],q[k+(3&-s)]=m[d[l>>>24]]^n[d[l>>>16&255]]^o[d[l>>>8&255]]^p[d[255&l]];e=q}return e}function n(a,b,c,f){var i,j,k,l,m,n,o,p,q,r,s,t,u=a.length/4-1;f?(i=h[0],j=h[1],k=h[2],l=h[3],m=e):(i=g[0],j=g[1],k=g[2],l=g[3],m=d),n=b[0]^a[0],o=b[f?3:1]^a[1],p=b[2]^a[2],q=b[f?1:3]^a[3];for(var v=3,w=1;w<u;++w)r=i[n>>>24]^j[o>>>16&255]^k[p>>>8&255]^l[255&q]^a[++v],s=i[o>>>24]^j[p>>>16&255]^k[q>>>8&255]^l[255&n]^a[++v],t=i[p>>>24]^j[q>>>16&255]^k[n>>>8&255]^l[255&o]^a[++v],q=i[q>>>24]^j[n>>>16&255]^k[o>>>8&255]^l[255&p]^a[++v],n=r,o=s,p=t;c[0]=m[n>>>24]<<24^m[o>>>16&255]<<16^m[p>>>8&255]<<8^m[255&q]^a[++v],c[f?3:1]=m[o>>>24]<<24^m[p>>>16&255]<<16^m[q>>>8&255]<<8^m[255&n]^a[++v],c[2]=m[p>>>24]<<24^m[q>>>16&255]<<16^m[n>>>8&255]<<8^m[255&o]^a[++v],c[f?1:3]=m[q>>>24]<<24^m[n>>>16&255]<<16^m[o>>>8&255]<<8^m[255&p]^a[++v]}function o(a){var b,c="AES-"+((a=a||{}).mode||"CBC").toUpperCase(),d=(b=a.decrypt?i.cipher.createDecipher(c,a.key):i.cipher.createCipher(c,a.key)).start;return b.start=function(a,c){var e=null;c instanceof i.util.ByteBuffer&&(e=c,c={}),(c=c||{}).output=e,c.iv=a,d.call(b,c)},b}},45654:a=>{a.exports={options:{usePureJavaScript:!1}}},45874:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>k,exportSettings:()=>l,getSettings:()=>j});var d=c(24081),e=c(50743);let f={stickyRoundRobinLimit:3,providerStrategies:{},providerSchedules:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:process.env.HEADROOM_URL||"http://localhost:8787",headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",pxpipeEnabled:!1,pxpipeAutoInstall:!0,pxpipeMinChars:25e3,pxpipeTimeoutMs:15e3,requireApiKey:!0,ssrfAllowHosts:[],capacityAdapter:{vision:{enabled:!0,roundRobin:!1,models:[]},pdf:{enabled:!1,roundRobin:!1,models:[]},audioInput:{enabled:!0,roundRobin:!1,models:[]},videoInput:{enabled:!1,roundRobin:!1,models:[]}}};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}let h={value:null,at:0};function i(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);let c=function(){let a=process.env.REQUIRE_API_KEY;if(null==a||""===a)return null;let b=String(a).trim().toLowerCase();return"1"===b||"true"===b||"yes"===b||"0"!==b&&"false"!==b&&"no"!==b&&null}();return null!==c&&(b.requireApiKey=c),b}async function j(){return h.value&&Date.now()-h.at<2e3?{...h.value}:{...(h={value:i(await g()),at:Date.now()}).value}}async function k(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h.at=0,i(b)}async function l(){return h.at=0,await g()}},46036:(a,b,c)=>{"use strict";c(68531)},46248:(a,b,c)=>{"use strict";c.d(b,{L:()=>t});var d=c(22256),e=c(60802),f=c(74570),g=c(22884),h=c(10793),i=c(44140),j=c(50969),k=c(77321),l=c(29137),m=c(49623);let n={combined:!0,header:"Authorization",scheme:"bearer"},o={combined:!0,header:"x-api-key",scheme:"raw"},p=Object.fromEntries(Object.entries(e.xq).filter(([,a])=>a.auth).map(([a,b])=>[a,b.auth]));function q(a,b,c){a[b.header]="bearer"===b.scheme?`Bearer ${c}`:c}let r={kimiHeaders:(a,b)=>Object.assign(a,(0,h.VK)(b?.providerSpecificData?.deviceId)),clineHeaders:(a,b)=>Object.assign(a,function(a,b={}){let c,d=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",{headers:e}=(0,i.fX)({...d?{Authorization:d}:{},...b},{identity:"cline"});return e}(b.apiKey||b.accessToken)),kilocodeOrg:(a,b)=>{b.providerSpecificData?.orgId&&(a["X-Kilocode-OrganizationID"]=b.providerSpecificData.orgId)}},s=Object.fromEntries(Object.entries(e.sr).filter(([,a])=>a.refresh).map(([a,b])=>{let c=b.tokenUrl,d=b.refresh.encoding,e=b.refresh.scope?{scope:b.refresh.scope}:{};return[a,{encoding:d,url:()=>c,params:c=>"gemini"===a?{client_id:c.config.clientId,client_secret:c.config.clientSecret,...e}:{client_id:b.clientId,...e}}]}));class t extends d.Hv{constructor(a){super(a,e.xq[a]||e.xq.openai)}transformRequest(a,b,c,e){super.transformRequest(a,b,c,e);let f=this.applyJsonSchemaFallback(b);if(f&&"object"==typeof f){this.config.quirks?.dropClientMetadata&&delete f.client_metadata,(0,l.c)(this.provider,a,f);let b=(0,g.jJ)(this.provider,e);c&&("openai"===b||"ollama"===b)&&Array.isArray(f.messages)&&!f.stream_options&&(f.stream_options={include_usage:!0}),(0,d._2)(this.config)?delete f.stream:c&&!0!==f.stream&&(f.stream=!0)}return(0,k.Z)({provider:this.provider,model:a,body:f})}applyJsonSchemaFallback(a){if(!this.provider?.startsWith?.("openai-compatible-"))return a;let b=a?.response_format;if(b?.type!=="json_schema"||!b.json_schema?.schema)return a;let c=JSON.stringify(b.json_schema.schema,null,2),d=`You must respond with valid JSON that strictly follows this JSON schema:
355
355
  \`\`\`json
356
356
  ${c}
357
357
  \`\`\`