switchboard-router 0.9.70 → 0.9.72

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 (384) hide show
  1. package/app/.next/static/chunks/1321-37ecf3f45c464e7e.js +1 -0
  2. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-5503dc94b3b73efc.js → page-c49c2c45881644c2.js} +1 -1
  3. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-6e36b61f4ae58378.js → page-15f9f168b6ba8411.js} +1 -1
  4. package/app/.next-cli-build/BUILD_ID +1 -1
  5. package/app/.next-cli-build/app-path-routes-manifest.json +17 -17
  6. package/app/.next-cli-build/build-manifest.json +2 -2
  7. package/app/.next-cli-build/prerender-manifest.json +3 -3
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  62. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  65. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  66. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  67. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  68. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  69. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  72. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  73. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  74. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  75. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  76. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  86. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  89. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  91. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  99. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  103. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  105. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  109. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  111. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/fx-settings/manual-configs/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/cli-tools/fx-settings/route.js +2 -2
  114. package/app/.next-cli-build/server/app/api/cli-tools/fx-settings/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +3 -3
  116. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  118. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/hermes-profiles/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  123. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  127. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  129. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/manual-configs/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/health/live/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +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/routable/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/models/routable/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/pricing/defaults/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/providers/[id]/overrides/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  262. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  302. package/app/.next-cli-build/server/app/callback.html +1 -1
  303. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  304. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  305. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  306. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  307. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  310. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  311. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  312. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  314. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/index.html +1 -1
  316. package/app/.next-cli-build/server/app/index.rsc +3 -3
  317. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  318. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  319. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  322. package/app/.next-cli-build/server/app/landing.html +1 -1
  323. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  324. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  325. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  326. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  327. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  329. package/app/.next-cli-build/server/app/login.html +1 -1
  330. package/app/.next-cli-build/server/app/login.rsc +4 -4
  331. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  332. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  334. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  337. package/app/.next-cli-build/server/app-paths-manifest.json +17 -17
  338. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  339. package/app/.next-cli-build/server/chunks/1757.js +1 -1
  340. package/app/.next-cli-build/server/chunks/2348.js +1 -1
  341. package/app/.next-cli-build/server/chunks/2574.js +1 -1
  342. package/app/.next-cli-build/server/chunks/2766.js +1 -1
  343. package/app/.next-cli-build/server/chunks/2770.js +1 -1
  344. package/app/.next-cli-build/server/chunks/629.js +1 -1
  345. package/app/.next-cli-build/server/chunks/7730.js +1 -0
  346. package/app/.next-cli-build/server/chunks/8102.js +1 -0
  347. package/app/.next-cli-build/server/chunks/8400.js +1 -1
  348. package/app/.next-cli-build/server/chunks/869.js +1 -1
  349. package/app/.next-cli-build/server/chunks/8998.js +3 -3
  350. package/app/.next-cli-build/server/chunks/9264.js +1 -1
  351. package/app/.next-cli-build/server/chunks/9353.js +1 -1
  352. package/app/.next-cli-build/server/chunks/9662.js +1 -1
  353. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  354. package/app/.next-cli-build/server/middleware.js +1 -1
  355. package/app/.next-cli-build/server/pages/404.html +1 -1
  356. package/app/.next-cli-build/server/pages/500.html +1 -1
  357. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  358. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  359. package/app/.next-cli-build/static/chunks/1321-37ecf3f45c464e7e.js +1 -0
  360. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/{page-5503dc94b3b73efc.js → page-c49c2c45881644c2.js} +1 -1
  361. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-6e36b61f4ae58378.js → page-15f9f168b6ba8411.js} +1 -1
  362. package/app/config-writers.cjs +2 -1
  363. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  364. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  365. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  366. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  367. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  368. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  369. package/app/package.json +1 -1
  370. package/app/public/providers/api-airforce.png +0 -0
  371. package/app/public/providers/grok-cli.png +0 -0
  372. package/app/public/providers/muse.png +0 -0
  373. package/app/public/providers/ollama-search.png +0 -0
  374. package/app/public/providers/opencode-zen.png +0 -0
  375. package/app/public/providers/venice.png +0 -0
  376. package/app/public/providers/vercel-ai-gateway.png +0 -0
  377. package/package.json +1 -1
  378. package/app/.next/static/chunks/1321-76df19b6a38e6fa9.js +0 -1
  379. package/app/.next-cli-build/server/chunks/6074.js +0 -1
  380. package/app/.next-cli-build/static/chunks/1321-76df19b6a38e6fa9.js +0 -1
  381. /package/app/.next/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_buildManifest.js +0 -0
  382. /package/app/.next/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_ssgManifest.js +0 -0
  383. /package/app/.next-cli-build/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_buildManifest.js +0 -0
  384. /package/app/.next-cli-build/static/{5WtWAuXu4p-ILkKMsJE4i → mIIf1bKJ8KlrHk03nHIsh}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9264,exports.ids=[845,6074,9264],exports.modules={249:(a,b,c)=>{c.d(b,{R8:()=>j,ar:()=>l,vB:()=>h});var d=c(43904);let e=["vision","pdf","audioInput","videoInput"],f=new Set(e);function g(a,b){var c;let d=Array.isArray(c=b?.capacityAdapter?.[a])?{enabled:!0,roundRobin:!1,models:c.map(a=>a?.model||a).filter(Boolean)}:c&&"object"==typeof c?{enabled:!1!==c.enabled,roundRobin:!!c.roundRobin,models:Array.isArray(c.models)?c.models.filter(Boolean):[]}:{enabled:!1,roundRobin:!1,models:[]};return d.enabled&&0===d.models.length?{...d,models:["oc/mimo-v2.6-flash-free"]}:d}function h(a,b){for(let c of[...a||[]].filter(a=>f.has(a))){let{enabled:a,models:d}=g(c,b);if(a&&0!==d.length)return function(a,b){let{enabled:c,roundRobin:d}=g(a,b);return c&&d?"round-robin":"fallback"}(c,b)}return"fallback"}function i(a,b){let c=a.indexOf("/"),e=c>0?a.slice(0,c):"",f=c>0?a.slice(c+1):a,g=(0,d.nl)(e,f);return b.every(a=>!0===g[a])}function j(a,b,c){let d=[...b||[]].filter(a=>f.has(a));if(0===d.length||!Array.isArray(a)||0===a.length||a.some(a=>i(a,d)))return a;let h=(function(a){let b=new Set,c=[];for(let d of e){let{enabled:e,models:f}=g(d,a);if(e)for(let a of f)b.has(a)||(b.add(a),c.push(a))}return c})(c).filter(b=>!a.includes(b)&&i(b,d));return 0===h.length?a:[...h,...a]}function k(a){return"string"==typeof a?a.length:Array.isArray(a)?a.reduce((a,b)=>a+("string"==typeof b?.text?b.text.length:50),0):0}function l(a,b){let c=new Set(b);return 0===c.size?a:(b,e,...f)=>{if(c.has(e)){let a=e.indexOf("/"),c=a>0?e.slice(0,a):"",f=a>0?e.slice(a+1):e,{contextWindow:g}=(0,d.nl)(c,f);b=function(a,b){let c=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":Array.isArray(a.contents)?"contents":null;if(!c)return a;let d=a[c];if(!d||0===d.length)return a;let e=a=>"system"===a||"developer"===a,f=d.filter(a=>e(a?.role)),g=d.filter(a=>!e(a?.role));if(0===g.length)return a;let h=a=>"assistant"===a||"model"===a,i=g.length-1;for(;i>=0&&!h(g[i]?.role);)i--;let j=g.slice(i+1),l=g.slice(0,i+1);if(0===l.length)return a;let m=a=>a.content??a.parts,n=.8*(b||2e5)*4;if(f.concat(l,j).reduce((a,b)=>a+k(m(b)),0)<=n)return a;let o=l.slice(0,6),p=f.concat(o,j).reduce((a,b)=>a+k(m(b)),0);for(;p>n&&o.length>0;)p-=k(m(o.pop()));return o.length===l.length?a:{...a,[c]:[...f,...o,...j]}}(b,g)}return a(b,e,...f)}}},428:(a,b,c)=>{c.d(b,{J:()=>k});var d=c(38775),e=c(67133),f=c(67828),g=c(66077),h=c(29461),i=c(50711),j=c(29952);async function k({body:a,models:b,routerModel:c=j.UH,log:l,timeoutMs:m=j.rc,clientKeyId:n=null,abortSignal:o}){let p;if(!Array.isArray(b)||b.length<=1)return null;let q="string"==typeof c&&c.trim()?c.trim():j.UH,r=(0,j.nn)(a);if(!r)return l?.debug?.("COMBO","smart-router: empty prompt state, skipping classification"),null;let s=(0,j.JE)(b);if(0===Object.keys(s).length)return null;let t=new AbortController,u=o?AbortSignal.any([o,t.signal]):t.signal,v=setTimeout(()=>t.abort(Error("System One router timed out")),m),w=new Promise((a,b)=>{p=()=>b(u.reason),u.aborted?p():u.addEventListener("abort",p,{once:!0})});try{return await Promise.race([w,(async()=>{u.throwIfAborted();let a=await (0,d.getModelInfo)(q);if(!a?.provider)return l?.warn?.("COMBO",`smart-router: unrecognized router model "${q}"`),null;u.throwIfAborted();let{provider:b,model:c}=a,k=await (0,e.getProviderCredentials)(b,new Set,c,{clientKeyId:n});if(!k||k.allRateLimited)return l?.warn?.("COMBO",`smart-router: no credentials available for router provider "${b}"`),null;u.throwIfAborted();let m=await (0,f.eU)(b,k);u.throwIfAborted();let o={model:c,state:r,questions:{route:{type:"choice",instructions:"Which of these configured models is the most appropriate for this request?",criteria:s}}},p=await (0,g.G)({provider:b,model:c,connectionId:k.connectionId},()=>(0,i.l)({body:o,modelInfo:{provider:b,model:c},credentials:m,log:l,abortSignal:u}));if(!p?.success||!p.response)return l?.warn?.("COMBO",`smart-router: evaluation failed (${p?.status||"error"})`),null;p.usage&&await (0,h.YZ)({provider:b,model:c,connectionId:k.connectionId,clientKeyId:n,endpoint:"/v1/systemone",tokens:p.usage});let t=await p.response.json(),v=(0,j.Kn)(t);return v&&v.choice?v:(l?.warn?.("COMBO","smart-router: response missing valid route choice"),null)})()])}catch(a){return l?.warn?.("COMBO",`smart-router: evaluation aborted (${a?.message||String(a)})`),null}finally{clearTimeout(v),u.removeEventListener("abort",p),t.abort()}}},3894:(a,b,c)=>{c.d(b,{F_:()=>g,Nc:()=>h,Qh:()=>t,Su:()=>q,ag:()=>o,kI:()=>p,rl:()=>u,sy:()=>s});var d=c(79646),e=c(33873),f=c.n(e);let g=["code","ml"],h={code:["tree-sitter","tree-sitter-language-pack"],ml:["torch","huggingface-hub"]},i="win32"===process.platform,j=i?"where":"which",k=i?[`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python313\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python312\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python311\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python310\\Scripts`,`${process.env.APPDATA||""}\\Python\\Python313\\Scripts`]:["/usr/local/bin","/opt/homebrew/bin","/Library/Frameworks/Python.framework/Versions/3.13/bin","/Library/Frameworks/Python.framework/Versions/3.12/bin","/Library/Frameworks/Python.framework/Versions/3.11/bin","/Library/Frameworks/Python.framework/Versions/3.10/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],l=[...k,process.env.PATH||""].filter(Boolean).join(f().delimiter),m=["python3.13","python3.12","python3.11","python3.10","python3","python"],n=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]),o=process.env.HEADROOM_URL||"http://localhost:8787";function p(){try{let a=(0,d.execSync)(`${j} headroom`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function q(){let a=null;for(let b of function(){let a=[],b=p();if(b){let c=f().dirname(b);for(let b of i?["python.exe","python3.exe"]:["python3","python3.13","python"])a.push(f().join(c,b))}for(let b of k)if(b)for(let c of m)a.push(f().join(b,i?`${c}.exe`:c));return a.push(...m),a}())try{let c=(0,d.execSync)(`${b} --version`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim().match(/(\d+)\.(\d+)/);if(!c)continue;let[e,f]=[parseInt(c[1],10),parseInt(c[2],10)];if(!(e>3||3===e&&f>=10))continue;a||(a=b);try{return(0,d.execFileSync)(b,["-m","pip","show","headroom-ai"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}),b}catch{}}catch{}return a}async function r(a){if(!a)return!1;let b=String(a).replace(/\/$/,"");try{return(await fetch(`${b}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function s(a){try{let b=new URL(a);return n.has(b.hostname)}catch{return!1}}async function t(a){let b=p(),c=q(),d=!!b,e=await r(a),f=s(a),g=d?u(c):{installed:!1,version:null,extras:{code:!1,ml:!1}};return{installed:d,path:b,running:e,python:c,localUrl:f,canStart:d&&f,version:g.version,extras:g.extras}}function u(a){let b=a||q();if(!b)return{installed:!1,version:null,extras:{code:!1,ml:!1}};try{let a=(0,d.execFileSync)(b,["-m","pip","list","--format=json","--disable-pip-version-check"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}).toString(),c=JSON.parse(a),e=new Set(c.map(a=>String(a.name||"").toLowerCase()));if(!e.has("headroom-ai"))return{installed:!1,version:null,extras:{code:!1,ml:!1}};let f=c.find(a=>a.name?.toLowerCase()==="headroom-ai")?.version||null,i={};for(let a of g)i[a]=h[a].some(a=>e.has(a));return{installed:!0,version:f,extras:i}}catch{return{installed:!1,version:null,extras:{code:!1,ml:!1}}}}},14551:(a,b,c)=>{c.d(b,{w:()=>g});var d=c(43904),e=c(38775),f=c(60290);let g=function({findComboModels:a=e.getComboModels,findCapabilities:b=d.nl}={}){return async function c(d,e=0){if(e>f.wg)return{};let g=await a(d);if(!g){let[a,...c]=d.split("/"),e=c.join("/")||a;return b(a,e)||{}}let h={vision:!1,pdf:!1,tools:!1};for(let a of g){let b=await c(a,e+1);h.vision||=!!b.vision,h.pdf||=!!b.pdf,h.tools||=!1!==b.tools}return h}}()},17382:(a,b,c)=>{c.d(b,{tW:()=>g,tg:()=>h,zw:()=>i});var d=c(60845),e=c(89865),f=c(60290);function g({comboName:a,skipped:b,log:c}){let h=Math.max(Math.min(...b.map(a=>a.untilMs))-Date.now(),6e4),i=b.map(a=>`${a.model} (${a.availability}; ${a.provider} is ${"peak"===a.status?"peak":"off-peak"})`).join("; "),j=`Combo "${a}": all models are outside their allowed hours — ${i}. Set a member to "Any time" in the combo editor to allow it regardless of schedule.`;return c?.info?.("SCHEDULE",`BLOCKED ${j} (retry in ${(0,d.zt)(h)})`),(0,e.wO)(f.gx.SERVICE_UNAVAILABLE,j,new Date(Date.now()+h),`next eligible model in ${(0,d.zt)(h)}`)}function h({models:a,comboName:b,settings:c,log:e,nowMs:f}){let i=c?.comboStrategies?.[b]?.modelAvailability;if(!Array.isArray(a)||!a.length||!i||"object"!=typeof i||!Object.keys(i).length)return{models:a,skipped:[],blocked:!1,response:null};let j=c?.providerSchedules||{},{models:k,skipped:l}=(0,d.zY)(a,j,i,f);for(let a of l){let b=new Date(a.untilMs).toISOString();e?.info?.("SCHEDULE",`skipped ${a.model} (${a.availability}; ${a.provider} is ${"peak"===a.status?"peak":"off-peak"} until ${b})`)}return!k.length&&l.length?{models:[],skipped:l,blocked:!0,response:g({comboName:b,skipped:l,log:e})}:{models:k,skipped:l,blocked:!1,response:null}}function i(a,b){if(!Array.isArray(b)||!b.length)return a;let c=!1;return d=>(c||(c=!0,d={...d,meta:{...d?.meta||{},scheduleSkips:b.map(a=>({model:a.model,provider:a.provider,availability:a.availability,status:a.status,until:new Date(a.untilMs).toISOString()}))}}),a(d))}},24253:(a,b,c)=>{c.d(b,{Mo:()=>i,RG:()=>m,V:()=>j,Y8:()=>l,xl:()=>n});var d=c(29021),e=c(1932),f=c(87155);let g=null,h=null;function i(){return g?{loaded:!0,version:g.version,loadedAt:g.loadedAt}:{loaded:!1}}async function j(){return g||h||(h=k().finally(()=>{h=null}))}async function k(){let a=(0,f.S1)();if(!a.installed){let a=Error("PXPIPE is not installed");throw a.code="NOT_INSTALLED",a}let b=0;try{b=(0,d.statSync)((0,f.CG)()).mtimeMs}catch{}let c=encodeURIComponent(`${a.version||"0"}:${Math.trunc(b)}`),h=`${(0,e.pathToFileURL)((0,f.CG)()).href}?v=${c}`,i=await import(h);if("function"!=typeof i.transformAnthropicMessages)throw Error("installed pxpipe package does not export transformAnthropicMessages");return g={module:i,version:a.version,loadedAt:Date.now()}}function l(){let a=!!g;return g=null,a}async function m({autoLoad:a=!0}={}){try{if(!g&&!a)return null;let{module:b}=await j();return b.transformAnthropicMessages}catch{return null}}async function n(){let a=Date.now(),{module:b}=await j(),c=new TextEncoder().encode(JSON.stringify({model:"claude-fable-5",max_tokens:16,messages:[{role:"user",content:"ping"}]})),d=await b.transformAnthropicMessages({body:c,model:"claude-fable-5"});if(!d||"boolean"!=typeof d.applied||!(d.body instanceof Uint8Array))throw Error("transform returned an unexpected shape");return{ok:!0,reason:d.reason,durationMs:Date.now()-a}}},27811:(a,b,c)=>{c.d(b,{K2:()=>q,Wl:()=>j,j:()=>u,ji:()=>t,sH:()=>s,xP:()=>k});var d=c(59353),e=c(38775),f=c(40615),g=c(1486);let h=a=>String(a).toLowerCase(),i=(a,b)=>h(`${a}/${b}`);function j(a){let b=a?.headers;if(!b?.get)return null;let c=(0,g.d)(b);if(c)return c;try{return new URL(a.url).searchParams.get("key")||null}catch{return null}}function k(a){let b=[...Array.isArray(a?.allowedModels)?a.allowedModels:[],...Array.isArray(a?.allowedCombos)?a.allowedCombos:[]].map(a=>String(a??"").trim()).filter(Boolean);return 0===b.length?null:{keyId:a.id,keyName:a.name||a.id,allow:b,_sets:null}}function l(a,b){if(!b||"string"!=typeof b)return!1;let c=b.trim().toLowerCase();if(!c.includes("*"))return!1;if("*"===c)return!0;let d=String(a||"").trim().toLowerCase(),e=c.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return RegExp(`^${e}$`,"i").test(d)}function m(a,b,c){if(!Array.isArray(c)||0===c.length)return!1;for(let d of c){if(l(b,d)||l(a,d))return!0;let c=/^([^/*]+)\/\*$/.exec(String(d||"").trim().toLowerCase());if(c){let b=(0,f.rs)(c[1]);if(b&&a.startsWith(`${b}/`))return!0}}return!1}function n(a,b,c){for(let d of a.deny){if(l(b,d)||l(c,d))return!0;let a=String(b||"").toLowerCase(),e=a.includes("/")?a.split("/").slice(1).join("/"):a;if(!d.includes("*")&&(a.includes(d)||e.includes(d)||String(c||"").toLowerCase().includes(d)))return!0}return!1}async function o(a){if(a._sets)return a._sets;let b=new Set((await (0,d.Uv)()).map(a=>h(a.name))),c=new Set,g=new Set,j=new Set,k=[],l=0;for(let d of a.allow){let a=String(d??"").trim();if((a.startsWith("!")||a.startsWith("-"))&&a.length>1){k.push(a.slice(1).toLowerCase());continue}l+=1;let m=h(d);if(b.has(m)){c.add(m);continue}let n=await (0,e.getModelInfo)(d);n?.provider&&n.model&&g.add(i(n.provider,n.model)),d.includes("/")||j.add(h((0,f.rs)(d)))}return a._sets={combos:c,models:g,providers:j,deny:k,openExceptDenied:k.length>0&&0===l},a._sets}async function p(a,b){let c=await o(a),d=await (0,e.getModelInfo)(b);if(!d?.provider)return c.combos.has(h(b))||c.openExceptDenied;let f=i(d.provider,d.model);return!n(c,b,f)&&(!!(c.openExceptDenied||c.models.has(f))||m(f,b,a.allow))}async function q(a,b){if(!a)return!0;if("string"!=typeof b||!b)return!1;let c=await o(a),d=await (0,e.getComboModels)(b);return d?!n(c,b,b)&&!!(c.combos.has(h(b))||c.openExceptDenied||m(b,b,a.allow))&&!await r(c,d,new Set([b])):await p(a,b)}async function r(a,b,c,d=!1){for(let g of b){if("string"!=typeof g||c.has(g)||n(a,g,g))return!0;let b=await (0,e.getComboModels)(g);if(b){if(await r(a,b,new Set([...c,g]),d))return!0}else if(d){if(n(a,g,(0,f.rs)(g)))return!0}else{let b=await (0,e.getModelInfo)(g);if(!b?.provider||!b.model||n(a,g,i(b.provider,b.model)))return!0}}return!1}async function s(a,b,c,d){if(!a)return!0;let e=b||(c?`${c}/${d??""}`:"");if(!c||!d)return!1;let f=await o(a),g=i(c,d);return!n(f,e,g)&&(!!(f.models.has(g)||m(g,e,a.allow))||!!f.openExceptDenied)}async function t(a,b,c){if(!a)return!0;if("string"!=typeof b||!b)return!1;let d=await o(a),e=h((0,f.rs)(b));return!n(d,b,e)&&(c?!!(d.combos.has(h(b))||d.openExceptDenied||m(b,b,a.allow))&&!await r(d,c,new Set([b]),!0):d.providers.has(e)||d.openExceptDenied||m(e,b,a.allow))}async function u(a,b){if(!a||!Array.isArray(b))return b;let c=await o(a),d=[];for(let f of b){if(!f?.id)continue;if("combo"===f.owned_by){await q(a,f.id)&&d.push(f);continue}let b=await (0,e.getModelInfo)(f.id);if(!b?.provider)continue;if("webSearch"===f.kind||"webFetch"===f.kind){!n(c,f.id,b.provider)&&(c.providers.has(h(b.provider))||c.openExceptDenied||m(f.id,f.id,a.allow))&&d.push(f);continue}let g=i(b.provider,b.model);!n(c,f.id,g)&&(c.models.has(g)||c.openExceptDenied||m(g,f.id,a.allow))&&d.push(f)}return d}},50711:(a,b,c)=>{c.d(b,{l:()=>n});var d=c(89865),e=c(60290),f=c(45350),g=c(29485),h=c(554),i=c(83204),j=c(12407),k=c(46052);let l=new Set(["opencode"]),m=new Set(["ollama-local"]);async function n({body:a,modelInfo:b,credentials:c,log:o,onRequestSuccess:p,abortSignal:q}){let r,s,{provider:t,model:u}=b,v=f.B$[t]?.systemoneConfig,w=f.xq[t]||{},x=AbortSignal.timeout(e.pH),y=q?AbortSignal.any([q,x]):x,z=function(a,b){let c=a?.trim();if(!c)return b?.baseUrl;if(!b?.path)return c;let d=c.replace(/\/+$/,""),e=b.path.replace(/\/+$/,"");if(d.endsWith(e))return d;let f=e.slice(0,e.lastIndexOf("/"));return f&&d.endsWith(f)?d+e.slice(f.length):d+e}(c?.providerSpecificData?.baseUrl,v);if(!z)return(0,d.A1)(e.gx.BAD_REQUEST,`Provider '${t}' does not support System One.`);if(z.includes("{accountId}")){let a=c?.providerSpecificData?.accountId;if(!a)return(0,d.A1)(e.gx.BAD_REQUEST,`Provider '${t}' requires accountId in providerSpecificData.`);z=z.replace("{accountId}",a)}if(z.includes("{model}")&&(z=z.replace(/\{model\}/g,u)),void 0===a.state||null===a.state)return(0,d.A1)(e.gx.BAD_REQUEST,"Missing required field: state");if(!a.questions||"object"!=typeof a.questions||Array.isArray(a.questions))return(0,d.A1)(e.gx.BAD_REQUEST,"Missing required field: questions");let A=c?.apiKey||c?.accessToken,B={"Content-Type":"application/json",...A?{Authorization:`Bearer ${A}`}:{},...v.headers||{},...l.has(t)?{"x-opencode-session":(0,h.f6)()}:{}},C={...a,model:(0,g.kt)(t,u)||u};o?.debug?.("SYSTEMONE",`${t.toUpperCase()} | ${u}`);let D=null;try{D=(await (0,j.oC)().getSettings?.())?.ssrfAllowHosts||null}catch{}try{m.has(t)||await (0,i.h)(z,D),r=await (0,k.Fm)(z,{method:"POST",headers:B,body:JSON.stringify(C),redirect:"error",signal:y,identity:v.identity||w.identity||"openai-node",provider:t,format:v.format||"openai"},(0,k.$6)(c))}catch(b){if(q?.aborted)return(0,d.A1)(499,"System One request aborted");let a=(0,d.lR)(b,t,u,e.gx.BAD_GATEWAY);return o?.debug?.("SYSTEMONE",`Fetch error: ${a}`),(0,d.A1)(e.gx.BAD_GATEWAY,a)}if(!r.ok){let{statusCode:a,message:b}=await (0,d.zL)(r),c=(0,d.lR)(Error(b),t,u,a);return o?.debug?.("SYSTEMONE",`Provider error: ${c}`),(0,d.A1)(a,c)}try{s=await r.json()}catch{if(q?.aborted)return(0,d.A1)(499,"System One request aborted");return(0,d.A1)(e.gx.BAD_GATEWAY,`Invalid JSON response from ${t}`)}p&&await p();let E=s?.usage;return{success:!0,usage:E?{prompt_tokens:E.input_tokens??E.prompt_tokens??0,completion_tokens:E.output_tokens??E.completion_tokens??0}:null,response:new Response(JSON.stringify(s),{headers:{"Content-Type":"application/json"}})}}},52007:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},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`}},66077:(a,b,c)=>{c.d(b,{G:()=>e});var d=c(23832);async function e({provider:a,model:b,connectionId:c},f){if(!c||"noauth"===c)return f();let g=!1,h=()=>{g||(g=!0,(0,d.uw)(b,a,c,!1))};(0,d.uw)(b,a,c,!0);try{let a=await f();if(a instanceof Response){if(!(a instanceof Response)||!a.body)return h(),a;let b=a.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:c,value:d}=await b.read();c?(h(),a.close()):a.enqueue(d)}catch(b){h(),a.error(b)}},async cancel(a){try{await b.cancel(a)}finally{h()}}}),{status:a.status,statusText:a.statusText,headers:a.headers})}return h(),a}catch(a){throw h(),a}}},66455:(a,b,c)=>{c.d(b,{V:()=>e});let d=/\[1m\]$/i;function e(a){if("string"!=typeof a)return{model:a,contextMarker:null};let b=a.trim(),c=b.match(d);return c?{model:b.slice(0,-c[0].length),contextMarker:c[0].slice(1,-1).toLowerCase()}:{model:a,contextMarker:null}}},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},78102:(a,b,c)=>{c.d(b,{DM:()=>m,LI:()=>j,yH:()=>n});var d=c(59353),e=c(68658),f=c(41460),g=c(27811);function h(){return global._clientKeyPolicyState}function i(a,b){if(!a)return!0;let c=(0,g.xP)(b);return!c||(a.resolved?(0,g.sH)(c,a.id,a.provider,a.model):"provider"===a.role?(0,g.ji)(c,a.id,a.comboModels||null):(0,g.K2)(c,a.id))}async function j(a,b){return await i(b,a)?null:k(403,"client_key_target_not_allowed")}function k(a,b,c=null,d=null){let e={"content-type":"application/json"};return null!=c&&(e["retry-after"]=String(c)),{ok:!1,response:new Response(JSON.stringify({error:{message:d||"API key policy rejected this request",type:"client_key_policy_error",code:b}}),{status:a,headers:e})}}function l(a){return{ok:!0,mode:a,clientKey:null,clientKeyId:null,lease:null}}async function m({settings:a,rawKey:b,request:c,target:g}){if(c&&(0,e.v5)(c))return l("local");if(c)try{if(await (0,f.gN)(c))return l("cli")}catch{}if(!b)return a?.requireApiKey?k(401,"missing_api_key"):l("local");let j=await (0,d.PW)(b,{includeInactive:!0});if(!j)return a?.requireApiKey?k(401,"invalid_api_key"):l("local");if(!1===j.isActive)return k(401,"client_key_paused");let n=Date.now();if(j.expiresAt&&new Date(j.expiresAt).getTime()<=n)return k(403,"client_key_expired");if(!await i(g,j))return k(403,"client_key_target_not_allowed");if(null!=j.spendLimitUsd){let a=await (0,d.fz)(j.id);if(j.spentUsd=a,a>=j.spendLimitUsd)return k(429,"client_key_spend_limit_exceeded")}if(null!=j.tokenLimit&&j.tokenLimit>0){let a=Number(j.usedTokens||0);if(a>=j.tokenLimit)return k(429,"client_key_token_quota_exceeded",null,`Token limit exceeded for this API key (${a.toLocaleString()} / ${j.tokenLimit.toLocaleString()} tokens used)`)}let o=h().byId.get(j.id);if((!o||n-o.windowStartedAt>=6e4)&&(o={windowStartedAt:n,acceptedStarts:0,inFlight:o?.inFlight||0},h().byId.set(j.id,o)),null!=j.concurrencyLimit&&o.inFlight>=j.concurrencyLimit)return k(429,"client_key_concurrency_limit_exceeded",1);if(null!=j.rateLimitPerMinute&&o.acceptedStarts>=j.rateLimitPerMinute)return k(429,"client_key_rate_limit_exceeded",Math.max(1,Math.ceil((6e4-(n-o.windowStartedAt))/1e3)));o.acceptedStarts++,o.inFlight++;let p=!1;return{ok:!0,mode:"api-key",clientKey:j,clientKeyId:j.id,lease:{release(){if(p)return;p=!0;let a=h().byId.get(j.id);a&&(a.inFlight=Math.max(0,a.inFlight-1))}}}}async function n(a,b){let c;if(!a)return await b();let d=!1,e=()=>{d||(d=!0,a.release())};try{c=await b()}catch(a){throw e(),a}if(!(c instanceof Response&&c.body&&(c.headers.get("content-type")||"").toLowerCase().includes("text/event-stream")))return e(),c;let f=c.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:b,value:c}=await f.read();b?(e(),a.close()):a.enqueue(c)}catch(b){e(),a.error(b)}},async cancel(a){e(),await f.cancel(a)}}),{status:c.status,statusText:c.statusText,headers:c.headers})}global._clientKeyPolicyState||(global._clientKeyPolicyState={byId:new Map})},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>X});var e=c(30369);c(40863);var f=c(67133),g=c(45974),h=c(85605),i=c(5425),j=c(91576),k=c(59353),l=c(5781),m=c(38775),n=c(85432),o=c(17382),p=c(36362),q=c(3894),r=c(24253),s=c(52007),t=c(89865),u=c(62662),v=c(3072),w=c(249),x=c(61522),y=c(1996),z=c(2735),A=c(60290),B=c(19956),C=c(86187),D=c(23928),E=c(7803),F=c(81294),G=c(14551),H=c(67828),I=c(15186),J=c(428),K=c(66455),L=c(78102),M=c(91686),N=c(2142),O=c(19978),P=a([e,p]);async function Q(a,b={}){let c=b?.activeLearningVersionId;return c?(0,O.PO)(`learning:id:${c}`,()=>(0,N.dN)(c)):(0,O.PO)((0,O.C5)(a),()=>(0,N.p3)(a))}async function R(a,b=14){let c=Math.min(90,Math.max(1,Number(b)||14));return(0,O.PO)((0,O.Hr)(a,c),()=>(0,N.GU)(a,c))}async function S(a){try{let b=await (0,O.PO)(`provlat:${a}`,()=>(0,N.OQ)(a),15e3);return b&&"object"==typeof b?b:{}}catch{return{}}}async function T(){try{return await (0,O.PO)("provusage:7d",()=>(0,k.vY)(7),15e3)}catch{return{}}}async function U(){try{let a=await (0,l.getProviderQuotaHeadroom)();return a&&"object"==typeof a?a:{}}catch{return{}}}async function V(a){let[b,c]=await Promise.all([S(14),T()]),d="quota-first"===a.providerStrategy?await U():{};return{providerStrategy:a.providerStrategy,providerOrder:Array.isArray(a.providerOrder)?a.providerOrder:[],providerLatencyMs:b,providerUsage:c,providerQuota:d,providerLatencyGuardMs:a.providerLatencyGuardMs}}function W({headers:a,body:b}={}){let c=b=>{try{return a?.get?.(b)||null}catch{return null}},d=c("x-session-id")||c("x-opencode-session-id")||c("anthropic-session-id")||(b?.metadata&&"object"==typeof b.metadata?b.metadata.session_id||b.metadata.user_id:null)||b?.session_id||null;return d&&"string"==typeof d?d:null}async function X(a,b=null){let c;try{c=await a.json()}catch{return E.warn("CHAT","Invalid JSON body"),(0,t.yj)(A.gx.BAD_REQUEST,"Invalid JSON body")}if(!c||"object"!=typeof c||Array.isArray(c))return E.warn("CHAT","Invalid JSON body shape"),(0,t.yj)(A.gx.BAD_REQUEST,"Invalid JSON body");b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let d=new URL(a.url),{model:e,contextMarker:g}=(0,K.V)(c.model);g&&(c.model=e);let h=c.messages?.length||c.input?.length||0,j=c.tools?.length||0,l=c.reasoning_effort||c.reasoning?.effort||null;E.request("POST",`${d.pathname} | ${e} | ${h} msgs${j?` | ${j} tools`:""}${l?` | effort=${l}`:""}`);let n=await (0,k.mt)(),p=e?await (0,m.getComboModels)(e):null,q=await (0,L.DM)({settings:n,rawKey:(0,f.Tr)(a),request:a,target:{kind:p?"combo":"model",id:e}});if(!q.ok)return q.response;if(b?.headers){let a=new Set(["authorization","x-switchboard-key","x-api-key","x-goog-api-key"]);b={...b,headers:Object.fromEntries(Object.entries(b.headers).filter(([b])=>!a.has(b.toLowerCase())))}}return(0,L.yH)(q.lease,async()=>{let{clientKeyId:d}=q;if(!e)return E.warn("CHAT","Missing model"),(0,t.yj)(A.gx.BAD_REQUEST,"Missing model");let f=a?.headers?.get("user-agent")||"",g=a?.headers?.get("x-connection-id")||null,h=a?.headers?.get("x-switchboard-strict-connection")==="1",j=(0,z.c)(c,e,f,!!n.ccFilterNaming);if(j)return j.response||j;try{let b=!!Array.isArray(c.messages)&&!!c.messages.length&&(0,D.Gz)(c.messages);if(((0,D.sN)()||b)&&Array.isArray(c.messages)&&c.messages.length){let f=(0,B.t)(new URL(a.url).pathname,c),g=(0,D.EN)(d||"local-no-key"),h=(0,D.Mc)(c.messages),i=(0,D.sO)(h.firstUserText,g),j="openai"===f?(0,D.A4)(g,i):null;if(j){let a=h.priorAssistantHasAsk?(0,D.T6)(h.latestUserText):null;if(null!=a){let b=(0,D.of)(a);try{await (0,N.ii)(j.requestId,b),await (0,F.f)(j.requestId,b)}catch{}return(0,D.LH)(g,i),(0,D.g2)(g),E.info?.("FEEDBACK",`captured rating ${b} for ${j.requestId}`),function(a,b){let c=Date.now(),d=`chatcmpl-fb-${c}`,e=Math.floor(c/1e3);if(!a)return new Response(JSON.stringify({id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:{role:"assistant",content:"Thanks — noted."},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});let f=new TextEncoder,g=a=>({id:d,object:"chat.completion.chunk",created:e,model:b,choices:a}),h=new ReadableStream({start(a){a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{role:"assistant"},finish_reason:null}]))}
1
+ "use strict";exports.id=9264,exports.ids=[845,7133,9264],exports.modules={249:(a,b,c)=>{c.d(b,{R8:()=>j,ar:()=>l,vB:()=>h});var d=c(43904);let e=["vision","pdf","audioInput","videoInput"],f=new Set(e);function g(a,b){var c;let d=Array.isArray(c=b?.capacityAdapter?.[a])?{enabled:!0,roundRobin:!1,models:c.map(a=>a?.model||a).filter(Boolean)}:c&&"object"==typeof c?{enabled:!1!==c.enabled,roundRobin:!!c.roundRobin,models:Array.isArray(c.models)?c.models.filter(Boolean):[]}:{enabled:!1,roundRobin:!1,models:[]};return d.enabled&&0===d.models.length?{...d,models:["oc/mimo-v2.6-flash-free"]}:d}function h(a,b){for(let c of[...a||[]].filter(a=>f.has(a))){let{enabled:a,models:d}=g(c,b);if(a&&0!==d.length)return function(a,b){let{enabled:c,roundRobin:d}=g(a,b);return c&&d?"round-robin":"fallback"}(c,b)}return"fallback"}function i(a,b){let c=a.indexOf("/"),e=c>0?a.slice(0,c):"",f=c>0?a.slice(c+1):a,g=(0,d.nl)(e,f);return b.every(a=>!0===g[a])}function j(a,b,c){let d=[...b||[]].filter(a=>f.has(a));if(0===d.length||!Array.isArray(a)||0===a.length||a.some(a=>i(a,d)))return a;let h=(function(a){let b=new Set,c=[];for(let d of e){let{enabled:e,models:f}=g(d,a);if(e)for(let a of f)b.has(a)||(b.add(a),c.push(a))}return c})(c).filter(b=>!a.includes(b)&&i(b,d));return 0===h.length?a:[...h,...a]}function k(a){return"string"==typeof a?a.length:Array.isArray(a)?a.reduce((a,b)=>a+("string"==typeof b?.text?b.text.length:50),0):0}function l(a,b){let c=new Set(b);return 0===c.size?a:(b,e,...f)=>{if(c.has(e)){let a=e.indexOf("/"),c=a>0?e.slice(0,a):"",f=a>0?e.slice(a+1):e,{contextWindow:g}=(0,d.nl)(c,f);b=function(a,b){let c=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":Array.isArray(a.contents)?"contents":null;if(!c)return a;let d=a[c];if(!d||0===d.length)return a;let e=a=>"system"===a||"developer"===a,f=d.filter(a=>e(a?.role)),g=d.filter(a=>!e(a?.role));if(0===g.length)return a;let h=a=>"assistant"===a||"model"===a,i=g.length-1;for(;i>=0&&!h(g[i]?.role);)i--;let j=g.slice(i+1),l=g.slice(0,i+1);if(0===l.length)return a;let m=a=>a.content??a.parts,n=.8*(b||2e5)*4;if(f.concat(l,j).reduce((a,b)=>a+k(m(b)),0)<=n)return a;let o=l.slice(0,6),p=f.concat(o,j).reduce((a,b)=>a+k(m(b)),0);for(;p>n&&o.length>0;)p-=k(m(o.pop()));return o.length===l.length?a:{...a,[c]:[...f,...o,...j]}}(b,g)}return a(b,e,...f)}}},428:(a,b,c)=>{c.d(b,{J:()=>k});var d=c(38775),e=c(67133),f=c(67828),g=c(66077),h=c(29461),i=c(50711),j=c(29952);async function k({body:a,models:b,routerModel:c=j.UH,log:l,timeoutMs:m=j.rc,clientKeyId:n=null,abortSignal:o}){let p;if(!Array.isArray(b)||b.length<=1)return null;let q="string"==typeof c&&c.trim()?c.trim():j.UH,r=(0,j.nn)(a);if(!r)return l?.debug?.("COMBO","smart-router: empty prompt state, skipping classification"),null;let s=(0,j.JE)(b);if(0===Object.keys(s).length)return null;let t=new AbortController,u=o?AbortSignal.any([o,t.signal]):t.signal,v=setTimeout(()=>t.abort(Error("System One router timed out")),m),w=new Promise((a,b)=>{p=()=>b(u.reason),u.aborted?p():u.addEventListener("abort",p,{once:!0})});try{return await Promise.race([w,(async()=>{u.throwIfAborted();let a=await (0,d.getModelInfo)(q);if(!a?.provider)return l?.warn?.("COMBO",`smart-router: unrecognized router model "${q}"`),null;u.throwIfAborted();let{provider:b,model:c}=a,k=await (0,e.getProviderCredentials)(b,new Set,c,{clientKeyId:n});if(!k||k.allRateLimited)return l?.warn?.("COMBO",`smart-router: no credentials available for router provider "${b}"`),null;u.throwIfAborted();let m=await (0,f.eU)(b,k);u.throwIfAborted();let o={model:c,state:r,questions:{route:{type:"choice",instructions:"Which of these configured models is the most appropriate for this request?",criteria:s}}},p=await (0,g.G)({provider:b,model:c,connectionId:k.connectionId},()=>(0,i.l)({body:o,modelInfo:{provider:b,model:c},credentials:m,log:l,abortSignal:u}));if(!p?.success||!p.response)return l?.warn?.("COMBO",`smart-router: evaluation failed (${p?.status||"error"})`),null;p.usage&&await (0,h.YZ)({provider:b,model:c,connectionId:k.connectionId,clientKeyId:n,endpoint:"/v1/systemone",tokens:p.usage});let t=await p.response.json(),v=(0,j.Kn)(t);return v&&v.choice?v:(l?.warn?.("COMBO","smart-router: response missing valid route choice"),null)})()])}catch(a){return l?.warn?.("COMBO",`smart-router: evaluation aborted (${a?.message||String(a)})`),null}finally{clearTimeout(v),u.removeEventListener("abort",p),t.abort()}}},3894:(a,b,c)=>{c.d(b,{F_:()=>g,Nc:()=>h,Qh:()=>t,Su:()=>q,ag:()=>o,kI:()=>p,rl:()=>u,sy:()=>s});var d=c(79646),e=c(33873),f=c.n(e);let g=["code","ml"],h={code:["tree-sitter","tree-sitter-language-pack"],ml:["torch","huggingface-hub"]},i="win32"===process.platform,j=i?"where":"which",k=i?[`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python313\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python312\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python311\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python310\\Scripts`,`${process.env.APPDATA||""}\\Python\\Python313\\Scripts`]:["/usr/local/bin","/opt/homebrew/bin","/Library/Frameworks/Python.framework/Versions/3.13/bin","/Library/Frameworks/Python.framework/Versions/3.12/bin","/Library/Frameworks/Python.framework/Versions/3.11/bin","/Library/Frameworks/Python.framework/Versions/3.10/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],l=[...k,process.env.PATH||""].filter(Boolean).join(f().delimiter),m=["python3.13","python3.12","python3.11","python3.10","python3","python"],n=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]),o=process.env.HEADROOM_URL||"http://localhost:8787";function p(){try{let a=(0,d.execSync)(`${j} headroom`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function q(){let a=null;for(let b of function(){let a=[],b=p();if(b){let c=f().dirname(b);for(let b of i?["python.exe","python3.exe"]:["python3","python3.13","python"])a.push(f().join(c,b))}for(let b of k)if(b)for(let c of m)a.push(f().join(b,i?`${c}.exe`:c));return a.push(...m),a}())try{let c=(0,d.execSync)(`${b} --version`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim().match(/(\d+)\.(\d+)/);if(!c)continue;let[e,f]=[parseInt(c[1],10),parseInt(c[2],10)];if(!(e>3||3===e&&f>=10))continue;a||(a=b);try{return(0,d.execFileSync)(b,["-m","pip","show","headroom-ai"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}),b}catch{}}catch{}return a}async function r(a){if(!a)return!1;let b=String(a).replace(/\/$/,"");try{return(await fetch(`${b}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function s(a){try{let b=new URL(a);return n.has(b.hostname)}catch{return!1}}async function t(a){let b=p(),c=q(),d=!!b,e=await r(a),f=s(a),g=d?u(c):{installed:!1,version:null,extras:{code:!1,ml:!1}};return{installed:d,path:b,running:e,python:c,localUrl:f,canStart:d&&f,version:g.version,extras:g.extras}}function u(a){let b=a||q();if(!b)return{installed:!1,version:null,extras:{code:!1,ml:!1}};try{let a=(0,d.execFileSync)(b,["-m","pip","list","--format=json","--disable-pip-version-check"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}).toString(),c=JSON.parse(a),e=new Set(c.map(a=>String(a.name||"").toLowerCase()));if(!e.has("headroom-ai"))return{installed:!1,version:null,extras:{code:!1,ml:!1}};let f=c.find(a=>a.name?.toLowerCase()==="headroom-ai")?.version||null,i={};for(let a of g)i[a]=h[a].some(a=>e.has(a));return{installed:!0,version:f,extras:i}}catch{return{installed:!1,version:null,extras:{code:!1,ml:!1}}}}},14551:(a,b,c)=>{c.d(b,{w:()=>g});var d=c(43904),e=c(38775),f=c(60290);let g=function({findComboModels:a=e.getComboModels,findCapabilities:b=d.nl}={}){return async function c(d,e=0){if(e>f.wg)return{};let g=await a(d);if(!g){let[a,...c]=d.split("/"),e=c.join("/")||a;return b(a,e)||{}}let h={vision:!1,pdf:!1,tools:!1};for(let a of g){let b=await c(a,e+1);h.vision||=!!b.vision,h.pdf||=!!b.pdf,h.tools||=!1!==b.tools}return h}}()},17382:(a,b,c)=>{c.d(b,{tW:()=>g,tg:()=>h,zw:()=>i});var d=c(60845),e=c(89865),f=c(60290);function g({comboName:a,skipped:b,log:c}){let h=Math.max(Math.min(...b.map(a=>a.untilMs))-Date.now(),6e4),i=b.map(a=>`${a.model} (${a.availability}; ${a.provider} is ${"peak"===a.status?"peak":"off-peak"})`).join("; "),j=`Combo "${a}": all models are outside their allowed hours — ${i}. Set a member to "Any time" in the combo editor to allow it regardless of schedule.`;return c?.info?.("SCHEDULE",`BLOCKED ${j} (retry in ${(0,d.zt)(h)})`),(0,e.wO)(f.gx.SERVICE_UNAVAILABLE,j,new Date(Date.now()+h),`next eligible model in ${(0,d.zt)(h)}`)}function h({models:a,comboName:b,settings:c,log:e,nowMs:f}){let i=c?.comboStrategies?.[b]?.modelAvailability;if(!Array.isArray(a)||!a.length||!i||"object"!=typeof i||!Object.keys(i).length)return{models:a,skipped:[],blocked:!1,response:null};let j=c?.providerSchedules||{},{models:k,skipped:l}=(0,d.zY)(a,j,i,f);for(let a of l){let b=new Date(a.untilMs).toISOString();e?.info?.("SCHEDULE",`skipped ${a.model} (${a.availability}; ${a.provider} is ${"peak"===a.status?"peak":"off-peak"} until ${b})`)}return!k.length&&l.length?{models:[],skipped:l,blocked:!0,response:g({comboName:b,skipped:l,log:e})}:{models:k,skipped:l,blocked:!1,response:null}}function i(a,b){if(!Array.isArray(b)||!b.length)return a;let c=!1;return d=>(c||(c=!0,d={...d,meta:{...d?.meta||{},scheduleSkips:b.map(a=>({model:a.model,provider:a.provider,availability:a.availability,status:a.status,until:new Date(a.untilMs).toISOString()}))}}),a(d))}},24253:(a,b,c)=>{c.d(b,{Mo:()=>i,RG:()=>m,V:()=>j,Y8:()=>l,xl:()=>n});var d=c(29021),e=c(1932),f=c(87155);let g=null,h=null;function i(){return g?{loaded:!0,version:g.version,loadedAt:g.loadedAt}:{loaded:!1}}async function j(){return g||h||(h=k().finally(()=>{h=null}))}async function k(){let a=(0,f.S1)();if(!a.installed){let a=Error("PXPIPE is not installed");throw a.code="NOT_INSTALLED",a}let b=0;try{b=(0,d.statSync)((0,f.CG)()).mtimeMs}catch{}let c=encodeURIComponent(`${a.version||"0"}:${Math.trunc(b)}`),h=`${(0,e.pathToFileURL)((0,f.CG)()).href}?v=${c}`,i=await import(h);if("function"!=typeof i.transformAnthropicMessages)throw Error("installed pxpipe package does not export transformAnthropicMessages");return g={module:i,version:a.version,loadedAt:Date.now()}}function l(){let a=!!g;return g=null,a}async function m({autoLoad:a=!0}={}){try{if(!g&&!a)return null;let{module:b}=await j();return b.transformAnthropicMessages}catch{return null}}async function n(){let a=Date.now(),{module:b}=await j(),c=new TextEncoder().encode(JSON.stringify({model:"claude-fable-5",max_tokens:16,messages:[{role:"user",content:"ping"}]})),d=await b.transformAnthropicMessages({body:c,model:"claude-fable-5"});if(!d||"boolean"!=typeof d.applied||!(d.body instanceof Uint8Array))throw Error("transform returned an unexpected shape");return{ok:!0,reason:d.reason,durationMs:Date.now()-a}}},45974:(a,b,c)=>{c.d(b,{CY:()=>m,XJ:()=>r,d0:()=>o,vO:()=>n});var d=c(39326),e=c(63734),f=c(7803);let g=new Map,h=new Map,i=new Map,j=new Map,k=new Map;function l(a){if(!a||"string"!=typeof a)return null;let b=(a.includes("/")?a.slice(a.indexOf("/")+1):a).toLowerCase();return b.startsWith("claude-")||b.startsWith("gpt-")||"claude"===b?"claude_gpt":b.startsWith("gemini-")&&!b.includes("image")||"gemini"===b?"gemini":null}function m(a,b){if(!a||"object"!=typeof a||!b)return null;let c="string"==typeof b?(b.includes("/")?b.slice(b.indexOf("/")+1):b).replace(/\([^()]+\)\s*$/,"").trim():"",d=l(c),e=[];if(a[c]&&e.push(a[c]),"claude-sonnet-5-5"===c&&a["claude-sonnet-5-5-high"]&&e.push(a["claude-sonnet-5-5-high"]),"claude-opus-5-5"===c&&a["claude-opus-5-5-high"]&&e.push(a["claude-opus-5-5-high"]),"gemini-3.8-flash"===c&&a["gemini-3.8-flash-medium"]&&e.push(a["gemini-3.8-flash-medium"]),"gemini-3.7-flash"===c&&a["gemini-3.7-flash-medium"]&&e.push(a["gemini-3.7-flash-medium"]),"gemini-3.6-flash"===c&&a["gemini-3.6-flash-medium"]&&e.push(a["gemini-3.6-flash-medium"]),"claude_gpt"===d?(a.claude_gpt_session&&e.push(a.claude_gpt_session),a.claude_gpt_weekly&&e.push(a.claude_gpt_weekly)):"gemini"===d&&(a.gemini_session&&e.push(a.gemini_session),a.gemini_weekly&&e.push(a.gemini_weekly)),0===e.length)return null;let f=Date.now(),g=[];for(let a of e)if(a&&"object"==typeof a&&"number"==typeof a.remainingPercentage&&a.remainingPercentage<=0)if(a.resetAt){let b=new Date(a.resetAt).getTime();b>f&&g.push({...a,resetMs:b})}else g.push({...a,resetMs:0});if(g.length>0){g.sort((a,b)=>b.resetMs-a.resetMs);let a=g[0];return{used:a.used??1e3,total:a.total??1e3,remainingPercentage:0,resetAt:a.resetAt,displayName:a.displayName||c}}let h=e.filter(a=>a&&"number"==typeof a.remainingPercentage);return 0===h.length?null:(h.sort((a,b)=>a.remainingPercentage-b.remainingPercentage),h[0])}function n(a,b){let c=`${a}|${b}`;j.delete(c);let d=k.get(c);if(void 0===d)return;k.delete(c);let e=g.get(a),f=new Date(d).toISOString();e?.[b]?.resetAt===f&&delete e[b];let h=l(b);"claude_gpt"===h&&e?.claude_gpt_session?.resetAt===f?delete e.claude_gpt_session:"gemini"===h&&e?.gemini_session?.resetAt===f&&delete e.gemini_session,g.set(a,e)}function o(){return g}async function p(a,b,c){let d=Date.now(),e=i.get(a);if(e)return e;let j=h.get(a)||0;if(d-j<3e4)return f.debug("AG_QUOTA",`${a.slice(0,8)} | skip refresh (${Math.round((d-j)/1e3)}s ago)`),g.get(a)||null;h.set(a,d);let k=q(a,b,c,d);i.set(a,k);try{return await k}finally{i.delete(a)}}async function q(a,b,c,h){try{let f=await (0,d.B)(c||{}),h={connectionProxyEnabled:!0===f.connectionProxyEnabled,connectionProxyUrl:f.connectionProxyUrl||"",connectionNoProxy:f.connectionNoProxy||"",vercelRelayUrl:f.vercelRelayUrl||"",strictProxy:!0===f.strictProxy},i=await (0,e.c)(b,c,h);if(!i?.quotas||i.message)return null;return g.set(a,function(a,b){let c=Date.now();for(let[d,e]of k)if(d.startsWith(`${a}|`)){if(e<=c){k.delete(d);continue}b[d.slice(a.length+1)]={remainingPercentage:0,resetAt:new Date(e).toISOString()}}return b}(a,i.quotas)),i.quotas}catch(b){return f.warn("AG_QUOTA",`${a.slice(0,8)} | refresh failed: ${b.message}`),null}}async function r(a,b,c,d,e){f.info("AG_QUOTA",`${a.slice(0,8)} | ${b} on ${c} — refreshing quota`);let h=m(await p(a,d,e),c);if(!h||h.remainingPercentage>0){let d=`${a}|${c}`,e=Date.now(),i=j.get(d),l=i&&e-i.windowStart<=6e4?i.windowStart:e,m=i&&l===i.windowStart?i.count+1:1;if(j.set(d,{count:m,windowStart:l}),m>=3){j.delete(d);let i=e+9e5,l=h?`${Math.round(h.remainingPercentage)}%`:"unknown";f.warn("AG_QUOTA",`${a.slice(0,8)} | STRIKE_${b} ${c} — ${m}x 429 (quota ${l}); CACHE_BLOCK 15m`);let n=g.get(a)||{};return n[c]={remainingPercentage:0,resetAt:new Date(i).toISOString()},g.set(a,n),k.set(d,i),i}return null}if(j.delete(`${a}|${c}`),!h.resetAt)return null;let i=new Date(h.resetAt).getTime();if(i<=Date.now())return null;let l=g.get(a)||{};return l[c]={remainingPercentage:0,resetAt:h.resetAt},g.set(a,l),f.warn("AG_QUOTA",`${a.slice(0,8)} | UPSTREAM_${b} ${c} — quota exhausted; CACHE_BLOCK until ${h.resetAt}`),i}},50711:(a,b,c)=>{c.d(b,{l:()=>n});var d=c(89865),e=c(60290),f=c(45350),g=c(29485),h=c(554),i=c(83204),j=c(12407),k=c(46052);let l=new Set(["opencode"]),m=new Set(["ollama-local"]);async function n({body:a,modelInfo:b,credentials:c,log:o,onRequestSuccess:p,abortSignal:q}){let r,s,{provider:t,model:u}=b,v=f.B$[t]?.systemoneConfig,w=f.xq[t]||{},x=AbortSignal.timeout(e.pH),y=q?AbortSignal.any([q,x]):x,z=function(a,b){let c=a?.trim();if(!c)return b?.baseUrl;if(!b?.path)return c;let d=c.replace(/\/+$/,""),e=b.path.replace(/\/+$/,"");if(d.endsWith(e))return d;let f=e.slice(0,e.lastIndexOf("/"));return f&&d.endsWith(f)?d+e.slice(f.length):d+e}(c?.providerSpecificData?.baseUrl,v);if(!z)return(0,d.A1)(e.gx.BAD_REQUEST,`Provider '${t}' does not support System One.`);if(z.includes("{accountId}")){let a=c?.providerSpecificData?.accountId;if(!a)return(0,d.A1)(e.gx.BAD_REQUEST,`Provider '${t}' requires accountId in providerSpecificData.`);z=z.replace("{accountId}",a)}if(z.includes("{model}")&&(z=z.replace(/\{model\}/g,u)),void 0===a.state||null===a.state)return(0,d.A1)(e.gx.BAD_REQUEST,"Missing required field: state");if(!a.questions||"object"!=typeof a.questions||Array.isArray(a.questions))return(0,d.A1)(e.gx.BAD_REQUEST,"Missing required field: questions");let A=c?.apiKey||c?.accessToken,B={"Content-Type":"application/json",...A?{Authorization:`Bearer ${A}`}:{},...v.headers||{},...l.has(t)?{"x-opencode-session":(0,h.f6)()}:{}},C={...a,model:(0,g.kt)(t,u)||u};o?.debug?.("SYSTEMONE",`${t.toUpperCase()} | ${u}`);let D=null;try{D=(await (0,j.oC)().getSettings?.())?.ssrfAllowHosts||null}catch{}try{m.has(t)||await (0,i.h)(z,D),r=await (0,k.Fm)(z,{method:"POST",headers:B,body:JSON.stringify(C),redirect:"error",signal:y,identity:v.identity||w.identity||"openai-node",provider:t,format:v.format||"openai"},(0,k.$6)(c))}catch(b){if(q?.aborted)return(0,d.A1)(499,"System One request aborted");let a=(0,d.lR)(b,t,u,e.gx.BAD_GATEWAY);return o?.debug?.("SYSTEMONE",`Fetch error: ${a}`),(0,d.A1)(e.gx.BAD_GATEWAY,a)}if(!r.ok){let{statusCode:a,message:b}=await (0,d.zL)(r),c=(0,d.lR)(Error(b),t,u,a);return o?.debug?.("SYSTEMONE",`Provider error: ${c}`),(0,d.A1)(a,c)}try{s=await r.json()}catch{if(q?.aborted)return(0,d.A1)(499,"System One request aborted");return(0,d.A1)(e.gx.BAD_GATEWAY,`Invalid JSON response from ${t}`)}p&&await p();let E=s?.usage;return{success:!0,usage:E?{prompt_tokens:E.input_tokens??E.prompt_tokens??0,completion_tokens:E.output_tokens??E.completion_tokens??0}:null,response:new Response(JSON.stringify(s),{headers:{"Content-Type":"application/json"}})}}},52007:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},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`}},66077:(a,b,c)=>{c.d(b,{G:()=>e});var d=c(23832);async function e({provider:a,model:b,connectionId:c},f){if(!c||"noauth"===c)return f();let g=!1,h=()=>{g||(g=!0,(0,d.uw)(b,a,c,!1))};(0,d.uw)(b,a,c,!0);try{let a=await f();if(a instanceof Response){if(!(a instanceof Response)||!a.body)return h(),a;let b=a.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:c,value:d}=await b.read();c?(h(),a.close()):a.enqueue(d)}catch(b){h(),a.error(b)}},async cancel(a){try{await b.cancel(a)}finally{h()}}}),{status:a.status,statusText:a.statusText,headers:a.headers})}return h(),a}catch(a){throw h(),a}}},66455:(a,b,c)=>{c.d(b,{V:()=>e});let d=/\[1m\]$/i;function e(a){if("string"!=typeof a)return{model:a,contextMarker:null};let b=a.trim(),c=b.match(d);return c?{model:b.slice(0,-c[0].length),contextMarker:c[0].slice(1,-1).toLowerCase()}:{model:a,contextMarker:null}}},67133:(a,b,c)=>{c.d(b,{Pt:()=>y,Tr:()=>z,getProviderCredentials:()=>w,vk:()=>x});var d=c(59353),e=c(39326),f=c(49263),g=c(87252),h=c(40615),i=c(7803),j=c(45974),k=c(1486),l=c(77598),m=c.n(l);let n=2*c(30869).oc.tickIntervalMs,o=global.__accountSchedulerV2??={affinities:new Map};function p(a){return m().createHash("sha256").update(JSON.stringify(a)).digest("hex")}function q(a){for(let[b,c]of o.affinities)if(c.scopeHash===a)return b;return null}function r(a,b){return a.inFlight-b.inFlight||b.quota.tier-a.quota.tier||b.quota.remaining-a.quota.remaining||a.quota.resetAt-b.quota.resetAt||a.priority-b.priority||a.id.localeCompare(b.id)}function s(a){var b;let{providerId:c,candidates:d=[],clientKeyId:e=null,sessionKey:f=null,affinityTtlMs:g=18e5,quotaFreshMs:h=n,getInFlightCount:i=()=>0,now:j=Date.now()}=a||{};for(let[a,b]of o.affinities)(!b||b.expiresAt<=j)&&o.affinities.delete(a);let k=function(a,b,c){if(!c)return null;let d=b||"local-no-key";return{key:p([String(a),String(d),String(c)]),scopeHash:p([String(a),String(d)])}}(c,e,f),l=k?o.affinities.get(k.key):null;if(0===d.length)return l&&o.affinities.delete(k.key),{connection:null,reason:"no-candidates",affinityRebound:!!l,capacityLimited:!1};let m=[];for(let a of d){let b=function(a,b,c,d){let e;return{candidate:a,inFlight:Number.isFinite(e=Number(b(a.id)))&&e>0?e:0,quota:function(a,b,c){let d=a.lastQuota,e=d?.at,f=d?.remainingPercentage;if(!Number.isFinite(e)||b-e>c||!Number.isFinite(f))return{tier:1,remaining:-1,resetAt:1/0};let g=Math.max(0,Math.min(100,f));if(g>0)return{tier:2,remaining:g,resetAt:1/0};let h=new Date(d?.resetAt).getTime();return{tier:0,remaining:0,resetAt:Number.isFinite(h)&&h>b?h:1/0}}(a,c,d),priority:Number.isFinite(a.priority)?a.priority:Number.MAX_SAFE_INTEGER,id:String(a.id)}}(a,i,j,h),c=a.maxConcurrentRequests;(!Number.isInteger(c)||c<=0||b.inFlight<c)&&m.push(b)}if(0===m.length)return l&&o.affinities.delete(k.key),{connection:null,reason:"capacity-exhausted",affinityRebound:!!l,capacityLimited:!0};let s=l&&m.find(({candidate:a})=>a.id===l.connectionId);if(s)return l.expiresAt=j+g,{connection:s.candidate,reason:"session-affinity",affinityRebound:!1,capacityLimited:!1};m.sort(r);let t=m[0];return k&&function(a,b,c){let d=o.affinities.has(a.key);if(!d&&function(a){let b=0;for(let c of o.affinities.values())c.scopeHash===a&&(b+=1);return b}(a.scopeHash)>=500){let b=q(a.scopeHash);b&&o.affinities.delete(b)}if(!d&&o.affinities.size>=5e3){let b=q(a.scopeHash);if(!b)return;o.affinities.delete(b)}o.affinities.set(a.key,{connectionId:b,expiresAt:c,scopeHash:a.scopeHash})}(k,t.candidate.id,j+g),{connection:t.candidate,reason:(b=m[1])?t.inFlight!==b.inFlight?"least-inflight":t.quota.tier!==b.quota.tier||t.quota.remaining!==b.quota.remaining?"quota-headroom":t.quota.resetAt!==b.quota.resetAt?"quota-reset":t.priority!==b.priority?"priority":"connection-id":"priority",affinityRebound:!!l,capacityLimited:!1}}let t=new Map,u=new Map;function v(a,b,c){let d,e=a.get(b)||Promise.resolve(),f=new Promise(a=>{d=a}),g=e.then(()=>f,()=>f);return a.set(b,g),(async()=>{await e.catch(()=>{});try{return await c()}finally{d(),a.get(b)===g&&a.delete(b)}})()}async function w(a,b=null,c=null,g={}){let k=b instanceof Set?b:b?new Set([b]):new Set,l=g?.preferredConnectionId||null,m=g?.strictPreferredConnection===!0,n=(0,h.rs)(a);return v(t,n,async()=>{let b;if(h.IS[n]?.noAuth){let a=((await (0,d.mt)()).providerStrategies||{})[n]||{},b=await (0,e.B)({proxyPoolId:a.proxyPoolId||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{connectionProxyEnabled:b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl,connectionNoProxy:b.connectionNoProxy,connectionProxyPoolId:b.proxyPoolId||null,vercelRelayUrl:b.vercelRelayUrl||""}}}let o=await (0,d.getProviderConnections)({provider:n,isActive:!0});i.debug("AUTH",`${a} | total connections: ${o.length}, excludeIds: ${k.size>0?[...k].join(","):"none"}, model: ${c||"any"}`);let p=await (0,d.mt)(),q=(p.providerStrategies||{})[n]||{},r=q.fallbackStrategy||p.fallbackStrategy||"fill-first",t=q.accountScheduler||{},u=()=>!0===t.enabled?s({providerId:n,candidates:[],sessionKey:g?.sessionKey||null,clientKeyId:g?.clientKeyId||null,affinityTtlMs:1e3*Number(t.sessionAffinityTtlSeconds)||void 0,getInFlightCount:d.b7}):null;if(0===o.length)return u(),i.warn("AUTH",`No credentials for ${a}`),null;let v=m&&l?o.filter(a=>a.id===l):o;if(0===v.length)return u(),i.warn("AUTH",`${a} | requested connection is unavailable`),null;let w="antigravity"===n&&c?(0,j.d0)():null,x=a=>{let b=w?.get(a.id);return(0,j.CY)(b,c)||b?.[c]},y=a=>{let b=x(a);return!b?.resetAt||new Date(b.resetAt).getTime()<=Date.now()?null:b.resetAt},z=v.filter(a=>{let b;return!k.has(a.id)&&!(0,f.Bl)(a,c)&&(!((b=x(a))&&!(b.remainingPercentage>0)&&y(a))||(i.info("AG_QUOTA",`${a.id?.slice(0,8)||"unknown"} | CACHE_BLOCK ${c} — skip upstream until ${b.resetAt}`),!1))}),A=z.filter(a=>a.testStatus!==f.RU),B=A.length>0?A:z;if(i.debug("AUTH",`${a} | available: ${B.length}/${v.length}`),v.forEach(a=>{let b=k.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);i.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===B.length){let b=u(),d=v.map(a=>{let b=[(0,f.V0)(a,c),w?y(a):null].filter(Boolean).sort().pop()||null;return{connection:a,until:b}}).filter(a=>a.until).sort((a,b)=>a.until.localeCompare(b.until)),e=d[0]?.until||null;if(e){let g=d[0].connection;return i.warn("AUTH",`${a} | all ${v.length} accounts locked for ${c||"all"} (${(0,f.Qo)(e)}) | lastError=${g?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:e,retryAfterHuman:(0,f.Qo)(e),lastError:g?.lastError||null,lastErrorCode:g?.errorCode||null,...b?{selectionReason:b.reason,affinityRebound:b.affinityRebound}:{}}}return i.warn("AUTH",`${a} | all ${v.length} accounts unavailable`),null}let C=null,D=!1;if(l){let a=B.find(a=>a.id===l);if(a){let c=Number(a.maxConcurrentRequests);!0===t.enabled&&Number.isInteger(c)&&c>0&&(0,d.b7)(a.id)>=c||(b=a,C="explicit-pin")}}if(!b&&!0===t.enabled){let a=s({providerId:n,candidates:B,sessionKey:g?.sessionKey||null,clientKeyId:g?.clientKeyId||null,affinityTtlMs:1e3*Number(t.sessionAffinityTtlSeconds)||void 0,getInFlightCount:d.b7});if(!a.connection&&a.capacityLimited)return{allRateLimited:!0,capacityLimited:!0,retryAfter:new Date(Date.now()+1e3).toISOString(),retryAfterHuman:"retry after an in-flight request completes",lastError:"All accounts are at their concurrency limits",lastErrorCode:429,selectionReason:a.reason,affinityRebound:a.affinityRebound};b=a.connection,C=a.reason,D=a.affinityRebound}if(b);else if("round-robin"===r){let a=q.stickyRoundRobinLimit||p.stickyRoundRobinLimit||3,c=[...B].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority??999)-(b.priority??999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...B].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority??999)-(b.priority??999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1})),C="round-robin"}else b=B[0],C="fill-first";i.info("AUTH",`${a} | selected ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"}) selection=${C} rebound=${D}`);let E=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:E.connectionProxyEnabled,connectionProxyUrl:E.connectionProxyUrl,connectionNoProxy:E.connectionNoProxy,connectionProxyPoolId:E.proxyPoolId||null,vercelRelayUrl:E.vercelRelayUrl||""},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b,selectionReason:C,affinityRebound:D}})}async function x(a,b,c,e=null,j=null,k=null){return a&&"noauth"!==a?v(u,a,async()=>{let l,m,n,o=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),p=o?.backoffLevel||0,q=!!(k&&k>Date.now());if(q?(l=!0,m="antigravity"===(0,h.rs)(e)?k-Date.now():Math.min(k-Date.now(),g.fh),n=0):{shouldFallback:l,cooldownMs:m,newBackoffLevel:n}=(0,f.hk)(b,c,p,(0,h.rs)(e)),!l)return{shouldFallback:!1,cooldownMs:0};let r="string"==typeof c?c.slice(0,100):"Provider error",s=(0,f.S5)(j,m),t=o?.testStatus===f.RU;await (0,d.updateProviderConnection)(a,{...s,testStatus:t?f.RU:"unavailable",lastError:t&&o.lastError||r,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:n??p,...q?{lastQuota:{remainingPercentage:0,resetAt:new Date(k).toISOString(),at:Date.now()}}:{}});let u=Object.keys(s)[0],v=o?.displayName||o?.name||o?.email||a.slice(0,8);return i.warn("AUTH",`${v} locked ${u} for ${Math.round(m/1e3)}s [${b}]`),e&&b&&r&&console.error(`❌ ${e} [${b}]: ${r}`),{shouldFallback:!0,cooldownMs:m}}):{shouldFallback:!1,cooldownMs:0}}async function y(a,b,c=null){if(a&&"noauth"!==a)return v(u,a,async()=>{let e=b._connection||b,g=(await (0,d.getProviderConnections)({provider:e.provider})).find(b=>b.id===a);if(!g||g.testStatus===f.RU||g.lastErrorAt!==e.lastErrorAt||g.lastError!==e.lastError)return;let h=Date.now(),i=Object.keys(g).filter(a=>a.startsWith("modelLock_"));if(!g.testStatus&&!g.lastError&&0===i.length)return;let j=i.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return g[a]===e[a];let b=g[a];return b&&new Date(b).getTime()<=h});if(0===j.length&&"unavailable"!==g.testStatus&&!g.lastError)return;let k=i.filter(a=>{if(j.includes(a))return!1;let b=g[a];return b&&new Date(b).getTime()>h}),l=Object.fromEntries(j.map(a=>[a,null]));0===k.length&&Object.assign(l,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,d.$v)(a,g,l)})}function z(a){return(0,k.d)(a.headers)}},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>X});var e=c(30369);c(40863);var f=c(67133),g=c(45974),h=c(85605),i=c(5425),j=c(91576),k=c(59353),l=c(5781),m=c(38775),n=c(85432),o=c(17382),p=c(36362),q=c(3894),r=c(24253),s=c(52007),t=c(89865),u=c(62662),v=c(3072),w=c(249),x=c(61522),y=c(1996),z=c(2735),A=c(60290),B=c(19956),C=c(86187),D=c(23928),E=c(7803),F=c(81294),G=c(14551),H=c(67828),I=c(15186),J=c(428),K=c(66455),L=c(78102),M=c(91686),N=c(2142),O=c(19978),P=a([e,p]);async function Q(a,b={}){let c=b?.activeLearningVersionId;return c?(0,O.PO)(`learning:id:${c}`,()=>(0,N.dN)(c)):(0,O.PO)((0,O.C5)(a),()=>(0,N.p3)(a))}async function R(a,b=14){let c=Math.min(90,Math.max(1,Number(b)||14));return(0,O.PO)((0,O.Hr)(a,c),()=>(0,N.GU)(a,c))}async function S(a){try{let b=await (0,O.PO)(`provlat:${a}`,()=>(0,N.OQ)(a),15e3);return b&&"object"==typeof b?b:{}}catch{return{}}}async function T(){try{return await (0,O.PO)("provusage:7d",()=>(0,k.vY)(7),15e3)}catch{return{}}}async function U(){try{let a=await (0,l.getProviderQuotaHeadroom)();return a&&"object"==typeof a?a:{}}catch{return{}}}async function V(a){let[b,c]=await Promise.all([S(14),T()]),d="quota-first"===a.providerStrategy?await U():{};return{providerStrategy:a.providerStrategy,providerOrder:Array.isArray(a.providerOrder)?a.providerOrder:[],providerLatencyMs:b,providerUsage:c,providerQuota:d,providerLatencyGuardMs:a.providerLatencyGuardMs}}function W({headers:a,body:b}={}){let c=b=>{try{return a?.get?.(b)||null}catch{return null}},d=c("x-session-id")||c("x-opencode-session-id")||c("anthropic-session-id")||(b?.metadata&&"object"==typeof b.metadata?b.metadata.session_id||b.metadata.user_id:null)||b?.session_id||null;return d&&"string"==typeof d?d:null}async function X(a,b=null){let c;try{c=await a.json()}catch{return E.warn("CHAT","Invalid JSON body"),(0,t.yj)(A.gx.BAD_REQUEST,"Invalid JSON body")}if(!c||"object"!=typeof c||Array.isArray(c))return E.warn("CHAT","Invalid JSON body shape"),(0,t.yj)(A.gx.BAD_REQUEST,"Invalid JSON body");b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let d=new URL(a.url),{model:e,contextMarker:g}=(0,K.V)(c.model);g&&(c.model=e);let h=c.messages?.length||c.input?.length||0,j=c.tools?.length||0,l=c.reasoning_effort||c.reasoning?.effort||null;E.request("POST",`${d.pathname} | ${e} | ${h} msgs${j?` | ${j} tools`:""}${l?` | effort=${l}`:""}`);let n=await (0,k.mt)(),p=e?await (0,m.getComboModels)(e):null,q=await (0,L.DM)({settings:n,rawKey:(0,f.Tr)(a),request:a,target:{kind:p?"combo":"model",id:e}});if(!q.ok)return q.response;if(b?.headers){let a=new Set(["authorization","x-switchboard-key","x-api-key","x-goog-api-key"]);b={...b,headers:Object.fromEntries(Object.entries(b.headers).filter(([b])=>!a.has(b.toLowerCase())))}}return(0,L.yH)(q.lease,async()=>{let{clientKeyId:d}=q;if(!e)return E.warn("CHAT","Missing model"),(0,t.yj)(A.gx.BAD_REQUEST,"Missing model");let f=a?.headers?.get("user-agent")||"",g=a?.headers?.get("x-connection-id")||null,h=a?.headers?.get("x-switchboard-strict-connection")==="1",j=(0,z.c)(c,e,f,!!n.ccFilterNaming);if(j)return j.response||j;try{let b=!!Array.isArray(c.messages)&&!!c.messages.length&&(0,D.Gz)(c.messages);if(((0,D.sN)()||b)&&Array.isArray(c.messages)&&c.messages.length){let f=(0,B.t)(new URL(a.url).pathname,c),g=(0,D.EN)(d||"local-no-key"),h=(0,D.Mc)(c.messages),i=(0,D.sO)(h.firstUserText,g),j="openai"===f?(0,D.A4)(g,i):null;if(j){let a=h.priorAssistantHasAsk?(0,D.T6)(h.latestUserText):null;if(null!=a){let b=(0,D.of)(a);try{await (0,N.ii)(j.requestId,b),await (0,F.f)(j.requestId,b)}catch{}return(0,D.LH)(g,i),(0,D.g2)(g),E.info?.("FEEDBACK",`captured rating ${b} for ${j.requestId}`),function(a,b){let c=Date.now(),d=`chatcmpl-fb-${c}`,e=Math.floor(c/1e3);if(!a)return new Response(JSON.stringify({id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:{role:"assistant",content:"Thanks — noted."},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});let f=new TextEncoder,g=a=>({id:d,object:"chat.completion.chunk",created:e,model:b,choices:a}),h=new ReadableStream({start(a){a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{role:"assistant"},finish_reason:null}]))}
2
2
 
3
3
  `)),a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{content:"Thanks — noted."},finish_reason:null}]))}
4
4
 
@@ -25,7 +25,7 @@
25
25
  WHEN typeof(sizeBytes) NOT IN ('integer', 'real') OR sizeBytes < 0 THEN 1
26
26
  ELSE 0
27
27
  END), 0) AS invalid
28
- FROM fetchCache WHERE expiresAt >= ?`,[a.toISOString()]);try{if(b=(0,e.T)(f?.entries,"fetchCache.entries",{integer:!0}),c=(0,e.T)(f?.bytes,"fetchCache.bytes",{integer:!0}),0!==(0,e.T)(f?.invalid,"fetchCache.invalid",{integer:!0}))throw Error("invalid")}catch{throw Error("invalid Prometheus cache metric")}return{entries:b,bytes:c}}},54293:(a,b,c)=>{c.d(b,{H:()=>g});let d=Symbol.for("switchboard.adapterShutdownRegistry"),e=globalThis[d]??={closers:new Set,flushers:new Set,listener:null,signalHandlers:null};function f(){for(let a of[e.flushers,e.closers])for(let b of[...a])if(a.delete(b))try{b()}catch{}}if(e.flushers??=new Set,!e.listener)for(let[a,b]of(e.listener=()=>{f()},process.on("beforeExit",e.listener),process.on("exit",e.listener),e.signalHandlers=Object.fromEntries(["SIGTERM","SIGINT",..."win32"===process.platform?["SIGBREAK"]:[]].map(a=>[a,()=>(a=>{if(f(),e.signalHandlers){for(let[a,b]of Object.entries(e.signalHandlers))process.removeListener(a,b);e.signalHandlers=null}if(!(process.listenerCount(a)>0))try{process.kill(process.pid,a)}catch{process.exit("SIGINT"===a?130:143)}})(a)])),Object.entries(e.signalHandlers)))process.on(a,b);function g(a,{flush:b=!1}={}){let c=b?e.flushers:e.closers;c.add(a);let d=!0;return()=>!!d&&(d=!1,c.delete(a))}},59353:(a,b,c)=>{c.d(b,{S8:()=>t.S8,py:()=>t.py,E5:()=>G.E5,PW:()=>j.authenticateApiKey,zL:()=>F,Iq:()=>j.createApiKey,jd:()=>p,iE:()=>f.createProviderConnection,i0:()=>i.createProviderNode,Lh:()=>j.deleteApiKey,CG:()=>s,uL:()=>t.uL,fv:()=>t.fv,fK:()=>f.deleteProviderConnection,op:()=>f.deleteProviderConnectionsByProvider,Pc:()=>i.deleteProviderNode,HS:()=>I.HS,tm:()=>z,oF:()=>A,zP:()=>J,rg:()=>G.rg,yg:()=>j.getApiKeyById,PX:()=>j.getApiKeys,j$:()=>G.j$,fz:()=>j.getClientKeySpend,L:()=>n,Dj:()=>o,Uv:()=>m,b7:()=>G.b7,uv:()=>t.uv,vF:()=>y,c:()=>t.getMitmAlias,OM:()=>t.OM,p_:()=>E,r4:()=>u.r4,rr:()=>D,p3:()=>I.p3,Mc:()=>f.getProviderConnectionById,getProviderConnections:()=>f.getProviderConnections,Qu:()=>i.getProviderNodeById,Fh:()=>i.getProviderNodes,vY:()=>G.vY,qO:()=>G.qO,Zx:()=>G.Zx,Rw:()=>H.Rw,SL:()=>H.SL,mt:()=>h.getSettings,BY:()=>G.BY,K1:()=>K,wJ:()=>j.normalizeClientKeyPatch,fp:()=>f.redactSecrets,e8:()=>I.e8,VT:()=>u.VT,yF:()=>u.yF,ox:()=>H.ox,sZ:()=>G.sZ,L9:()=>t.L9,o5:()=>t.o5,_V:()=>G._V,uw:()=>G.uw,XW:()=>j.updateApiKey,oG:()=>r,KJ:()=>u.KJ,updateProviderConnection:()=>f.updateProviderConnection,rS:()=>f.updateProviderConnectionCredentialsIfCurrent,$v:()=>f.updateProviderConnectionStatusIfCurrent,ho:()=>i.updateProviderNode,Xx:()=>h.Xx,H3:()=>h.H3,Fq:()=>C,ek:()=>j.validateApiKey});var d=c(5684),e=c(644),f=c(5781),g=c(38044),h=c(42655),i=c(1129),j=c(74452),k=c(47293);function l(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function m(){return(await (0,d.c)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(l)}async function n(a){return l((await (0,d.c)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function o(a){return l((await (0,d.c)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function p(a){let b=await (0,d.c)(),c=new Date().toISOString(),f={id:(0,k.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(?, ?, ?, ?, ?, ?)",[f.id,f.name,f.kind,(0,e.s)(f.models),f.createdAt,f.updatedAt]),f}let q=["name","kind","models"];async function r(a,b){let c=await (0,d.c)(),f=null;return c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let g={...l(d),updatedAt:new Date().toISOString()};for(let a of q)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,e.s)(g.models||[]),g.updatedAt,a]),f=g}),f}async function s(a){let b=(await (0,d.c)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var t=c(9460),u=c(97914),v=c(65089);let w="disabledModels";function x(a,b){return[...new Set((Array.isArray(b)?b:[]).map(b=>(0,v.v)(b,a)).filter(Boolean))]}async function y(){let a=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[w]),b={};for(let c of a)b[c.key]=(0,e.q)(c.value,[]);return b}async function z(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.c)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[w,a]),f=x(a,[...d&&(0,e.q)(d.value,[])||[],...b]);c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[w,a,(0,e.s)(f)])})}async function A(a,b){if(!a)return;let c=await (0,d.c)();c.transaction(()=>{let d;if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[w,a]);let f=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[w,a]),g=f&&(0,e.q)(f.value,[])||[],h=(d=new Set(x(a,b)),x(a,g).filter(a=>!d.has(a)));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[w,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[w,a,(0,e.s)(h)])})}function B(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 C(a){let b=String(a?.providerId||"").trim(),c=String(a?.scopeKey||"").trim(),e=String(a?.modelId||"").trim(),f=String(a?.kind||"llm").trim()||"llm",g=String(a?.status||"").trim();if(!b||!c||!e||!["ok","dead","retryable"].includes(g))throw Error("Invalid probe result");let h=await (0,d.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(
28
+ FROM fetchCache WHERE expiresAt >= ?`,[a.toISOString()]);try{if(b=(0,e.T)(f?.entries,"fetchCache.entries",{integer:!0}),c=(0,e.T)(f?.bytes,"fetchCache.bytes",{integer:!0}),0!==(0,e.T)(f?.invalid,"fetchCache.invalid",{integer:!0}))throw Error("invalid")}catch{throw Error("invalid Prometheus cache metric")}return{entries:b,bytes:c}}},54293:(a,b,c)=>{c.d(b,{H:()=>g});let d=Symbol.for("switchboard.adapterShutdownRegistry"),e=globalThis[d]??={closers:new Set,flushers:new Set,listener:null,signalHandlers:null};function f(){for(let a of[e.flushers,e.closers])for(let b of[...a])if(a.delete(b))try{b()}catch{}}if(e.flushers??=new Set,!e.listener)for(let[a,b]of(e.listener=()=>{f()},process.on("beforeExit",e.listener),process.on("exit",e.listener),e.signalHandlers=Object.fromEntries(["SIGTERM","SIGINT",..."win32"===process.platform?["SIGBREAK"]:[]].map(a=>[a,()=>(a=>{if(f(),e.signalHandlers){for(let[a,b]of Object.entries(e.signalHandlers))process.removeListener(a,b);e.signalHandlers=null}if(!(process.listenerCount(a)>0))try{process.kill(process.pid,a)}catch{process.exit("SIGINT"===a?130:143)}})(a)])),Object.entries(e.signalHandlers)))process.on(a,b);function g(a,{flush:b=!1}={}){let c=b?e.flushers:e.closers;c.add(a);let d=!0;return()=>!!d&&(d=!1,c.delete(a))}},59353:(a,b,c)=>{c.d(b,{Rb:()=>j.CLIENT_KEY_POLICY_BOUNDS,S8:()=>t.S8,py:()=>t.py,E5:()=>G.E5,PW:()=>j.authenticateApiKey,zL:()=>F,Iq:()=>j.createApiKey,jd:()=>p,iE:()=>f.createProviderConnection,i0:()=>i.createProviderNode,Lh:()=>j.deleteApiKey,CG:()=>s,uL:()=>t.uL,fv:()=>t.fv,fK:()=>f.deleteProviderConnection,op:()=>f.deleteProviderConnectionsByProvider,Pc:()=>i.deleteProviderNode,HS:()=>I.HS,tm:()=>z,oF:()=>A,zP:()=>J,rg:()=>G.rg,yg:()=>j.getApiKeyById,PX:()=>j.getApiKeys,j$:()=>G.j$,fz:()=>j.getClientKeySpend,L:()=>n,Dj:()=>o,Uv:()=>m,b7:()=>G.b7,uv:()=>t.uv,vF:()=>y,c:()=>t.getMitmAlias,OM:()=>t.OM,p_:()=>E,r4:()=>u.r4,rr:()=>D,p3:()=>I.p3,Mc:()=>f.getProviderConnectionById,getProviderConnections:()=>f.getProviderConnections,Qu:()=>i.getProviderNodeById,Fh:()=>i.getProviderNodes,vY:()=>G.vY,qO:()=>G.qO,Zx:()=>G.Zx,Rw:()=>H.Rw,SL:()=>H.SL,mt:()=>h.getSettings,BY:()=>G.BY,K1:()=>K,wJ:()=>j.normalizeClientKeyPatch,fp:()=>f.redactSecrets,e8:()=>I.e8,VT:()=>u.VT,yF:()=>u.yF,ox:()=>H.ox,sZ:()=>G.sZ,L9:()=>t.L9,o5:()=>t.o5,_V:()=>G._V,uw:()=>G.uw,XW:()=>j.updateApiKey,oG:()=>r,KJ:()=>u.KJ,updateProviderConnection:()=>f.updateProviderConnection,rS:()=>f.updateProviderConnectionCredentialsIfCurrent,$v:()=>f.updateProviderConnectionStatusIfCurrent,ho:()=>i.updateProviderNode,Xx:()=>h.Xx,H3:()=>h.H3,Fq:()=>C,ek:()=>j.validateApiKey});var d=c(5684),e=c(644),f=c(5781),g=c(38044),h=c(42655),i=c(1129),j=c(74452),k=c(47293);function l(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function m(){return(await (0,d.c)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(l)}async function n(a){return l((await (0,d.c)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function o(a){return l((await (0,d.c)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function p(a){let b=await (0,d.c)(),c=new Date().toISOString(),f={id:(0,k.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(?, ?, ?, ?, ?, ?)",[f.id,f.name,f.kind,(0,e.s)(f.models),f.createdAt,f.updatedAt]),f}let q=["name","kind","models"];async function r(a,b){let c=await (0,d.c)(),f=null;return c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let g={...l(d),updatedAt:new Date().toISOString()};for(let a of q)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,e.s)(g.models||[]),g.updatedAt,a]),f=g}),f}async function s(a){let b=(await (0,d.c)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var t=c(9460),u=c(97914),v=c(65089);let w="disabledModels";function x(a,b){return[...new Set((Array.isArray(b)?b:[]).map(b=>(0,v.v)(b,a)).filter(Boolean))]}async function y(){let a=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[w]),b={};for(let c of a)b[c.key]=(0,e.q)(c.value,[]);return b}async function z(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.c)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[w,a]),f=x(a,[...d&&(0,e.q)(d.value,[])||[],...b]);c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[w,a,(0,e.s)(f)])})}async function A(a,b){if(!a)return;let c=await (0,d.c)();c.transaction(()=>{let d;if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[w,a]);let f=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[w,a]),g=f&&(0,e.q)(f.value,[])||[],h=(d=new Set(x(a,b)),x(a,g).filter(a=>!d.has(a)));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[w,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[w,a,(0,e.s)(h)])})}function B(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 C(a){let b=String(a?.providerId||"").trim(),c=String(a?.scopeKey||"").trim(),e=String(a?.modelId||"").trim(),f=String(a?.kind||"llm").trim()||"llm",g=String(a?.status||"").trim();if(!b||!c||!e||!["ok","dead","retryable"].includes(g))throw Error("Invalid probe result");let h=await (0,d.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(
29
29
  provider_id, scope_key, model_id, kind, status, latency_ms,
30
30
  failure_class, failure_message, checked_at
31
31
  )