omniroute 2.1.2 → 2.2.1

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 (675) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +46 -46
  3. package/app/.next/build-manifest.json +3 -3
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/required-server-files.json +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +2 -2
  7. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +2 -2
  10. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  13. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
  16. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  19. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +2 -2
  22. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +4 -4
  25. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  28. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  31. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  34. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  37. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  40. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
  43. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +2 -2
  46. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
  49. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  52. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  55. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +3 -3
  58. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  61. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  64. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  67. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  70. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  73. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  76. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  79. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  80. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  82. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  83. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/.well-known/agent.json/route.js +1 -1
  85. package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/400/page.js +2 -2
  87. package/app/.next/server/app/400/page.js.nft.json +1 -1
  88. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/401/page.js +2 -2
  90. package/app/.next/server/app/401/page.js.nft.json +1 -1
  91. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/403/page.js +2 -2
  93. package/app/.next/server/app/403/page.js.nft.json +1 -1
  94. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/408/page.js +2 -2
  96. package/app/.next/server/app/408/page.js.nft.json +1 -1
  97. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/429/page.js +2 -2
  99. package/app/.next/server/app/429/page.js.nft.json +1 -1
  100. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/500/page.js +2 -2
  102. package/app/.next/server/app/500/page.js.nft.json +1 -1
  103. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/502/page.js +2 -2
  105. package/app/.next/server/app/502/page.js.nft.json +1 -1
  106. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/503/page.js +2 -2
  108. package/app/.next/server/app/503/page.js.nft.json +1 -1
  109. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/_global-error/page.js +3 -3
  111. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/_global-error.html +2 -2
  113. package/app/.next/server/app/_global-error.rsc +5 -5
  114. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +5 -5
  115. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  116. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  117. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  118. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +4 -4
  119. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  120. package/app/.next/server/app/_not-found/page.js +2 -2
  121. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  122. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/a2a/route.js +2 -2
  124. package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/a2a/status/route.js +1 -1
  126. package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route.js +1 -1
  128. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/a2a/tasks/[id]/route.js +1 -1
  130. package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
  131. package/app/.next/server/app/api/a2a/tasks/route.js +1 -1
  132. package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/acp/agents/route.js +1 -1
  134. package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/auth/login/route.js +1 -1
  137. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  140. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/auth/status/route.js +1 -1
  142. package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/cache/route.js +1 -1
  145. package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/cache/stats/route.js +1 -1
  148. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  150. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  153. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  155. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  157. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  160. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  163. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  165. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  168. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
  171. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  173. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js +1 -1
  176. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  178. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  181. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  183. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  186. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  189. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  192. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  195. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  198. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/combos/auto/route.js +1 -1
  201. package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/combos/metrics/route.js +1 -1
  203. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/combos/route.js +1 -1
  205. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/combos/test/route.js +1 -1
  208. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
  211. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/db-backups/export/route.js +1 -1
  214. package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
  217. package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
  218. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/db-backups/import/route.js +1 -1
  220. package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
  221. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/api/db-backups/route.js +1 -1
  223. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
  226. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/evals/route.js +1 -1
  228. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  230. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  232. package/app/.next/server/app/api/init/route.js +1 -1
  233. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  236. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  237. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  238. package/app/.next/server/app/api/keys/route.js +1 -1
  239. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  240. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  241. package/app/.next/server/app/api/logs/console/route.js +1 -1
  242. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  243. package/app/.next/server/app/api/mcp/audit/route.js +2 -2
  244. package/app/.next/server/app/api/mcp/audit/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
  246. package/app/.next/server/app/api/mcp/audit/stats/route.js +2 -2
  247. package/app/.next/server/app/api/mcp/audit/stats/route.js.nft.json +1 -1
  248. package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
  249. package/app/.next/server/app/api/mcp/sse/route.js +1 -1
  250. package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
  252. package/app/.next/server/app/api/mcp/status/route.js +1 -1
  253. package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
  254. package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  255. package/app/.next/server/app/api/mcp/stream/route.js +1 -1
  256. package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
  258. package/app/.next/server/app/api/mcp/tools/route.js +1 -1
  259. package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  260. package/app/.next/server/app/api/models/alias/route.js +1 -1
  261. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  262. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  263. package/app/.next/server/app/api/models/availability/route.js +1 -1
  264. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  265. package/app/.next/server/app/api/models/catalog/route.js +2 -2
  266. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  268. package/app/.next/server/app/api/models/openrouter-catalog/route.js +1 -1
  269. package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
  270. package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
  271. package/app/.next/server/app/api/models/route.js +2 -2
  272. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  273. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  274. package/app/.next/server/app/api/monitoring/health/route.js +2 -2
  275. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  276. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  277. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  278. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  279. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  280. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  281. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  282. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  283. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  284. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  286. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  287. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  289. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  290. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  292. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  293. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  294. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  295. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  297. package/app/.next/server/app/api/policies/route.js +2 -2
  298. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  300. package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
  301. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  302. package/app/.next/server/app/api/pricing/models/route.js +1 -1
  303. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  304. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  305. package/app/.next/server/app/api/pricing/route.js +1 -1
  306. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  307. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  308. package/app/.next/server/app/api/provider-metrics/route.js +2 -2
  309. package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
  310. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  311. package/app/.next/server/app/api/provider-models/route.js +1 -1
  312. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  313. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  314. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  315. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  316. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  317. package/app/.next/server/app/api/provider-nodes/route.js +2 -2
  318. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  319. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  320. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  321. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  322. package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
  323. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  325. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  326. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  327. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  328. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  329. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  330. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  331. package/app/.next/server/app/api/providers/client/route.js +1 -1
  332. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  333. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  334. package/app/.next/server/app/api/providers/route.js +2 -2
  335. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  336. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  337. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  338. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  339. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  340. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  341. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  342. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  343. package/app/.next/server/app/api/rate-limit/route.js +1 -1
  344. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  345. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  346. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  347. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  348. package/app/.next/server/app/api/resilience/reset/route.js +1 -1
  349. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  350. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  351. package/app/.next/server/app/api/resilience/route.js +1 -1
  352. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  353. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  354. package/app/.next/server/app/api/restart/route.js +1 -1
  355. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  356. package/app/.next/server/app/api/sessions/route.js +1 -1
  357. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  358. package/app/.next/server/app/api/settings/background-degradation/route.js +1 -1
  359. package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
  360. package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
  361. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
  362. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  363. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  364. package/app/.next/server/app/api/settings/ip-filter/route.js +1 -1
  365. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  366. package/app/.next/server/app/api/settings/model-aliases/route.js +1 -1
  367. package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
  368. package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
  369. package/app/.next/server/app/api/settings/proxy/route.js +1 -1
  370. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  371. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  372. package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
  373. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  374. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  375. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  376. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  377. package/app/.next/server/app/api/settings/route.js +1 -1
  378. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  379. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  380. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
  381. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  382. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  383. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
  384. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  385. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  386. package/app/.next/server/app/api/shutdown/route.js +1 -1
  387. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  388. package/app/.next/server/app/api/storage/health/route.js +1 -1
  389. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  390. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  391. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  392. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  393. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  394. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  395. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  396. package/app/.next/server/app/api/tags/route.js +1 -1
  397. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  398. package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
  399. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  400. package/app/.next/server/app/api/token-health/route.js +1 -1
  401. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  402. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  403. package/app/.next/server/app/api/translator/detect/route.js +1 -1
  404. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  405. package/app/.next/server/app/api/translator/history/route.js +1 -1
  406. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  407. package/app/.next/server/app/api/translator/load/route.js +1 -1
  408. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  409. package/app/.next/server/app/api/translator/save/route.js +1 -1
  410. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  411. package/app/.next/server/app/api/translator/send/route.js +1 -1
  412. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  413. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  414. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  415. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  416. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  417. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -2
  418. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  419. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  420. package/app/.next/server/app/api/usage/analytics/route.js +1 -1
  421. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  422. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  423. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  424. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  425. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  426. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
  427. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  428. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  429. package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
  430. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  431. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  432. package/app/.next/server/app/api/usage/history/route.js +1 -1
  433. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  434. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  435. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  436. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  437. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  438. package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
  439. package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
  440. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  441. package/app/.next/server/app/api/usage/quota/route.js +1 -1
  442. package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
  443. package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
  444. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  445. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  446. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  447. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  448. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  449. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  450. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  451. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  452. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  453. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  454. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  455. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  456. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  457. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  458. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  459. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  460. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  461. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  462. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  463. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  464. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  465. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  466. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  467. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  468. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  469. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  470. package/app/.next/server/app/api/v1/models/route.js +1 -1
  471. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  472. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  473. package/app/.next/server/app/api/v1/moderations/route.js +1 -1
  474. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  475. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  476. package/app/.next/server/app/api/v1/music/generations/route.js +1 -1
  477. package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
  478. package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
  479. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
  480. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  481. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  482. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  483. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  484. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  485. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  486. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  487. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  488. package/app/.next/server/app/api/v1/rerank/route.js +1 -1
  489. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  490. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  491. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  492. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  493. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  494. package/app/.next/server/app/api/v1/route.js +1 -1
  495. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  496. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  497. package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
  498. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  499. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  500. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  501. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  502. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  503. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  504. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  505. package/app/.next/server/app/callback/page.js +2 -2
  506. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  507. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  508. package/app/.next/server/app/docs/page.js +4 -4
  509. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  510. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  511. package/app/.next/server/app/forbidden/page.js +2 -2
  512. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  513. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  514. package/app/.next/server/app/forgot-password/page.js +2 -2
  515. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  516. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  517. package/app/.next/server/app/landing/page.js +2 -2
  518. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  519. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  520. package/app/.next/server/app/login/page.js +2 -2
  521. package/app/.next/server/app/login/page.js.nft.json +1 -1
  522. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  523. package/app/.next/server/app/maintenance/page.js +2 -2
  524. package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
  525. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  526. package/app/.next/server/app/offline/page.js +2 -2
  527. package/app/.next/server/app/offline/page.js.nft.json +1 -1
  528. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  529. package/app/.next/server/app/page.js +2 -2
  530. package/app/.next/server/app/page.js.nft.json +1 -1
  531. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  532. package/app/.next/server/app/privacy/page.js +2 -2
  533. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  534. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  535. package/app/.next/server/app/status/page.js +2 -2
  536. package/app/.next/server/app/status/page.js.nft.json +1 -1
  537. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  538. package/app/.next/server/app/terms/page.js +2 -2
  539. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  540. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  541. package/app/.next/server/app-paths-manifest.json +46 -46
  542. package/app/.next/server/chunks/1960.js +1 -1
  543. package/app/.next/server/chunks/2050.js +1 -1
  544. package/app/.next/server/chunks/2767.js +2 -2
  545. package/app/.next/server/chunks/2910.js +1 -1
  546. package/app/.next/server/chunks/3061.js +2 -2
  547. package/app/.next/server/chunks/3366.js +1 -0
  548. package/app/.next/server/chunks/3648.js +2 -2
  549. package/app/.next/server/chunks/438.js +1 -1
  550. package/app/.next/server/chunks/4488.js +1 -1
  551. package/app/.next/server/chunks/5248.js +1 -0
  552. package/app/.next/server/chunks/5419.js +1 -1
  553. package/app/.next/server/chunks/6184.js +1 -0
  554. package/app/.next/server/chunks/6743.js +1 -1
  555. package/app/.next/server/chunks/7109.js +1 -1
  556. package/app/.next/server/chunks/7544.js +8 -6
  557. package/app/.next/server/chunks/7889.js +2 -0
  558. package/app/.next/server/chunks/8020.js +3 -3
  559. package/app/.next/server/chunks/8252.js +1 -1
  560. package/app/.next/server/chunks/8369.js +1 -1
  561. package/app/.next/server/chunks/8429.js +1 -1
  562. package/app/.next/server/chunks/8907.js +1 -1
  563. package/app/.next/server/chunks/9548.js +1 -1
  564. package/app/.next/server/chunks/9631.js +13 -0
  565. package/app/.next/server/chunks/9679.js +1 -1
  566. package/app/.next/server/chunks/9704.js +1 -1
  567. package/app/.next/server/middleware-build-manifest.js +1 -1
  568. package/app/.next/server/middleware.js +3 -3
  569. package/app/.next/server/next-font-manifest.js +1 -1
  570. package/app/.next/server/next-font-manifest.json +1 -1
  571. package/app/.next/server/pages/500.html +2 -2
  572. package/app/.next/server/server-reference-manifest.js +1 -1
  573. package/app/.next/server/server-reference-manifest.json +1 -1
  574. package/app/.next/static/chunks/1149-2a1a69d288a31ae5.js +1 -0
  575. package/app/.next/static/chunks/5846-15bfcc3b3b045982.js +2 -0
  576. package/app/.next/static/chunks/{647-b834a711585a924d.js → 647-f03a498577a57cbc.js} +2 -2
  577. package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-43d6fa6b75cca497.js +1 -0
  578. package/app/.next/static/chunks/app/(dashboard)/dashboard/agents/{page-4ec5a1458c077143.js → page-31a14de3e374fe92.js} +1 -1
  579. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-49ae846d72948391.js +1 -0
  580. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-6ab7701da3357bb9.js → page-bef5c045e7eae657.js} +1 -1
  581. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-16f886b3711a6a50.js +1 -0
  582. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +1 -0
  583. package/app/.next/static/chunks/app/(dashboard)/dashboard/auto-combo/{page-851063ded34ab7a6.js → page-8e609f4c9b26a901.js} +1 -1
  584. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-c4700101a54c8b28.js +15 -0
  585. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-8d4d2f071d114b90.js +1 -0
  586. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-8f6233f59f5277e9.js → page-7a233357dfbd2e05.js} +1 -1
  587. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-7b1037d65eef97a8.js +1 -0
  588. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/{page-1e1eb2f79d606ab2.js → page-66ee4e631429e0d8.js} +1 -1
  589. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-c979e11de71281de.js +1 -0
  590. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-95e4b5e0bf023d76.js → page-6e4bcb48b8731915.js} +1 -1
  591. package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-8e35334b9f393139.js +1 -0
  592. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-fc10371ce5bdbce6.js +1 -0
  593. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/{page-5378e9473a20cd6a.js → page-d424641c7e428be9.js} +1 -1
  594. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-d75ccdb976b36258.js +1 -0
  595. package/app/.next/static/chunks/app/(dashboard)/dashboard/playground/{page-447998e91a92c56d.js → page-7a6b51b059e68468.js} +1 -1
  596. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-3c3feb78cfbe855c.js +1 -0
  597. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{error-a5ae03ba05400b04.js → error-0400f175dd1372fa.js} +1 -1
  598. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-9552383fd2e11282.js +1 -0
  599. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-d57908b59d4b482c.js +1 -0
  600. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-e8b8cb84b421b676.js → page-a3b2395f513e893f.js} +1 -1
  601. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{error-ec9643134a96bbcd.js → error-c39d18f10fb7d3f6.js} +1 -1
  602. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{loading-3519a633b514f31a.js → loading-b5faf05c78a2cc54.js} +1 -1
  603. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{page-cbaa4b638a583fe9.js → page-6b38a30bfddf3b89.js} +1 -1
  604. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-69eb8b0eb0e9de00.js → page-a4b8b03ffb39da1d.js} +1 -1
  605. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-10c186a0db5fde20.js → page-9168bf910743b2f5.js} +2 -2
  606. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9e20463252daf023.js +1 -0
  607. package/app/.next/static/chunks/app/(dashboard)/{layout-7ae0c66c22bee8a1.js → layout-6d0afc53f5f2a538.js} +1 -1
  608. package/app/.next/static/chunks/app/400/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  609. package/app/.next/static/chunks/app/401/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  610. package/app/.next/static/chunks/app/403/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  611. package/app/.next/static/chunks/app/408/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
  612. package/app/.next/static/chunks/app/429/page-3b77bf358909019a.js +1 -0
  613. package/app/.next/static/chunks/app/500/page-3b77bf358909019a.js +1 -0
  614. package/app/.next/static/chunks/app/502/page-3b77bf358909019a.js +1 -0
  615. package/app/.next/static/chunks/app/503/page-3b77bf358909019a.js +1 -0
  616. package/app/.next/static/chunks/app/callback/{page-0f0ebc0820dd18a5.js → page-585a53f7dc6a30f1.js} +1 -1
  617. package/app/.next/static/chunks/app/docs/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  618. package/app/.next/static/chunks/app/{error-32c03f14529d3920.js → error-f7f595c541537e63.js} +1 -1
  619. package/app/.next/static/chunks/app/forbidden/page-b33079c1573b0bfa.js +1 -0
  620. package/app/.next/static/chunks/app/forgot-password/page-90cd6259c75badfc.js +1 -0
  621. package/app/.next/static/chunks/app/global-error-1dfd1c91ad5199fe.js +1 -0
  622. package/app/.next/static/chunks/app/landing/page-9d540ab1716f8e3e.js +1 -0
  623. package/app/.next/static/chunks/app/{layout-070972eb026af319.js → layout-108592eafb959363.js} +1 -1
  624. package/app/.next/static/chunks/app/{loading-da2f6e1471afc070.js → loading-e063375d5b12a2f7.js} +1 -1
  625. package/app/.next/static/chunks/app/login/{page-26d717c652d56032.js → page-cf6b82187b09a701.js} +1 -1
  626. package/app/.next/static/chunks/app/maintenance/page-3b77bf358909019a.js +1 -0
  627. package/app/.next/static/chunks/app/not-found-511518956bcae7bc.js +1 -0
  628. package/app/.next/static/chunks/app/offline/page-9d6ea493783a0219.js +1 -0
  629. package/app/.next/static/chunks/app/privacy/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  630. package/app/.next/static/chunks/app/status/page-4e5e9b5a513aa474.js +1 -0
  631. package/app/.next/static/chunks/app/terms/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
  632. package/app/.next/static/chunks/{main-app-ae230f6bf51a5edb.js → main-app-c9da11a8061df107.js} +1 -1
  633. package/app/node_modules/@swc/helpers/package.json +228 -5
  634. package/app/package.json +6 -2
  635. package/app/server.js +1 -1
  636. package/app/src/mitm/server.ts +17 -3
  637. package/package.json +6 -2
  638. package/app/.env +0 -122
  639. package/app/.next/server/chunks/1909.js +0 -2
  640. package/app/.next/server/chunks/359.js +0 -1
  641. package/app/.next/server/chunks/4133.js +0 -1
  642. package/app/.next/server/chunks/7167.js +0 -1
  643. package/app/.next/server/chunks/9854.js +0 -9
  644. package/app/.next/static/chunks/1149-fefe7f95f0e9842f.js +0 -1
  645. package/app/.next/static/chunks/5846-d3aa3ba9dd16fa55.js +0 -2
  646. package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-ed1f5b1ae0e01c02.js +0 -1
  647. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6a2bb3ad980b05b9.js +0 -1
  648. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-027b3eb09d2d46e0.js +0 -1
  649. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c9b98846b8479f3f.js +0 -1
  650. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ad968920ad7029fd.js +0 -15
  651. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-ac5dcffbe54f77f9.js +0 -1
  652. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-36f33de29eb978a1.js +0 -1
  653. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-65334129a8e63369.js +0 -1
  654. package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-d9b5c3282ec5d809.js +0 -1
  655. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-adb79ef07d8dd6c5.js +0 -1
  656. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-40d20c1273f57206.js +0 -1
  657. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-350aed2e86512c23.js +0 -1
  658. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-7deaa9f550841465.js +0 -1
  659. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-3ef302da4b756e50.js +0 -1
  660. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-8c8f2d59d0cbb516.js +0 -1
  661. package/app/.next/static/chunks/app/429/page-3b9079ea400ca287.js +0 -1
  662. package/app/.next/static/chunks/app/500/page-3b9079ea400ca287.js +0 -1
  663. package/app/.next/static/chunks/app/502/page-3b9079ea400ca287.js +0 -1
  664. package/app/.next/static/chunks/app/503/page-3b9079ea400ca287.js +0 -1
  665. package/app/.next/static/chunks/app/forbidden/page-8d8e1709a1e32585.js +0 -1
  666. package/app/.next/static/chunks/app/forgot-password/page-d5c9b77748aa9deb.js +0 -1
  667. package/app/.next/static/chunks/app/global-error-5840b1caa830f2ec.js +0 -1
  668. package/app/.next/static/chunks/app/landing/page-75b0c988db383cfc.js +0 -1
  669. package/app/.next/static/chunks/app/maintenance/page-3b9079ea400ca287.js +0 -1
  670. package/app/.next/static/chunks/app/not-found-faf36d2a9a452506.js +0 -1
  671. package/app/.next/static/chunks/app/offline/page-bf68bf461af876a3.js +0 -1
  672. package/app/.next/static/chunks/app/status/page-29a433b40631ce12.js +0 -1
  673. package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  674. /package/app/.next/static/{xYoMYiq2lWi73ieYn-e4s → QcfAPzrFrahcOIJTqWlXo}/_buildManifest.js +0 -0
  675. /package/app/.next/static/{xYoMYiq2lWi73ieYn-e4s → QcfAPzrFrahcOIJTqWlXo}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=4488,exports.ids=[4488],exports.modules={44488:(a,b,c)=>{c.d(b,{G6:()=>y,getDbInstance:()=>A,kB:()=>x});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(48161),k=c.n(j);let l="omniroute";function m(){try{return k().homedir()}catch{return process.cwd()}}function n(a){if("string"!=typeof a)return null;let b=a.trim();return b?g().resolve(b):null}function o(){return g().join(m(),`.${l}`)}var p=c(73136);let q=function(){try{let a="file:///home/diegosouzapw/dev/proxys/9router/src/lib/db/migrationRunner.ts";if(a&&a.startsWith("file://")){let b=(0,p.fileURLToPath)(a);return g().join(g().dirname(b),"migrations")}}catch{}return g().join(process.cwd(),"src","lib","db","migrations")}(),r="object"==typeof globalThis.caches&&null!==globalThis.caches,s="phase-production-build"===process.env.NEXT_PHASE,t=function({isCloud:a=!1}={}){if(a)return"/tmp";let b=n(process.env.DATA_DIR);if(b)return b;let c=m();if("win32"===process.platform){let a=process.env.APPDATA||g().join(c,"AppData","Roaming");return g().join(a,l)}let d=n(process.env.XDG_CONFIG_HOME);return d?g().join(d,l):o()}({isCloud:r});r||o();let u=r?null:g().join(t,"storage.sqlite"),v=r?null:g().join(t,"db.json");if(r||g().join(t,"db_backups"),!r&&!i().existsSync(t))try{i().mkdirSync(t,{recursive:!0})}catch(b){let a=b instanceof Error?b.message:String(b);console.warn(`[DB] Cannot create data directory '${t}': ${a}
1
+ "use strict";exports.id=4488,exports.ids=[4488],exports.modules={44488:(a,b,c)=>{c.d(b,{G6:()=>y,getDbInstance:()=>A,kB:()=>x});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(48161),k=c.n(j);let l="omniroute";function m(){try{return k().homedir()}catch{return process.cwd()}}function n(a){if("string"!=typeof a)return null;let b=a.trim();return b?g().resolve(b):null}function o(){return g().join(m(),`.${l}`)}var p=c(73136);let q=function(){try{let a="file:///home/runner/work/OmniRoute/OmniRoute/src/lib/db/migrationRunner.ts";if(a&&a.startsWith("file://")){let b=(0,p.fileURLToPath)(a);return g().join(g().dirname(b),"migrations")}}catch{}return g().join(process.cwd(),"src","lib","db","migrations")}(),r="object"==typeof globalThis.caches&&null!==globalThis.caches,s="phase-production-build"===process.env.NEXT_PHASE,t=function({isCloud:a=!1}={}){if(a)return"/tmp";let b=n(process.env.DATA_DIR);if(b)return b;let c=m();if("win32"===process.platform){let a=process.env.APPDATA||g().join(c,"AppData","Roaming");return g().join(a,l)}let d=n(process.env.XDG_CONFIG_HOME);return d?g().join(d,l):o()}({isCloud:r});r||o();let u=r?null:g().join(t,"storage.sqlite"),v=r?null:g().join(t,"db.json");if(r||g().join(t,"db_backups"),!r&&!i().existsSync(t))try{i().mkdirSync(t,{recursive:!0})}catch(b){let a=b instanceof Error?b.message:String(b);console.warn(`[DB] Cannot create data directory '${t}': ${a}
2
2
  [DB] Set the DATA_DIR environment variable to a writable path, e.g.:
3
3
  [DB] DATA_DIR=/path/to/writable/dir omniroute`)}let w=`
4
4
  CREATE TABLE IF NOT EXISTS provider_connections (
@@ -0,0 +1 @@
1
+ exports.id=5248,exports.ids=[5248],exports.modules={1596:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ColumnToggle.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ColumnToggle.tsx","default")},1972:(a,b,c)=>{Promise.resolve().then(c.bind(c,45567)),Promise.resolve().then(c.bind(c,4355)),Promise.resolve().then(c.bind(c,77088)),Promise.resolve().then(c.bind(c,53156)),Promise.resolve().then(c.bind(c,2490)),Promise.resolve().then(c.bind(c,52198)),Promise.resolve().then(c.bind(c,27309)),Promise.resolve().then(c.bind(c,50818)),Promise.resolve().then(c.bind(c,85974)),Promise.resolve().then(c.bind(c,67083)),Promise.resolve().then(c.bind(c,22245)),Promise.resolve().then(c.bind(c,74771)),Promise.resolve().then(c.bind(c,29518)),Promise.resolve().then(c.bind(c,98004)),Promise.resolve().then(c.bind(c,41371)),Promise.resolve().then(c.bind(c,53140)),Promise.resolve().then(c.bind(c,16116)),Promise.resolve().then(c.bind(c,53280)),Promise.resolve().then(c.bind(c,22746)),Promise.resolve().then(c.bind(c,1237)),Promise.resolve().then(c.bind(c,65953)),Promise.resolve().then(c.bind(c,29494)),Promise.resolve().then(c.bind(c,18732)),Promise.resolve().then(c.bind(c,8744)),Promise.resolve().then(c.bind(c,56589)),Promise.resolve().then(c.bind(c,73979)),Promise.resolve().then(c.bind(c,46230)),Promise.resolve().then(c.bind(c,86059)),Promise.resolve().then(c.bind(c,59256)),Promise.resolve().then(c.bind(c,51490)),Promise.resolve().then(c.bind(c,75146)),Promise.resolve().then(c.bind(c,59869)),Promise.resolve().then(c.bind(c,65472)),Promise.resolve().then(c.bind(c,62688)),Promise.resolve().then(c.bind(c,82054))},6676:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5735);c(97528),c(61647),c(65630),c(39896),c(37487),c(23520),c(44453),c(9037),c(83746),c(19411),c(32444),c(84832),c(11669),c(70643),c(77406),c(92452),c(22571),c(11492),c(44389),c(60595),c(23059),c(33696),c(8598),c(91685),c(13618),c(20263),c(9465),c(77042),c(53504),c(89806),c(62805),c(1596),c(73272);var e=c(51098);function f({children:a}){return(0,d.jsx)(e.default,{children:a})}c(27914)},8598:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/KiroAuthModal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/KiroAuthModal.tsx","default")},9037:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Badge.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Badge.tsx","default")},9465:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/SegmentedControl.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/SegmentedControl.tsx","default")},11492:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/UsageStats.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/UsageStats.tsx","default")},11669:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Header.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Header.tsx","default")},13618:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/KiroSocialOAuthModal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/KiroSocialOAuthModal.tsx","default")},19411:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ThemeToggle.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ThemeToggle.tsx","default")},20263:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/CursorAuthModal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/CursorAuthModal.tsx","default")},22571:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ManualConfigModal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ManualConfigModal.tsx","default")},23059:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ProxyConfigModal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ProxyConfigModal.tsx","default")},23520:(a,b,c)=>{"use strict";c.d(b,{CardSkeleton:()=>h,PageLoading:()=>f,Skeleton:()=>g,Spinner:()=>e,default:()=>i});var d=c(77943);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call Spinner() from the server but Spinner is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx","Spinner"),f=(0,d.registerClientReference)(function(){throw Error("Attempted to call PageLoading() from the server but PageLoading is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx","PageLoading"),g=(0,d.registerClientReference)(function(){throw Error("Attempted to call Skeleton() from the server but Skeleton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx","Skeleton"),h=(0,d.registerClientReference)(function(){throw Error("Attempted to call CardSkeleton() from the server but CardSkeleton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx","CardSkeleton"),i=(0,d.registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Loading.tsx","default")},27914:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/layouts/AuthLayout.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/layouts/AuthLayout.tsx","default")},33696:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ProxyLogger.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ProxyLogger.tsx","default")},37487:(a,b,c)=>{"use strict";c.d(b,{ConfirmModal:()=>f,default:()=>e});var d=c(77943);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Modal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Modal.tsx","default"),f=(0,d.registerClientReference)(function(){throw Error("Attempted to call ConfirmModal() from the server but ConfirmModal is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Modal.tsx","ConfirmModal")},39896:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Card.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Card.tsx","default")},44389:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/UsageAnalytics.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/UsageAnalytics.tsx","default")},44453:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Avatar.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Avatar.tsx","default")},49236:(a,b,c)=>{Promise.resolve().then(c.bind(c,44453)),Promise.resolve().then(c.bind(c,9037)),Promise.resolve().then(c.bind(c,77042)),Promise.resolve().then(c.bind(c,97528)),Promise.resolve().then(c.bind(c,39896)),Promise.resolve().then(c.bind(c,1596)),Promise.resolve().then(c.bind(c,20263)),Promise.resolve().then(c.bind(c,73272)),Promise.resolve().then(c.bind(c,53504)),Promise.resolve().then(c.bind(c,62805)),Promise.resolve().then(c.bind(c,70643)),Promise.resolve().then(c.bind(c,11669)),Promise.resolve().then(c.bind(c,61647)),Promise.resolve().then(c.bind(c,8598)),Promise.resolve().then(c.bind(c,91685)),Promise.resolve().then(c.bind(c,13618)),Promise.resolve().then(c.bind(c,27914)),Promise.resolve().then(c.bind(c,51098)),Promise.resolve().then(c.bind(c,23520)),Promise.resolve().then(c.bind(c,22571)),Promise.resolve().then(c.bind(c,37487)),Promise.resolve().then(c.bind(c,92452)),Promise.resolve().then(c.bind(c,89806)),Promise.resolve().then(c.bind(c,77406)),Promise.resolve().then(c.bind(c,23059)),Promise.resolve().then(c.bind(c,33696)),Promise.resolve().then(c.bind(c,60595)),Promise.resolve().then(c.bind(c,9465)),Promise.resolve().then(c.bind(c,65630)),Promise.resolve().then(c.bind(c,84832)),Promise.resolve().then(c.bind(c,32444)),Promise.resolve().then(c.bind(c,19411)),Promise.resolve().then(c.bind(c,83746)),Promise.resolve().then(c.bind(c,44389)),Promise.resolve().then(c.bind(c,11492))},51098:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/layouts/DashboardLayout.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/layouts/DashboardLayout.tsx","default")},53504:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/EmptyState.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/EmptyState.tsx","default")},60595:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/RequestLoggerV2.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/RequestLoggerV2.tsx","default")},61647:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Input.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Input.tsx","default")},62805:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/FilterBar.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/FilterBar.tsx","default")},65630:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Select.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Select.tsx","default")},70643:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Footer.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Footer.tsx","default")},73272:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/DataTable.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/DataTable.tsx","default")},77042:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Breadcrumbs.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Breadcrumbs.tsx","default")},77406:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/OAuthModal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/OAuthModal.tsx","default")},83746:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Toggle.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Toggle.tsx","default")},84832:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Sidebar.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Sidebar.tsx","default")},89806:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/NotificationToast.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/NotificationToast.tsx","default")},91685:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/KiroOAuthWrapper.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/KiroOAuthWrapper.tsx","default")},92452:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ModelSelectModal.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ModelSelectModal.tsx","default")},97528:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Button.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/Button.tsx","default")}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=5419,exports.ids=[5419],exports.modules={647:(a,b,c)=>{c.d(b,{Bm:()=>x,DZ:()=>u,h$:()=>y,nX:()=>t,ne:()=>z,nq:()=>v,yL:()=>s,zl:()=>w});var d=c(64926),e=c(13419);let f=process.env.OMNIROUTE_BASE_URL||"http://localhost:20128",g=process.env.OMNIROUTE_API_KEY||"";async function h(a,b={}){let c=`${f}${a}`,d={"Content-Type":"application/json",...g?{Authorization:`Bearer ${g}`}:{},...b.headers||{}},e=await fetch(c,{...b,headers:d,signal:AbortSignal.timeout(3e4)});if(!e.ok){let a=await e.text().catch(()=>"Unknown error");throw Error(`API [${e.status}]: ${a}`)}return e.json()}function i(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function j(a){return i(a)?a:{}}function k(a){return Array.isArray(a)?a.filter(i):[]}function l(a,b=""){return"string"==typeof a?a:b}function m(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function n(a){let b=k(a.models),c=k(j(a.data).models);return(b.length>0?b:c).map(a=>({provider:l(a.provider,"unknown"),model:l(a.model,""),inputCostPer1M:m(a.inputCostPer1M,3)}))}function o(a){if(Array.isArray(a))return a.filter(i);let b=j(a);return Array.isArray(b.combos)?b.combos.filter(i):[]}let p=null,q={aggressive:{profiles:{oauth:{transientCooldown:3e3,rateLimitCooldown:3e4,maxBackoffLevel:4,circuitBreakerThreshold:2,circuitBreakerReset:3e4},apikey:{transientCooldown:2e3,rateLimitCooldown:0,maxBackoffLevel:3,circuitBreakerThreshold:3,circuitBreakerReset:15e3}},defaults:{requestsPerMinute:180,minTimeBetweenRequests:100,concurrentRequests:16}},balanced:{profiles:{oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},defaults:{requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10}},conservative:{profiles:{oauth:{transientCooldown:8e3,rateLimitCooldown:12e4,maxBackoffLevel:10,circuitBreakerThreshold:8,circuitBreakerReset:12e4},apikey:{transientCooldown:5e3,rateLimitCooldown:3e4,maxBackoffLevel:8,circuitBreakerThreshold:8,circuitBreakerReset:6e4}},defaults:{requestsPerMinute:60,minTimeBetweenRequests:350,concurrentRequests:6}}},r={coding:{preferred:["claude","deepseek","codex"],traits:["fast","code-optimized"]},review:{preferred:["claude","gemini","openai"],traits:["analytical","thorough"]},planning:{preferred:["gemini","claude","openai"],traits:["reasoning","structured"]},analysis:{preferred:["gemini","claude"],traits:["deep-reasoning","large-context"]},debugging:{preferred:["claude","deepseek","codex"],traits:["code-aware","fast"]},documentation:{preferred:["gemini","claude","openai"],traits:["clear","structured"]}};async function s(a){let b=Date.now();try{let[c,f,g]=await Promise.allSettled([h("/api/combos"),h("/api/monitoring/health"),h("/api/usage/quota")]),i="fulfilled"===c.status?o(c.value):[],m="fulfilled"===f.status?j(f.value):{},p="fulfilled"===g.status?(0,e.H)(g.value):(0,e.H)({}),q=a.combo?i.find(b=>l(b.id)===a.combo||l(b.name)===a.combo):i.find(a=>!1!==a.enabled);if(!q)return{content:[{type:"text",text:JSON.stringify({error:"No matching combo found"})}],isError:!0};let r=n(q),s=k(m.circuitBreakers),t=p.providers,u=r.map((b,c)=>{let d=s.find(a=>l(a.provider)===b.provider),e=t.find(a=>a.provider===b.provider),f=a.promptTokenEstimate/1e6*b.inputCostPer1M;return{provider:b.provider,model:b.model||a.model,probability:0===c?.85:.15/Math.max(r.length-1,1),estimatedCost:Math.round(1e4*f)/1e4,healthStatus:l(d?.state,"CLOSED"),quotaAvailable:e?.percentRemaining??100}}),v=u.map(a=>a.estimatedCost),w={simulatedPath:u,fallbackTree:{primary:u[0]?.provider||"unknown",fallbacks:u.slice(1).map(a=>a.provider),worstCaseCost:Math.max(...v,0),bestCaseCost:Math.min(...v,0)}};return await (0,d.Bv)("omniroute_simulate_route",a,w,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(w,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_simulate_route",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function t(a){let b=Date.now();try{let c=0;try{let a=j(await h("/api/usage/analytics?period=session"));c=m(a.totalCost,0)}catch{}p={sessionId:`budget_${Date.now()}`,maxCost:a.maxCost,action:a.action,degradeToTier:a.degradeToTier,spent:c,createdAt:new Date().toISOString()};let e=Math.max(0,a.maxCost-c),f={sessionId:p.sessionId,budgetTotal:a.maxCost,budgetSpent:Math.round(1e4*c)/1e4,budgetRemaining:Math.round(1e4*e)/1e4,action:a.action,status:e<=0?"exceeded":e<.2*a.maxCost?"warning":"active"};return await (0,d.Bv)("omniroute_set_budget_guard",{maxCost:a.maxCost,action:a.action},f,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_set_budget_guard",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function u(a){let b=Date.now();try{let c=q[a.profile];if(!c)return{content:[{type:"text",text:`Error: Invalid profile "${a.profile}"`}],isError:!0};await h("/api/resilience",{method:"PATCH",body:JSON.stringify({profiles:c.profiles,defaults:c.defaults})});let e={applied:!0,profile:a.profile,settings:c};return await (0,d.Bv)("omniroute_set_resilience_profile",a,e,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(e,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_set_resilience_profile",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function v(a){let b=Date.now();try{let c=o(await h("/api/combos")).find(b=>l(b.id)===a.comboId||l(b.name)===a.comboId);if(!c)return{content:[{type:"text",text:JSON.stringify({error:`Combo "${a.comboId}" not found`})}],isError:!0};let e=n(c),f=(a.testPrompt||"Say hello").slice(0,200),g=(await Promise.allSettled(e.map(async a=>{let b=Date.now();try{let c=j(await h("/v1/chat/completions",{method:"POST",body:JSON.stringify({model:a.model||"auto",messages:[{role:"user",content:f}],max_tokens:50,stream:!1,"x-provider":a.provider})})),d=j(c.usage);return{provider:a.provider,model:a.model||l(c.model,"unknown"),success:!0,latencyMs:Date.now()-b,cost:m(c.cost,0),tokenCount:m(d.prompt_tokens,0)+m(d.completion_tokens,0)}}catch(c){return{provider:a.provider,model:a.model||"unknown",success:!1,latencyMs:Date.now()-b,cost:0,tokenCount:0,error:c instanceof Error?c.message:String(c)}}}))).map(a=>"fulfilled"===a.status?a.value:{provider:"unknown",model:"unknown",success:!1,latencyMs:0,cost:0,tokenCount:0,error:"Promise rejected"}),i=g.filter(a=>a.success),k=i.sort((a,b)=>a.latencyMs-b.latencyMs)[0],p=i.sort((a,b)=>a.cost-b.cost)[0],q={results:g,summary:{totalProviders:g.length,successful:i.length,fastestProvider:k?.provider||"none",cheapestProvider:p?.provider||"none"}};return await (0,d.Bv)("omniroute_test_combo",{comboId:a.comboId},q.summary,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(q,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_test_combo",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function w(a){let b=Date.now();try{let[c,f,g]=await Promise.allSettled([h("/api/monitoring/health"),h(`/api/usage/quota?provider=${encodeURIComponent(a.provider)}`),h(`/api/usage/analytics?period=session&provider=${encodeURIComponent(a.provider)}`)]),i="fulfilled"===c.status?j(c.value):{},n="fulfilled"===f.status?(0,e.H)(f.value,{provider:a.provider}):(0,e.H)({}),o="fulfilled"===g.status?j(g.value):{},p=k(i.circuitBreakers).find(b=>l(b.provider)===a.provider),q=n.providers.find(b=>b.provider===a.provider)||null,r={provider:a.provider,successRate:m(o.successRate,1),requestCount:m(o.requestCount,0),avgLatencyMs:m(o.avgLatencyMs,0),p50LatencyMs:m(o.p50LatencyMs,0),p95LatencyMs:m(o.p95LatencyMs,0),p99LatencyMs:m(o.p99LatencyMs,0),errorRate:m(o.errorRate,0),lastError:l(o.lastError)||null,circuitBreakerState:l(p?.state,"CLOSED"),quotaInfo:q?{used:q.quotaUsed,total:q.quotaTotal,resetAt:q.resetAt}:{used:0,total:null,resetAt:null}};return await (0,d.Bv)("omniroute_get_provider_metrics",a,r,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_get_provider_metrics",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function x(a){let b=Date.now();try{let c=r[a.taskType]||r.coding,e=o(await h("/api/combos")).filter(a=>!1!==a.enabled);if(0===e.length)return{content:[{type:"text",text:JSON.stringify({error:"No enabled combos available"})}],isError:!0};let f=e.map(a=>{let b=n(a),d=0;for(let a of b){let b=c.preferred.indexOf(a.provider);b>=0&&(d+=(c.preferred.length-b)*10)}let e=l(a.name).toLowerCase();for(let a of c.traits)e.includes(a)&&(d+=5);let f=e.includes("free")||b.every(a=>a.provider.toLowerCase().includes("free"));return{combo:a,score:d,isFree:f}});f.sort((a,b)=>b.score-a.score);let g=f[0],i=f.slice(1,4).map(a=>({id:a.combo.id,name:a.combo.name,tradeoff:a.isFree?"free but may have limits":a.score<.5*g.score?"cheaper but slower":"similar quality, different providers"})),j=f.find(a=>a.isFree&&a!==g),k={recommendedCombo:{id:g.combo.id,name:g.combo.name,reason:`Best match for "${a.taskType}": preferred providers (${c.preferred.slice(0,3).join(", ")})`},alternatives:i,freeAlternative:j?{id:j.combo.id,name:j.combo.name}:null};return await (0,d.Bv)("omniroute_best_combo_for_task",a,k.recommendedCombo,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(k,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_best_combo_for_task",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function y(a){let b=Date.now();try{let c=null;try{c=j(await h(`/api/routing/decisions/${encodeURIComponent(a.requestId)}`))}catch{}let e=c?{requestId:a.requestId,decision:{comboUsed:c.comboUsed||"default",providerSelected:c.providerSelected||"unknown",modelUsed:c.modelUsed||"unknown",score:c.score||0,factors:c.factors||[{name:"health",value:1,weight:.3,contribution:.3},{name:"quota",value:1,weight:.25,contribution:.25},{name:"cost",value:.8,weight:.2,contribution:.16},{name:"latency",value:.9,weight:.15,contribution:.135},{name:"task_fit",value:.7,weight:.1,contribution:.07}],fallbacksTriggered:c.fallbacksTriggered||[],costActual:c.costActual||0,latencyActual:c.latencyActual||0}}:{requestId:a.requestId,decision:{comboUsed:"unknown",providerSelected:"unknown",modelUsed:"unknown",score:0,factors:[],fallbacksTriggered:[],costActual:0,latencyActual:0},note:"Routing decision not found. The /api/routing/decisions endpoint may not be implemented yet, or the requestId is invalid."};return await (0,d.Bv)("omniroute_explain_route",a,{requestId:a.requestId},Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(e,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_explain_route",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function z(){let a=Date.now();try{let b=j(await h("/api/usage/analytics?period=session").catch(()=>({}))),c=j(b.tokenCount),e=k(b.byModel),f=k(b.byProvider),g={sessionStart:l(b.sessionStart,new Date().toISOString()),duration:l(b.duration,"unknown"),requestCount:m(b.requestCount,0),costTotal:m(b.totalCost,0),tokenCount:{prompt:m(c.prompt,0),completion:m(c.completion,0)},topModels:e.slice(0,5).map(a=>({model:l(a.model,"unknown"),count:m(a.requests,0)})),topProviders:f.slice(0,5).map(a=>({provider:l(a.name,"unknown"),count:m(a.requests,0)})),errors:m(b.errorCount,0),fallbacks:m(b.fallbackCount,0),budgetGuard:p?{active:!0,remaining:Math.max(0,p.maxCost-p.spent),action:p.action}:null};return await (0,d.Bv)("omniroute_get_session_snapshot",{},{requestCount:g.requestCount},Date.now()-a,!0),{content:[{type:"text",text:JSON.stringify(g,null,2)}]}}catch(c){let b=c instanceof Error?c.message:String(c);return await (0,d.Bv)("omniroute_get_session_snapshot",{},null,Date.now()-a,!1,b),{content:[{type:"text",text:`Error: ${b}`}],isError:!0}}}},13234:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Z:()=>i,x:()=>h});var e=c(2306),f=a([e]);function g(a){if(!Array.isArray(a))return[];let b=a.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean);return Array.from(new Set(b))}function h(a,b=[]){let c="string"==typeof a?.authInfo?.clientId&&a.authInfo.clientId.trim()||"string"==typeof a?.sessionId&&a.sessionId.trim()||"anonymous",d=g(a?.authInfo?.scopes);if(d.length>0)return{callerId:c,scopes:d,source:"authInfo"};let e=function(a){if(!a||"object"!=typeof a)return[];let b=g(a.scopes);if(b.length>0)return b;let c=a.auth;if(c&&"object"==typeof c){let a=g(c.scopes);if(a.length>0)return a}let d=a.omniroute;if(d&&"object"==typeof d){let a=g(d.scopes);if(a.length>0)return a}return[]}(a?._meta);if(e.length>0)return{callerId:c,scopes:e,source:"meta"};let f=g(b);return f.length>0?{callerId:c,scopes:f,source:"env"}:{callerId:c,scopes:[],source:"none"}}function i(a,b,c){let d=e.Dk[a];if(!d)return{allowed:!1,required:[],provided:Array.from(b),missing:[],reason:"tool_definition_missing"};let f=Array.isArray(d.scopes)?Array.from(d.scopes):[],h=g(b);if(!c||0===f.length)return{allowed:!0,required:f,provided:h,missing:[]};let i=f.filter(a=>!h.some(b=>(function(a,b){if("*"===a||a===b)return!0;if(a.endsWith("*")){let c=a.slice(0,-1);return b.startsWith(c)}return!1})(b,a)));return{allowed:0===i.length,required:f,provided:h,missing:i,reason:i.length>0?"missing_scopes":void 0}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},13419:(a,b,c)=>{c.d(b,{H:()=>h,J:()=>g});let d=["valid","expiring","expired","refreshing"];function e(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return null}function f(a,b,c){return Math.min(c,Math.max(b,a))}function g(a){var b;let c=a&&"object"==typeof a?a:{},g="string"==typeof c.provider?c.provider:"unknown",h="string"==typeof c.name&&c.name.trim()?c.name:g,i="string"==typeof c.connectionId&&c.connectionId.trim()?c.connectionId:"unknown",j=e(c.quotaTotal),k=null!==j&&j>=0?j:null,l=e(c.quotaUsed)??0,m=null!==k?f(l,0,k):Math.max(0,l),n=e(c.percentRemaining);return null===n&&(n=k&&k>0?(k-m)/k*100:100),{name:h,provider:g,connectionId:i,quotaUsed:m,quotaTotal:k,percentRemaining:f(n,0,100),resetAt:"string"==typeof c.resetAt&&c.resetAt.trim()?c.resetAt:null,tokenStatus:"string"==typeof(b=c.tokenStatus)&&d.includes(b)?b:"valid"}}function h(a,b={}){let c=a&&"object"==typeof a?a:{},d=(Array.isArray(c.providers)?c.providers:Array.isArray(a)?a:[]).map(a=>g(a)),e=c.meta&&"object"==typeof c.meta?c.meta:{},f=e.filters&&"object"==typeof e.filters?e.filters:{},i=b.provider??("string"==typeof f.provider&&f.provider.trim()?f.provider:null),j=b.connectionId??("string"==typeof f.connectionId&&f.connectionId.trim()?f.connectionId:null);return{providers:d,meta:{generatedAt:"string"==typeof e.generatedAt&&e.generatedAt.trim()?e.generatedAt:new Date().toISOString(),filters:{provider:i||null,connectionId:j||null},totalProviders:d.length}}}},25755:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{c:()=>B});var e=c(10610),f=c(92827),g=c(2306),h=c(43620),i=c(64926),j=c(13234),k=c(647),l=c(13419),m=a([e,f,g,j]);[e,f,g,j]=m.then?(await m)():m;let D=process.env.OMNIROUTE_BASE_URL||"http://localhost:20128",E=process.env.OMNIROUTE_API_KEY||"",F="true"===process.env.OMNIROUTE_MCP_ENFORCE_SCOPES,G=new Set((process.env.OMNIROUTE_MCP_SCOPES||"").split(",").map(a=>a.trim()).filter(Boolean));function n(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function o(a){return Array.isArray(a)?a:[]}function p(a,b=""){return"string"==typeof a?a:b}function q(a,b=0){return"number"==typeof a&&Number.isFinite(a)?a:b}async function r(a,b={}){let c=`${D}${a}`,d={"Content-Type":"application/json",...E?{Authorization:`Bearer ${E}`}:{},...b.headers||{}},e=await fetch(c,{...b,headers:d,signal:AbortSignal.timeout(1e4)});if(!e.ok){let a=await e.text().catch(()=>"Unknown error");throw Error(`OmniRoute API error [${e.status}]: ${a}`)}return e.json()}function s(a,b){return async(c,d)=>{let e=(0,j.x)(d,Array.from(G)),f=(0,j.Z)(a,e.scopes,F);if(!f.allowed){let b=f.missing.length>0?f.missing.join(", "):"unavailable",d=f.reason||"scope_check_failed",g=`Insufficient MCP scopes for ${a}. Missing: ${b}. Caller=${e.callerId}, source=${e.source}.`,h=c&&"object"==typeof c?n(c):{rawArgs:c};return await (0,i.Bv)(a,{...h,_scopeCheck:{callerId:e.callerId,source:e.source,required:f.required,provided:f.provided,missing:f.missing}},null,0,!1,`scope_denied:${d}`),{content:[{type:"text",text:`Error: ${g}`}],isError:!0}}return b(c,d)}}async function t(){let a=Date.now();try{let[b,c,d]=await Promise.allSettled([r("/api/monitoring/health"),r("/api/resilience"),r("/api/rate-limits")]),e="fulfilled"===b.status?n(b.value):{},f="fulfilled"===c.status?n(c.value):{},g="fulfilled"===d.status?n(d.value):{},h=n(e.memoryUsage),j=n(e.cacheStats),k=o(f.circuitBreakers),l=o(g.limits),m={uptime:p(e.uptime,"unknown"),version:p(e.version,"unknown"),memoryUsage:{heapUsed:q(h.heapUsed,0),heapTotal:q(h.heapTotal,0)},circuitBreakers:k,rateLimits:l,cacheStats:Object.keys(j).length>0?{hits:q(j.hits,0),misses:q(j.misses,0),hitRate:q(j.hitRate,0)}:void 0};return await (0,i.Bv)("omniroute_get_health",{},m,Date.now()-a,!0),{content:[{type:"text",text:JSON.stringify(m,null,2)}]}}catch(c){let b=c instanceof Error?c.message:String(c);return await (0,i.Bv)("omniroute_get_health",{},null,Date.now()-a,!1,b),{content:[{type:"text",text:`Error: ${b}`}],isError:!0}}}async function u(a){let b=Date.now();try{let c=await r("/api/combos"),d=n(c),e=Array.isArray(d.combos)?d.combos:Array.isArray(c)?c:[],f={};a.includeMetrics&&(f=n(await r("/api/combos/metrics").catch(()=>({}))));let g={combos:o(e).map(b=>{let c=n(b),d=n(c.data),e=p(c.id,""),g=Array.isArray(c.models)&&c.models.length>0?c.models:d.models;return{id:e,name:p(c.name,e||"unnamed"),models:o(g).map((a,b)=>{let c=n(a);return{provider:p(c.provider,"unknown"),model:p(c.model,"unknown"),priority:q(c.priority,b+1)}}),strategy:p(c.strategy,p(d.strategy,"priority")),enabled:!1!==c.enabled,...a.includeMetrics?{metrics:f[e]??null}:{}}})};return await (0,i.Bv)("omniroute_list_combos",a,g,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(g,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_list_combos",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function v(a){let b=Date.now();try{let c=await r(`/api/combos/metrics?comboId=${encodeURIComponent(a.comboId)}`);return await (0,i.Bv)("omniroute_get_combo_metrics",a,c,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(c,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_get_combo_metrics",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function w(a){let b=Date.now();try{let c=await r(`/api/combos/${encodeURIComponent(a.comboId)}`,{method:"PUT",body:JSON.stringify({isActive:a.active})});return await (0,i.Bv)("omniroute_switch_combo",a,c,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(c,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_switch_combo",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function x(a){let b=Date.now();try{let c="/api/usage/quota";a.connectionId?c+=`?connectionId=${encodeURIComponent(a.connectionId)}`:a.provider&&(c+=`?provider=${encodeURIComponent(a.provider)}`);let d=(0,l.H)(await r(c),{provider:a.provider||null,connectionId:a.connectionId||null});return await (0,i.Bv)("omniroute_check_quota",a,d,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_check_quota",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function y(a){let b=Date.now();try{let c={model:a.model,messages:a.messages,stream:!1};a.combo&&(c["x-combo"]=a.combo);let d=await r("/v1/chat/completions",{method:"POST",body:JSON.stringify(c)}),e=o(d.choices),f=n(e[0]),g=n(f.message),h=n(d.usage),j={response:{content:p(g.content,""),model:p(d.model,a.model),tokens:{prompt:q(h.prompt_tokens,0),completion:q(h.completion_tokens,0)}},routing:{provider:p(d.provider,"unknown"),combo:d.combo??null,fallbacksTriggered:q(d.fallbacksTriggered,0),cost:q(d.cost,0),latencyMs:Date.now()-b,routingExplanation:p(d.routingExplanation,"Request routed through primary provider")}};return await (0,i.Bv)("omniroute_route_request",{model:a.model,messageCount:a.messages.length},j.routing,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(j,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_route_request",{model:a.model},null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function z(a){let b=Date.now();try{let c=a.period||"session",d={session:"1d",day:"1d",week:"7d",month:"30d"}[c]||"30d",e=n(await r(`/api/usage/analytics?range=${encodeURIComponent(d)}`)),f=n(e.tokenCount),g=n(e.budget),h={period:c,totalCost:q(e.totalCost,0),requestCount:q(e.requestCount,0),tokenCount:{prompt:q(f.prompt,0),completion:q(f.completion,0)},byProvider:o(e.byProvider),byModel:o(e.byModel),budget:{limit:g.limit??null,remaining:g.remaining??null}};return await (0,i.Bv)("omniroute_cost_report",a,h,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(h,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_cost_report",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function A(a){let b=Date.now();try{let c="/v1/models",d=new URLSearchParams;a.provider&&d.set("provider",a.provider),a.capability&&d.set("capability",a.capability),d.toString()&&(c+=`?${d.toString()}`);let e=n(await r(c)),f={models:o(e.data).map(a=>{let b=n(a);return{id:p(b.id,""),provider:p(b.owned_by,p(b.provider,"unknown")),capabilities:function(a,b=[]){let c=o(a).filter(a=>"string"==typeof a);return c.length>0?c:b}(b.capabilities,["chat"]),status:p(b.status,"available"),pricing:b.pricing}})};return await (0,i.Bv)("omniroute_list_models_catalog",a,{modelCount:f.models.length},Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_list_models_catalog",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}function B(){let a=new e._({name:"omniroute",version:process.env.npm_package_version||"1.8.1"});return a.registerTool("omniroute_get_health",{description:"Returns OmniRoute health status including uptime, memory, circuit breakers, rate limits, and cache stats",inputSchema:g.nu},s("omniroute_get_health",async a=>(g.nu.parse(a??{}),t()))),a.registerTool("omniroute_list_combos",{description:"Lists all configured combos (model chains) with strategies and optional metrics",inputSchema:g.ME},s("omniroute_list_combos",a=>u(g.ME.parse(a)))),a.registerTool("omniroute_get_combo_metrics",{description:"Returns detailed performance metrics for a specific combo",inputSchema:g.Gs},s("omniroute_get_combo_metrics",a=>v(g.Gs.parse(a)))),a.registerTool("omniroute_switch_combo",{description:"Activates or deactivates a combo for routing",inputSchema:g.B1},s("omniroute_switch_combo",a=>w(g.B1.parse(a)))),a.registerTool("omniroute_check_quota",{description:"Checks remaining API quota for one or all providers",inputSchema:g.Fp},s("omniroute_check_quota",a=>x(g.Fp.parse(a)))),a.registerTool("omniroute_route_request",{description:"Sends a chat completion request through OmniRoute intelligent routing",inputSchema:g.fL},s("omniroute_route_request",a=>y(g.fL.parse(a)))),a.registerTool("omniroute_cost_report",{description:"Generates a cost report for the specified period",inputSchema:g.c},s("omniroute_cost_report",a=>z(g.c.parse(a)))),a.registerTool("omniroute_list_models_catalog",{description:"Lists all available AI models across providers with capabilities and pricing",inputSchema:g._v},s("omniroute_list_models_catalog",a=>A(g._v.parse(a)))),a.registerTool("omniroute_simulate_route",{description:"Simulates the routing path a request would take without executing it (dry-run)",inputSchema:g.gl},s("omniroute_simulate_route",a=>(0,k.yL)(g.gl.parse(a)))),a.registerTool("omniroute_set_budget_guard",{description:"Sets a session budget limit with configurable action when exceeded (degrade/block/alert)",inputSchema:g.b9},s("omniroute_set_budget_guard",a=>(0,k.nX)(g.b9.parse(a)))),a.registerTool("omniroute_set_resilience_profile",{description:"Applies a resilience profile controlling circuit breakers, retries, timeouts, and fallback depth",inputSchema:g.dE},s("omniroute_set_resilience_profile",a=>(0,k.DZ)(g.dE.parse(a)))),a.registerTool("omniroute_test_combo",{description:"Tests each provider in a combo with a real prompt, reporting latency, cost, and success per provider",inputSchema:g.n0},s("omniroute_test_combo",a=>(0,k.nq)(g.n0.parse(a)))),a.registerTool("omniroute_get_provider_metrics",{description:"Returns detailed metrics for a specific provider including latency percentiles and circuit breaker state",inputSchema:g.xs},s("omniroute_get_provider_metrics",a=>(0,k.zl)(g.xs.parse(a)))),a.registerTool("omniroute_best_combo_for_task",{description:"Recommends the best combo for a task type based on provider fitness and constraints",inputSchema:g.h0},s("omniroute_best_combo_for_task",a=>(0,k.Bm)(g.h0.parse(a)))),a.registerTool("omniroute_explain_route",{description:"Explains why a request was routed to a specific provider, showing scoring factors and fallbacks",inputSchema:g.t7},s("omniroute_explain_route",a=>(0,k.h$)(g.t7.parse(a)))),a.registerTool("omniroute_get_session_snapshot",{description:"Returns a full snapshot of the current working session: cost, tokens, top models, errors, budget status",inputSchema:g.ne},s("omniroute_get_session_snapshot",async a=>(g.ne.parse(a??{}),(0,k.ne)()))),a}async function C(){let a=B(),b=new f.S,c=process.env.npm_package_version||"1.8.1",d=(0,h.rs)({version:c,scopesEnforced:F,allowedScopes:Array.from(G),toolCount:g.nS.length}),e=()=>{d()};process.once("exit",e),process.once("SIGINT",e),process.once("SIGTERM",e),console.error("[MCP] OmniRoute MCP Server starting (stdio transport)...");try{await a.connect(b),console.error("[MCP] OmniRoute MCP Server connected and ready.")}finally{e(),process.off("exit",e),process.off("SIGINT",e),process.off("SIGTERM",e)}}process.argv[1]&&"file:///home/diegosouzapw/dev/proxys/9router/open-sse/mcp-server/server.ts".endsWith(process.argv[1].replace(/\\/g,"/"))&&C().catch(a=>{console.error("[MCP] Fatal error:",a),process.exit(1)}),d()}catch(a){d(a)}})},43620:(a,b,c)=>{c.d(b,{Im:()=>n,c7:()=>i,h6:()=>l,jW:()=>m,rs:()=>k});var d=c(73024),e=c(48161),f=c(76760);let g="runtime";function h(){let a=process.env.DATA_DIR;return"string"==typeof a&&a.trim().length>0?a.trim():(0,f.join)((0,e.homedir)(),".omniroute")}function i(){return(0,f.join)(h(),g,"mcp-heartbeat.json")}async function j(a){let b=i(),c=(0,f.join)(h(),g);await d.promises.mkdir(c,{recursive:!0}),await d.promises.writeFile(b,JSON.stringify(a,null,2),"utf-8")}function k(a){let b=new Date().toISOString(),c=null,d=!1,e="number"==typeof a.intervalMs&&a.intervalMs>0?a.intervalMs:5e3,f=async()=>{if(d)return;let c={pid:process.pid,startedAt:b,lastHeartbeatAt:new Date().toISOString(),version:a.version,transport:"stdio",scopesEnforced:a.scopesEnforced,allowedScopes:[...a.allowedScopes],toolCount:a.toolCount};try{await j(c)}catch(a){console.error("[MCP Heartbeat] Failed to write heartbeat:",a instanceof Error?a.message:String(a))}};return f(),c=setInterval(()=>{f()},e),()=>{d||(d=!0,c&&(clearInterval(c),c=null),f())}}async function l(){let a=i();try{let b=await d.promises.readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||"number"!=typeof c.pid||"string"!=typeof c.startedAt||"string"!=typeof c.lastHeartbeatAt||"string"!=typeof c.version||"stdio"!==c.transport||"boolean"!=typeof c.scopesEnforced||!Array.isArray(c.allowedScopes)||"number"!=typeof c.toolCount)return null;let e=c.allowedScopes.filter(a=>"string"==typeof a);return{pid:c.pid,startedAt:c.startedAt,lastHeartbeatAt:c.lastHeartbeatAt,version:c.version,transport:"stdio",scopesEnforced:c.scopesEnforced,allowedScopes:e,toolCount:c.toolCount}}catch{return null}}function m(a){if(!Number.isFinite(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}function n(a,b){if(!a)return!1;let c="number"==typeof b?.staleAfterMs&&b.staleAfterMs>0?b.staleAfterMs:15e3,d=Date.now()-new Date(a.lastHeartbeatAt).getTime();return!!Number.isFinite(d)&&!(d>c)&&(b?.requireLivePid===!1||m(a.pid))}},45419:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{V6:()=>j,e5:()=>k,lJ:()=>l});var e=c(77598),f=c(25755),g=c(60021),h=a([f,g]);[f,g]=h.then?(await h)():h;let m=null,n=null,o=null,p=null;function i(a){if(m&&n&&p===a)return{server:m,transport:n};if(n)try{n.close()}catch{}return m=(0,f.c)(),n=new g.a({sessionIdGenerator:()=>(0,e.randomUUID)()}),p=a,o=Date.now(),m.connect(n),console.log(`[MCP] HTTP transport started (${a})`),{server:m,transport:n}}async function j(a){let{transport:b}=i("streamable-http");try{return await b.handleRequest(a)}catch(a){return console.error("[MCP] Streamable HTTP error:",a),new Response(JSON.stringify({error:"MCP transport error"}),{status:500,headers:{"Content-Type":"application/json"}})}}async function k(a){let{transport:b}=i("sse");try{return await b.handleRequest(a)}catch(a){return console.error("[MCP] SSE error:",a),new Response(JSON.stringify({error:"MCP SSE transport error"}),{status:500,headers:{"Content-Type":"application/json"}})}}function l(){return{online:null!==n&&null!==p,transport:p,startedAt:o,uptime:o?`${Math.floor((Date.now()-o)/1e3)}s`:null}}d()}catch(a){d(a)}})},64926:(a,b,c)=>{async function d(a){let b=JSON.stringify(a),c=new TextEncoder;return Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",c.encode(b)))).map(a=>a.toString(16).padStart(2,"0")).join("")}function e(a){return"string"==typeof a?a:null}function f(a,b){let c=i(a,b);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function g(a){return{id:f(a.id,0),toolName:j(a.tool_name),inputHash:j(a.input_hash),outputSummary:j(a.output_summary),durationMs:i(a.duration_ms,0),apiKeyId:e(a.api_key_id),success:function(a,b=!1){return"boolean"==typeof a?a:1===a||"1"===a||0!==a&&"0"!==a&&b}(a.success,!1),errorCode:e(a.error_code),createdAt:j(a.created_at)}}c.d(b,{JY:()=>n,Bv:()=>l,Gj:()=>m});let h=null;function i(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function j(a){return"string"==typeof a?a:""}async function k(){if(h)return h;try{let{homedir:a}=await Promise.resolve().then(c.t.bind(c,48161,23)),{join:b}=await Promise.resolve().then(c.t.bind(c,76760,23)),{existsSync:d}=await Promise.resolve().then(c.t.bind(c,73024,23)),e=process.env.DATA_DIR?b(process.env.DATA_DIR,"storage.sqlite"):b(a(),".omniroute","storage.sqlite");if(!d(e))return console.error(`[MCP Audit] Database not found at ${e} — audit logging disabled`),null;return h=new(await Promise.resolve().then(c.t.bind(c,87550,23))).default(e)}catch(a){return console.error("[MCP Audit] Failed to connect to database:",a instanceof Error?a.message:String(a)),null}}async function l(a,b,c,e,f,g){try{let h=await k();if(!h)return;let i=await d(b),j=function(a,b=200){if(null==a)return"(null)";let c="string"==typeof a?a:JSON.stringify(a);return c.length<=b?c:c.slice(0,b)+"…"}(c),l=process.env.OMNIROUTE_API_KEY_ID||null;h.prepare(`INSERT INTO mcp_tool_audit (tool_name, input_hash, output_summary, duration_ms, api_key_id, success, error_code)
1
+ "use strict";exports.id=5419,exports.ids=[5419],exports.modules={647:(a,b,c)=>{c.d(b,{Bm:()=>x,DZ:()=>u,h$:()=>y,nX:()=>t,ne:()=>z,nq:()=>v,yL:()=>s,zl:()=>w});var d=c(64926),e=c(13419);let f=process.env.OMNIROUTE_BASE_URL||"http://localhost:20128",g=process.env.OMNIROUTE_API_KEY||"";async function h(a,b={}){let c=`${f}${a}`,d={"Content-Type":"application/json",...g?{Authorization:`Bearer ${g}`}:{},...b.headers||{}},e=await fetch(c,{...b,headers:d,signal:AbortSignal.timeout(3e4)});if(!e.ok){let a=await e.text().catch(()=>"Unknown error");throw Error(`API [${e.status}]: ${a}`)}return e.json()}function i(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function j(a){return i(a)?a:{}}function k(a){return Array.isArray(a)?a.filter(i):[]}function l(a,b=""){return"string"==typeof a?a:b}function m(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function n(a){let b=k(a.models),c=k(j(a.data).models);return(b.length>0?b:c).map(a=>({provider:l(a.provider,"unknown"),model:l(a.model,""),inputCostPer1M:m(a.inputCostPer1M,3)}))}function o(a){if(Array.isArray(a))return a.filter(i);let b=j(a);return Array.isArray(b.combos)?b.combos.filter(i):[]}let p=null,q={aggressive:{profiles:{oauth:{transientCooldown:3e3,rateLimitCooldown:3e4,maxBackoffLevel:4,circuitBreakerThreshold:2,circuitBreakerReset:3e4},apikey:{transientCooldown:2e3,rateLimitCooldown:0,maxBackoffLevel:3,circuitBreakerThreshold:3,circuitBreakerReset:15e3}},defaults:{requestsPerMinute:180,minTimeBetweenRequests:100,concurrentRequests:16}},balanced:{profiles:{oauth:{transientCooldown:5e3,rateLimitCooldown:6e4,maxBackoffLevel:8,circuitBreakerThreshold:3,circuitBreakerReset:6e4},apikey:{transientCooldown:3e3,rateLimitCooldown:0,maxBackoffLevel:5,circuitBreakerThreshold:5,circuitBreakerReset:3e4}},defaults:{requestsPerMinute:100,minTimeBetweenRequests:200,concurrentRequests:10}},conservative:{profiles:{oauth:{transientCooldown:8e3,rateLimitCooldown:12e4,maxBackoffLevel:10,circuitBreakerThreshold:8,circuitBreakerReset:12e4},apikey:{transientCooldown:5e3,rateLimitCooldown:3e4,maxBackoffLevel:8,circuitBreakerThreshold:8,circuitBreakerReset:6e4}},defaults:{requestsPerMinute:60,minTimeBetweenRequests:350,concurrentRequests:6}}},r={coding:{preferred:["claude","deepseek","codex"],traits:["fast","code-optimized"]},review:{preferred:["claude","gemini","openai"],traits:["analytical","thorough"]},planning:{preferred:["gemini","claude","openai"],traits:["reasoning","structured"]},analysis:{preferred:["gemini","claude"],traits:["deep-reasoning","large-context"]},debugging:{preferred:["claude","deepseek","codex"],traits:["code-aware","fast"]},documentation:{preferred:["gemini","claude","openai"],traits:["clear","structured"]}};async function s(a){let b=Date.now();try{let[c,f,g]=await Promise.allSettled([h("/api/combos"),h("/api/monitoring/health"),h("/api/usage/quota")]),i="fulfilled"===c.status?o(c.value):[],m="fulfilled"===f.status?j(f.value):{},p="fulfilled"===g.status?(0,e.H)(g.value):(0,e.H)({}),q=a.combo?i.find(b=>l(b.id)===a.combo||l(b.name)===a.combo):i.find(a=>!1!==a.enabled);if(!q)return{content:[{type:"text",text:JSON.stringify({error:"No matching combo found"})}],isError:!0};let r=n(q),s=k(m.circuitBreakers),t=p.providers,u=r.map((b,c)=>{let d=s.find(a=>l(a.provider)===b.provider),e=t.find(a=>a.provider===b.provider),f=a.promptTokenEstimate/1e6*b.inputCostPer1M;return{provider:b.provider,model:b.model||a.model,probability:0===c?.85:.15/Math.max(r.length-1,1),estimatedCost:Math.round(1e4*f)/1e4,healthStatus:l(d?.state,"CLOSED"),quotaAvailable:e?.percentRemaining??100}}),v=u.map(a=>a.estimatedCost),w={simulatedPath:u,fallbackTree:{primary:u[0]?.provider||"unknown",fallbacks:u.slice(1).map(a=>a.provider),worstCaseCost:Math.max(...v,0),bestCaseCost:Math.min(...v,0)}};return await (0,d.Bv)("omniroute_simulate_route",a,w,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(w,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_simulate_route",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function t(a){let b=Date.now();try{let c=0;try{let a=j(await h("/api/usage/analytics?period=session"));c=m(a.totalCost,0)}catch{}p={sessionId:`budget_${Date.now()}`,maxCost:a.maxCost,action:a.action,degradeToTier:a.degradeToTier,spent:c,createdAt:new Date().toISOString()};let e=Math.max(0,a.maxCost-c),f={sessionId:p.sessionId,budgetTotal:a.maxCost,budgetSpent:Math.round(1e4*c)/1e4,budgetRemaining:Math.round(1e4*e)/1e4,action:a.action,status:e<=0?"exceeded":e<.2*a.maxCost?"warning":"active"};return await (0,d.Bv)("omniroute_set_budget_guard",{maxCost:a.maxCost,action:a.action},f,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_set_budget_guard",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function u(a){let b=Date.now();try{let c=q[a.profile];if(!c)return{content:[{type:"text",text:`Error: Invalid profile "${a.profile}"`}],isError:!0};await h("/api/resilience",{method:"PATCH",body:JSON.stringify({profiles:c.profiles,defaults:c.defaults})});let e={applied:!0,profile:a.profile,settings:c};return await (0,d.Bv)("omniroute_set_resilience_profile",a,e,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(e,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_set_resilience_profile",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function v(a){let b=Date.now();try{let c=o(await h("/api/combos")).find(b=>l(b.id)===a.comboId||l(b.name)===a.comboId);if(!c)return{content:[{type:"text",text:JSON.stringify({error:`Combo "${a.comboId}" not found`})}],isError:!0};let e=n(c),f=(a.testPrompt||"Say hello").slice(0,200),g=(await Promise.allSettled(e.map(async a=>{let b=Date.now();try{let c=j(await h("/v1/chat/completions",{method:"POST",body:JSON.stringify({model:a.model||"auto",messages:[{role:"user",content:f}],max_tokens:50,stream:!1,"x-provider":a.provider})})),d=j(c.usage);return{provider:a.provider,model:a.model||l(c.model,"unknown"),success:!0,latencyMs:Date.now()-b,cost:m(c.cost,0),tokenCount:m(d.prompt_tokens,0)+m(d.completion_tokens,0)}}catch(c){return{provider:a.provider,model:a.model||"unknown",success:!1,latencyMs:Date.now()-b,cost:0,tokenCount:0,error:c instanceof Error?c.message:String(c)}}}))).map(a=>"fulfilled"===a.status?a.value:{provider:"unknown",model:"unknown",success:!1,latencyMs:0,cost:0,tokenCount:0,error:"Promise rejected"}),i=g.filter(a=>a.success),k=i.sort((a,b)=>a.latencyMs-b.latencyMs)[0],p=i.sort((a,b)=>a.cost-b.cost)[0],q={results:g,summary:{totalProviders:g.length,successful:i.length,fastestProvider:k?.provider||"none",cheapestProvider:p?.provider||"none"}};return await (0,d.Bv)("omniroute_test_combo",{comboId:a.comboId},q.summary,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(q,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_test_combo",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function w(a){let b=Date.now();try{let[c,f,g]=await Promise.allSettled([h("/api/monitoring/health"),h(`/api/usage/quota?provider=${encodeURIComponent(a.provider)}`),h(`/api/usage/analytics?period=session&provider=${encodeURIComponent(a.provider)}`)]),i="fulfilled"===c.status?j(c.value):{},n="fulfilled"===f.status?(0,e.H)(f.value,{provider:a.provider}):(0,e.H)({}),o="fulfilled"===g.status?j(g.value):{},p=k(i.circuitBreakers).find(b=>l(b.provider)===a.provider),q=n.providers.find(b=>b.provider===a.provider)||null,r={provider:a.provider,successRate:m(o.successRate,1),requestCount:m(o.requestCount,0),avgLatencyMs:m(o.avgLatencyMs,0),p50LatencyMs:m(o.p50LatencyMs,0),p95LatencyMs:m(o.p95LatencyMs,0),p99LatencyMs:m(o.p99LatencyMs,0),errorRate:m(o.errorRate,0),lastError:l(o.lastError)||null,circuitBreakerState:l(p?.state,"CLOSED"),quotaInfo:q?{used:q.quotaUsed,total:q.quotaTotal,resetAt:q.resetAt}:{used:0,total:null,resetAt:null}};return await (0,d.Bv)("omniroute_get_provider_metrics",a,r,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_get_provider_metrics",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function x(a){let b=Date.now();try{let c=r[a.taskType]||r.coding,e=o(await h("/api/combos")).filter(a=>!1!==a.enabled);if(0===e.length)return{content:[{type:"text",text:JSON.stringify({error:"No enabled combos available"})}],isError:!0};let f=e.map(a=>{let b=n(a),d=0;for(let a of b){let b=c.preferred.indexOf(a.provider);b>=0&&(d+=(c.preferred.length-b)*10)}let e=l(a.name).toLowerCase();for(let a of c.traits)e.includes(a)&&(d+=5);let f=e.includes("free")||b.every(a=>a.provider.toLowerCase().includes("free"));return{combo:a,score:d,isFree:f}});f.sort((a,b)=>b.score-a.score);let g=f[0],i=f.slice(1,4).map(a=>({id:a.combo.id,name:a.combo.name,tradeoff:a.isFree?"free but may have limits":a.score<.5*g.score?"cheaper but slower":"similar quality, different providers"})),j=f.find(a=>a.isFree&&a!==g),k={recommendedCombo:{id:g.combo.id,name:g.combo.name,reason:`Best match for "${a.taskType}": preferred providers (${c.preferred.slice(0,3).join(", ")})`},alternatives:i,freeAlternative:j?{id:j.combo.id,name:j.combo.name}:null};return await (0,d.Bv)("omniroute_best_combo_for_task",a,k.recommendedCombo,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(k,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_best_combo_for_task",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function y(a){let b=Date.now();try{let c=null;try{c=j(await h(`/api/routing/decisions/${encodeURIComponent(a.requestId)}`))}catch{}let e=c?{requestId:a.requestId,decision:{comboUsed:c.comboUsed||"default",providerSelected:c.providerSelected||"unknown",modelUsed:c.modelUsed||"unknown",score:c.score||0,factors:c.factors||[{name:"health",value:1,weight:.3,contribution:.3},{name:"quota",value:1,weight:.25,contribution:.25},{name:"cost",value:.8,weight:.2,contribution:.16},{name:"latency",value:.9,weight:.15,contribution:.135},{name:"task_fit",value:.7,weight:.1,contribution:.07}],fallbacksTriggered:c.fallbacksTriggered||[],costActual:c.costActual||0,latencyActual:c.latencyActual||0}}:{requestId:a.requestId,decision:{comboUsed:"unknown",providerSelected:"unknown",modelUsed:"unknown",score:0,factors:[],fallbacksTriggered:[],costActual:0,latencyActual:0},note:"Routing decision not found. The /api/routing/decisions endpoint may not be implemented yet, or the requestId is invalid."};return await (0,d.Bv)("omniroute_explain_route",a,{requestId:a.requestId},Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(e,null,2)}]}}catch(e){let c=e instanceof Error?e.message:String(e);return await (0,d.Bv)("omniroute_explain_route",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function z(){let a=Date.now();try{let b=j(await h("/api/usage/analytics?period=session").catch(()=>({}))),c=j(b.tokenCount),e=k(b.byModel),f=k(b.byProvider),g={sessionStart:l(b.sessionStart,new Date().toISOString()),duration:l(b.duration,"unknown"),requestCount:m(b.requestCount,0),costTotal:m(b.totalCost,0),tokenCount:{prompt:m(c.prompt,0),completion:m(c.completion,0)},topModels:e.slice(0,5).map(a=>({model:l(a.model,"unknown"),count:m(a.requests,0)})),topProviders:f.slice(0,5).map(a=>({provider:l(a.name,"unknown"),count:m(a.requests,0)})),errors:m(b.errorCount,0),fallbacks:m(b.fallbackCount,0),budgetGuard:p?{active:!0,remaining:Math.max(0,p.maxCost-p.spent),action:p.action}:null};return await (0,d.Bv)("omniroute_get_session_snapshot",{},{requestCount:g.requestCount},Date.now()-a,!0),{content:[{type:"text",text:JSON.stringify(g,null,2)}]}}catch(c){let b=c instanceof Error?c.message:String(c);return await (0,d.Bv)("omniroute_get_session_snapshot",{},null,Date.now()-a,!1,b),{content:[{type:"text",text:`Error: ${b}`}],isError:!0}}}},13234:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Z:()=>i,x:()=>h});var e=c(2306),f=a([e]);function g(a){if(!Array.isArray(a))return[];let b=a.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean);return Array.from(new Set(b))}function h(a,b=[]){let c="string"==typeof a?.authInfo?.clientId&&a.authInfo.clientId.trim()||"string"==typeof a?.sessionId&&a.sessionId.trim()||"anonymous",d=g(a?.authInfo?.scopes);if(d.length>0)return{callerId:c,scopes:d,source:"authInfo"};let e=function(a){if(!a||"object"!=typeof a)return[];let b=g(a.scopes);if(b.length>0)return b;let c=a.auth;if(c&&"object"==typeof c){let a=g(c.scopes);if(a.length>0)return a}let d=a.omniroute;if(d&&"object"==typeof d){let a=g(d.scopes);if(a.length>0)return a}return[]}(a?._meta);if(e.length>0)return{callerId:c,scopes:e,source:"meta"};let f=g(b);return f.length>0?{callerId:c,scopes:f,source:"env"}:{callerId:c,scopes:[],source:"none"}}function i(a,b,c){let d=e.Dk[a];if(!d)return{allowed:!1,required:[],provided:Array.from(b),missing:[],reason:"tool_definition_missing"};let f=Array.isArray(d.scopes)?Array.from(d.scopes):[],h=g(b);if(!c||0===f.length)return{allowed:!0,required:f,provided:h,missing:[]};let i=f.filter(a=>!h.some(b=>(function(a,b){if("*"===a||a===b)return!0;if(a.endsWith("*")){let c=a.slice(0,-1);return b.startsWith(c)}return!1})(b,a)));return{allowed:0===i.length,required:f,provided:h,missing:i,reason:i.length>0?"missing_scopes":void 0}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},13419:(a,b,c)=>{c.d(b,{H:()=>h,J:()=>g});let d=["valid","expiring","expired","refreshing"];function e(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return null}function f(a,b,c){return Math.min(c,Math.max(b,a))}function g(a){var b;let c=a&&"object"==typeof a?a:{},g="string"==typeof c.provider?c.provider:"unknown",h="string"==typeof c.name&&c.name.trim()?c.name:g,i="string"==typeof c.connectionId&&c.connectionId.trim()?c.connectionId:"unknown",j=e(c.quotaTotal),k=null!==j&&j>=0?j:null,l=e(c.quotaUsed)??0,m=null!==k?f(l,0,k):Math.max(0,l),n=e(c.percentRemaining);return null===n&&(n=k&&k>0?(k-m)/k*100:100),{name:h,provider:g,connectionId:i,quotaUsed:m,quotaTotal:k,percentRemaining:f(n,0,100),resetAt:"string"==typeof c.resetAt&&c.resetAt.trim()?c.resetAt:null,tokenStatus:"string"==typeof(b=c.tokenStatus)&&d.includes(b)?b:"valid"}}function h(a,b={}){let c=a&&"object"==typeof a?a:{},d=(Array.isArray(c.providers)?c.providers:Array.isArray(a)?a:[]).map(a=>g(a)),e=c.meta&&"object"==typeof c.meta?c.meta:{},f=e.filters&&"object"==typeof e.filters?e.filters:{},i=b.provider??("string"==typeof f.provider&&f.provider.trim()?f.provider:null),j=b.connectionId??("string"==typeof f.connectionId&&f.connectionId.trim()?f.connectionId:null);return{providers:d,meta:{generatedAt:"string"==typeof e.generatedAt&&e.generatedAt.trim()?e.generatedAt:new Date().toISOString(),filters:{provider:i||null,connectionId:j||null},totalProviders:d.length}}}},25755:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{c:()=>B});var e=c(10610),f=c(92827),g=c(2306),h=c(43620),i=c(64926),j=c(13234),k=c(647),l=c(13419),m=a([e,f,g,j]);[e,f,g,j]=m.then?(await m)():m;let D=process.env.OMNIROUTE_BASE_URL||"http://localhost:20128",E=process.env.OMNIROUTE_API_KEY||"",F="true"===process.env.OMNIROUTE_MCP_ENFORCE_SCOPES,G=new Set((process.env.OMNIROUTE_MCP_SCOPES||"").split(",").map(a=>a.trim()).filter(Boolean));function n(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function o(a){return Array.isArray(a)?a:[]}function p(a,b=""){return"string"==typeof a?a:b}function q(a,b=0){return"number"==typeof a&&Number.isFinite(a)?a:b}async function r(a,b={}){let c=`${D}${a}`,d={"Content-Type":"application/json",...E?{Authorization:`Bearer ${E}`}:{},...b.headers||{}},e=await fetch(c,{...b,headers:d,signal:AbortSignal.timeout(1e4)});if(!e.ok){let a=await e.text().catch(()=>"Unknown error");throw Error(`OmniRoute API error [${e.status}]: ${a}`)}return e.json()}function s(a,b){return async(c,d)=>{let e=(0,j.x)(d,Array.from(G)),f=(0,j.Z)(a,e.scopes,F);if(!f.allowed){let b=f.missing.length>0?f.missing.join(", "):"unavailable",d=f.reason||"scope_check_failed",g=`Insufficient MCP scopes for ${a}. Missing: ${b}. Caller=${e.callerId}, source=${e.source}.`,h=c&&"object"==typeof c?n(c):{rawArgs:c};return await (0,i.Bv)(a,{...h,_scopeCheck:{callerId:e.callerId,source:e.source,required:f.required,provided:f.provided,missing:f.missing}},null,0,!1,`scope_denied:${d}`),{content:[{type:"text",text:`Error: ${g}`}],isError:!0}}return b(c,d)}}async function t(){let a=Date.now();try{let[b,c,d]=await Promise.allSettled([r("/api/monitoring/health"),r("/api/resilience"),r("/api/rate-limits")]),e="fulfilled"===b.status?n(b.value):{},f="fulfilled"===c.status?n(c.value):{},g="fulfilled"===d.status?n(d.value):{},h=n(e.memoryUsage),j=n(e.cacheStats),k=o(f.circuitBreakers),l=o(g.limits),m={uptime:p(e.uptime,"unknown"),version:p(e.version,"unknown"),memoryUsage:{heapUsed:q(h.heapUsed,0),heapTotal:q(h.heapTotal,0)},circuitBreakers:k,rateLimits:l,cacheStats:Object.keys(j).length>0?{hits:q(j.hits,0),misses:q(j.misses,0),hitRate:q(j.hitRate,0)}:void 0};return await (0,i.Bv)("omniroute_get_health",{},m,Date.now()-a,!0),{content:[{type:"text",text:JSON.stringify(m,null,2)}]}}catch(c){let b=c instanceof Error?c.message:String(c);return await (0,i.Bv)("omniroute_get_health",{},null,Date.now()-a,!1,b),{content:[{type:"text",text:`Error: ${b}`}],isError:!0}}}async function u(a){let b=Date.now();try{let c=await r("/api/combos"),d=n(c),e=Array.isArray(d.combos)?d.combos:Array.isArray(c)?c:[],f={};a.includeMetrics&&(f=n(await r("/api/combos/metrics").catch(()=>({}))));let g={combos:o(e).map(b=>{let c=n(b),d=n(c.data),e=p(c.id,""),g=Array.isArray(c.models)&&c.models.length>0?c.models:d.models;return{id:e,name:p(c.name,e||"unnamed"),models:o(g).map((a,b)=>{let c=n(a);return{provider:p(c.provider,"unknown"),model:p(c.model,"unknown"),priority:q(c.priority,b+1)}}),strategy:p(c.strategy,p(d.strategy,"priority")),enabled:!1!==c.enabled,...a.includeMetrics?{metrics:f[e]??null}:{}}})};return await (0,i.Bv)("omniroute_list_combos",a,g,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(g,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_list_combos",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function v(a){let b=Date.now();try{let c=await r(`/api/combos/metrics?comboId=${encodeURIComponent(a.comboId)}`);return await (0,i.Bv)("omniroute_get_combo_metrics",a,c,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(c,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_get_combo_metrics",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function w(a){let b=Date.now();try{let c=await r(`/api/combos/${encodeURIComponent(a.comboId)}`,{method:"PUT",body:JSON.stringify({isActive:a.active})});return await (0,i.Bv)("omniroute_switch_combo",a,c,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(c,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_switch_combo",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function x(a){let b=Date.now();try{let c="/api/usage/quota";a.connectionId?c+=`?connectionId=${encodeURIComponent(a.connectionId)}`:a.provider&&(c+=`?provider=${encodeURIComponent(a.provider)}`);let d=(0,l.H)(await r(c),{provider:a.provider||null,connectionId:a.connectionId||null});return await (0,i.Bv)("omniroute_check_quota",a,d,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(d,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_check_quota",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function y(a){let b=Date.now();try{let c={model:a.model,messages:a.messages,stream:!1};a.combo&&(c["x-combo"]=a.combo);let d=await r("/v1/chat/completions",{method:"POST",body:JSON.stringify(c)}),e=o(d.choices),f=n(e[0]),g=n(f.message),h=n(d.usage),j={response:{content:p(g.content,""),model:p(d.model,a.model),tokens:{prompt:q(h.prompt_tokens,0),completion:q(h.completion_tokens,0)}},routing:{provider:p(d.provider,"unknown"),combo:d.combo??null,fallbacksTriggered:q(d.fallbacksTriggered,0),cost:q(d.cost,0),latencyMs:Date.now()-b,routingExplanation:p(d.routingExplanation,"Request routed through primary provider")}};return await (0,i.Bv)("omniroute_route_request",{model:a.model,messageCount:a.messages.length},j.routing,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(j,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_route_request",{model:a.model},null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function z(a){let b=Date.now();try{let c=a.period||"session",d={session:"1d",day:"1d",week:"7d",month:"30d"}[c]||"30d",e=n(await r(`/api/usage/analytics?range=${encodeURIComponent(d)}`)),f=n(e.tokenCount),g=n(e.budget),h={period:c,totalCost:q(e.totalCost,0),requestCount:q(e.requestCount,0),tokenCount:{prompt:q(f.prompt,0),completion:q(f.completion,0)},byProvider:o(e.byProvider),byModel:o(e.byModel),budget:{limit:g.limit??null,remaining:g.remaining??null}};return await (0,i.Bv)("omniroute_cost_report",a,h,Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(h,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_cost_report",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}async function A(a){let b=Date.now();try{let c="/v1/models",d=new URLSearchParams;a.provider&&d.set("provider",a.provider),a.capability&&d.set("capability",a.capability),d.toString()&&(c+=`?${d.toString()}`);let e=n(await r(c)),f={models:o(e.data).map(a=>{let b=n(a);return{id:p(b.id,""),provider:p(b.owned_by,p(b.provider,"unknown")),capabilities:function(a,b=[]){let c=o(a).filter(a=>"string"==typeof a);return c.length>0?c:b}(b.capabilities,["chat"]),status:p(b.status,"available"),pricing:b.pricing}})};return await (0,i.Bv)("omniroute_list_models_catalog",a,{modelCount:f.models.length},Date.now()-b,!0),{content:[{type:"text",text:JSON.stringify(f,null,2)}]}}catch(d){let c=d instanceof Error?d.message:String(d);return await (0,i.Bv)("omniroute_list_models_catalog",a,null,Date.now()-b,!1,c),{content:[{type:"text",text:`Error: ${c}`}],isError:!0}}}function B(){let a=new e._({name:"omniroute",version:process.env.npm_package_version||"1.8.1"});return a.registerTool("omniroute_get_health",{description:"Returns OmniRoute health status including uptime, memory, circuit breakers, rate limits, and cache stats",inputSchema:g.nu},s("omniroute_get_health",async a=>(g.nu.parse(a??{}),t()))),a.registerTool("omniroute_list_combos",{description:"Lists all configured combos (model chains) with strategies and optional metrics",inputSchema:g.ME},s("omniroute_list_combos",a=>u(g.ME.parse(a)))),a.registerTool("omniroute_get_combo_metrics",{description:"Returns detailed performance metrics for a specific combo",inputSchema:g.Gs},s("omniroute_get_combo_metrics",a=>v(g.Gs.parse(a)))),a.registerTool("omniroute_switch_combo",{description:"Activates or deactivates a combo for routing",inputSchema:g.B1},s("omniroute_switch_combo",a=>w(g.B1.parse(a)))),a.registerTool("omniroute_check_quota",{description:"Checks remaining API quota for one or all providers",inputSchema:g.Fp},s("omniroute_check_quota",a=>x(g.Fp.parse(a)))),a.registerTool("omniroute_route_request",{description:"Sends a chat completion request through OmniRoute intelligent routing",inputSchema:g.fL},s("omniroute_route_request",a=>y(g.fL.parse(a)))),a.registerTool("omniroute_cost_report",{description:"Generates a cost report for the specified period",inputSchema:g.c},s("omniroute_cost_report",a=>z(g.c.parse(a)))),a.registerTool("omniroute_list_models_catalog",{description:"Lists all available AI models across providers with capabilities and pricing",inputSchema:g._v},s("omniroute_list_models_catalog",a=>A(g._v.parse(a)))),a.registerTool("omniroute_simulate_route",{description:"Simulates the routing path a request would take without executing it (dry-run)",inputSchema:g.gl},s("omniroute_simulate_route",a=>(0,k.yL)(g.gl.parse(a)))),a.registerTool("omniroute_set_budget_guard",{description:"Sets a session budget limit with configurable action when exceeded (degrade/block/alert)",inputSchema:g.b9},s("omniroute_set_budget_guard",a=>(0,k.nX)(g.b9.parse(a)))),a.registerTool("omniroute_set_resilience_profile",{description:"Applies a resilience profile controlling circuit breakers, retries, timeouts, and fallback depth",inputSchema:g.dE},s("omniroute_set_resilience_profile",a=>(0,k.DZ)(g.dE.parse(a)))),a.registerTool("omniroute_test_combo",{description:"Tests each provider in a combo with a real prompt, reporting latency, cost, and success per provider",inputSchema:g.n0},s("omniroute_test_combo",a=>(0,k.nq)(g.n0.parse(a)))),a.registerTool("omniroute_get_provider_metrics",{description:"Returns detailed metrics for a specific provider including latency percentiles and circuit breaker state",inputSchema:g.xs},s("omniroute_get_provider_metrics",a=>(0,k.zl)(g.xs.parse(a)))),a.registerTool("omniroute_best_combo_for_task",{description:"Recommends the best combo for a task type based on provider fitness and constraints",inputSchema:g.h0},s("omniroute_best_combo_for_task",a=>(0,k.Bm)(g.h0.parse(a)))),a.registerTool("omniroute_explain_route",{description:"Explains why a request was routed to a specific provider, showing scoring factors and fallbacks",inputSchema:g.t7},s("omniroute_explain_route",a=>(0,k.h$)(g.t7.parse(a)))),a.registerTool("omniroute_get_session_snapshot",{description:"Returns a full snapshot of the current working session: cost, tokens, top models, errors, budget status",inputSchema:g.ne},s("omniroute_get_session_snapshot",async a=>(g.ne.parse(a??{}),(0,k.ne)()))),a}async function C(){let a=B(),b=new f.S,c=process.env.npm_package_version||"1.8.1",d=(0,h.rs)({version:c,scopesEnforced:F,allowedScopes:Array.from(G),toolCount:g.nS.length}),e=()=>{d()};process.once("exit",e),process.once("SIGINT",e),process.once("SIGTERM",e),console.error("[MCP] OmniRoute MCP Server starting (stdio transport)...");try{await a.connect(b),console.error("[MCP] OmniRoute MCP Server connected and ready.")}finally{e(),process.off("exit",e),process.off("SIGINT",e),process.off("SIGTERM",e)}}process.argv[1]&&"file:///home/runner/work/OmniRoute/OmniRoute/open-sse/mcp-server/server.ts".endsWith(process.argv[1].replace(/\\/g,"/"))&&C().catch(a=>{console.error("[MCP] Fatal error:",a),process.exit(1)}),d()}catch(a){d(a)}})},43620:(a,b,c)=>{c.d(b,{Im:()=>n,c7:()=>i,h6:()=>l,jW:()=>m,rs:()=>k});var d=c(73024),e=c(48161),f=c(76760);let g="runtime";function h(){let a=process.env.DATA_DIR;return"string"==typeof a&&a.trim().length>0?a.trim():(0,f.join)((0,e.homedir)(),".omniroute")}function i(){return(0,f.join)(h(),g,"mcp-heartbeat.json")}async function j(a){let b=i(),c=(0,f.join)(h(),g);await d.promises.mkdir(c,{recursive:!0}),await d.promises.writeFile(b,JSON.stringify(a,null,2),"utf-8")}function k(a){let b=new Date().toISOString(),c=null,d=!1,e="number"==typeof a.intervalMs&&a.intervalMs>0?a.intervalMs:5e3,f=async()=>{if(d)return;let c={pid:process.pid,startedAt:b,lastHeartbeatAt:new Date().toISOString(),version:a.version,transport:"stdio",scopesEnforced:a.scopesEnforced,allowedScopes:[...a.allowedScopes],toolCount:a.toolCount};try{await j(c)}catch(a){console.error("[MCP Heartbeat] Failed to write heartbeat:",a instanceof Error?a.message:String(a))}};return f(),c=setInterval(()=>{f()},e),()=>{d||(d=!0,c&&(clearInterval(c),c=null),f())}}async function l(){let a=i();try{let b=await d.promises.readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||"number"!=typeof c.pid||"string"!=typeof c.startedAt||"string"!=typeof c.lastHeartbeatAt||"string"!=typeof c.version||"stdio"!==c.transport||"boolean"!=typeof c.scopesEnforced||!Array.isArray(c.allowedScopes)||"number"!=typeof c.toolCount)return null;let e=c.allowedScopes.filter(a=>"string"==typeof a);return{pid:c.pid,startedAt:c.startedAt,lastHeartbeatAt:c.lastHeartbeatAt,version:c.version,transport:"stdio",scopesEnforced:c.scopesEnforced,allowedScopes:e,toolCount:c.toolCount}}catch{return null}}function m(a){if(!Number.isFinite(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}function n(a,b){if(!a)return!1;let c="number"==typeof b?.staleAfterMs&&b.staleAfterMs>0?b.staleAfterMs:15e3,d=Date.now()-new Date(a.lastHeartbeatAt).getTime();return!!Number.isFinite(d)&&!(d>c)&&(b?.requireLivePid===!1||m(a.pid))}},45419:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{V6:()=>j,e5:()=>k,lJ:()=>l});var e=c(77598),f=c(25755),g=c(60021),h=a([f,g]);[f,g]=h.then?(await h)():h;let m=null,n=null,o=null,p=null;function i(a){if(m&&n&&p===a)return{server:m,transport:n};if(n)try{n.close()}catch{}return m=(0,f.c)(),n=new g.a({sessionIdGenerator:()=>(0,e.randomUUID)()}),p=a,o=Date.now(),m.connect(n),console.log(`[MCP] HTTP transport started (${a})`),{server:m,transport:n}}async function j(a){let{transport:b}=i("streamable-http");try{return await b.handleRequest(a)}catch(a){return console.error("[MCP] Streamable HTTP error:",a),new Response(JSON.stringify({error:"MCP transport error"}),{status:500,headers:{"Content-Type":"application/json"}})}}async function k(a){let{transport:b}=i("sse");try{return await b.handleRequest(a)}catch(a){return console.error("[MCP] SSE error:",a),new Response(JSON.stringify({error:"MCP SSE transport error"}),{status:500,headers:{"Content-Type":"application/json"}})}}function l(){return{online:null!==n&&null!==p,transport:p,startedAt:o,uptime:o?`${Math.floor((Date.now()-o)/1e3)}s`:null}}d()}catch(a){d(a)}})},64926:(a,b,c)=>{async function d(a){let b=JSON.stringify(a),c=new TextEncoder;return Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",c.encode(b)))).map(a=>a.toString(16).padStart(2,"0")).join("")}function e(a){return"string"==typeof a?a:null}function f(a,b){let c=i(a,b);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function g(a){return{id:f(a.id,0),toolName:j(a.tool_name),inputHash:j(a.input_hash),outputSummary:j(a.output_summary),durationMs:i(a.duration_ms,0),apiKeyId:e(a.api_key_id),success:function(a,b=!1){return"boolean"==typeof a?a:1===a||"1"===a||0!==a&&"0"!==a&&b}(a.success,!1),errorCode:e(a.error_code),createdAt:j(a.created_at)}}c.d(b,{JY:()=>n,Bv:()=>l,Gj:()=>m});let h=null;function i(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function j(a){return"string"==typeof a?a:""}async function k(){if(h)return h;try{let{homedir:a}=await Promise.resolve().then(c.t.bind(c,48161,23)),{join:b}=await Promise.resolve().then(c.t.bind(c,76760,23)),{existsSync:d}=await Promise.resolve().then(c.t.bind(c,73024,23)),e=process.env.DATA_DIR?b(process.env.DATA_DIR,"storage.sqlite"):b(a(),".omniroute","storage.sqlite");if(!d(e))return console.error(`[MCP Audit] Database not found at ${e} — audit logging disabled`),null;return h=new(await Promise.resolve().then(c.t.bind(c,87550,23))).default(e)}catch(a){return console.error("[MCP Audit] Failed to connect to database:",a instanceof Error?a.message:String(a)),null}}async function l(a,b,c,e,f,g){try{let h=await k();if(!h)return;let i=await d(b),j=function(a,b=200){if(null==a)return"(null)";let c="string"==typeof a?a:JSON.stringify(a);return c.length<=b?c:c.slice(0,b)+"…"}(c),l=process.env.OMNIROUTE_API_KEY_ID||null;h.prepare(`INSERT INTO mcp_tool_audit (tool_name, input_hash, output_summary, duration_ms, api_key_id, success, error_code)
2
2
  VALUES (?, ?, ?, ?, ?, ?, ?)`).run(a,i,j,e,l,+!!f,g||null)}catch(a){console.error("[MCP Audit] Failed to log:",a instanceof Error?a.message:String(a))}}async function m(a={}){try{let b,c,d=await k(),e=Math.max(1,Math.min(500,f(a.limit,50))),h=Math.max(0,f(a.offset,0));if(!d)return{entries:[],total:0,limit:e,offset:h};let{whereSql:i,params:j}=(b=[],c=[],"string"==typeof a.tool&&a.tool.trim().length>0&&(b.push("tool_name = ?"),c.push(a.tool.trim())),"boolean"==typeof a.success&&(b.push("success = ?"),c.push(+!!a.success)),"string"==typeof a.apiKeyId&&a.apiKeyId.trim().length>0&&(b.push("api_key_id = ?"),c.push(a.apiKeyId.trim())),{whereSql:b.length>0?`WHERE ${b.join(" AND ")}`:"",params:c}),l=d.prepare(`SELECT COUNT(*) as total FROM mcp_tool_audit ${i}`).get(...j);return{entries:d.prepare(`SELECT
3
3
  id,
4
4
  tool_name,
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6184,exports.ids=[6184],exports.modules={17347:(a,b,c)=>{c.d(b,{cE:()=>m,k6:()=>l});var d=c(99129),e=c(73575),f=c(19035);let g=a=>Math.floor(a.getTime()/1e3),h=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function i(a){let b,c=h.exec(a);if(!c||c[4]&&c[1])throw TypeError("Invalid time period format");let d=parseFloat(c[2]);switch(c[3].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":b=Math.round(d);break;case"minute":case"minutes":case"min":case"mins":case"m":b=Math.round(60*d);break;case"hour":case"hours":case"hr":case"hrs":case"h":b=Math.round(3600*d);break;case"day":case"days":case"d":b=Math.round(86400*d);break;case"week":case"weeks":case"w":b=Math.round(604800*d);break;default:b=Math.round(0x1e187e0*d)}return"-"===c[1]||"ago"===c[4]?-b:b}function j(a,b){if(!Number.isFinite(b))throw TypeError(`Invalid ${a} input`);return b}let k=a=>a.includes("/")?a.toLowerCase():`application/${a.toLowerCase()}`;function l(a,b,c={}){var h,j;let m,n;try{m=JSON.parse(e.D0.decode(b))}catch{}if(!(0,f.Gv)(m))throw new d.Dp("JWT Claims Set must be a top-level JSON object");let{typ:o}=c;if(o&&("string"!=typeof a.typ||k(a.typ)!==k(o)))throw new d.ie('unexpected "typ" JWT header value',m,"typ","check_failed");let{requiredClaims:p=[],issuer:q,subject:r,audience:s,maxTokenAge:t}=c,u=[...p];for(let a of(void 0!==t&&u.push("iat"),void 0!==s&&u.push("aud"),void 0!==r&&u.push("sub"),void 0!==q&&u.push("iss"),new Set(u.reverse())))if(!(a in m))throw new d.ie(`missing required "${a}" claim`,m,a,"missing");if(q&&!(Array.isArray(q)?q:[q]).includes(m.iss))throw new d.ie('unexpected "iss" claim value',m,"iss","check_failed");if(r&&m.sub!==r)throw new d.ie('unexpected "sub" claim value',m,"sub","check_failed");if(s&&(h=m.aud,j="string"==typeof s?[s]:s,"string"==typeof h?!j.includes(h):!(Array.isArray(h)&&j.some(Set.prototype.has.bind(new Set(h))))))throw new d.ie('unexpected "aud" claim value',m,"aud","check_failed");switch(typeof c.clockTolerance){case"string":n=i(c.clockTolerance);break;case"number":n=c.clockTolerance;break;case"undefined":n=0;break;default:throw TypeError("Invalid clockTolerance option type")}let{currentDate:v}=c,w=g(v||new Date);if((void 0!==m.iat||t)&&"number"!=typeof m.iat)throw new d.ie('"iat" claim must be a number',m,"iat","invalid");if(void 0!==m.nbf){if("number"!=typeof m.nbf)throw new d.ie('"nbf" claim must be a number',m,"nbf","invalid");if(m.nbf>w+n)throw new d.ie('"nbf" claim timestamp check failed',m,"nbf","check_failed")}if(void 0!==m.exp){if("number"!=typeof m.exp)throw new d.ie('"exp" claim must be a number',m,"exp","invalid");if(m.exp<=w-n)throw new d.n('"exp" claim timestamp check failed',m,"exp","check_failed")}if(t){let a=w-m.iat;if(a-n>("number"==typeof t?t:i(t)))throw new d.n('"iat" claim timestamp check failed (too far in the past)',m,"iat","check_failed");if(a<0-n)throw new d.ie('"iat" claim timestamp check failed (it should be in the past)',m,"iat","check_failed")}return m}class m{#a;constructor(a){if(!(0,f.Gv)(a))throw TypeError("JWT Claims Set MUST be an object");this.#a=structuredClone(a)}data(){return e.Rd.encode(JSON.stringify(this.#a))}get iss(){return this.#a.iss}set iss(a){this.#a.iss=a}get sub(){return this.#a.sub}set sub(a){this.#a.sub=a}get aud(){return this.#a.aud}set aud(a){this.#a.aud=a}set jti(a){this.#a.jti=a}set nbf(a){"number"==typeof a?this.#a.nbf=j("setNotBefore",a):a instanceof Date?this.#a.nbf=j("setNotBefore",g(a)):this.#a.nbf=g(new Date)+i(a)}set exp(a){"number"==typeof a?this.#a.exp=j("setExpirationTime",a):a instanceof Date?this.#a.exp=j("setExpirationTime",g(a)):this.#a.exp=g(new Date)+i(a)}set iat(a){void 0===a?this.#a.iat=g(new Date):a instanceof Date?this.#a.iat=j("setIssuedAt",g(a)):"string"==typeof a?this.#a.iat=j("setIssuedAt",g(new Date)+i(a)):this.#a.iat=j("setIssuedAt",a)}}},19035:(a,b,c)=>{function d(a){if("object"!=typeof a||null===a||"[object Object]"!==Object.prototype.toString.call(a))return!1;if(null===Object.getPrototypeOf(a))return!0;let b=a;for(;null!==Object.getPrototypeOf(b);)b=Object.getPrototypeOf(b);return Object.getPrototypeOf(a)===b}function e(...a){let b,c=a.filter(Boolean);if(0===c.length||1===c.length)return!0;for(let a of c){let c=Object.keys(a);if(!b||0===b.size){b=new Set(c);continue}for(let a of c){if(b.has(a))return!1;b.add(a)}}return!0}c.d(b,{Gv:()=>d,M3:()=>h,W2:()=>g,fz:()=>e,ll:()=>f,t9:()=>i});let f=a=>d(a)&&"string"==typeof a.kty,g=a=>"oct"!==a.kty&&("AKP"===a.kty&&"string"==typeof a.priv||"string"==typeof a.d),h=a=>"oct"!==a.kty&&void 0===a.d&&void 0===a.priv,i=a=>"oct"===a.kty&&"string"==typeof a.k},24762:(a,b,c)=>{c.d(b,{y:()=>i});var d=c(58287),e=c(75497),f=c(19035);let g=a=>a?.[Symbol.toStringTag],h=(a,b,c)=>{if(void 0!==b.use){let a;switch(c){case"sign":case"verify":a="sig";break;case"encrypt":case"decrypt":a="enc"}if(b.use!==a)throw TypeError(`Invalid key for this operation, its "use" must be "${a}" when present`)}if(void 0!==b.alg&&b.alg!==a)throw TypeError(`Invalid key for this operation, its "alg" must be "${a}" when present`);if(Array.isArray(b.key_ops)){let d;switch(!0){case"sign"===c||"verify"===c:case"dir"===a:case a.includes("CBC-HS"):d=c;break;case a.startsWith("PBES2"):d="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(a):d=!a.includes("GCM")&&a.endsWith("KW")?"encrypt"===c?"wrapKey":"unwrapKey":c;break;case"encrypt"===c&&a.startsWith("RSA"):d="wrapKey";break;case"decrypt"===c:d=a.startsWith("RSA")?"unwrapKey":"deriveBits"}if(d&&b.key_ops?.includes?.(d)===!1)throw TypeError(`Invalid key for this operation, its "key_ops" must include "${d}" when present`)}return!0};function i(a,b,c){switch(a.substring(0,2)){case"A1":case"A2":case"di":case"HS":case"PB":((a,b,c)=>{if(!(b instanceof Uint8Array)){if(f.ll(b)){if(f.t9(b)&&h(a,b,c))return;throw TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!(0,e.P2)(b))throw TypeError((0,d.t)(a,b,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if("secret"!==b.type)throw TypeError(`${g(b)} instances for symmetric algorithms must be of type "secret"`)}})(a,b,c);break;default:((a,b,c)=>{if(f.ll(b))switch(c){case"decrypt":case"sign":if(f.W2(b)&&h(a,b,c))return;throw TypeError("JSON Web Key for this operation must be a private JWK");case"encrypt":case"verify":if(f.M3(b)&&h(a,b,c))return;throw TypeError("JSON Web Key for this operation must be a public JWK")}if(!(0,e.P2)(b))throw TypeError((0,d.t)(a,b,"CryptoKey","KeyObject","JSON Web Key"));if("secret"===b.type)throw TypeError(`${g(b)} instances for asymmetric algorithms must not be of type "secret"`);if("public"===b.type)switch(c){case"sign":throw TypeError(`${g(b)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw TypeError(`${g(b)} instances for asymmetric algorithm decryption must be of type "private"`)}if("private"===b.type)switch(c){case"verify":throw TypeError(`${g(b)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw TypeError(`${g(b)} instances for asymmetric algorithm encryption must be of type "public"`)}})(a,b,c)}}},41570:(a,b,c)=>{c.d(b,{ac:()=>e,h2:()=>f});var d=c(56642);function e(a,b){if(a)throw TypeError(`${b} can only be called once`)}function f(a,b,c){try{return(0,d.D)(a)}catch{throw new c(`Failed to base64url decode the ${b}`)}}Symbol()},55956:(a,b,c)=>{let d;c.d(b,{l:()=>m});var e=c(19035),f=c(56642),g=c(99129);let h='Invalid or unsupported JWK "alg" (Algorithm) Parameter value';async function i(a){if(!a.alg)throw TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:b,keyUsages:c}=function(a){let b,c;switch(a.kty){case"AKP":switch(a.alg){case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":b={name:a.alg},c=a.priv?["sign"]:["verify"];break;default:throw new g.T0(h)}break;case"RSA":switch(a.alg){case"PS256":case"PS384":case"PS512":b={name:"RSA-PSS",hash:`SHA-${a.alg.slice(-3)}`},c=a.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":b={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${a.alg.slice(-3)}`},c=a.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":b={name:"RSA-OAEP",hash:`SHA-${parseInt(a.alg.slice(-3),10)||1}`},c=a.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new g.T0(h)}break;case"EC":switch(a.alg){case"ES256":case"ES384":case"ES512":b={name:"ECDSA",namedCurve:({ES256:"P-256",ES384:"P-384",ES512:"P-521"})[a.alg]},c=a.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":b={name:"ECDH",namedCurve:a.crv},c=a.d?["deriveBits"]:[];break;default:throw new g.T0(h)}break;case"OKP":switch(a.alg){case"Ed25519":case"EdDSA":b={name:"Ed25519"},c=a.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":b={name:a.crv},c=a.d?["deriveBits"]:[];break;default:throw new g.T0(h)}break;default:throw new g.T0('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:b,keyUsages:c}}(a),d={...a};return"AKP"!==d.kty&&delete d.alg,delete d.use,crypto.subtle.importKey("jwk",d,b,a.ext??(!a.d&&!a.priv),a.key_ops??c)}var j=c(75497);let k="given KeyObject instance cannot be used for this algorithm",l=async(a,b,c,e=!1)=>{let f=(d||=new WeakMap).get(a);if(f?.[c])return f[c];let g=await i({...b,alg:c});return e&&Object.freeze(a),f?f[c]=g:d.set(a,{[c]:g}),g};async function m(a,b){if(a instanceof Uint8Array||(0,j.R7)(a))return a;if((0,j.D2)(a)){if("secret"===a.type)return a.export();if("toCryptoKey"in a&&"function"==typeof a.toCryptoKey)try{return((a,b)=>{let c,e=(d||=new WeakMap).get(a);if(e?.[b])return e[b];let f="public"===a.type,g=!!f;if("x25519"===a.asymmetricKeyType){switch(b){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw TypeError(k)}c=a.toCryptoKey(a.asymmetricKeyType,g,f?[]:["deriveBits"])}if("ed25519"===a.asymmetricKeyType){if("EdDSA"!==b&&"Ed25519"!==b)throw TypeError(k);c=a.toCryptoKey(a.asymmetricKeyType,g,[f?"verify":"sign"])}switch(a.asymmetricKeyType){case"ml-dsa-44":case"ml-dsa-65":case"ml-dsa-87":if(b!==a.asymmetricKeyType.toUpperCase())throw TypeError(k);c=a.toCryptoKey(a.asymmetricKeyType,g,[f?"verify":"sign"])}if("rsa"===a.asymmetricKeyType){let d;switch(b){case"RSA-OAEP":d="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":d="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":d="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":d="SHA-512";break;default:throw TypeError(k)}if(b.startsWith("RSA-OAEP"))return a.toCryptoKey({name:"RSA-OAEP",hash:d},g,f?["encrypt"]:["decrypt"]);c=a.toCryptoKey({name:b.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:d},g,[f?"verify":"sign"])}if("ec"===a.asymmetricKeyType){let d=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(a.asymmetricKeyDetails?.namedCurve);if(!d)throw TypeError(k);let e={ES256:"P-256",ES384:"P-384",ES512:"P-521"};e[b]&&d===e[b]&&(c=a.toCryptoKey({name:"ECDSA",namedCurve:d},g,[f?"verify":"sign"])),b.startsWith("ECDH-ES")&&(c=a.toCryptoKey({name:"ECDH",namedCurve:d},g,f?[]:["deriveBits"]))}if(!c)throw TypeError(k);return e?e[b]=c:d.set(a,{[b]:c}),c})(a,b)}catch(a){if(a instanceof TypeError)throw a}let c=a.export({format:"jwk"});return l(a,c,b)}if((0,e.ll)(a))return a.k?(0,f.D)(a.k):l(a,a,b,!0);throw Error("unreachable")}},56642:(a,b,c)=>{c.d(b,{D:()=>e,l:()=>f});var d=c(73575);function e(a){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof a?a:d.D0.decode(a),{alphabet:"base64url"});let b=a;b instanceof Uint8Array&&(b=d.D0.decode(b)),b=b.replace(/-/g,"+").replace(/_/g,"/");try{var c=b;if(Uint8Array.fromBase64)return Uint8Array.fromBase64(c);let a=atob(c),d=new Uint8Array(a.length);for(let b=0;b<a.length;b++)d[b]=a.charCodeAt(b);return d}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}function f(a){let b=a;return("string"==typeof b&&(b=d.Rd.encode(b)),Uint8Array.prototype.toBase64)?b.toBase64({alphabet:"base64url",omitPadding:!0}):(function(a){if(Uint8Array.prototype.toBase64)return a.toBase64();let b=[];for(let c=0;c<a.length;c+=32768)b.push(String.fromCharCode.apply(null,a.subarray(c,c+32768)));return btoa(b.join(""))})(b).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}},58287:(a,b,c)=>{function d(a,b,...c){if((c=c.filter(Boolean)).length>2){let b=c.pop();a+=`one of type ${c.join(", ")}, or ${b}.`}else 2===c.length?a+=`one of type ${c[0]} or ${c[1]}.`:a+=`of type ${c[0]}.`;return null==b?a+=` Received ${b}`:"function"==typeof b&&b.name?a+=` Received function ${b.name}`:"object"==typeof b&&null!=b&&b.constructor?.name&&(a+=` Received an instance of ${b.constructor.name}`),a}c.d(b,{X:()=>e,t:()=>f});let e=(a,...b)=>d("Key must be ",a,...b),f=(a,b,...c)=>d(`Key for the ${a} algorithm must be `,b,...c)},73575:(a,b,c)=>{c.d(b,{D0:()=>e,Rd:()=>d,lF:()=>g,xW:()=>f});let d=new TextEncoder,e=new TextDecoder;function f(...a){let b=new Uint8Array(a.reduce((a,{length:b})=>a+b,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}function g(a){let b=new Uint8Array(a.length);for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);if(d>127)throw TypeError("non-ASCII string encountered in encode()");b[c]=d}return b}},75497:(a,b,c)=>{c.d(b,{D2:()=>e,P2:()=>f,R7:()=>d});let d=a=>{if(a?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return a instanceof CryptoKey}catch{return!1}},e=a=>a?.[Symbol.toStringTag]==="KeyObject",f=a=>d(a)||e(a)},80308:(a,b,c)=>{c.d(b,{n:()=>e});var d=c(99129);function e(a,b,c,e,f){let g;if(void 0!==f.crit&&e?.crit===void 0)throw new a('"crit" (Critical) Header Parameter MUST be integrity protected');if(!e||void 0===e.crit)return new Set;if(!Array.isArray(e.crit)||0===e.crit.length||e.crit.some(a=>"string"!=typeof a||0===a.length))throw new a('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');for(let h of(g=void 0!==c?new Map([...Object.entries(c),...b.entries()]):b,e.crit)){if(!g.has(h))throw new d.T0(`Extension Header Parameter "${h}" is not recognized`);if(void 0===f[h])throw new a(`Extension Header Parameter "${h}" is missing`);if(g.get(h)&&void 0===e[h])throw new a(`Extension Header Parameter "${h}" MUST be integrity protected`)}return new Set(e.crit)}},91356:(a,b,c)=>{c.d(b,{_S:()=>k,MX:()=>l});var d=c(99129);let e=(a,b="algorithm.name")=>TypeError(`CryptoKey does not support this operation, its ${b} must be ${a}`);function f(a,b){if(parseInt(a.hash.name.slice(4),10)!==b)throw e(`SHA-${b}`,"algorithm.hash")}var g=c(58287);function h(a,b){if(a.startsWith("RS")||a.startsWith("PS")){let{modulusLength:c}=b.algorithm;if("number"!=typeof c||c<2048)throw TypeError(`${a} requires key modulusLength to be 2048 bits or larger`)}}function i(a,b){let c=`SHA-${a.slice(-3)}`;switch(a){case"HS256":case"HS384":case"HS512":return{hash:c,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:c,name:"RSA-PSS",saltLength:parseInt(a.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:c,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:c,name:"ECDSA",namedCurve:b.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":return{name:a};default:throw new d.T0(`alg ${a} is not supported either by JOSE or your javascript runtime`)}}async function j(a,b,c){if(b instanceof Uint8Array){if(!a.startsWith("HS"))throw TypeError((0,g.X)(b,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",b,{hash:`SHA-${a.slice(-3)}`,name:"HMAC"},!1,[c])}return!function(a,b,c){switch(b){case"HS256":case"HS384":case"HS512":if("HMAC"!==a.algorithm.name)throw e("HMAC");f(a.algorithm,parseInt(b.slice(2),10));break;case"RS256":case"RS384":case"RS512":if("RSASSA-PKCS1-v1_5"!==a.algorithm.name)throw e("RSASSA-PKCS1-v1_5");f(a.algorithm,parseInt(b.slice(2),10));break;case"PS256":case"PS384":case"PS512":if("RSA-PSS"!==a.algorithm.name)throw e("RSA-PSS");f(a.algorithm,parseInt(b.slice(2),10));break;case"Ed25519":case"EdDSA":if("Ed25519"!==a.algorithm.name)throw e("Ed25519");break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":let d;if(d=a.algorithm,d.name!==b)throw e(b);break;case"ES256":case"ES384":case"ES512":{if("ECDSA"!==a.algorithm.name)throw e("ECDSA");let c=function(a){switch(a){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw Error("unreachable")}}(b);if(a.algorithm.namedCurve!==c)throw e(c,"algorithm.namedCurve");break}default:throw TypeError("CryptoKey does not support this operation")}if(c&&!a.usages.includes(c))throw TypeError(`CryptoKey does not support this operation, its usages must include ${c}.`)}(b,a,c),b}async function k(a,b,c){let d=await j(a,b,"sign");return h(a,d),new Uint8Array(await crypto.subtle.sign(i(a,d.algorithm),d,c))}async function l(a,b,c,d){let e=await j(a,b,"verify");h(a,e);let f=i(a,e.algorithm);try{return await crypto.subtle.verify(f,e,c,d)}catch{return!1}}},99129:(a,b,c)=>{c.d(b,{Dp:()=>j,Rb:()=>g,T0:()=>h,Ye:()=>i,h2:()=>l,ie:()=>e,n:()=>f});class d extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(a,b){super(a,b),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class e extends d{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class f extends d{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class g extends d{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class h extends d{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class i extends d{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class j extends d{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class k extends d{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(a="multiple matching keys found in the JSON Web Key Set",b){super(a,b)}}class l extends d{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(a="signature verification failed",b){super(a,b)}}}};