@ltgiang/9router 0.5.39 → 0.5.41

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 (380) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +11 -11
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  41. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  42. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  43. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  45. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/combos/reorder/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/models/order/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  78. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/providers/[id]/connections/disabled/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/providers/[id]/pool/pull/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/providers/[id]/pool/push/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/providers/[id]/pool/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  157. package/app/.next-cli-build/server/app/callback.html +1 -1
  158. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  159. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  160. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  161. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  162. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  163. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  164. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  165. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  166. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  167. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  168. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  169. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  170. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  171. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  172. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  173. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  174. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  175. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  176. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  177. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  178. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  179. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  180. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  181. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  182. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  183. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  184. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  185. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  186. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  187. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  188. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  189. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  190. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  191. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  192. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  193. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  194. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  195. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  196. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  197. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  198. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  199. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  200. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  201. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  202. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  203. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  204. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  206. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  207. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  208. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  209. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  210. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  212. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  213. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  215. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  218. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  219. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  222. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  223. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  225. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  228. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  229. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  232. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  233. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  234. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  235. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  238. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  239. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  243. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  244. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  246. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  247. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  249. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  250. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  253. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  254. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  256. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  258. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  259. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  260. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  263. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  264. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  265. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  266. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  268. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  269. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  270. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  273. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  274. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  275. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  276. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  278. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  279. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  280. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  281. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  283. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  284. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  286. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  289. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  290. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  291. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  294. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  295. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  296. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  297. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  298. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  300. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  301. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  304. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  305. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  306. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  307. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  310. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  311. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  314. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  315. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  316. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  317. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  320. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  321. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  324. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  325. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  326. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  327. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  329. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  330. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  331. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  333. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  334. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  336. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  337. package/app/.next-cli-build/server/app/index.html +1 -1
  338. package/app/.next-cli-build/server/app/index.rsc +4 -4
  339. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  341. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  343. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  344. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  345. package/app/.next-cli-build/server/app/landing.html +1 -1
  346. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  347. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  348. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  350. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  351. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  352. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  354. package/app/.next-cli-build/server/app/login.html +1 -1
  355. package/app/.next-cli-build/server/app/login.rsc +5 -5
  356. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  357. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  358. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  359. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  361. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  362. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  363. package/app/.next-cli-build/server/app-paths-manifest.json +11 -11
  364. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  365. package/app/.next-cli-build/server/chunks/4827.js +1 -1
  366. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  367. package/app/.next-cli-build/server/chunks/8668.js +1 -1
  368. package/app/.next-cli-build/server/chunks/8914.js +1 -1
  369. package/app/.next-cli-build/server/chunks/920.js +4 -4
  370. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  371. package/app/.next-cli-build/server/pages/404.html +1 -1
  372. package/app/.next-cli-build/server/pages/500.html +1 -1
  373. package/app/.next-cli-build/static/chunks/{1321-e4c79e2cdf68e284.js → 1321-437e787a0f1ca6e5.js} +1 -1
  374. package/app/cli/.build-home/.9router/db/backups/{upgrade-0.5.35-to-0.5.36-0.5.36-20260706-103333 → upgrade-0.5.38-to-0.5.39-0.5.39-20260706-121344}/data.sqlite +0 -0
  375. package/app/cli/.build-home/.9router/db/backups/{upgrade-0.5.26-to-0.5.35-0.5.35-20260706-101856 → upgrade-0.5.39-to-0.5.40-0.5.40-20260706-123611}/data.sqlite +0 -0
  376. package/app/cli/.build-home/.9router/db/data.sqlite +0 -0
  377. package/app/package.json +1 -1
  378. package/package.json +1 -1
  379. /package/app/.next-cli-build/static/{t19opduSGtFKLoqvYoUh6 → NME2hrsFTtuD4cEAQq1bm}/_buildManifest.js +0 -0
  380. /package/app/.next-cli-build/static/{t19opduSGtFKLoqvYoUh6 → NME2hrsFTtuD4cEAQq1bm}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=920,exports.ids=[920],exports.modules={35868:(a,b,c)=>{c.r(b),c.d(b,{default:()=>e,loadTierConfig:()=>d});let d=async()=>void 0,e={}},58353:(a,b,c)=>{c.d(b,{x4:()=>e,z7:()=>d});let d={USER:"user",ASSISTANT:"assistant",TOOL:"tool",SYSTEM:"system",DEVELOPER:"developer"},e={TEXT:"text",IMAGE_URL:"image_url",IMAGE:"image",INPUT_AUDIO:"input_audio",AUDIO_URL:"audio_url",FILE:"file",FUNCTION:"function"};e.TEXT,e.IMAGE_URL,e.IMAGE,e.INPUT_AUDIO,e.AUDIO_URL,e.FILE,e.TEXT,e.IMAGE_URL,e.IMAGE},90920:(a,b,c)=>{c.d(b,{Vu:()=>cX,Pr:()=>dS,vt:()=>cy,UP:()=>dV,resolveComboTargets:()=>c0,setCandidateQuotaSoftPenalty:()=>aW});var d=c(10254),e=c(43659);let f=[],g=200,h=36e5;function i(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function j(){return{requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null}}function k(a){return{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:a,lastUsedAt:null,intentCounts:{},byModel:{},byTarget:{}}}function l(){return{totalRequests:0,totalSuccesses:0,totalFailures:0,totalLatencyMs:0,lastUsedAt:null,byModel:{},byTarget:{}}}function m(a,b,c,d){if(a.requests++,a.totalLatencyMs+=c,a.lastUsedAt=d,b){a.successes++,a.lastStatus="ok";return}a.failures++,a.lastStatus="error"}function n(a,b){let c=i(b.executionKey)||i(a),d=i(a);return c&&d?{executionKey:c,stepId:i(b.stepId),model:d,provider:i(b.provider)||function(a){let b=i(a);if(!b)return null;let[c]=b.split("/");return i(c)}(d),providerId:i(b.providerId),connectionId:null===b.connectionId?null:i(b.connectionId)??null,label:null===b.label?null:i(b.label)??null,...j()}:null}function o(a){return{...a,avgLatencyMs:a.requests>0?Math.round(a.totalLatencyMs/a.requests):0,successRate:a.requests>0?Math.round(a.successes/a.requests*100):0}}let p=new Map,q=new Map;function r(a,b={}){let c=null,d=1/0;for(let[b,e]of a){let a=e.lastUsedAt?new Date(e.lastUsedAt).getTime():Date.now();a<d&&(d=a,c=b)}c&&(a.delete(c),b.deletePairedShadow&&q.delete(c))}let s=setInterval(()=>{let a=Date.now();for(let[b,c]of p){let d=c.lastUsedAt?new Date(c.lastUsedAt).getTime():a;a-d>36e5&&(p.delete(b),q.delete(b))}for(let[b,c]of q){let d=c.lastUsedAt?new Date(c.lastUsedAt).getTime():a;a-d>36e5&&(p.delete(b),q.delete(b))}},3e5);function t(a,b,{success:c,latencyMs:d,fallbackCount:e=0,strategy:l="priority",target:o}){!p.has(a)&&p.size>=500&&r(p,{deletePairedShadow:!0}),p.has(a)||p.set(a,k(l));let q=p.get(a);if(!q)return;let s=new Date().toISOString();if(q.totalRequests++,q.totalLatencyMs+=d,q.totalFallbacks+=e,q.lastUsedAt=s,q.strategy=l,c){let a,b;q.totalSuccesses++;let c=i(o?.provider);c&&(a=Date.now(),f.push({provider:c,timestamp:a}),f.length>g&&(f=f.slice(-g)),b=a-h,f=f.filter(a=>a.timestamp>=b))}else q.totalFailures++;if(!b)return;q.byModel[b]||(q.byModel[b]=j()),m(q.byModel[b],c,d,s);let u=n(b,o||{});if(!u)return;q.byTarget[u.executionKey]||(q.byTarget[u.executionKey]=u);let v=q.byTarget[u.executionKey];v.stepId=u.stepId||v.stepId,v.provider=u.provider||v.provider,v.providerId=u.providerId||v.providerId,v.connectionId=o?.connectionId===null?null:u.connectionId??v.connectionId,v.label=o?.label===null?null:u.label??v.label,m(v,c,d,s)}function u(a,b,{success:c,latencyMs:d,target:e}){!q.has(a)&&q.size>=500&&r(q),q.has(a)||q.set(a,l());let f=q.get(a);if(!f)return;let g=new Date().toISOString();if(f.totalRequests++,f.totalLatencyMs+=d,f.lastUsedAt=g,c?f.totalSuccesses++:f.totalFailures++,!b)return;f.byModel[b]||(f.byModel[b]=j()),m(f.byModel[b],c,d,g);let h=n(b,e||{});if(!h)return;f.byTarget[h.executionKey]||(f.byTarget[h.executionKey]=h);let i=f.byTarget[h.executionKey];i.stepId=h.stepId||i.stepId,i.provider=h.provider||i.provider,i.providerId=h.providerId||i.providerId,i.connectionId=e?.connectionId===null?null:h.connectionId??i.connectionId,i.label=e?.label===null?null:h.label??i.label,m(i,c,d,g)}function v(a){let b,c=p.get(a),d=c||(q.has(a)?k("priority"):null);return d?{...d,productionTraffic:!!c&&c.totalRequests>0,avgLatencyMs:d.totalRequests>0?Math.round(d.totalLatencyMs/d.totalRequests):0,successRate:d.totalRequests>0?Math.round(d.totalSuccesses/d.totalRequests*100):0,fallbackRate:d.totalRequests>0?Math.round(d.totalFallbacks/d.totalRequests*100):0,intentCounts:{...d.intentCounts},byModel:Object.fromEntries(Object.entries(d.byModel).map(([a,b])=>[a,o(b)])),byTarget:Object.fromEntries(Object.entries(d.byTarget).map(([a,b])=>[a,o(b)])),shadow:{...b=q.get(a)||l(),avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,o(b)])),byTarget:Object.fromEntries(Object.entries(b.byTarget).map(([a,b])=>[a,o(b)]))}}:null}s.unref?.();var w=c(99765);let x={strategy:"priority",maxRetries:1,retryDelayMs:2e3,fallbackDelayMs:0,concurrencyPerModel:3,queueTimeoutMs:3e4,queueDepth:20,handoffThreshold:.85,handoffModel:"",handoffProviders:["codex"],maxMessagesForSummary:30,maxComboDepth:3,nestedComboMode:"flatten",trackMetrics:!0,reasoningTokenBufferEnabled:!0,manifestRouting:!1,complexityAwareRouting:!1,resetAwareSessionWeight:.35,resetAwareWeeklyWeight:.65,resetAwareTieBandPercent:5,resetAwareExhaustionGuardPercent:10,failoverBeforeRetry:!0,responseValidation:void 0,maxSetRetries:0,setRetryDelayMs:2e3,zeroLatencyOptimizationsEnabled:!1,hedging:!1,hedgeDelayMs:500,fallbackCompressionMode:"lite",fallbackCompressionThreshold:1e3,predictiveTtftMs:0,pipeline_enabled:!1,task_detection:"pattern",max_reflection_loops:1,skip_pipeline_for_tokens_under:50,pipeline_fallback:"single-provider",resetAwareQuotaCacheTtlMs:0,resetAwareQuotaCacheMaxStaleMs:0,shadowRouting:{enabled:!1,targets:[],sampleRate:1,maxTargets:2,timeoutMs:3e4},evalRouting:{enabled:!1,suiteIds:[],maxAgeHours:720,minCases:1,qualityWeight:.85,latencyWeight:.15,cacheTtlMs:6e4}},y=new Set(["timeoutMs","healthCheckEnabled","healthCheckTimeoutMs"]);function z(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function A(a){let b=Number(a);return!Number.isFinite(b)||b<=0?0:Math.min(Math.floor(b),w.a_)}function B(a){let b=z(a)?Number(a.queueDepth):NaN;return!Number.isFinite(b)||b<0?20:Math.min(Math.floor(b),100)}function C(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},g=a=>Object.fromEntries(Object.entries(a).filter(([a,b])=>null!=b&&!y.has(a)));return{...{...x,...g(d),...g(e),...g(f)},shadowRouting:{...x.shadowRouting,...z(d.shadowRouting)?g(d.shadowRouting):{},...z(e.shadowRouting)?g(e.shadowRouting):{},...z(f.shadowRouting)?g(f.shadowRouting):{}},evalRouting:{...x.evalRouting,...z(d.evalRouting)?g(d.evalRouting):{},...z(e.evalRouting)?g(e.evalRouting):{},...z(f.evalRouting)?g(f.evalRouting):{}}}}let D=()=>null,E=()=>null,F=()=>void 0;var G=c(14720),H=c(49333);let I=/(?:\\n|\n|\r)*<omniModel>[^<]+<\/omniModel>(?:\\n|\n|\r)*/g,J=new Set,K=`You are a context summarizer. Analyze the conversation below and generate a structured handoff summary.
1
+ "use strict";exports.id=920,exports.ids=[920],exports.modules={35868:(a,b,c)=>{c.r(b),c.d(b,{default:()=>e,loadTierConfig:()=>d});let d=async()=>void 0,e={}},58353:(a,b,c)=>{c.d(b,{x4:()=>e,z7:()=>d});let d={USER:"user",ASSISTANT:"assistant",TOOL:"tool",SYSTEM:"system",DEVELOPER:"developer"},e={TEXT:"text",IMAGE_URL:"image_url",IMAGE:"image",INPUT_AUDIO:"input_audio",AUDIO_URL:"audio_url",FILE:"file",FUNCTION:"function"};e.TEXT,e.IMAGE_URL,e.IMAGE,e.INPUT_AUDIO,e.AUDIO_URL,e.FILE,e.TEXT,e.IMAGE_URL,e.IMAGE},90920:(a,b,c)=>{c.d(b,{Vu:()=>c$,Pr:()=>dV,vt:()=>cy,UP:()=>dY,resolveComboTargets:()=>c3,setCandidateQuotaSoftPenalty:()=>aW});var d=c(10254),e=c(43659);let f=[],g=200,h=36e5;function i(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function j(){return{requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null}}function k(a){return{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:a,lastUsedAt:null,intentCounts:{},byModel:{},byTarget:{}}}function l(){return{totalRequests:0,totalSuccesses:0,totalFailures:0,totalLatencyMs:0,lastUsedAt:null,byModel:{},byTarget:{}}}function m(a,b,c,d){if(a.requests++,a.totalLatencyMs+=c,a.lastUsedAt=d,b){a.successes++,a.lastStatus="ok";return}a.failures++,a.lastStatus="error"}function n(a,b){let c=i(b.executionKey)||i(a),d=i(a);return c&&d?{executionKey:c,stepId:i(b.stepId),model:d,provider:i(b.provider)||function(a){let b=i(a);if(!b)return null;let[c]=b.split("/");return i(c)}(d),providerId:i(b.providerId),connectionId:null===b.connectionId?null:i(b.connectionId)??null,label:null===b.label?null:i(b.label)??null,...j()}:null}function o(a){return{...a,avgLatencyMs:a.requests>0?Math.round(a.totalLatencyMs/a.requests):0,successRate:a.requests>0?Math.round(a.successes/a.requests*100):0}}let p=new Map,q=new Map;function r(a,b={}){let c=null,d=1/0;for(let[b,e]of a){let a=e.lastUsedAt?new Date(e.lastUsedAt).getTime():Date.now();a<d&&(d=a,c=b)}c&&(a.delete(c),b.deletePairedShadow&&q.delete(c))}let s=setInterval(()=>{let a=Date.now();for(let[b,c]of p){let d=c.lastUsedAt?new Date(c.lastUsedAt).getTime():a;a-d>36e5&&(p.delete(b),q.delete(b))}for(let[b,c]of q){let d=c.lastUsedAt?new Date(c.lastUsedAt).getTime():a;a-d>36e5&&(p.delete(b),q.delete(b))}},3e5);function t(a,b,{success:c,latencyMs:d,fallbackCount:e=0,strategy:l="priority",target:o}){!p.has(a)&&p.size>=500&&r(p,{deletePairedShadow:!0}),p.has(a)||p.set(a,k(l));let q=p.get(a);if(!q)return;let s=new Date().toISOString();if(q.totalRequests++,q.totalLatencyMs+=d,q.totalFallbacks+=e,q.lastUsedAt=s,q.strategy=l,c){let a,b;q.totalSuccesses++;let c=i(o?.provider);c&&(a=Date.now(),f.push({provider:c,timestamp:a}),f.length>g&&(f=f.slice(-g)),b=a-h,f=f.filter(a=>a.timestamp>=b))}else q.totalFailures++;if(!b)return;q.byModel[b]||(q.byModel[b]=j()),m(q.byModel[b],c,d,s);let u=n(b,o||{});if(!u)return;q.byTarget[u.executionKey]||(q.byTarget[u.executionKey]=u);let v=q.byTarget[u.executionKey];v.stepId=u.stepId||v.stepId,v.provider=u.provider||v.provider,v.providerId=u.providerId||v.providerId,v.connectionId=o?.connectionId===null?null:u.connectionId??v.connectionId,v.label=o?.label===null?null:u.label??v.label,m(v,c,d,s)}function u(a,b,{success:c,latencyMs:d,target:e}){!q.has(a)&&q.size>=500&&r(q),q.has(a)||q.set(a,l());let f=q.get(a);if(!f)return;let g=new Date().toISOString();if(f.totalRequests++,f.totalLatencyMs+=d,f.lastUsedAt=g,c?f.totalSuccesses++:f.totalFailures++,!b)return;f.byModel[b]||(f.byModel[b]=j()),m(f.byModel[b],c,d,g);let h=n(b,e||{});if(!h)return;f.byTarget[h.executionKey]||(f.byTarget[h.executionKey]=h);let i=f.byTarget[h.executionKey];i.stepId=h.stepId||i.stepId,i.provider=h.provider||i.provider,i.providerId=h.providerId||i.providerId,i.connectionId=e?.connectionId===null?null:h.connectionId??i.connectionId,i.label=e?.label===null?null:h.label??i.label,m(i,c,d,g)}function v(a){let b,c=p.get(a),d=c||(q.has(a)?k("priority"):null);return d?{...d,productionTraffic:!!c&&c.totalRequests>0,avgLatencyMs:d.totalRequests>0?Math.round(d.totalLatencyMs/d.totalRequests):0,successRate:d.totalRequests>0?Math.round(d.totalSuccesses/d.totalRequests*100):0,fallbackRate:d.totalRequests>0?Math.round(d.totalFallbacks/d.totalRequests*100):0,intentCounts:{...d.intentCounts},byModel:Object.fromEntries(Object.entries(d.byModel).map(([a,b])=>[a,o(b)])),byTarget:Object.fromEntries(Object.entries(d.byTarget).map(([a,b])=>[a,o(b)])),shadow:{...b=q.get(a)||l(),avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,o(b)])),byTarget:Object.fromEntries(Object.entries(b.byTarget).map(([a,b])=>[a,o(b)]))}}:null}s.unref?.();var w=c(99765);let x={strategy:"priority",maxRetries:1,retryDelayMs:2e3,fallbackDelayMs:0,concurrencyPerModel:3,queueTimeoutMs:3e4,queueDepth:20,handoffThreshold:.85,handoffModel:"",handoffProviders:["codex"],maxMessagesForSummary:30,maxComboDepth:3,nestedComboMode:"flatten",trackMetrics:!0,reasoningTokenBufferEnabled:!0,manifestRouting:!1,complexityAwareRouting:!1,resetAwareSessionWeight:.35,resetAwareWeeklyWeight:.65,resetAwareTieBandPercent:5,resetAwareExhaustionGuardPercent:10,failoverBeforeRetry:!0,responseValidation:void 0,maxSetRetries:0,setRetryDelayMs:2e3,zeroLatencyOptimizationsEnabled:!1,hedging:!1,hedgeDelayMs:500,fallbackCompressionMode:"lite",fallbackCompressionThreshold:1e3,predictiveTtftMs:0,pipeline_enabled:!1,task_detection:"pattern",max_reflection_loops:1,skip_pipeline_for_tokens_under:50,pipeline_fallback:"single-provider",resetAwareQuotaCacheTtlMs:0,resetAwareQuotaCacheMaxStaleMs:0,shadowRouting:{enabled:!1,targets:[],sampleRate:1,maxTargets:2,timeoutMs:3e4},evalRouting:{enabled:!1,suiteIds:[],maxAgeHours:720,minCases:1,qualityWeight:.85,latencyWeight:.15,cacheTtlMs:6e4}},y=new Set(["timeoutMs","healthCheckEnabled","healthCheckTimeoutMs"]);function z(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function A(a){let b=Number(a);return!Number.isFinite(b)||b<=0?0:Math.min(Math.floor(b),w.a_)}function B(a){let b=z(a)?Number(a.queueDepth):NaN;return!Number.isFinite(b)||b<0?20:Math.min(Math.floor(b),100)}function C(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},g=a=>Object.fromEntries(Object.entries(a).filter(([a,b])=>null!=b&&!y.has(a)));return{...{...x,...g(d),...g(e),...g(f)},shadowRouting:{...x.shadowRouting,...z(d.shadowRouting)?g(d.shadowRouting):{},...z(e.shadowRouting)?g(e.shadowRouting):{},...z(f.shadowRouting)?g(f.shadowRouting):{}},evalRouting:{...x.evalRouting,...z(d.evalRouting)?g(d.evalRouting):{},...z(e.evalRouting)?g(e.evalRouting):{},...z(f.evalRouting)?g(f.evalRouting):{}}}}let D=()=>null,E=()=>null,F=()=>void 0;var G=c(14720),H=c(49333);let I=/(?:\\n|\n|\r)*<omniModel>[^<]+<\/omniModel>(?:\\n|\n|\r)*/g,J=new Set,K=`You are a context summarizer. Analyze the conversation below and generate a structured handoff summary.
2
2
  This summary will be used to restore context when this conversation is moved to a new AI account.
3
3
 
4
4
  CONVERSATION HISTORY:
@@ -14,9 +14,9 @@ Generate a JSON object with this exact structure:
14
14
 
15
15
  Important: Return ONLY the JSON object, no markdown, no explanation.`,L=[],M="_omnirouteSkipUniversalHandoff";function N(a){let b=Number(a?.handoffThreshold),c=Number(a?.maxMessagesForSummary),d=Array.isArray(a?.handoffProviders),e=d?(a?.handoffProviders).map(a=>"string"==typeof a?a.trim().toLowerCase():"").filter(Boolean):["codex"];return{handoffModel:"string"==typeof a?.handoffModel&&a.handoffModel.trim().length>0?a.handoffModel.trim():"",handoffThreshold:Number.isFinite(b)&&b>0&&b<.95?b:.85,handoffProviders:d?e:["codex"],maxMessagesForSummary:Number.isFinite(c)&&c>=5&&c<=100?Math.round(c):30}}function O(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>a&&"object"==typeof a?"string"==typeof a.text?String(a.text):"string"==typeof a.content?String(a.content):"":"").filter(Boolean).join("\n"):""}function P(a){return a.map((a,b)=>{let c="string"==typeof a.role?a.role:"unknown",d=O(a.content).trim();return d?`[${b+1}] ${c.toUpperCase()}:
16
16
  ${d}`:""}).filter(Boolean).join("\n\n")}function Q(a,b){let c=a.filter(a=>a&&"object"==typeof a),d=c.filter(a=>"string"==typeof a.role&&("system"===a.role||"developer"===a.role)),e=c.filter(a=>"string"!=typeof a.role||"system"!==a.role&&"developer"!==a.role),f=[...d,...e.slice(-b)];for(;f.length>d.length+1;){let a=P(f);if(8e3>=(0,G.estimateTokens)(a))return f;f=[...d,...f.slice(d.length+1)]}let g=P(f);if((0,G.estimateTokens)(g)>8e3){if(d.length>0)return d;let a=e[e.length-1];return a?[a]:[]}return f}function R(a,b,c=240){return Array.isArray(a)?a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean).slice(0,b).map(a=>a.slice(0,c)):[]}function S(a){let b=function(a){let b=String((0,H.yN)(a)||"").replace(I,"").trim();if(!b)return"";try{return JSON.parse(b),b}catch{let a=b.indexOf("{"),c=b.lastIndexOf("}");if(a>=0&&c>a)return b.slice(a,c+1);return b}}(a);if(!b)return null;try{let a=JSON.parse(b),c="string"==typeof a.summary?a.summary.trim().slice(0,2e3):"",d="string"==typeof a.taskProgress?a.taskProgress.trim().slice(0,1200):"",e=R(a.keyDecisions,8),f=R(a.activeEntities,10);if(!c)return null;return{summary:c,keyDecisions:e,taskProgress:d,activeEntities:f}}catch{return null}}function T(a){return a.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&apos;")}function U(a){let b=(Array.isArray(a.choices)?a.choices:[])[0],c=b?.message;if("string"==typeof c?.content)return c.content;if(Array.isArray(c?.content))return O(c.content);for(let b of Array.isArray(a.output)?a.output:[])if(b&&"object"==typeof b){for(let a of Array.isArray(b.content)?b.content:[])if("string"==typeof a?.text)return a.text}for(let b of Array.isArray(a.content)?a.content:[])if(b&&"object"==typeof b&&"string"==typeof b.text)return String(b.text);return""}async function V(a){let b=N(a.config),c=b.handoffModel||a.model,d=P(Q(Array.isArray(a.messages)?a.messages:[],b.maxMessagesForSummary));if(!d)return;let e=K.replace("{HISTORY}",d),f=await a.handleSingleModel({model:c,messages:[{role:"user",content:e}],stream:!1,max_tokens:800,temperature:.1,_omnirouteSkipContextRelay:!0,_omnirouteInternalRequest:"context-handoff"},c);if(!f.ok)return;let g="";try{let a=await f.clone().json();g=U(a)}catch{try{g=await f.clone().text()}catch{g=""}}let h=S(g);h&&(a.sessionId,a.comboName,a.connectionId,h.summary,h.keyDecisions,h.taskProgress,h.activeEntities,Array.isArray(a.messages)&&a.messages.length,b.handoffThreshold,new Date().toISOString(),a.expiresAt||new Date(Date.now()+18e6).toISOString())}async function W(a){let b=P(Q(Array.isArray(a.messages)?a.messages:[],a.maxMessages));if(!b)return;let c=K.replace("{HISTORY}",b),d=a.handoffModel||a.currModel,e=await a.handleSingleModel({model:d,messages:[{role:"user",content:c}],stream:!1,max_tokens:800,temperature:.1,_omnirouteSkipContextRelay:!0,_omnirouteInternalRequest:"universal-handoff"},d);if(!e.ok)return;let f="";try{let a=await e.clone().json();f=U(a)}catch{try{f=await e.clone().text()}catch{f=""}}let g=S(f);g&&(a.sessionId,a.comboName,a.prevModel,g.summary,g.keyDecisions,g.taskProgress,g.activeEntities,Array.isArray(a.messages)&&a.messages.length,a.prevModel,new Date().toISOString(),new Date(Date.now()+a.ttlMs).toISOString())}var X=c(77868),Y=c(74016),Z=c(69069);let $=new Map;function _(a,b=3){$.has(a)||$.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=$.get(a);return c.max=b,c}function aa(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function ab(a){let b=$.get(a);if(b){for(;b.queue.length>0&&b.running<b.max&&!aa(b);){let c=b.queue.shift();if(!c)break;clearTimeout(c.timer),b.running++,c.resolve(ac(a))}0===b.running&&0===b.queue.length&&$.delete(a)}}function ac(a){let b=!1;return()=>{if(b)return;b=!0;let c=$.get(a);if(c&&c.running>0){if(c.running--,0===c.running&&0===c.queue.length)return void $.delete(a);ab(a)}}}function ad(a,{maxConcurrency:b=3,timeoutMs:c=3e4,maxQueueSize:d}={}){let e=_(a,b);if(e.running<e.max&&!aa(e))return e.running++,Promise.resolve(ac(a));if("number"==typeof d&&d>=0&&e.queue.length>=d){let b=Error(`Semaphore queue full (${d}) for ${a}`);return b.code="SEMAPHORE_QUEUE_FULL",0===e.running&&0===e.queue.length&&$.delete(a),Promise.reject(b)}return new Promise((b,d)=>{let f=setTimeout(()=>{let b=e.queue.findIndex(a=>a.timer===f);-1!==b&&e.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",d(g)},c);e.queue.push({resolve:b,reject:d,timer:f})})}var ae=c(15300),af=c(40669);let ag=/<omniModel>([^<]+)<\/omniModel>/,ah=/(?:\\n|\n|\r){0,16}<omniModel>([^<]+)<\/omniModel>(?:\\n|\n|\r){0,16}/g;var ai=c(50102),aj=c(61408);function ak(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function al(a){let b=new Set;return a.filter(a=>!b.has(a.executionKey)&&(b.add(a.executionKey),!0))}var am=c(80238);let an=["function","class","import","def","SELECT","async","await","const","let","var","return","```","algorithm","compile","debug","refactor","typescript","python","javascript","code","implement","write a","create a component","endpoint","repository","deploy","install","script","api","database","query","schema","interface","generic","enum","module","package","dependency","fun\xe7\xe3o","classe","importar","definir","consulta","ass\xedncrono","aguardar","constante","vari\xe1vel","retornar","algoritmo","compilar","depurar","refatorar","c\xf3digo","implementar","criar um","componente","como fazer","reposit\xf3rio","configurar","instalar","banco de dados","escrever uma fun\xe7\xe3o","criar uma classe","funci\xf3n","clase","importar","definir","consulta","as\xedncrono","esperar","constante","variable","retornar","algoritmo","compilar","depurar","refactorizar","c\xf3digo","implementar","函数","类","导入","定义","查询","异步","等待","常量","变量","返回","算法","编译","调试","代码","関数","クラス","インポート","非同期","定数","変数","コード","アルゴリズム","функция","класс","импорт","запрос","асинхронный","константа","переменная","алгоритм","код","funktion","klasse","importieren","abfrage","asynchron","konstante","variable","algorithmus","code","함수","클래스","가져오기","정의","쿼리","비동기","대기","상수","변수","반환","코드","دالة","فئة","استيراد","استعلام","غير متزامن","ثابت","متغير","كود","خوارزمية"],ao=["prove","theorem","derive","step by step","chain of thought","formally","mathematical","proof","logically","analyze","reasoning","deduce","infer","hypothesis","convergence","provar","teorema","derivar","passo a passo","cadeia de pensamento","formalmente","matem\xe1tico","prova","logicamente","analisar","racioc\xednio","deduzir","inferir","hip\xf3tese","demonstrar","c\xe1lculo","equa\xe7\xe3o diferencial","integral","otimiza\xe7\xe3o","demostrar","teorema","derivar","paso a paso","formalmente","matem\xe1tico","l\xf3gicamente","证明","定理","推导","逐步","思维链","数学","逻辑","分析","証明","定理","導出","論理的","分析","доказать","теорема","шаг за шагом","математически","логически","beweisen","theorem","schritt f\xfcr schritt","mathematisch","logisch","증명","정리","단계별","수학적","논리적","إثبات","نظرية","خطوة بخطوة","رياضي","منطقياً"],ap=["calculate","solve","equation","proof","formula","integral","derivative","theorem","algebra","geometry","arithmetic","polynomial","matrix","vector","statistics","probability","calcular","resolver","equa\xe7\xe3o","f\xf3rmula","integral","derivada","teorema","\xe1lgebra","geometria","aritm\xe9tica","polin\xf4mio","matriz","vetor","estat\xedstica","probabilidade","calcular","resolver","ecuaci\xf3n","f\xf3rmula","integral","derivada","teorema","\xe1lgebra","geometr\xeda","aritm\xe9tica","polinomio","matriz","vector","estad\xedstica","probabilidad","计算","求解","方程","公式","积分","导数","代数","几何","算术","多项式","矩阵","向量","统计","概率","計算","方程式","公式","積分","微分","代数","幾何学","算術","多項式","行列","ベクトル","統計","確率","вычислить","решить","уравнение","формула","интеграл","производная","алгебра","геометрия","арифметика","полином","матрица","вектор","статистика","вероятность","berechnen","gleichung","formel","integral","ableitung","algebra","geometrie","arithmetik","polynom","matrix","vektor","statistik","wahrscheinlichkeit","계산","방정식","공식","적분","미분","대수","기하학","산술","다항식","행렬","벡터","통계","확률","حل","معادلة","صيغة","تكامل","مشتق","جبر","هندسة","حساب","متعدد الحدود","مصفوفة","متجه","إحصاء","احتمال"],aq=["write","story","poem","creative","brainstorm","blog","article","copywrite","marketing","narrative","fiction","screenplay","lyrics","essay","escrever","hist\xf3ria","poema","criativo","brainstorm","blog","artigo","reda\xe7\xe3o","marketing","narrativa","fic\xe7\xe3o","roteiro","letras","ensaio","escribir","historia","poema","creativo","blog","art\xedculo","redacci\xf3n","marketing","narrativa","ficci\xf3n","guion","letras","ensayo","写","故事","诗","创意","头脑风暴","博客","文章","文案","营销","叙事","小说","剧本","歌词","散文","書く","物語","詩","クリエイティブ","ブログ","記事","コピーライティング","マーケティング","ナラティブ","小説","脚本","歌詞","エッセイ","написать","история","стихотворение","креативный","блог","статья","копирайтинг","маркетинг","нарратив","фантастика","сценарий","текст песни","эссе","schreiben","geschichte","gedicht","kreativ","blog","artikel","texten","marketing","erz\xe4hlung","fiktion","drehbuch","songtext","aufsatz","쓰기","이야기","시","창의적","블로그","기사","카피라이팅","마케팅","서사","소설","시나리오","가사","에세이","كتابة","قصة","قصيدة","إبداعي","مقال","تسويق","سرد","رواية","سيناريو","كلمات أغنية","مقالة"],ar=["what is","define","translate","hello","yes or no","summarize","list","tell me","who is","o que \xe9","definir","traduzir","ol\xe1","oi","sim ou n\xe3o","resumir","listar","me diga","quem \xe9","quando foi","onde fica","explique brevemente","de forma simples","qu\xe9 es","definir","traducir","hola","resumir","listar","什么是","定义","翻译","你好","总结","列出","что такое","определить","перевести","привет","резюмировать","was ist","definieren","\xfcbersetzen","hallo","zusammenfassen","이란","정의","번역","안녕","요약","ما هو","تعريف","ترجمة","مرحبا","ملخص"],as={enabled:!0,simpleMaxWords:60};var at=c(26621);let au={coding:{"claude-sonnet":.95,"claude-opus":.92,"claude-haiku":.78,"gpt-4o":.9,"gpt-4o-mini":.8,"gpt-4-turbo":.88,o1:.93,o3:.95,"o4-mini":.88,codex:.98,"gemini-pro":.85,"gemini-flash":.8,"gemini-2.5-pro":.92,"gemini-2.5-flash":.82,"deepseek-coder":.9,"deepseek-v3":.85,"deepseek-r1":.88,"deepseek-chat":.84,"deepseek-v3.2":.86,qwen:.78,llama:.72,mistral:.75,mixtral:.77,"grok-4-fast":.8,"grok-4":.82,"grok-3":.8,"kimi-k2":.82,"glm-5.1":.78,"glm-5":.78,"minimax-m2.5":.75,"minimax-m2":.72},review:{"claude-sonnet":.92,"claude-opus":.95,"claude-haiku":.7,"gpt-4o":.88,"gpt-4o-mini":.72,o1:.9,o3:.92,"gemini-pro":.9,"gemini-2.5-pro":.93,"gemini-flash":.75,"deepseek-r1":.85,"deepseek-v3":.8},planning:{"claude-opus":.95,"claude-sonnet":.9,"gpt-4o":.88,o1:.92,o3:.95,"gemini-2.5-pro":.93,"gemini-pro":.88,"deepseek-r1":.85},analysis:{"claude-opus":.95,"claude-sonnet":.92,"gemini-2.5-pro":.95,"gemini-pro":.88,"gemini-3.1-pro":.95,"gpt-4o":.85,o1:.9,o3:.93,"deepseek-r1":.88,"deepseek-chat":.8,"kimi-k2":.82,"glm-5.1":.82,"glm-5":.78,"minimax-m2.5":.76},debugging:{"claude-sonnet":.93,"claude-opus":.9,"gpt-4o":.88,o1:.85,"deepseek-coder":.9,"deepseek-v3":.82,"gemini-flash":.78,codex:.92},documentation:{"claude-sonnet":.9,"claude-opus":.88,"gpt-4o":.92,"gpt-4o-mini":.85,"gemini-pro":.88,"gemini-flash":.82,"deepseek-v3":.78},default:{"claude-sonnet":.85,"claude-opus":.85,"gpt-4o":.85,"gemini-pro":.8,"gemini-3.1-pro":.85,"deepseek-v3":.75,"deepseek-chat":.74,"gemini-flash":.72,"grok-4-fast":.72,"grok-4":.74,"grok-3":.73,"kimi-k2":.76,"glm-5.1":.75,"glm-5":.7,"minimax-m2.5":.7}},av=[{pattern:"coder",taskType:"coding",boost:.15},{pattern:"code",taskType:"coding",boost:.1},{pattern:"fast",taskType:"coding",boost:.05},{pattern:"thinking",taskType:"planning",boost:.1},{pattern:"thinking",taskType:"analysis",boost:.1}],aw={premium:{coding:.92,review:.93,planning:.94,analysis:.95,debugging:.9,documentation:.88,default:.85},standard:{coding:.85,review:.84,planning:.85,analysis:.85,debugging:.82,documentation:.85,default:.78},fast:{coding:.78,review:.72,planning:.7,analysis:.72,debugging:.75,documentation:.8,default:.72},budget:{coding:.65,review:.6,planning:.55,analysis:.58,debugging:.6,documentation:.7,default:.55}},ax=new Map;function ay(a,b,c){let d=`${a}:${b}:${c}`;if(ax.has(d))return ax.get(d);try{!1;return null}catch{return null}}let az=null;function aA(a,b){return function(a,b){let c=a.toLowerCase(),d=b.toLowerCase(),e=ay(c,d,"user_override");if(null!==e)return{score:e,source:"user_override"};let f=ay(c,d,"arena_elo");if(null!==f)return{score:f,source:"arena_elo"};let g=function(a,b){if(!a.endsWith(aB))return null;let c=a.slice(0,-aB.length);return 0===c.length||c===a?null:ay(c,b,"arena_elo")}(c,d);if(null!==g)return{score:g,source:"arena_elo_free_alias"};let h=function(a,b){let c=a.toLowerCase(),d=b.toLowerCase(),e=ay(c,d,"models_dev_tier");if(null!==e)return e;let f=function(){if(az)return az;try{let a=(0,at.sm)().prepare("SELECT * FROM model_capabilities").all(),b={};for(let c of a){let a="string"==typeof c.model_id?c.model_id:"";a&&(b[a.toLowerCase()]={tool_call:!0===c.tool_call||1===c.tool_call||!1!==c.tool_call&&0!==c.tool_call&&null,reasoning:!0===c.reasoning||1===c.reasoning||!1!==c.reasoning&&0!==c.reasoning&&null,limit_context:"number"==typeof c.limit_context?c.limit_context:null})}return az=b,b}catch{return null}}();if(!f)return null;let g=f[c];if(!g)return null;let h=aw[!0===g.reasoning?"premium":!0===g.tool_call&&(g.limit_context??0)>=128e3?"standard":!0===g.tool_call?"fast":"budget"];return h?h[d]??h.default??null:null}(c,d);if(null!==h)return{score:h,source:"models_dev_tier"};let i=function(a,b){for(let[c,d]of Object.entries(au[b]||au.default))if(a.includes(c))return d;return null}(c,d);return null!==i?{score:i,source:"fitness_table"}:{score:function(a,b){let c=.5;for(let d of av)a.includes(d.pattern)&&b===d.taskType&&(c+=d.boost);return Math.min(1,c)}(c,d),source:"wildcard_boost"}}(a,b).score}let aB="-free";function aC(a){return Number.isFinite(a)?Math.min(1,Math.max(0,a)):0}let aD="free",aE={"gpt-4o":{inputCostPer1M:2.5,outputCostPer1M:10,isFree:!1},"gpt-4o-mini":{inputCostPer1M:.15,outputCostPer1M:.6,isFree:!1},"claude-fable-5":{inputCostPer1M:15,outputCostPer1M:75,isFree:!1},"claude-opus-4-8":{inputCostPer1M:15,outputCostPer1M:75,isFree:!1},"claude-opus-4-7":{inputCostPer1M:15,outputCostPer1M:75,isFree:!1},"claude-sonnet-4-6":{inputCostPer1M:3,outputCostPer1M:15,isFree:!1},"claude-haiku-4-5":{inputCostPer1M:.8,outputCostPer1M:4,isFree:!1},"gemini-2.5-flash":{inputCostPer1M:.15,outputCostPer1M:.6,isFree:!1},"gemini-2.5-pro":{inputCostPer1M:1.25,outputCostPer1M:5,isFree:!1},"deepseek-chat":{inputCostPer1M:.27,outputCostPer1M:1.1,isFree:!1},"deepseek-reasoner":{inputCostPer1M:.55,outputCostPer1M:2.19,isFree:!1},"glm-4.7":{inputCostPer1M:.6,outputCostPer1M:.6,isFree:!1},"glm-5.1":{inputCostPer1M:.5,outputCostPer1M:.5,isFree:!1},"minimax-m2.1":{inputCostPer1M:.2,outputCostPer1M:.2,isFree:!1},"grok-4-fast":{inputCostPer1M:.2,outputCostPer1M:.5,isFree:!1},"kimi-k2-thinking":{inputCostPer1M:0,outputCostPer1M:0,isFree:!0},"qwen3-coder-plus":{inputCostPer1M:0,outputCostPer1M:0,isFree:!0},"longcat-2.0":{inputCostPer1M:.75,outputCostPer1M:2.95,isFree:!0,freeQuotaLimit:1e7}};function aF(a,b){let c=b.toLowerCase();if(aE[c])return aE[c];let d=`${a}/${b}`.toLowerCase();return aE[d]?aE[d]:{inputCostPer1M:5,outputCostPer1M:15,isFree:!1}}var aG=c(44046),aH=c(40615);let aI=aG.Ik({provider:aG.Yj().min(1),tier:aG.k5(["free","cheap","premium"])}),aJ=aG.Ik({provider:aG.Yj().min(1),modelPattern:aG.Yj().min(1),tier:aG.k5(["free","cheap","premium"])});aG.Ik({version:aG.Yj().default("1.0.0"),defaults:aG.Ik({freeThreshold:aG.ai().min(0).default(0),cheapThreshold:aG.ai().min(0).default(1)}),providerOverrides:aG.YO(aI).default([]),modelOverrides:aG.YO(aJ).default([]),freeProviders:aG.YO(aG.Yj()).default([])});let aK={version:"1.0.0",defaults:{freeThreshold:0,cheapThreshold:1},providerOverrides:[],modelOverrides:[],freeProviders:[...new Set(["kiro","qoder","pollinations","longcat","cloudflare-ai","qwen","nvidia-nim","cerebras","groq",...function(){try{let a=[];for(let b of Object.values(aH.vh)){if(!b||"object"!=typeof b||!0!==b.noAuth)continue;let c=b.serviceKinds;(!Array.isArray(c)||0===c.length||c.includes("llm"))&&"string"==typeof b.id&&b.id.length>0&&a.push(b.id)}return a}catch{return[]}}()])]},aL=new Map;function aM(a,b){let c,d,e=`${a}::${b}`;if(aL.has(e))return aL.get(e);if(aK.freeProviders.includes(a.toLowerCase())){let c={provider:a,model:b,tier:aD,reason:`Provider '${a}' is in explicit free providers list`,costPer1MInput:0,costPer1MOutput:0,hasFreeTier:!0};return aL.set(e,c),c}let f=aK.providerOverrides.find(b=>b.provider.toLowerCase()===a.toLowerCase());if(f){let c=aF(a,b),d={provider:a,model:b,tier:f.tier,reason:`Provider-level override: '${a}' → ${f.tier}`,costPer1MInput:c.inputCostPer1M,costPer1MOutput:c.outputCostPer1M,hasFreeTier:c.isFree,freeQuotaLimit:c.freeQuotaLimit};return aL.set(e,d),d}let g=aK.modelOverrides.find(c=>{var d;let e;return c.provider.toLowerCase()===a.toLowerCase()&&(d=c.modelPattern,e=d.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*"),RegExp(`^${e}$`,"i").test(b))});if(g){let c=aF(a,b),d={provider:a,model:b,tier:g.tier,reason:`Model-level override: '${a}/${b}' matches '${g.modelPattern}' → ${g.tier}`,costPer1MInput:c.inputCostPer1M,costPer1MOutput:c.outputCostPer1M,hasFreeTier:c.isFree,freeQuotaLimit:c.freeQuotaLimit};return aL.set(e,d),d}let h=aF(a,b);h.isFree||h.inputCostPer1M<=aK.defaults.freeThreshold?(c=aD,d=`Cost-based: $${h.inputCostPer1M}/M input ≤ free threshold ($${aK.defaults.freeThreshold}/M)`):h.inputCostPer1M<=aK.defaults.cheapThreshold?(c="cheap",d=`Cost-based: $${h.inputCostPer1M}/M input ≤ cheap threshold ($${aK.defaults.cheapThreshold}/M)`):(c="premium",d=`Cost-based: $${h.inputCostPer1M}/M input > cheap threshold ($${aK.defaults.cheapThreshold}/M)`);let i={provider:a,model:b,tier:c,reason:d,costPer1MInput:h.inputCostPer1M,costPer1MOutput:h.outputCostPer1M,hasFreeTier:h.isFree,freeQuotaLimit:h.freeQuotaLimit};return aL.set(e,i),i}let aN={quota:.15,health:.2,costInv:.15,latencyInv:.12,taskFit:.08,stability:.05,tierPriority:.05,tierAffinity:.05,specificityMatch:.05,contextAffinity:.05,resetWindowAffinity:0,connectionDensity:.05};function aO(a,b){return aC(b.quota*a.quota+b.health*a.health+b.costInv*a.costInv+b.latencyInv*a.latencyInv+b.taskFit*a.taskFit+b.stability*a.stability+b.tierPriority*a.tierPriority+(b.tierAffinity??0)*a.tierAffinity+(b.specificityMatch??0)*a.specificityMatch+(b.contextAffinity??0)*a.contextAffinity+(b.resetWindowAffinity??0)*a.resetWindowAffinity+(b.connectionDensity??0)*a.connectionDensity)}function aP(a,b,c,d,e){var f,g;let h=Math.max(...b.map(a=>a.costPer1MTokens),.001),i=Math.max(...b.map(a=>a.p95LatencyMs),1),j=Math.max(...b.map(a=>a.latencyStdDev),.001);return{quota:aC(a.quotaRemaining/100),health:"CLOSED"===a.circuitBreakerState?1:.5*("HALF_OPEN"===a.circuitBreakerState),costInv:aC(1-a.costPer1MTokens/h),latencyInv:aC(1-a.p95LatencyMs/i),taskFit:aC(d(a.model,c)),stability:aC(1-a.latencyStdDev/j),tierPriority:(f=a.accountTier,g=a.quotaResetIntervalSecs,Math.min(1,.8*(({ultra:1,pro:.67,standard:.33,free:0})[f?.toLowerCase()??""]??.33)+.2*(null!=g&&g>0?Math.max(0,1-g/2592e3):0))),tierAffinity:function(a,b){if(!b)return .5;try{let c=aM(a.provider,a.model),d=["free","cheap","premium"],e=d.indexOf(c.tier),f=d.indexOf(b.recommendedMinTier);if(e===f)return 1;if(1===Math.abs(e-f))return .7;return .3}catch{return .5}}(a,e),specificityMatch:function(a,b){if(!b)return .5;try{let c=aM(a.provider,a.model),d=b.specificity.score;if("free"===c.tier)return d<=15?.9:.2;if("cheap"===c.tier)return d>15&&d<=50?.9:.4;if("premium"===c.tier)return d>50?.9:.3;return .5}catch{return .5}}(a,e),contextAffinity:aC(a.contextAffinity??.5),resetWindowAffinity:aC(a.resetWindowAffinity??.5),connectionDensity:aC(((a.connectionPoolSize??1)-1)/10)}}function aQ(a,b,c=aN,d=()=>.5,e){return a.map(f=>{let g=aP(f,a,b,d,e);return{provider:f.provider,model:f.model,score:aO(g,c),factors:g,connectionId:f.connectionId}}).sort((a,b)=>b.score-a.score)}var aR=c(87094),aS=c(57247);let aT=Number(process.env.QUOTA_SOFT_DEPRIORITIZE_FACTOR??"0.7"),aU=Number(process.env.STATUS_SOFT_DEPRIORITIZE_FACTOR??"0.5"),aV=new Map;function aW(a,b,c){if(!a||!b)return;let d=aV.get(a);if(!d)return;let e=d.get(b);e&&(e.quotaSoftPenalty=c)}function aX(a){return Array.isArray(a)?a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean):"string"==typeof a?a.split(",").map(a=>a.trim()).filter(Boolean):[]}async function aY(a,b,c){let{tags:d,matchMode:e}={tags:[],matchMode:"all"};if(0===d.length||0===a.length)return a;let f=Array.from(new Set(a.map(a=>a.providerId||a.provider))).filter(a=>"string"==typeof a&&a.length>0),g=new Map;await Promise.all(f.map(async a=>{try{let b=await (0,aR.P)({provider:a,isActive:!0});g.set(a,Array.isArray(b)?b:[])}catch(b){c.warn?.("COMBO",`Tag routing failed to load connections for provider=${a}: ${b instanceof Error?b.message:String(b)}`),g.set(a,[])}}));let h=a.reduce((a,b)=>{let c=b.providerId||b.provider,d=(g.get(c)?.filter(a=>{let c="string"==typeof a.id&&a.id.trim().length>0?a.id:null;return!!c&&(!b.connectionId||c===b.connectionId)})||[]).filter(a=>(a.providerSpecificData,!1)).map(a=>a.id).filter(a=>"string"==typeof a);if(0===d.length)return a;if(b.connectionId)return a.push(b),a;let e=Array.from(new Set(d)),f=Array.isArray(b.allowedConnectionIds)?b.allowedConnectionIds.filter(a=>"string"==typeof a&&a.length>0):null,h=f&&f.length>0?e.filter(a=>f.includes(a)):e;return 0===h.length||a.push({...b,allowedConnectionIds:h}),a},[]);return 0===h.length?(c.info?.("COMBO",`Tag routing matched 0/${a.length} targets for [${d.join(", ")}] (${e}); falling back to the full target set`),a):(c.info?.("COMBO",`Tag routing matched ${h.length}/${a.length} targets for [${d.join(", ")}] (${e})`),h)}async function aZ(a,b){let c=b?.autoConfig||(ak(b?.config?.auto)?(b?.config).auto:null)||b?.config||{};if(Array.isArray(c?.candidatePool)&&c.candidatePool.length>0)return a;try{let b=await (0,aR.P)({isActive:!0});for(let c of[...new Set(b.map(a=>a.provider).filter(a=>"string"==typeof a&&a.length>0))])for(let b of(0,aS.SM)(c)){let d=`${c}/${b.id}`;a.some(a=>a.modelStr===d)||a.push({kind:"model",stepId:d,executionKey:d,provider:c,providerId:c,modelStr:d,weight:1,connectionId:null,label:null})}}catch{}return a}var a$=c(92085);let a_=()=>void 0,a0={"ship-fast":{quota:.14,health:.28,costInv:.05,latencyInv:.32,taskFit:.1,stability:0,tierPriority:.05,tierAffinity:0,specificityMatch:0,contextAffinity:.01,resetWindowAffinity:0,connectionDensity:.05},"cost-saver":{quota:.14,health:.19,costInv:.37,latencyInv:.05,taskFit:.1,stability:.05,tierPriority:.05,tierAffinity:0,specificityMatch:0,contextAffinity:0,resetWindowAffinity:0,connectionDensity:.05},"quality-first":{quota:.1,health:.18,costInv:.05,latencyInv:.05,taskFit:.37,stability:.15,tierPriority:.05,tierAffinity:0,specificityMatch:0,contextAffinity:0,resetWindowAffinity:0,connectionDensity:.05},"offline-friendly":{quota:.37,health:.28,costInv:.1,latencyInv:.05,taskFit:0,stability:.1,tierPriority:.05,tierAffinity:0,specificityMatch:0,contextAffinity:0,resetWindowAffinity:0,connectionDensity:.05},"reliability-first":{quota:.14,health:.37,costInv:.04,latencyInv:.05,taskFit:.1,stability:.2,tierPriority:.05,tierAffinity:0,specificityMatch:0,contextAffinity:0,resetWindowAffinity:0,connectionDensity:.05}};class a1{isExcluded(a){let b=this.exclusions.get(a);return!(!b||Date.now()-b.excludedAt>b.cooldownMs)}evaluate(a,b,c){let d=this.exclusions.get(a);if(d&&b>=.3&&Date.now()-d.excludedAt>d.cooldownMs)return this.exclusions.delete(a),{excluded:!1,reason:`Re-admitted: score ${b.toFixed(2)} >= 0.3`};if(this.isExcluded(a))return"HALF_OPEN"===c&&d?(d.probeCount++,{excluded:!1,isProbe:!0,reason:`Probe request #${d.probeCount}`}):{excluded:!0,reason:d?.reason||"Excluded"};if(b<.2){let c=d?Math.min(2*d.cooldownMs,18e5):3e5;return this.exclusions.set(a,{provider:a,excludedAt:Date.now(),cooldownMs:c,reason:`Score ${b.toFixed(2)} < 0.2`,probeCount:0}),{excluded:!0,reason:`Excluded: score ${b.toFixed(2)} below threshold`}}return"OPEN"===c?(this.exclusions.set(a,{provider:a,excludedAt:Date.now(),cooldownMs:3e5,reason:"Circuit breaker OPEN",probeCount:0}),{excluded:!0,reason:"Circuit breaker OPEN"}):{excluded:!1}}recordProbeResult(a,b){let c=this.exclusions.get(a);c&&(b&&c.probeCount>=3?this.exclusions.delete(a):b||(c.cooldownMs=Math.min(2*c.cooldownMs,18e5),c.excludedAt=Date.now(),c.probeCount=0))}updateIncidentMode(a){let b=a.length;if(0===b)return this.incidentMode=!1,!1;let c=a.filter(a=>"OPEN"===a).length;return this.incidentMode=c/b>.5,this.incidentMode}isInIncidentMode(){return this.incidentMode}getExclusions(){return[...this.exclusions.values()]}getStatus(){let a=Date.now();return{exclusionCount:this.exclusions.size,incidentMode:this.incidentMode,exclusions:[...this.exclusions.values()].map(b=>({provider:b.provider,reason:b.reason,remainingMs:Math.max(0,b.cooldownMs-(a-b.excludedAt))}))}}constructor(){this.exclusions=new Map,this.incidentMode=!1}}let a2=null,a3={smart:{top:.5,mid:.3,rest:.2},fast:{top:.3,mid:.5,rest:.2},cheap:{top:.2,mid:.3,rest:.5},coding:{top:.6,mid:.25,rest:.15},default:{top:.45,mid:.35,rest:.2}};class a4{constructor(a){this.tierCounters=new Map,this.rrCounter=0,this.comboName=a}pick(a){if(0===a.length)throw Error(`ScoreTierRotator: no candidates to pick from for combo=${this.comboName}`);if(1===a.length)return a[0];let b=function(a){if(0===a.length)return{top:[],mid:[],rest:[]};let b=a[0].score,c=b-a[a.length-1].score,d=[],e=[],f=[];for(let g of a){let a=b-g.score;a<=1e-4?d.push(g):c<=1e-4||a<=.3*c?e.push(g):f.push(g)}if(0===e.length&&f.length>0){let a=Math.ceil(f.length/2);e.push(...f.splice(0,a))}return{top:d,mid:e,rest:f}}(a),c=a[0].score,d=a[a.length-1].score;if(b.top.length>0&&c-d>=.1)return this.pickFromPool(b.top);let e=function(a){let b=a.toLowerCase();if(a3[b])return a3[b];for(let a of Object.keys(a3))if(b.startsWith(`${a}-`)||b.includes(a))return a3[a];return a3.default}(this.comboName);return function(a,b,c,d){let e={top:a.top.length>0?b.top:0,mid:a.mid.length>0?b.mid:0,rest:a.rest.length>0?b.rest:0},f=e.top+e.mid+e.rest;if(f<=0)return d();let g=Math.random()*f,h=0;return e.top>0&&(h+=e.top)>=g?c(a.top):e.mid>0&&(h+=e.mid)>=g?c(a.mid):e.rest>0?c(a.rest):d()}(b,e,a=>this.pickFromPool(a),()=>this.advance(b,e,a))}advance(a,b,c){for(let c of["top","mid","rest"])if(a[c].length>0&&b[c]>0){let b=this.tierCounters.get(c)??0,d=a[c][b%a[c].length];return this.tierCounters.set(c,b+1),d}return a.top[0]??a.mid[0]??a.rest[0]??c[0]}pickFromPool(a){if(0===a.length)throw Error("pickFromPool: empty pool");if(1===a.length)return a[0];let b=a[this.rrCounter%a.length];return this.rrCounter=(this.rrCounter+1)%a.length,b}}let a5=new Map;function a6(a){let b=a5.get(a);return b||(b=new a4(a),a5.set(a,b)),b}c(58353);class a7{select(a,b){let c=a.filter(a=>"OPEN"!==a.circuitBreakerState),d=aQ(c.length>0?c:a,b.taskType,void 0,aA),e=d[0];if(!e)throw Error("[RulesStrategy] No candidates to score");return{provider:e.provider,model:e.model,strategy:this.name,reason:`RulesStrategy: score=${e.score.toFixed(3)} (quota=${e.factors.quota.toFixed(2)}, health=${e.factors.health.toFixed(2)}, cost=${e.factors.costInv.toFixed(2)}, taskFit=${e.factors.taskFit.toFixed(2)})`,candidatesConsidered:d.length,finalScore:e.score}}constructor(){this.name="rules",this.description="6-factor weighted scoring: quota, health, cost, latency, taskFit, stability"}}class a8{select(a,b){let c=a.filter(a=>"OPEN"!==a.circuitBreakerState),d=c.length>0?c:a,e=[...d].sort((a,b)=>a.costPer1MTokens-b.costPer1MTokens)[0];if(!e)throw Error("[CostStrategy] No candidates available");return{provider:e.provider,model:e.model,strategy:this.name,reason:`CostStrategy: cheapest at $${e.costPer1MTokens.toFixed(3)}/1M tokens`,candidatesConsidered:d.length,finalScore:0===e.costPer1MTokens?1:1/e.costPer1MTokens}}constructor(){this.name="cost",this.description="Always selects cheapest available provider (by costPer1MTokens)"}}function a9(a){let b=Number(a);return Number.isFinite(b)&&b>0?b:null}function ba(a,b,c=1){return Math.max(...a.map(a=>a9(b(a))??0),c)}function bb(a,b){return null==a?.5:be(a,b)}class bc{select(a,b){let c=a.filter(a=>"OPEN"!==a.circuitBreakerState),d=c.length>0?c:a;if(0===d.length)throw Error("[LatencyStrategy] No candidates available");let e=ba(d,a=>a.p95LatencyMs),f=ba(d,a=>a.avgTtftMs??a.p95LatencyMs),g=ba(d,a=>a.avgE2ELatencyMs??a.p95LatencyMs),h=ba(d,a=>a.avgTokensPerSecond),i=ba(d,a=>a.latencyStdDev,.001),j=d.map(a=>{let b,c=a9(a.p95LatencyMs),d=a9(a.avgTtftMs)??c,j=a9(a.avgE2ELatencyMs)??c,k=a9(a.avgTokensPerSecond),l=Number.isFinite(b=Number(a.failureRate??a.errorRate))&&b>=0?Math.min(1,b):0,m=bg(a),n=bb(c,e),o=bb(d,f),p=bb(j,g),q=null==k?.5:aC(k/Math.max(h,1e-6)),r=1-l,s=.25*o+.2*q+.18*p+.12*n+.15*r+.05*m+.05*bb(a9(a.latencyStdDev),i);return{candidate:a,score:s*Math.max(.05,r*r)*Math.max(.25,m),ttft:d,e2e:j,tps:k,failureRate:l}}).sort((a,b)=>b.score-a.score)[0];if(!j)throw Error("[LatencyStrategy] No candidates available");return{provider:j.candidate.provider,model:j.candidate.model,strategy:this.name,reason:`LatencyStrategy: ttft=${j.ttft??"n/a"}ms, tps=${j.tps??"n/a"}, e2e=${j.e2e??"n/a"}ms, p95=${j.candidate.p95LatencyMs}ms, failRate=${(100*j.failureRate).toFixed(2)}%`,candidatesConsidered:d.length,finalScore:j.score}}constructor(){this.name="latency",this.description="Prioritizes the fastest reliable provider-model pair using TTFT, TPS, E2E latency, health, fail rate, and stability"}}function bd(a){let b=Number(a);return Number.isFinite(b)&&b>0?b:void 0}function be(a,b){return!Number.isFinite(a)||a<0?0:!Number.isFinite(b)||b<=0?1:aC(1-a/b)}function bf(a,b){return b<=0?+(0===a):aC(b/Math.max(a,1e-6))}function bg(a){return"CLOSED"===a.circuitBreakerState?1:.5*("HALF_OPEN"===a.circuitBreakerState)}class bh{select(a,b){let c,d=a.filter(a=>"OPEN"!==a.circuitBreakerState),e=d.length>0?d:a;if(0===e.length)throw Error("[SLAStrategy] No candidates available");let f=Math.max(...e.map(a=>a.costPer1MTokens),.001),g=Math.max(...e.map(a=>a.latencyStdDev),.001),h={targetP95Ms:bd(b.sla?.targetP95Ms)??2e3,maxErrorRate:(Number.isFinite(c=Number(b.sla?.maxErrorRate))&&c>=0?Math.min(1,c):void 0)??.05,maxCostPer1MTokens:bd(b.sla?.maxCostPer1MTokens)??0,hardConstraints:b.sla?.hardConstraints===!0},i=e.map(a=>{let b,c=bf(a.p95LatencyMs,h.targetP95Ms),d=bf(a.errorRate,h.maxErrorRate),e=h.maxCostPer1MTokens>0?bf(a.costPer1MTokens,h.maxCostPer1MTokens):be(a.costPer1MTokens,f),i=be(a.latencyStdDev,g),j=bg(a),k=(b=+("OPEN"===a.circuitBreakerState),a.p95LatencyMs>h.targetP95Ms&&(b+=(a.p95LatencyMs-h.targetP95Ms)/h.targetP95Ms),a.errorRate>h.maxErrorRate&&(b+=h.maxErrorRate>0?(a.errorRate-h.maxErrorRate)/h.maxErrorRate:a.errorRate),h.maxCostPer1MTokens>0&&a.costPer1MTokens>h.maxCostPer1MTokens&&(b+=(a.costPer1MTokens-h.maxCostPer1MTokens)/h.maxCostPer1MTokens),b);return{candidate:a,violationScore:k,score:.35*c+.35*d+.15*j+.1*e+.05*i}}).sort((a,b)=>h.hardConstraints&&a.violationScore-b.violationScore||b.score-a.score),j=i[0];if(!j)throw Error("[SLAStrategy] No candidates available after scoring");let k=i.some(a=>0===a.violationScore);return{provider:j.candidate.provider,model:j.candidate.model,strategy:this.name,reason:`SLAStrategy: p95=${j.candidate.p95LatencyMs}ms/${h.targetP95Ms}ms, errorRate=${(100*j.candidate.errorRate).toFixed(2)}%/${(100*h.maxErrorRate).toFixed(2)}%, cost=$${j.candidate.costPer1MTokens.toFixed(3)}/1M${k?"":"; no candidate met all SLA constraints"}`,candidatesConsidered:e.length,finalScore:j.score}}constructor(){this.name="sla-aware",this.description="Selects the provider most likely to satisfy latency, error-rate, and cost SLOs"}}class bi{select(a,b){if(!1===b.lkgpEnabled)return bp("rules").select(a,b);if(b.lastKnownGoodProvider){let c=a.filter(a=>a.provider===b.lastKnownGoodProvider&&"OPEN"!==a.circuitBreakerState);if(c.length>0){let a=c[0];return{provider:a.provider,model:a.model,strategy:this.name,reason:`LKGP: using last known good provider ${a.provider}`,candidatesConsidered:1,finalScore:1}}}return bp("rules").select(a,b)}constructor(){this.name="lkgp",this.description="Tries last known good provider first, then falls back to rules"}}let bj=new Map,bk=new a7,bl=new a8,bm=new bc,bn=new bh,bo=new bi;function bp(a){let b=bj.get(a);return b||(console.warn(`[RouterStrategy] Strategy '${a}' not found, falling back to 'rules'`),bk)}bj.set("rules",bk),bj.set("cost",bl),bj.set("eco",bl),bj.set("latency",bm),bj.set("fast",bm),bj.set("sla-aware",bn),bj.set("sla",bn),bj.set("lkgp",bo);let bq=["coding","fast","cheap","offline","smart","lkgp"],br=()=>void 0,bs=()=>void 0,bt={"best-reasoning":{minFitness:.85},cheapest:{maxFitness:.75},moderate:{minFitness:.6,maxFitness:.9}},bu={code:"code",math:"math",reasoning:"reasoning",creative:"creative",medium:"medium",simple:"simple"};async function bv({body:a,combo:b,handleChatCore:c,log:d,settings:e,signal:f}){let g=b.config;if(!(g?.pipeline_enabled??e.pipeline_enabled))throw d.info("PIPELINE","Pipeline disabled for this combo"),Error("PIPELINE_DISABLED");let h=a.messages||[],i=function(a){let b=0;for(let c of a)if("string"==typeof c.content)b+=Math.ceil(c.content.length/4);else if(Array.isArray(c.content))for(let a of c.content)"object"==typeof a&&null!==a&&"string"==typeof a.text&&(b+=Math.ceil(a.text.length/4));return b}(h),j=g?.skip_pipeline_for_tokens_under??e.skip_pipeline_for_tokens_under??50;if(i<j)throw d.info("PIPELINE",`Token estimate ${i} < threshold ${j}, skipping pipeline`),Error("PIPELINE_TOKEN_THRESHOLD");let k=[...h].reverse().find(a=>"user"===a.role),l="string"==typeof k?.content?k.content:Array.isArray(k?.content)?k.content.filter(a=>"text"===a.type).map(a=>a.text||"").join(" "):"",m=h.find(a=>"system"===a.role),n=function(a,b){let c=`${b??""} ${a}`.toLowerCase(),d=a.trim().split(/\s+/).length;for(let a of an)if(c.includes(a.toLowerCase()))return"code";for(let a of ap)if(c.includes(a.toLowerCase()))return"math";for(let a of ao)if(c.includes(a.toLowerCase()))return"reasoning";for(let a of aq)if(c.includes(a.toLowerCase()))return"creative";if(d<60){for(let a of ar)if(c.includes(a.toLowerCase()))return"simple"}return"medium"}(l,"string"==typeof m?.content?m.content:void 0),o=bu[n]??"simple";d.info("PIPELINE",`Intent: ${n} → task: ${o}`);let p=br(l,o),q=b.models,r=Array.isArray(q)?q.map(a=>{if("string"==typeof a)return a;let b=a?.model;return"string"==typeof b?b:null}).filter(a=>"string"==typeof a&&a.length>0):[],s=r.length?r:["deepseek-chat"],t=async({messages:b,stream:e,fitnessTier:f})=>{let g=f?function(a,b,c){let d=b.map(a=>({model:a,fitness:aA(a,c)})).sort((a,b)=>b.fitness-a.fitness),e=bt[a];if(!e)return d[0]?.model??"deepseek-chat";let f=d.filter(({fitness:a})=>(void 0===e.minFitness||!(a<e.minFitness))&&(void 0===e.maxFitness||!(a>e.maxFitness)));return f[0]?.model??d[0]?.model??"deepseek-chat"}(f,s,o):void 0,h={...a,messages:b,stream:e};d.info("PIPELINE",`Stage: tier=${f}, model=${g}, stream=${e}`);let i=await c(h,g);if(e)return{text:"",response:i};if(!i.ok){let a=await i.text().catch(()=>"unknown error");return d.warn("PIPELINE",`Stage returned ${i.status}: ${a.slice(0,200)}`),{text:""}}try{let a=await i.json(),b=a?.choices?.[0]?.message?.content;if("string"==typeof b)return{text:b};return{text:JSON.stringify(a)}}catch{return d.warn("PIPELINE","Failed to parse stage response as JSON"),{text:""}}},u=g?.max_reflection_loops??e.max_reflection_loops??1,v=async a=>t({...a,fitnessTier:a.fitnessTier}),w=await bs(p,v),x=0;for(;"fail"===w.reflectVerdict&&x<u;){x++,d.info("PIPELINE",`Reflection failed, re-running (loop ${x}/${u})`);let a=br(l,o),b=await bs(a,v);if("pass"===b.reflectVerdict){w=b;break}}let y=w.stages[w.stages.length-1];return y?.text===""&&w.text||d.info("PIPELINE",`Complete: ${w.stages.length} stages, fallback=${w.fallback}, verdict=${w.reflectVerdict}`),w}var bw=c(47215),bx=c(29385),by=c(77598);function bz(a){return"number"!=typeof a||!Number.isFinite(a)||a<=0?0:a>=1?1:a}function bA(a){return 1-Math.max(bz(a?.util5h),bz(a?.util7d))}async function bB(a,b){try{let d=(await c.e(1999).then(c.bind(c,71999))).getSaturation,[e,f]=await Promise.all([d(a,b,{unit:"percent",window:"5h"}),d(a,b,{unit:"percent",window:"weekly"})]);return{util5h:e,util7d:f}}catch{return}}let bC=new Map;function bD(a,b){let c=bC.get(a);if(c)c.connectionId=b,c.lastUsedAt=Date.now();else{let c=Date.now();for(let[a,b]of bC)c-b.lastUsedAt>9e5&&bC.delete(a);for(;bC.size>500;){let a=null,b=1/0;for(let[c,d]of bC)d.lastUsedAt<b&&(b=d.lastUsedAt,a=c);if(null===a)break;bC.delete(a)}bC.set(a,{connectionId:b,createdAt:Date.now(),lastUsedAt:Date.now()})}}async function bE(a,b){let c={targets:a,messageHash:null,stuck:!1};try{if(a.length<=1)return c;let d=function(a){let b;if(!Array.isArray(a)||0===a.length)return null;let c=a.find(a=>a?.role==="user");if(!c)return null;if("string"==typeof c.content)b=c.content;else{if(!Array.isArray(c.content))return null;b=c.content.filter(a=>null!=a&&"object"==typeof a).map(a=>"string"==typeof a.text?a.text:"").join("")}return b?(0,by.createHash)("sha256").update(b).digest("hex").slice(0,16):null}(b);if(!d)return c;let e=bC.get(d);if(!e)return{targets:a,messageHash:d,stuck:!1};if(Date.now()-e.lastUsedAt>9e5)return bC.delete(d),{targets:a,messageHash:d,stuck:!1};let{connectionId:f}=e,g=a.findIndex(a=>a.connectionId===f);if(-1===g)return bC.delete(d),{targets:a,messageHash:d,stuck:!1};let h=a[g],i=await bB(f,h.provider);if(.15>=bA(i))return bC.delete(d),{targets:a,messageHash:d,stuck:!1};let j=[a[g],...a.slice(0,g),...a.slice(g+1)];return e.lastUsedAt=Date.now(),{targets:j,messageHash:d,stuck:!0}}catch{return c}}let bF=new Map;function bG(a,b=Date.now()){if(!a)return 0;let c=bF.get(a);return!c||c.expiresAtMs<=b?0:c.count}let bH=new Map;function bI(a){return Number.isFinite(a)&&a>0?a:1}let bJ=[429,502,503,504],bK=[/unavailable/i,/service temporarily unavailable/i];function bL(a,b,c){let{provider:d,modelStr:e,connectionId:f}=a;return d&&f&&c.has(`${d}:${f}`)?`Skipping ${e} — connection ${f} for provider ${d} had connection error (#1731v2)`:d&&b.has(d)?`Skipping ${e} — provider ${d} marked exhausted this request (#1731)`:null}function bM(a){let b=Math.floor(Number(a));return!Number.isFinite(b)||b<1?3:Math.min(b,10)}function bN(a,b){let c=Number(a);return!Number.isFinite(c)||c<0?b:c}function bO(a){return(0,e.yj)(404,a)}function bP(a){if(!a||"object"!=typeof a)return!1;let b=a.error;if(!b||"object"!=typeof b)return!1;let c=b.code;return"STREAM_READINESS_TIMEOUT"===c||"STREAM_EARLY_EOF"===c}function bQ(a){if(!a||"object"!=typeof a)return!1;let b=a.error;return!!b&&"object"==typeof b&&"TOKEN_LIMIT_EXCEEDED"===b.code}function bR(a){return{executionKey:a.executionKey,stepId:a.stepId,provider:a.provider,providerId:a.providerId,connectionId:a.connectionId,label:a.label}}async function bS(a){try{let b=await (0,aR.getProviderConnectionById)(a),c=b?.maxConcurrent;return"number"==typeof c&&Number.isFinite(c)&&c>0?c:null}catch{return null}}async function bT(a){let b=new Map,c=new Set;for(let b of a){let a=b.connectionId??"";a&&c.add(a)}for(let a of c)b.set(a,await bS(a));return b}async function bU(a,b,c,d){let e=a?.connectionId??"";if(!e||null===b||b<=0)return null;try{return await ad(`qsconn:${e}`,{maxConcurrency:b,timeoutMs:c.queueTimeoutMs,maxQueueSize:c.maxQueueSize})}catch{return d.warn("COMBO",`Quota-share concurrency: connection ${e} gate saturated (cap=${b}) — proceeding without a slot`),null}}let bV=async()=>void 0,bW=new Map;function bX(a=Date.now()){for(let[b,c]of bW)c.expiresAt<=a&&bW.delete(b);for(;bW.size>200;){let a=bW.keys().next().value;if(!a)break;bW.delete(a)}}function bY(a,b,c,d){let e=Number(a);return Number.isFinite(e)?Math.min(d,Math.max(c,e)):b}function bZ(a){let b=new Map;for(let c of a){let a=c.suiteId,d=b.get(a);(!d||new Date(c.createdAt).getTime()>new Date(d.createdAt).getTime())&&b.set(a,c)}return Array.from(b.values())}function b$(a,b,c={}){var d;let e,f,g,h,i,j=(g=bY((f=b&&"object"==typeof b&&!Array.isArray(b)?b:{}).qualityWeight,.85,0,1),i=g+(h=bY(f.latencyWeight,.15,0,1)),{enabled:!0===f.enabled,suiteIds:Array.isArray(d=f.suiteIds)?[...new Set(d.map(a=>String(a||"").trim()).filter(Boolean))].slice(0,50):[],maxAgeHours:bY(f.maxAgeHours,720,1,8760),minCases:Math.floor(bY(f.minCases,1,1,1e5)),qualityWeight:i>0?g/i:1,latencyWeight:i>0?h/i:0,cacheTtlMs:Math.floor(bY(f.cacheTtlMs,6e4,1e3,3e5))});if(!j.enabled||a.length<=1)return a;let k=a.map(a=>{var b;let c,d;return b=a.modelStr,d="string"==typeof(c=(0,af.parseModel)(b)).model?c.model.trim():"",[...new Set([b.trim(),d].filter(Boolean))]}),l=[...new Set(k.flat())];if(0===l.length)return a;try{e=function(a,b){let c=Date.now();bX(c);let d=JSON.stringify({targetIds:[...a].sort(),suiteIds:[...b.suiteIds].sort(),maxAgeHours:b.maxAgeHours,minCases:b.minCases}),e=bW.get(d);if(e&&e.expiresAt>c)return e.runs;let f=bV({targetIds:a,suiteIds:b.suiteIds,maxAgeHours:b.maxAgeHours});return bW.set(d,{expiresAt:c+b.cacheTtlMs,runs:f}),bX(c),f}(l,j)}catch(b){return c.warn?.("COMBO","Eval-driven routing skipped because eval history could not be loaded",{error:b instanceof Error?b.message:String(b)}),a}if(0===e.length)return a;let m=new Map;for(let a of e){let b=a.target.id;if(!b)continue;let c=m.get(b)||[];c.push(a),m.set(b,c)}let n=k.map(a=>{let b=new Map;for(let c of a)for(let a of m.get(c)||[])b.set(a.id,a);return Array.from(b.values())}),o=n.flatMap(a=>bZ(a)).filter(a=>a.summary.total>=j.minCases&&a.avgLatencyMs>0).map(a=>a.avgLatencyMs),p=o.length>0?Math.min(...o):null,q=a.map((a,b)=>({target:a,index:b,score:function(a,b,c){let d=bZ(a).filter(a=>a.summary.total>=b.minCases);if(0===d.length)return null;let e=d.reduce((a,b)=>a+b.summary.total,0);if(e<b.minCases)return null;let f=d.reduce((a,b)=>a+b.summary.passRate*b.summary.total,0)/e,g=d.reduce((a,b)=>a+Math.max(0,b.avgLatencyMs)*b.summary.total,0)/e,h=c&&g>0?Math.max(0,Math.min(1,c/g)):.5;return{score:Math.max(0,Math.min(1,f/100))*b.qualityWeight+h*b.latencyWeight,passRate:f,avgLatencyMs:g,totalCases:e,runs:d.length}}(n[b]||[],j,p)})),r=q.filter(a=>a.score).length;return 0===r?a:(q.sort((a,b)=>{if(a.score&&b.score){let c=b.score.score-a.score.score;return Math.abs(c)>1e-4?c:a.index-b.index}return a.score?-1:b.score?1:a.index-b.index}),c.info?.("COMBO",`Eval-driven routing: ranked ${r}/${a.length} targets by eval history`),c.debug?.("COMBO",`Eval-driven routing scores: ${q.filter(a=>a.score).map(a=>`${a.target.modelStr}=${a.score?.score.toFixed(3)} pass=${a.score?.passRate.toFixed(1)} cases=${a.score?.totalCases}`).join(", ")}`),q.map(a=>a.target))}function b_(a){return Math.ceil(a.length/4)}function b0(a){return a.reduce((a,b)=>"string"==typeof b.content?a+b_(b.content):Array.isArray(b.content)?a+b.content.reduce((a,b)=>a+("string"==typeof b?.text?b_(b.text):0),0):a,0)}function b1(a){var b,c,d,e;let f,g=function(a){let b,c,d,e,f,g,h,i,j,k,l;return{codeComplexity:(d=(c=(b=a.messages.map(a=>"string"==typeof a.content?a.content:"").join("\n")).match(/```[\s\S]*?```/g))?c.length:0,f=(e=b.match(/`[^`]+`/g))?e.length:0,Math.min(25,Math.round(5*d+.5*f+2*[/function\s+\w+\s*\(/gi,/const\s+\w+\s*=/gi,/import\s+.*from/gi,/class\s+\w+/gi,/interface\s+\w+/gi,/async\s+function/gi,/def\s+\w+\s*\(/gi,/SELECT\s+.*FROM/gi,/\$\{.*\}/g].reduce((a,c)=>{let d=b.match(c);return a+(d?d.length:0)},0)))),mathComplexity:(i=(h=(g=a.messages.map(a=>"string"==typeof a.content?a.content:"").join("\n")).match(/\$\$[\s\S]*?\$\$|\$[^$]+\$/g))?h.length:0,Math.min(20,Math.round(4*i+1.5*[/[+\-*/^]=/g,/\b(sin|cos|tan|log|sqrt|sum|prod|int|lim)\b/gi,/\b\d+\s*[+\-*/]\s*\d+\s*=/g,/∑|∏|∫|√|∞|π/g,/\bf'(?:x)?\b/g,/\bdx\b/g].reduce((a,b)=>{let c=g.match(b);return a+(c?c.length:0)},0)))),reasoningDepth:(j=a.messages.map(a=>"string"==typeof a.content?a.content:"").join("\n"),k=[/\b(first|step\s*\d|secondly|finally|therefore|thus|consequently|because|since)\b/gi,/\b(let me think|let's reason|let's analyze|step by step|breaking this down)\b/gi,/\b(we need to|we must|we should|the approach is|the solution involves)\b/gi,/(?:\d+\.\s+)(?:\w+)/g,/\b(if\s+.+\s+then\s+|assuming\s+|suppose\s+|consider\s+that)\b/gi].reduce((a,b)=>{let c=j.match(b);return a+(c?c.length:0)},0),Math.min(20,Math.round(2*k+Math.min(5,a.messages.length)))),contextSize:(l=b0(a.messages))>64e3?15:l>32e3?12:l>16e3?9:l>8e3?6:l>4e3?4:2*(l>1e3),toolCalling:function(a){if(!a.tools||0===a.tools.length)return 0;let b=a.tools.length;return b>20?10:b>10?8:b>5?6:b>2?4:2}(a),domainSpecificity:function(a){let b=a.messages.map(a=>"string"==typeof a.content?a.content:"").join("\n"),c=0;for(let[,a]of Object.entries({medical:[/\bdiagnosis\b/i,/\bsymptoms\b/i,/\btreatment\b/i,/\bpatient\b/i,/\bclinical\b/i],legal:[/\bpursuant\b/i,/\bstatute\b/i,/\bliability\b/i,/\bjurisdiction\b/i,/\bhereby\b/i],scientific:[/\bhypothesis\b/i,/\bmethodology\b/i,/\bempirical\b/i,/\bsignificant\b/i],financial:[/\bportfolio\b/i,/\bdividend\b/i,/\bamortization\b/i,/\barbitrage\b/i]}))c=Math.max(c,a.reduce((a,c)=>a+2*!!c.test(b),0));return Math.min(10,c)}(a)}}(a),h=(b=g).codeComplexity+b.mathComplexity+b.reasoningDepth+b.contextSize+b.toolCalling+b.domainSpecificity,i=b0(a.messages),j=(f=[],(c=g).codeComplexity>0&&f.push("code-complexity"),c.mathComplexity>0&&f.push("math-complexity"),c.reasoningDepth>0&&f.push("reasoning-depth"),c.contextSize>0&&f.push("context-size"),c.toolCalling>0&&f.push("tool-calling"),c.domainSpecificity>0&&f.push("domain-specificity"),f),k=(d=g,e=a,Math.min(1,Object.values(d).filter(a=>a>0).length/6*.8+.1*!!(e.messages.length>=2)));return{score:Math.min(100,h),breakdown:g,rulesTriggered:j,inputTokens:i,confidence:k}}function b2(a){return a<=5?"trivial":a<=20?"simple":a<=40?"moderate":a<=65?"complex":"expert"}function b3(a){switch(a){case"trivial":case"simple":return"free";case"moderate":case"complex":return"cheap";case"expert":return"premium"}}function b4(a,b){var c,d,e;let f=new Map;for(let b of a){if("model"!==b.kind)continue;let a=`${b.provider}::${b.modelStr}`;f.has(a)||f.set(a,aM(b.provider,b.modelStr))}let g=b1(b),h=b2(g.score),i=b3(h),j=["free","cheap","premium"],k=j.indexOf(i),l=[],m=[],n=[];for(let b of a){if("model"!==b.kind)continue;let a=`${b.provider}::${b.modelStr}`,c=f.get(a);if(!c)continue;let d=j.indexOf(c.tier);d>=k?(l.push(b),d>k&&m.push(b)):n.push(b)}let o=(c=h,d=l.length,e=n.length,"expert"===c?"require-premium":"complex"===c||"moderate"===c?"prefer-cheap":"simple"===c||"trivial"===c?"prefer-free":"default");return{tierAssignments:f,specificity:g,specificityLevel:h,recommendedMinTier:i,eligibleTargets:l,overqualifiedTargets:m,underqualifiedTargets:n,strategyModifier:o}}let b5=["free","cheap","premium"];function b6(a,b){return b5.indexOf(a)>=b5.indexOf(b)?a:b}let b7=new Map,b8=null;function b9(a,b){return b?`${a}:${b}`:a}function ca(a,b,c){if(!a||"unknown"===a)return;let d=b9(a,b),e=b7.get(d),f=Date.now(),g=Math.max(18e5,c?.providerCooldown?.maxRetryCooldownMs??ai.aD.providerCooldown.maxRetryCooldownMs);e?(e.lastFailureAt=f,e.failureCount++,e.retentionMs=Math.max(e.retentionMs,g)):b7.set(d,{lastFailureAt:f,failureCount:1,retentionMs:g}),!b8&&(b8=setInterval(()=>{!function(a=Date.now()){for(let[b,c]of b7)a-c.lastFailureAt>c.retentionMs&&b7.delete(b)}()},6e4)).unref&&b8.unref()}function cb(a,b,c){if(!a||"unknown"===a)return!1;let d=b9(a,b),e=b7.get(d);if(!e||0===e.failureCount)return!1;let f=Date.now()-e.lastFailureAt,g=c?.providerCooldown?.minRetryCooldownMs??ai.aD.providerCooldown.minRetryCooldownMs,h=c?.providerCooldown?.maxRetryCooldownMs??ai.aD.providerCooldown.maxRetryCooldownMs;return f<Math.min(g*Math.pow(2,Math.min(Math.max(0,e.failureCount-1),10)),h)}function cc(a,b){if(!a||"unknown"===a)return;let c=b9(a,b),d=b7.get(c);d&&(d.failureCount=0)}var cd=c(69190);function ce(a){let b="number"==typeof a?a:"string"==typeof a&&""!==a.trim()?Number(a):null;if(null===b||!Number.isFinite(b))return null;let c=Math.floor(b);return c>0?c:null}function cf(a,b,c={}){if(!1===c.enabled)return null;let d=ce(b);if(null===d)return null;let e=(0,cd.w8)(a);if(!0!==e.supportsThinking)return null;let f=ce(e.maxOutputTokens);if(null===f)return null;if(d>f)return f;if(d===f)return d;let g=Math.max(d+1e3,Math.ceil(1.5*d));return g>f?d:g}let cg=new Map,ch=new Map,ci=new Map;function cj(a){let b=Number(a);return Number.isFinite(b)?Math.min(Math.max(Math.floor(b),1),1e3):1}function ck(a,b,c){let d=ch.get(a),e=d?b.findIndex(a=>a.executionKey===d.executionKey):-1;if(c>1&&d&&e>=0&&d.successCount<c)return{startIndex:e,counter:cg.get(a)||0};let f=cg.get(a)||0;return{startIndex:f%b.length,counter:f}}function cl(a,b,c,d){let e=ch.get(a),f=e?.executionKey===b.executionKey?e.successCount+1:1;if(f>=c){let c=d.findIndex(a=>a.executionKey===b.executionKey);cg.set(a,c>=0?c+1:(cg.get(a)||0)+1),ch.delete(a);return}ch.set(a,{executionKey:b.executionKey,successCount:f})}function cm(a,b){let c=ci.get(a);return!c||b<=1||c.successCount>=b?null:c.executionKey}function cn(a,b,c){let d=ci.get(a),e=d?.executionKey===b?d.successCount+1:1;e>=c?ci.delete(a):ci.set(a,{executionKey:b,successCount:e})}var co=c(9024);function cp(a){return a.length>60?`${a.slice(0,60)}…`:a}var cq=c(78769);function cr(a){return"number"!=typeof a?a:new Date(a>0&&a<1e9?Date.now()+1e3*a:a)}async function cs(a,b,c,d){let e,f,g;if(b){if(!(a.headers.get("content-type")||"").includes("text/event-stream")||!a.body)return{valid:!0};let b=a.body.getReader(),d=new TextDecoder("utf-8"),e=[],f="",g=!1,j=!1,k=!1,l=(0,co.DY)(),m="";function h(){let a=f.split(/\r?\n/);for(let b of(f=a[a.length-1],l.normalize(a.slice(0,-1)))){let a,c=b.trim();if(c.startsWith("event:")){m=c.slice(6).trim();continue}if(!c.startsWith("data:")){c||(m="");continue}let d=c.slice(5).trim();if(!d||"[DONE]"===d)continue;try{a=JSON.parse(d)}catch{continue}let e=("string"==typeof a.type?a.type:null)||m||"";if(m="",(0,co.Z_)(a,e))return!0;switch(e){case"message_start":g=!0;break;case"content_block_start":case"content_block_delta":case"content_block_stop":return j=!0,!0;case"message_stop":k=!0;break;case"message_delta":{let b=a.delta;b&&"object"==typeof b&&null!=b.stop_reason&&(k=!0)}}}return!1}function i(b){let c=e.slice(),d=0;return new Response(new ReadableStream({async pull(a){if(d<c.length)return void a.enqueue(c[d++]);try{let{done:c,value:d}=await b.read();c?a.close():a.enqueue(d)}catch{a.close()}}}),{status:a.status,statusText:a.statusText,headers:a.headers})}try{for(;;){let{done:a,value:l}=await b.read();if(a){let a=d.decode(void 0,{stream:!1});if(a&&(f+=a),f.trim()&&(f+="\n\n"),h(),g&&k&&!j)return c.warn?.("COMBO","Streaming Claude response has complete lifecycle but zero content blocks (content_filter?) — marking as invalid for combo failover"),{valid:!1,reason:"streaming empty content block"};let e=i(b);return{valid:!0,clonedResponse:e}}if(e.push(l),f+=d.decode(l,{stream:!0}),h()){let a=i(b);return{valid:!0,clonedResponse:a}}}}catch{return{valid:!0}}}let j=a.headers.get("content-type")||"";if(!j.includes("application/json")&&!j.includes("text/"))return{valid:!0};try{e=a.clone()}catch{return{valid:!0}}try{f=await e.text()}catch{return{valid:!0}}if(!f||0===f.trim().length)return{valid:!1,reason:"empty response body"};try{g=JSON.parse(f)}catch{if(f.startsWith("data:")||f.startsWith("event:"))return{valid:!0};return{valid:!1,reason:"response is not valid JSON"}}if(d){let a=function(a,b){if(!b||"object"!=typeof b)return{valid:!0};let c=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices;if(Array.isArray(b)){let a=[];for(let c of b){let b=c?.message,d=b?.content;if("string"==typeof d)a.push(d);else if(Array.isArray(d))for(let b of d){let c=b?.text;"string"==typeof c&&a.push(c)}}if(a.length)return a.join("")}let c=a.output;if(Array.isArray(c)){let a=[];for(let b of c){let c=b?.content;if(Array.isArray(c))for(let b of c){let c=b?.text;"string"==typeof c&&a.push(c)}}if(a.length)return a.join("")}return""}(a);for(let a of b.forbiddenSubstrings??[])if("string"==typeof a&&a.length>0&&c.includes(a))return{valid:!1,reason:`response contains forbidden substring "${cp(a)}"`};for(let a of b.requiredSubstrings??[])if("string"==typeof a&&a.length>0&&!c.includes(a))return{valid:!1,reason:`response missing required substring "${cp(a)}"`};if("number"==typeof b.minContentLength&&Number.isFinite(b.minContentLength)&&b.minContentLength>0&&c.trim().length<b.minContentLength)return{valid:!1,reason:`response content shorter than ${b.minContentLength} chars`};for(let c of b.jsonPathPredicates??[])if(c&&"string"==typeof c.path&&c.path&&!function(a,b,c){switch(b){case"exists":return null!=a;case"nonEmpty":return null!=a&&("string"==typeof a?a.trim().length>0:Array.isArray(a)?a.length>0:"object"==typeof a?Object.keys(a).length>0:!!a);case"equals":return a===c;case"notEquals":return a!==c}}(function(a,b){let c=a;for(let a of function(a){let b=[],c="",d=()=>{c&&(b.push(c),c="")};for(let e=0;e<a.length;e++){let f=a[e];if("."===f)d();else if("["===f){d();let c="";for(e++;e<a.length&&"]"!==a[e];)c+=a[e],e++;let f=c.trim(),g=Number(f);b.push(""!==f&&Number.isInteger(g)?g:f)}else c+=f}return d(),b}(b)){if(null==c)return;if("number"==typeof a){if(!Array.isArray(c))return;c=c[a]}else{if("object"!=typeof c)return;c=c[a]}}return c}(a,c.path),c.condition,c.value))return{valid:!1,reason:`jsonpath check failed: "${cp(c.path)}" ${c.condition}`};return{valid:!0}}(g,d);if(!a.valid)return{valid:!1,reason:a.reason}}let k=g?.choices;if(g?.object==="response"){var l;if(!(Array.isArray(l=g.output)&&l.some(a=>{if(!a||"object"!=typeof a)return!1;if("message"!==a.type)return!!a.type;let b=a.content;return Array.isArray(b)&&b.some(a=>!!a&&"object"==typeof a&&"string"==typeof a.text&&a.text.length>0)})))return{valid:!1,reason:"empty_choices"};let b="string"==typeof g.status?g.status:"";return b&&!["completed","done"].includes(b)?{valid:!1,reason:"no_terminal"}:{valid:!0,clonedResponse:new Response(f,{status:a.status,statusText:a.statusText,headers:a.headers})}}if(!Array.isArray(k)||0===k.length){if(g?.output||g?.result||g?.data||g?.response)return{valid:!0};if(g?.error){let a=g.error;return{valid:!1,reason:`upstream error in 200 body: ${a?.message||JSON.stringify(g.error).substring(0,200)}`}}return{valid:!0}}let m=k[0],n=m?.message||m?.delta;if(!n)return{valid:!1,reason:"choice has no message object"};let o=n.content,p=n.tool_calls,q=n.reasoning_content??n.reasoning,r="string"==typeof q&&q.trim().length>0,s=Array.isArray(p)&&p.length>0;if(!(null!=o&&""!==o||r)&&!s)return{valid:!1,reason:"empty content and no tool_calls in response"};if((null==o||""===o)&&r&&!s){let a=g?.usage;if(a){let b=Number(a.completion_tokens)||0,c=(0,cq.Zr)(a);if(b>0&&c>=.9*b)return{valid:!1,reason:`reasoning consumed ${c}/${b} tokens — no content output`}}}return{valid:!0,clonedResponse:new Response(f,{status:a.status,statusText:a.statusText,headers:a.headers})}}let ct=new Set(["quota_exhausted","auth_error","not_found","not_found_local"]),cu=new Set(["rate_limit","rate_limited","transient","overloaded","server_error"]),cv=()=>void 0,cw=()=>void 0;var cx=c(47593);async function cy({body:a,models:b,handleSingleModel:c,log:d,comboName:f,judgeModel:g,tuning:h}){var i,j;let k,l,m=Array.isArray(b)?b.filter(Boolean):[];if(0===m.length)return(0,e.yj)(400,"Fusion combo has no models");if(1===m.length)return c(a,m[0]);let n={minPanel:h?.minPanel??2,stragglerGraceMs:h?.stragglerGraceMs??8e3,panelHardTimeoutMs:h?.panelHardTimeoutMs??9e4},o=Math.min(Math.max(2,n.minPanel),m.length),p=g&&g.trim()?g.trim():m[0];d.info("FUSION",`Combo "${f??""}" | panel=${m.length} [${m.join(", ")}] | judge=${p} | quorum=${o}`);let{tools:q,tool_choice:r,...s}=a,t={...s,stream:!1},u=Date.now(),v=m.map(a=>{var b,d;return b=c(t,a),d=n.panelHardTimeoutMs,new Promise(a=>{let c=setTimeout(()=>a({__timeout:!0}),d);Promise.resolve(b).then(b=>{clearTimeout(c),a(b)}).catch(b=>{clearTimeout(c),a({__error:b})})})}),w=await (i={...n,minPanel:o},new Promise(a=>{let b=Array(v.length),c=0,d=0,e=!1,f=null,g=()=>{e||(e=!0,clearTimeout(h),f&&clearTimeout(f),a(b))},h=setTimeout(g,i.panelHardTimeoutMs);v.forEach((a,e)=>{Promise.resolve(a).then(a=>{b[e]=a}).catch(a=>{b[e]={__error:a}}).finally(()=>{c++;let a=b[e];if(a&&a.ok&&d++,c===v.length)return g();d>=i.minPanel&&!f&&(f=setTimeout(g,i.stragglerGraceMs))})})}));d.info("FUSION",`fan-out collected in ${Date.now()-u}ms`);let x=[];for(let a=0;a<w.length;a++){let b=w[a],c=m[a];if(!b){d.warn("FUSION",`Panel ${c} dropped (straggler/timeout)`);continue}if(b.__timeout){d.warn("FUSION",`Panel ${c} timed out`);continue}if(b.__error){d.warn("FUSION",`Panel ${c} threw`,{error:(0,e.sanitizeErrorMessage)(b.__error)});continue}if(!b.ok){d.warn("FUSION",`Panel ${c} failed`,{status:b.status});continue}try{let a=await b.clone().json(),e=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices,c=b?.[0];if(c){let a=c.message??c.delta??{},b=(0,cx.kU)(a.content);if(b.trim())return b;if("string"==typeof c.text&&c.text.trim())return c.text}let d=(0,cx.kU)(a.content);if(d.trim())return d;let e=a.candidates,f=e?.[0]?.content?.parts;if(Array.isArray(f)){let a=f.map(a=>"string"==typeof a?.text?a.text:"").join("");if(a.trim())return a}let g=a.output;if(Array.isArray(g)){let a=g.flatMap(a=>Array.isArray(a.content)?a.content.map(a=>"string"==typeof a?.text?a.text:""):[]).join("");if(a.trim())return a}return""}(a);e?(x.push({model:c,text:e}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)):d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:(0,e.sanitizeErrorMessage)(a)})}}if(0===x.length)return d.warn("FUSION","All panel models failed"),(0,e.yj)(503,"All fusion panel models failed");if(1===x.length)return d.info("FUSION",`Only ${x[0].model} succeeded — answering directly (no fusion)`),c(a,x[0].model);let y=(k=x.map((a,b)=>`[Source ${b+1}]
17
- ${a.text}`).join("\n\n"),j=[`You are the JUDGE in a model-fusion panel. ${x.length} expert models independently answered the user's most recent request. Their responses are below, anonymized by source.`,"\nDo NOT mention that multiple models were used, and do NOT refer to the sources. Produce ONE authoritative final answer addressed directly to the user.\n\nFirst, internally analyze the panel along these dimensions: consensus (points most sources agree on — treat as higher-confidence), contradictions (where they disagree — resolve with your own judgment), partial coverage, unique insights only one source surfaced, and blind spots every source missed. Then write the best possible final answer grounded in that analysis — more complete and correct than any single response, with no filler.\n\n=== PANEL RESPONSES ===",k,"=== END PANEL RESPONSES ===\n\nNow write the final answer to the user's original request."].join("\n"),l={...a},Array.isArray(a.messages)?l.messages=[...a.messages,{role:"user",content:j}]:Array.isArray(a.input)?l.input=[...a.input,{role:"user",content:j}]:Array.isArray(a.contents)?l.contents=[...a.contents,{role:"user",parts:[{text:j}]}]:l.messages=[{role:"user",content:j}],l);return d.info("FUSION",`Judging ${x.length} answers with ${p}`),c(y,p)}let cz=[408,500,502,503,504,524];function cA(a,b){let{result:c,fallbackResult:e,errorText:f,rawModel:g,isTokenLimitBreach:h,allAccountsRateLimited:i,sets:j,log:k,tag:l,exhaustedLogLevel:m,structuredError:n}=b,{exhaustedProviders:o,exhaustedConnections:p,transientRateLimitedProviders:q}=j,r=a.provider,s=!!(r&&"unknown"!==r)&&!(0,d.DZ)(r,g)&&((0,d.je)(e)||(0,d.w7)(n?.code||f)===aj.QS.QUOTA_EXHAUSTED||i);if(s){o.add(r);let a="debug"===m?k.debug:k.info;a?.(l,`Provider ${r} quota exhausted — marking for skip on remaining targets (#1731)`)}else 429===c.status&&!h&&r&&"unknown"!==r&&q.add(r),function(a,b){var c;let d,{result:e,errorText:f,sets:g,log:h,tag:i}=b,j=a.provider;if(!j||"unknown"===j||!cz.includes(e.status)||"string"==typeof(d=e.headers?.get?.("x-omniroute-provider-breaker"))&&"open"===d.toLowerCase()||/provider_circuit_open/i.test(f)||(c=e.status,502===c&&/empty content/i.test(f)))return;let k=a.connectionId??void 0;k?(g.exhaustedConnections.add(`${j}:${k}`),h.info(i,`Provider ${j} connection ${k} error (${e.status}) — marking for skip on remaining targets (#1731v2)`)):(g.exhaustedProviders.add(j),h.info(i,`Provider ${j} connection error (${e.status}) — marking for skip on remaining targets (#1731)`))}(a,{result:c,errorText:f,sets:j,log:k,tag:l});return s}async function cB(a){return a.isModelAvailable&&!await a.isModelAvailable(a.unit.modelStr,a.unit)?(0,e.yj)(503,`Model ${a.unit.modelStr} is unavailable`):a.handleSingleModel(a.body,a.unit.modelStr,{...a.unit,effectiveComboStrategy:a.effectiveComboStrategy,failoverBeforeRetry:a.failoverBeforeRetry})}async function cC(a){var b,c,d;let f=(b=a.allCombos,c=a.unit.comboName,(Array.isArray(b)?b:b?.combos||[]).filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)&&"string"==typeof a.name).find(a=>a.name===c)||null);if(!f)return(0,e.yj)(503,`Nested combo "${a.unit.comboName}" not found`);let g=(d={context:a.nesting,childComboName:f.name}).context.depth>=d.context.maxDepth?(0,e.yj)(503,`Max combo nesting depth (${d.context.maxDepth}) exceeded`):d.context.visitedComboNames.includes(d.childComboName)?(0,e.yj)(503,`Circular combo reference detected: ${d.childComboName}`):{...d.context,depth:d.context.depth+1,visitedComboNames:[...d.context.visitedComboNames,d.childComboName]};return g instanceof Response?g:a.runCombo({...a.baseOptions,body:a.body,combo:f,nesting:g})}async function cD(a){return"model"===a.unit.kind?cB({body:a.body,unit:a.unit,handleSingleModel:a.handleSingleModel,isModelAvailable:a.isModelAvailable,failoverBeforeRetry:a.failoverBeforeRetry,effectiveComboStrategy:a.effectiveComboStrategy}):cC({body:a.body,unit:a.unit,allCombos:a.allCombos,runCombo:a.runCombo,baseOptions:a.baseOptions,nesting:a.nesting})}async function cE(a){let b=Number(a.config.maxRetries??1),c=bN(a.config.retryDelayMs,2e3),d=function(a,b){if("random"===a){let a=[...b];for(let b=a.length-1;b>0;b-=1){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}if("weighted"===a){let a=function(a){let b=a.reduce((a,b)=>a+Math.max(0,Number(b.weight)||0),0);if(b<=0)return a[0]||null;let c=Math.random()*b;for(let b of a)if((c-=Math.max(0,Number(b.weight)||0))<=0)return b;return a[a.length-1]||null}(b);return a?[a,...b.filter(b=>b.executionKey!==a.executionKey)]:b}return b}(a.strategy,a.units),f=a.body?.stream===!0,g=Date.now(),h=a.effectiveComboStrategy??a.strategy,i=null,j=0;for(let k of d){for(let d=0;d<=b;d+=1){if(a.signal?.aborted)return{response:(0,e.yj)(499,"Client disconnected"),unit:k};if(a.nesting.attemptBudget.count+=1,a.nesting.attemptBudget.count>a.nesting.attemptBudget.limit)return{response:(0,e.yj)(503,"Maximum combo retry limit reached"),unit:k};d>0&&await new Promise(a=>setTimeout(a,c)),a.log.info("COMBO",`Trying ${k.kind} ${"combo-ref"===k.kind?`combo:${k.comboName}`:k.modelStr}${d>0?` (retry ${d})`:""}`);let b=await cD({body:a.body,unit:k,allCombos:a.allCombos,handleSingleModel:a.handleSingleModel,isModelAvailable:a.isModelAvailable,runCombo:a.runCombo,baseOptions:a.baseOptions,nesting:a.nesting,failoverBeforeRetry:a.config.failoverBeforeRetry,effectiveComboStrategy:h});if(i=b,b.ok){if("combo-ref"===k.kind)return t(a.combo.name,null,{success:!0,latencyMs:Date.now()-g,fallbackCount:j,strategy:h,target:{executionKey:k.executionKey,stepId:k.stepId,label:k.label}}),{response:b,unit:k};let c=await cs(b,f,a.log,a.config.responseValidation);if(c.valid)return t(a.combo.name,k.modelStr,{success:!0,latencyMs:Date.now()-g,fallbackCount:j,strategy:h,target:{executionKey:k.executionKey,stepId:k.stepId,label:k.label}}),{response:c.clonedResponse??b,unit:k}}if(![408,429,500,502,503,504].includes(b.status))break}j+=1}return t(a.combo.name,null,{success:!1,latencyMs:Date.now()-g,fallbackCount:j,strategy:h}),{response:i||(0,e.yj)(503,"All nested combo units unavailable"),unit:null}}var cF=c(47493),cG=c(80540);function cH(a){if("string"==typeof a){let b=a.trim(),c=b.indexOf("/");return!(c<=0)&&b.slice(c+1).includes("*")}return!(!a||"object"!=typeof a||Array.isArray(a))&&"provider-wildcard"===a.kind&&"string"==typeof a.providerId}async function cI(a){let b=new Set,c=[];try{for(let d of(await (0,cG.Kb)(a)))d.id&&!b.has(d.id)&&(b.add(d.id),c.push(d.id))}catch{}for(let d of(0,aS.SM)(a))d.id&&!b.has(d.id)&&(b.add(d.id),c.push(d.id));return c}async function cJ(a,b){let c=await cI(a.providerId);if(0===c.length)return null;let d=a.modelPattern,e="*"===d?c:c.filter(a=>(0,cF.UF)(a,d));return 0===e.length?null:e.map(c=>{let e={kind:"model",model:`${a.providerId}/${c}`,providerId:a.providerId,weight:a.weight,_expandedFromWildcard:`${a.providerId}/${d}`,_parentCombo:b};return null!==a.label&&(e.label=a.label),null!==a.connectionId&&(e.connectionId=a.connectionId),null!==a.allowedConnectionIds&&(e.allowedConnectionIds=a.allowedConnectionIds),e})}async function cK(a){let b=a.models;if(!Array.isArray(b)||0===b.length)return a;let c=!1;for(let a of b)if(cH(a)){c=!0;break}if(!c)return a;let d=[];for(let c of b){if(!cH(c)){d.push(c);continue}let b=function(a){if("string"==typeof a){let b=a.trim(),c=b.indexOf("/");if(c<=0)return null;let d=b.slice(0,c),e=b.slice(c+1);return e.includes("*")?{providerId:d,modelPattern:e,weight:0,label:null,connectionId:null,allowedConnectionIds:null}:null}if(a&&"object"==typeof a&&!Array.isArray(a)){if("provider-wildcard"!==a.kind)return null;let b="string"==typeof a.providerId?a.providerId.trim():"";if(!b)return null;let c="string"==typeof a.modelPattern?a.modelPattern.trim():"*",d="number"==typeof a.weight&&Number.isFinite(a.weight)?a.weight:0,e="string"==typeof a.label&&a.label.trim()?a.label.trim():null,f="string"==typeof a.connectionId&&a.connectionId.trim()?a.connectionId.trim():null,g=Array.isArray(a.allowedConnectionIds)?a.allowedConnectionIds.map(a=>"string"==typeof a?a.trim():"").filter(Boolean):null;return{providerId:b,modelPattern:c,weight:d,label:e,connectionId:f,allowedConnectionIds:g?.length?g:null}}return null}(c);if(!b){d.push(c);continue}let e=await cJ(b,a.name);e&&e.length>0?d.push(...e):d.push(c)}return{...a,models:d}}async function cL(a){return Promise.all(a.map(a=>cK(a)))}function cM(a){return{model:"",weight:null}}async function cN(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,89718)),d=await Promise.all(a.map(async a=>{let c=(0,af.parseModel)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e),f=Number(c?.input);return{modelStr:a,cost:Number.isFinite(f)?f:1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function cO(a){let b=await cN(a.map(a=>a.modelStr)),c=new Map;for(let b of a){let a=c.get(b.modelStr)||[];a.push(b),c.set(b.modelStr,a)}return b.map(a=>{let b=c.get(a);return b?.shift()||null}).filter(a=>null!==a)}function cP(a,b){let c=(0,ae.qF)(a.provider)?.getStatus?.()?.state;if("OPEN"===c)return-1/0;let d=b?.byModel?.[a.modelStr]||null,e=Number(d?.successRate),f=Number(d?.avgLatencyMs);return(Number.isFinite(e)?e/100:.5)+(Number.isFinite(f)&&f>0?1/Math.log10(f+10):.25)-.25*("HALF_OPEN"===c)}function cQ(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function cR(a){return(Array.isArray(a)?a:a?.combos||[]).map(a=>({...a,id:cQ(a.id)||void 0,name:cQ(a.name)||"",models:Array.isArray(a.models)?a.models:[],config:ak(a.config)?a.config:null,autoConfig:ak(a.autoConfig)?a.autoConfig:null,context_cache_protection:"boolean"==typeof a.context_cache_protection||"number"==typeof a.context_cache_protection?a.context_cache_protection:void 0,system_message:"string"==typeof a.system_message?a.system_message:null}))}function cS(a,b,c,d,e=[]){var f;let g,h;if(!h)return null;let i=[...e,h.id].join(">"),j="string"==typeof h.label?h.label:null,k=h.weight||0;return"combo-ref"===h.kind?{kind:"combo-ref",stepId:h.id,executionKey:i,comboName:h.comboName,weight:k,label:j}:null}function cT(a){let b=ak(a?.config)?a.config.compositeTiers:null;if(!ak(b))return[];let c=cQ(b.defaultTier),d=ak(b.tiers)?b.tiers:null;if(!c||!d)return[];let e=[],f=new Set,g=new Set,h=new Map(Object.entries(d).map(([a,b])=>{if(!ak(b))return null;let c=cQ(a),d=cQ(b.stepId),e=cQ(b.fallbackTier);return c&&d?[c,{stepId:d,fallbackTier:e}]:null}).filter(a=>null!==a)),i=c;for(;i&&h.has(i)&&!f.has(i);){f.add(i);let a=h.get(i);if(!a)break;g.has(a.stepId)||(e.push(a.stepId),g.add(a.stepId)),i=a.fallbackTier}for(let a of h.values())g.has(a.stepId)||(e.push(a.stepId),g.add(a.stepId));return e}function cU(a,b,c=[]){return function(a,b){let c=cT(b);if(0===c.length)return a;let d=new Map(a.map(a=>[a.stepId,a])),e=new Set,f=[];for(let a of c){let b=d.get(a);!b||e.has(b.stepId)||(f.push(b),e.add(b.stepId))}for(let b of a)e.has(b.stepId)||(f.push(b),e.add(b.stepId));return f}(function(a,b,c=[]){return(a.models||[]).map((d,e)=>cS(d,a.name,e,b,c)).filter(a=>null!==a)}(a,b,c),a)}function cV(a,b,c=new Set,d=0,e=[],f=3){if("model"===a.kind)return[a];if(d>f)return[];let g=cR(b),h=g.find(b=>b.name===a.comboName);return!h||c.has(a.comboName)?[]:cW(h,g,new Set(c),d+1,[...e,a.stepId],f)}function cW(a,b,c=new Set,d=0,e=[],f=3){let g=(a.models||[]).map((b,c)=>cS(b,a.name,c,null,e)).filter(a=>a?.kind==="model");if(d>f)return g;if(c.has(a.name))return[];c.add(a.name);let h=cU(a,b,e),i=[];for(let a of h){if("combo-ref"===a.kind){i.push(...cV(a,b,new Set(c),d,e,f));continue}i.push(a)}return i}function cX(a,b){let c,d=(c=cR(b).find(b=>b.name===a),c?.models&&c.models.length>0?c:null);return d?d.models.map(a=>cM(a).model):null}function cY(a){let b=(0,af.parseModel)(a),c=b.provider||b.providerAlias||"unknown",d=b.model||a;return(0,cd.et)(c,d)}function cZ(a){let b=Number(a);return Number.isFinite(b)&&b>0?Math.ceil(b):0}function c$(a,b=0){if(b>8||null==a)return!1;if("string"==typeof a)return a.startsWith("data:image/");if(Array.isArray(a))return a.some(a=>c$(a,b+1));if(!ak(a))return!1;let c="string"==typeof a.type?a.type.toLowerCase():null;if("image"===c||"image_url"===c||"input_image"===c||"image_url"in a||"input_image"in a)return!0;let d=ak(a.source)?a.source:null;return!!("string"==typeof d?.media_type?d.media_type.toLowerCase():"").startsWith("image/")||Object.values(a).some(a=>c$(a,b+1))}function c_(a,b,c,d="Context-aware fallback"){let e,f,g,h;if(0===a.length)return a;let i=(e=function(a){let b={};for(let c of["messages","input","tools","functions","response_format"])void 0!==a[c]&&(b[c]=a[c]);return Object.keys(b).length>0?(0,G.estimateTokens)(b):0}(b),f=Math.max(cZ(b.max_tokens),cZ(b.max_completion_tokens)),{requiresTools:!!(Array.isArray(b.tools)&&b.tools.length>0||Array.isArray(b.functions)&&b.functions.length>0),requiresVision:c$(b.messages)||c$(b.input),requiresStructuredOutput:(g=ak(b.response_format)?b.response_format:null,"json_object"===(h="string"==typeof g?.type?g.type:null)||"json_schema"===h),estimatedInputTokens:e,requestedOutputTokens:f,requiredContextTokens:e+f});if(!(i.requiresTools||i.requiresVision||i.requiresStructuredOutput||i.requiredContextTokens>0))return a;let j=[],k=a.filter(a=>{var b,c;let d,e,f,g=(d=(0,bw.w8)(a.modelStr),e=[],i.requiresTools&&(!1===d.supportsTools||!d.toolCalling)&&e.push("tools"),i.requiresVision&&!0!==d.supportsVision&&e.push("vision"),i.requiresStructuredOutput&&!1===d.structuredOutput&&e.push("structured_output"),b=i.requestedOutputTokens,c=d.maxOutputTokens,!(b<=0)&&null!==c&&c<b&&e.push("output_tokens"),f=d.maxInputTokens??d.contextWindow??null,i.requiredContextTokens>0&&null!=f&&f<i.requiredContextTokens&&e.push("context_window"),e);return 0===g.length||(j.push({target:a,reasons:g}),!1)});return k.length===a.length?a:0===k.length?(c.warn("COMBO",`${d}: all ${a.length} targets were filtered by request requirements; preserving strategy order`),c.debug?.("COMBO",`${d}: rejected targets ${j.map(a=>`${a.target.modelStr}(${a.reasons.join("+")})`).join(", ")}`),a):(c.info("COMBO",`${d}: kept ${k.length}/${a.length} targets for request requirements`),c.debug?.("COMBO",`${d}: rejected targets ${j.map(a=>`${a.target.modelStr}(${a.reasons.join("+")})`).join(", ")}`),k)}function c0(a,b,c=3){return b?cW(a,b,new Set,0,[],c):cU(a,null).filter(a=>a?.kind==="model")}function c1(a,b){return cU(a,b).map(c=>({step:c,targets:b?cV(c,b,new Set([a.name])):"model"===c.kind?[c]:[]})).filter(a=>a.targets.length>0)}function c2(a){let b=ak(a.shadowRouting)?a.shadowRouting:{},c=Number(b.sampleRate??1),d=Number(b.maxTargets??2),e=Number(b.timeoutMs??3e4);return{enabled:!0===b.enabled,targets:Array.isArray(b.targets)?b.targets:[],sampleRate:Number.isFinite(c)?Math.max(0,Math.min(1,c)):1,maxTargets:Number.isFinite(d)?Math.max(1,Math.min(10,Math.floor(d))):2,timeoutMs:Number.isFinite(e)?Math.max(1e3,Math.min(12e4,Math.floor(e))):3e4}}function c3(a,b,c){let d=c2(b);return!d.enabled||0===d.targets.length||d.sampleRate<=0||(void 0)>d.sampleRate?[]:cW({...a,name:`${a.name}:shadow`,models:d.targets},c,new Set([a.name]),0,["shadow"]).slice(0,d.maxTargets).map(a=>({...a,trafficType:"shadow"}))}async function c4(a){try{if(!a.body)return;await a.arrayBuffer()}catch{}}function c5(a){return"function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a))}function c6(a,b,c,d,e,f,g,h){let i;if(0===d.length)return;let j=c2(b);try{i=c5(c)}catch(a){h.warn("COMBO","Shadow routing skipped: failed to clone request body",{error:a instanceof Error?a.message:String(a)});return}let k=async()=>{await Promise.all(d.map(async b=>{let c=Date.now();try{var d,k;let l={...c5(i),model:b.modelStr,stream:!1};if(f&&!await f(b.modelStr,b)){u(a.name,b.modelStr,{success:!1,latencyMs:Date.now()-c,target:bR(b)}),h.info("COMBO",`Shadow target skipped (unavailable): ${b.modelStr}`);return}let m=await (d=e(l,b.modelStr,{...b,failoverBeforeRetry:!0,trafficType:"shadow"}),k=j.timeoutMs,new Promise((a,b)=>{let c=setTimeout(()=>b(Error("Shadow route timed out")),k);d.then(b=>{clearTimeout(c),a(b)},a=>{clearTimeout(c),b(a)})}));await c4(m.clone()),u(a.name,b.modelStr,{success:m.ok,latencyMs:Date.now()-c,target:bR(b)}),h.info("COMBO",`Shadow target ${b.modelStr} completed with status ${m.status} (${g})`)}catch(d){u(a.name,b.modelStr,{success:!1,latencyMs:Date.now()-c,target:bR(b)}),h.warn("COMBO",`Shadow target ${b.modelStr} failed`,{error:d instanceof Error?d.message:String(d)})}}))};setTimeout(()=>void k(),0)}let c7=["weekly","session","monthly"];function c8(a){let b=Number(a);return Number.isFinite(b)?b:null}function c9(a,b){let c=c8(a);return null===c?b:Math.max(0,Math.min(100,c))}function da(a,b){let c=c8(a);return null===c||c<0?b:c}function db(a,b,c){let d=c8(a);return null===d||d<0?b:Math.min(c,Math.floor(d))}function dc(a){let b=Array.isArray(a?.resetWindowWindows)?a.resetWindowWindows:null,c=b?.filter(a=>c7.includes(String(a))).filter((a,b,c)=>c.indexOf(a)===b);return{windows:c&&c.length>0?c:a?.resetWindowIncludeSession===!0?["weekly","session"]:["weekly"],tieBandMs:Math.max(0,c8(a?.resetWindowTieBandMs)??6e4),quotaCacheTtlMs:db(a?.resetWindowQuotaCacheTtlMs,0,3e5),quotaCacheMaxStaleMs:db(a?.resetWindowQuotaCacheMaxStaleMs,0,36e5)}}function dd(a){return(a.providerId||a.provider||"").toLowerCase()||null}function de(a){return"string"==typeof a&&a.trim().length>0?a.trim():"number"==typeof a&&Number.isFinite(a)?String(a):null}function df(a){if(!a)return NaN;let b=Date.parse(a);if(Number.isFinite(b))return b;if(!/^\d+(?:\.\d+)?$/.test(a))return NaN;let c=Number(a);return Number.isFinite(c)?c<1e10?1e3*c:c:NaN}function dg(a,b){if(!ak(a))return null;let c=a[b];return ak(c)?{percentUsed:c8(c.percentUsed),resetAt:de(c.resetAt)}:null}function dh(a,b,c,d,e){let f=aC(a);return d*f+function(a,b){if(!a)return .5;let c=df(a);if(!Number.isFinite(c))return .5;let d=c-Date.now();return d<=0?1:aC(1-d/b)}(b,c)*(1-f)*e}function di(a,b){if(!a||!ak(a)||!0===a.limitReached)return 1/0;let c=1/0;for(let d of b){let b=function(a,b){return(a&&ak(a)?"session"===b?dg(a,"window5h"):"weekly"===b?dg(a,"window7d")||dg(a,"windowWeekly"):"monthly"===b?dg(a,"windowMonthly"):null:null)||function(a,b){let c;if(!a||!ak(a)||!ak(a.windows))return null;let d=Object.entries(a.windows).map(([a,b])=>({key:a.toLowerCase(),value:b})).filter(({key:a})=>a===b||a.startsWith(`${b} `));if(0===d.length)return null;d.sort((a,b)=>a.key.localeCompare(b.key));let e=d[0].value;return ak(e)?{percentUsed:null===(c=c8(e.percentUsed))?null:c>1?aC(c/100):aC(c),resetAt:de(e.resetAt)}:null}(a,b)}(a,d),e=df(b?.resetAt??null);Number.isFinite(e)&&(c=Math.min(c,e))}return Number.isFinite(c)||(c=df(de(a.resetAt))),Number.isFinite(c)?c:1/0}let dj=new Map,dk=new Map;async function dl(a,b,c,d,e){let f=dd(a);if(!f||!(0,Z.__)(f))return[];if(!b.has(f)){let a=dj.get(f);if(a&&Date.now()-a.fetchedAt<3e4)return b.set(f,a.connections),a.connections;c.has(f)||c.set(f,(async()=>{try{let a=await (0,aR.P)({provider:f,isActive:!0}),b=Array.isArray(a)?a:[];if(!dj.has(f)&&dj.size>=200){let a=dj.keys().next().value;void 0!==a&&dj.delete(a)}return dj.set(f,{connections:b,fetchedAt:Date.now()}),b}catch(a){return e.warn?.("COMBO","Reset-aware failed to load quota-aware connections.",{comboName:d,err:a,operation:"getProviderConnections",provider:f}),[]}})());let g=await c.get(f);b.set(f,g)}return b.get(f)||[]}function dm(a){if(!Array.isArray(a))return null;let b=a.filter(a=>"string"==typeof a&&a.trim().length>0);return b.length>0?b:null}async function dn(a,b,c,d){let e=new Map,f=new Map,g=new Map,h=[];for(let{target:k,connections:l}of(await Promise.all(a.map(async a=>({connections:await dl(a,e,f,b,c),target:a}))))){var i,j;for(let a of l)"string"==typeof a.id&&g.set(a.id,a);let a=(i=k,j=l,i.connectionId?[i.connectionId]:Array.isArray(i.allowedConnectionIds)&&i.allowedConnectionIds.length>0?i.allowedConnectionIds.filter(a=>"string"==typeof a&&a.trim().length>0):j.map(a=>"string"==typeof a.id?a.id:null).filter(a=>!!a)),b=function(a,b){let c=dm(b);if(!c)return a;let d=new Set(c);return a.filter(a=>d.has(a))}(a,d);if(0===b.length){if(a.length>0&&dm(d))continue;h.push(k);continue}for(let a of b)h.push({...k,connectionId:a,executionKey:k.connectionId===a?k.executionKey:`${k.executionKey}@${a}`})}return{connectionById:g,expandedTargets:h}}async function dp({comboName:a,config:b,connectionById:c,expandedTargets:d,log:e,scoreQuota:f}){let g=new Map;return dr(d,5,async(d,h)=>{let i=null,j=dd(d),k=j?(0,Z.__)(j):null;if(k&&j&&d.connectionId){let f=`${j}:${d.connectionId}`;g.has(f)||g.set(f,ds({provider:j,connectionId:d.connectionId,connection:c.get(d.connectionId),fetcher:k,config:b,log:e,comboName:a})),i=await g.get(f)}return{target:d,index:h,...f(i)}})}function dq(a,b,c){let d=b;if(b.length>1){let a=cg.get(c)||0;if(!cg.has(c)&&cg.size>=500){let a=cg.keys().next().value;void 0!==a&&cg.delete(a)}cg.set(c,a+1);let e=a%b.length;d=[...b.slice(e),...b.slice(0,e)]}let e=new Set(d.map(a=>a.target.executionKey));return[...d,...a.filter(a=>!e.has(a.target.executionKey))]}async function dr(a,b,c){let d=Array(a.length),e=0,f=Math.max(1,Math.min(b,a.length));return await Promise.all(Array.from({length:f},async()=>{for(;e<a.length;){let b=e++;d[b]=await c(a[b],b)}})),d}async function ds({provider:a,connectionId:b,connection:c,fetcher:d,config:e,log:f,comboName:g}){let h=`${a}:${b}`,i=e.quotaCacheTtlMs,j=e.quotaCacheMaxStaleMs,k=Date.now(),l=dk.get(h);if(i<=0&&j<=0)try{return await d(b,c)}catch(c){return f.warn?.("COMBO","Reset-aware quota fetch failed.",{comboName:g,connectionId:b,err:c,operation:"quotaFetch",provider:a}),null}let m=()=>{let e=dk.get(h);if(e?.refreshPromise!=null)return e.refreshPromise;let i=d(b,c).then(a=>{if(a){if(!dk.has(h)&&dk.size>=200){let a=dk.keys().next().value;void 0!==a&&dk.delete(a)}dk.set(h,{quota:a,fetchedAt:Date.now(),refreshPromise:null})}else dk.delete(h);return a}).catch(c=>{let d=dk.get(h);if(d){if(!dk.has(h)&&dk.size>=200){let a=dk.keys().next().value;void 0!==a&&dk.delete(a)}dk.set(h,{...d,refreshPromise:null})}return f.warn?.("COMBO","Reset-aware quota fetch failed.",{comboName:g,connectionId:b,err:c,operation:"quotaFetch",provider:a}),null});if(!dk.has(h)&&dk.size>=200){let a=dk.keys().next().value;void 0!==a&&dk.delete(a)}return dk.set(h,{quota:e?.quota??l?.quota??null,fetchedAt:e?.fetchedAt??l?.fetchedAt??0,refreshPromise:i}),i};if(i>0&&l){let a=k-l.fetchedAt;if(a<=i)return l.quota;if(j>0&&a<=i+j)return m(),l.quota}return m()}async function dt(a,b){if(0===a.length)return new Map;let c=await dr(a,5,async a=>{let c=await (0,d.LN)(a.provider).catch(()=>null);if("OPEN"===(0,ae.qF)(a.provider).getStatus().state)return{key:a.executionKey,result:{profile:c,available:!1}};let e=!0;return b&&(e=await Promise.resolve(b(a.modelStr,a)).catch(()=>!0)),{key:a.executionKey,result:{profile:c,available:e}}}),e=new Map;for(let{key:a,result:b}of c)e.set(a,b);return e}async function du(a,b,c,d,e){let f,g,h;if(0===a.length)return a;let i={sessionWeight:h=(g=(f=da(c?.resetAwareSessionWeight,.35))+da(c?.resetAwareWeeklyWeight,.65))>0?f/g:.35,weeklyWeight:1-h,tieBand:c9(c?.resetAwareTieBandPercent,5)/100,exhaustionGuard:c9(c?.resetAwareExhaustionGuardPercent,10)/100,quotaCacheTtlMs:db(c?.resetAwareQuotaCacheTtlMs,0,3e5),quotaCacheMaxStaleMs:db(c?.resetAwareQuotaCacheMaxStaleMs,0,36e5)},{connectionById:j,expandedTargets:k}=await dn(a,b,d,e),l=await dp({comboName:b,config:i,connectionById:j,expandedTargets:k,log:d,scoreQuota:a=>({score:function(a,b){if(!a||!ak(a))return{score:.5};if(!0===a.limitReached)return{score:-1/0};let c=aC(c8(a.percentUsed)??.5),d=dg(a,"window5h"),e=dg(a,"window7d")||dg(a,"windowWeekly"),f=aC(1-(d?.percentUsed??c)),g=aC(1-(e?.percentUsed??c)),h=dh(f,d?.resetAt,18e6,.45,.55),i=dh(g,e?.resetAt??de(a.resetAt),6048e5,.25,.75),j=b.sessionWeight*h+b.weeklyWeight*i;return b.exhaustionGuard>0&&f<b.exhaustionGuard&&(j*=Math.max(.05,f/b.exhaustionGuard)),{score:j}}(a,i).score})});l.sort((a,b)=>b.score!==a.score?b.score-a.score:a.index-b.index);let m=l[0]?.score??0,n=l.filter(a=>m-a.score<=i.tieBand);return dq(l,n,`reset-aware:${b}`).map(a=>a.target)}async function dv(a,b,c,d,e){if(0===a.length)return a;let f=dc(c),{connectionById:g,expandedTargets:h}=await dn(a,b,d,e),i=await dp({comboName:b,config:f,connectionById:g,expandedTargets:h,log:d,scoreQuota:a=>({resetMs:di(a,f.windows)})});i.sort((a,b)=>a.resetMs!==b.resetMs?a.resetMs-b.resetMs:a.index-b.index);let j=i[0]?.resetMs??1/0;if(!Number.isFinite(j)||f.tieBandMs<=0)return i.map(a=>a.target);let k=i.filter(a=>a.resetMs-j<=f.tieBandMs);return k.length<=1?i.map(a=>a.target):dq(i,k,`reset-window:${b}`).map(a=>a.target)}async function dw(){return(await c.e(1999).then(c.bind(c,71999))).getSaturation}async function dx(a,b,c,d){if(a.length<=1)return a;try{let{expandedTargets:e}=await dn(a,b,c,d);if(e.length<=1)return e;let f=await dw(),g=new Map,h=a=>`${a.provider}:${a.connectionId}`;await dr(e,5,async a=>{if(!a.connectionId)return;let b=h(a);g.has(b)||(g.set(b,(async()=>{let[b,c]=await Promise.all([f(a.connectionId,a.provider,{unit:"percent",window:"5h"}),f(a.connectionId,a.provider,{unit:"percent",window:"weekly"})]);return{util5h:b,util7d:c}})()),await g.get(b))});let i=new Map;for(let a of e){if(!a.connectionId)continue;let b=await g.get(h(a));b&&i.set(a.executionKey,b)}if(e.length<=1)return e;let j=e.map((a,b)=>({candidate:a,index:b,headroom:bA(i.get(a.executionKey))}));return j.sort((a,b)=>b.headroom!==a.headroom?b.headroom-a.headroom:a.index-b.index),j.map(a=>a.candidate)}catch(d){return c.warn?.({err:d?.message,comboName:b},"headroom ordering failed — keeping target order"),a}}let dy={light:1,standard:2,heavy:3,critical:4},dz={light:35,standard:65,heavy:95,critical:120},dA=/\b(hi|hello|thanks|thank you|ping|format|rewrite|grammar|translate|summari[sz]e|short|quick|one[- ]?liner|explain briefly)\b/i,dB=/\b(debug|root cause|architecture|architectural|refactor|migrate|implementation|implement|design|analy[sz]e|investigate|compare|benchmark|whitebox|codebase|end[- ]?to[- ]?end|e2e)\b/i,dC=/\b(critical|security|vulnerability|exploit|rce|remote code execution|supply chain|account takeover|auth bypass|privilege escalation|tenant|cross[- ]tenant|sandbox escape|ssrf|deserialization|prod incident|data exfiltration|bug bounty)\b/i;function dD(a,b=[]){if(null==a)return b;if("string"==typeof a||"number"==typeof a||"boolean"==typeof a)return b.push(String(a)),b;if(Array.isArray(a)){for(let c of a)dD(c,b);return b}return"object"!=typeof a||("string"==typeof a.text&&b.push(a.text),"string"==typeof a.input_text&&b.push(a.input_text),"string"==typeof a.output_text&&b.push(a.output_text),"string"==typeof a.content?b.push(a.content):Array.isArray(a.content)&&dD(a.content,b),Array.isArray(a.parts)&&dD(a.parts,b),"string"==typeof a.query&&b.push(a.query),"string"==typeof a.url&&b.push(a.url)),b}function dE(a){var b,c;let d,e,f,g,h,i,j,k,l,m,n,o,p=(d=(c=b=a??{}).contents??c.request?.contents,e=dD([c.system,c.instructions,c.messages,c.input,d,c.query,c.url]).join("\n").length,f=b.contents??b.request?.contents,g=(Array.isArray(b.messages)?b.messages.length:0)+(Array.isArray(b.input)?b.input.length:0)+(Array.isArray(b.contents)?b.contents.length:0)+(Array.isArray(f)?f.length:0),h=Array.isArray(b?.tools)?b.tools.length:0,i=b.generationConfig,k=(j=[b.max_tokens,b.max_output_tokens,b.max_completion_tokens,i?.maxOutputTokens].map(a=>Number.parseInt(String(a??""),10)).filter(a=>Number.isFinite(a))).length>0?Math.max(...j):0,l=b?.reasoning,m=String(b?.reasoning_effort??l?.effort??"").toLowerCase(),n=b?.contents??b?.request?.contents,o=dD([b?.system,b?.instructions,b?.messages,b?.input,n,b?.query,b?.url]).join("\n"),{promptChars:e,messageCount:g,toolCount:h,outputTokens:k,effort:m,hasExplicitReasoning:!!(m&&"none"!==m&&"off"!==m&&"disabled"!==m),lightKeyword:dA.test(o),heavyKeyword:dB.test(o),criticalKeyword:dC.test(o)}),q=[],r=(a,b)=>(a&&q.push(b),a),s=/^(high|xhigh|max|maximum|hard|deep)$/.test(p.effort),t=!p.hasExplicitReasoning||/^(low|minimal|none|off|disabled)$/.test(p.effort);return r(p.promptChars>=1e5,"huge-context")||r(p.outputTokens>=32768,"huge-output")||r(p.toolCount>=8&&p.promptChars>=16e3,"many-tools-large-context")||r(p.criticalKeyword&&(s||p.toolCount>=3||p.promptChars>=8e3),"critical-domain")?{level:"critical",weight:dy.critical,...p,reasons:q}:[r(p.promptChars>=5e4,"large-context"),r(p.promptChars>=24e3,"medium-large-context"),r(p.messageCount>=16,"long-conversation"),r(p.toolCount>=4,"many-tools"),r(p.outputTokens>=8192,"large-output"),r(s,"high-reasoning-effort"),r(p.criticalKeyword,"security-sensitive"),r(p.heavyKeyword&&p.promptChars>=4e3,"complex-task")].filter(Boolean).length>=2||p.promptChars>=5e4||s?{level:"heavy",weight:dy.heavy,...p,reasons:q}:p.promptChars<=2e3&&p.messageCount<=3&&0===p.toolCount&&p.outputTokens<=1500&&t&&!p.criticalKeyword&&!p.heavyKeyword||p.lightKeyword&&p.promptChars<=4e3&&0===p.toolCount&&t&&!p.criticalKeyword?{level:"light",weight:dy.light,...p,reasons:q.length>0?q:["small-simple-request"]}:{level:"standard",weight:dy.standard,...p,reasons:q.length>0?q:["default"]}}let dF=new Set(["vision"]);function dG(a){return String(a??"").replace(/\s+/g," ").trim().slice(0,12e3)}function dH(a,b,c="content"){if(!Array.isArray(a))return"";for(let d of a){if(!d||"object"!=typeof d||!b.has(String(d.role??"")))continue;let a=dG(dD("parts"===c?d.parts:d.content).join("\n"));if(a)return a}return""}function dI(a,b,c="content"){return Array.isArray(a)?dG(a.filter(a=>!!a&&"object"==typeof a&&b.has(String(a.role??""))).map(a=>dD("parts"===c?a.parts:a.content).join("\n")).filter(Boolean).join("\n")):""}function dJ(a){let b=dG(a);return b?(0,by.createHash)("sha1").update(b).digest("hex").slice(0,24):null}let dK={"grok-4-fast-non-reasoning":1143,"grok-4-1-fast-non-reasoning":1244,"gemini-2.5-flash":1238,"kimi-k2.5":1646,"gpt-4o-mini":2764,"claude-sonnet-4.6":4e3,"claude-opus-4.6":6e3,"deepseek-chat":2e3};function dL(a){return dK[String(a||"").toLowerCase()]??1500}function dM(a){return Number.isFinite(a)?Math.max(0,Math.min(100,a)):100}function dN(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a)){let a=Number(d);c&&Number.isFinite(a)&&(b[c]=a)}return b}let dO=new Set(["banned","credits_exhausted","deactivated","expired","rate_limited"]);async function dP(a,b,d=null,e=dc(null),f=null){let g=v(b),h=(f??(0,ai.xv)(null))?.quotaPreflight?.enabled===!0,{getPricingForModel:i}=await Promise.resolve().then(c.bind(c,89718)),j=new Map,k={};try{let{getModelLatencyStats:a}=await c.e(4989).then(c.bind(c,47370));k=await a({windowHours:24,minSamples:3,maxRows:1e4})}catch{}let l=Array.from(new Set(a.map(a=>a.provider||(0,af.parseModel)(a.modelStr).provider||"unknown"))),m=new Map,n=new Map,o=new Map;await Promise.all(l.map(async a=>{try{let b=await (0,aR.P)({provider:a,isActive:!0}),c=Array.isArray(b)?b:[];for(let b of(m.set(a,c.length),n.set(a,c),c))b&&"object"==typeof b&&"string"==typeof b.id&&o.set(b.id,b)}catch{m.set(a,0),n.set(a,[])}}));let p=[];for(let b of a){let a=b.provider||(0,af.parseModel)(b.modelStr).provider||"unknown",c=n.get(a)||[];if(b.connectionId){p.push(b);continue}let d=c.map(a=>a&&"object"==typeof a&&"string"==typeof a.id?a.id:null).filter(a=>null!==a),e=Array.isArray(b.allowedConnectionIds)?new Set(b.allowedConnectionIds.filter(a=>"string"==typeof a&&a.trim().length>0)):null,f=e?d.filter(a=>e.has(a)):d;if(0===f.length){p.push(b);continue}for(let a of f)p.push({...b,connectionId:a,executionKey:`${b.executionKey}@${a}`})}return(await Promise.all(p.map(async a=>{let c,l,n,p=a.modelStr,q=(0,af.parseModel)(p),r=a.provider||q.provider||q.providerAlias||"unknown",s=q.model||p,t=k[`${r}/${s}`]||null,u=Number(t?.totalRequests),v=Number.isFinite(u)&&u>=10,w=1;try{let a=await i(r,s),b=Number(a?.input),c=Number(a?.output);Number.isFinite(b)&&b>=0&&(w=Number.isFinite(c)&&c>=0?.6*b+.4*c:b)}catch{}let x=g?.byModel?.[p]||null,y=Number(x?.avgLatencyMs),z=Number(x?.successRate),A=Number(t?.p95LatencyMs),B=Number(t?.latencyStdDev),C=Number(t?.successRate),D=v?Number.isFinite(A)&&A>0?A:dL(s):Number.isFinite(y)&&y>0?y:dL(s),E=v?Number.isFinite(C)&&C>=0&&C<=1?1-C:.05:Number.isFinite(z)&&z>=0&&z<=100?1-z/100:.05,F=v&&Number.isFinite(B)&&B>0?Math.max(10,B):Math.max(10,.1*D),G=(0,ae.qF)(r)?.getStatus?.()?.state,H=(n=(0,bx.bb)(d||null))?a.connectionId===n?1:a.connectionId?.1:.5:.5,I=.5,J=100,K=!1,L=(0,Z.__)(r),M=a.connectionId?o.get(a.connectionId):void 0,N=function(a){var b;if(!a)return;let c="string"==typeof(b=a.testStatus)?b.trim().toLowerCase():"";return dO.has(c)?c:"unavailable"===c&&function(a){if(null==a||""===a)return!1;let b=new Date(String(a)).getTime();return Number.isFinite(b)&&b>Date.now()}(a.rateLimitedUntil)?"rate_limited":void 0}(M),O=h?N:void 0,P=!1;if(O?(K=!0,c=O,J=0):N&&(P=!0,l=N),L&&a.connectionId){let d=`${r}:${a.connectionId}`;j.has(d)||j.set(d,ds({provider:r,connectionId:a.connectionId,connection:M,fetcher:L,config:e,log:{},comboName:b}));let g=await j.get(d);if(I=function(a,b){var c;let d=di(a,b.windows);if(!Number.isFinite(d))return .5;let e=d-Date.now();return e<=0?1:aC(1-e/((c=b.windows).includes("monthly")?2592e6:c.includes("weekly")?6048e5:18e6))}(g,e),K||(J=function(a){if(!a||"object"!=typeof a)return 100;if(!0===a.limitReached)return 0;let b=a.windows;if(b&&"object"==typeof b&&!Array.isArray(b)){let a=null;for(let c of Object.values(b)){if(!c||"object"!=typeof c)continue;let b=Number(c.percentUsed);if(!Number.isFinite(b))continue;let d=dM((1-b)*100);a=null===a?d:Math.min(a,d)}if(null!==a)return a}let c=Number(a.percentUsed);return Number.isFinite(c)?dM((1-c)*100):100}(g)),!K&&h){let a,b,d,e,h,i=(0,Z.dN)(g,(a=(f??(0,ai.xv)(null))?.quotaPreflight,b=a?.defaultThresholdPercent??2,d=a?.warnThresholdPercent??20,e=dN(a?.providerWindowDefaults?.[r]),h=dN(M?.quotaWindowThresholds),{resolveMinRemainingPercent:a=>{if(null!==a){let b,c;for(let d of(b=[a],(c=a.toLowerCase())!==a&&b.push(c),"codex"===r&&((c.includes("session")||"5h"===c||"five_hour"===c)&&b.push("session"),(c.includes("weekly")||"7d"===c||"seven_day"===c)&&b.push("weekly"),(c.includes("monthly")||"30d"===c)&&b.push("monthly")),[...new Set(b)])){let a=h[d];if("number"==typeof a)return a;let b=e[d];if("number"==typeof b)return b}}return b},resolveWarnRemainingPercent:()=>d}));i.proceed||(K=!0,c=i.reason||"quota_exhausted")}}return{stepId:a.stepId,executionKey:a.executionKey,modelStr:p,provider:r,model:s,quotaRemaining:J,quotaTotal:100,circuitBreakerState:"OPEN"===G||"HALF_OPEN"===G?G:"CLOSED",costPer1MTokens:w,p95LatencyMs:D,latencyStdDev:F,errorRate:E,accountTier:"standard",quotaResetIntervalSecs:86400,contextAffinity:H,resetWindowAffinity:I,quotaCutoffBlocked:K,quotaCutoffReason:c,statusPenalty:P,statusPenaltyReason:l,connectionPoolSize:m.get(r)??1,connectionId:a.connectionId??void 0}}))).filter(a=>{let b=null.get(a.provider);return!b?.has(a.model)})}let dQ=new Set(["credits_exhausted","banned","expired"]);async function dR(a){try{let b=(0,af.parseModel)(a).provider;if(!b)return!1;let c=(0,ae.qF)(b)?.getStatus?.()?.state,d=await (0,aR.P)({provider:b,isActive:!0});return function(a,b,c,d={}){if("OPEN"===a||!Array.isArray(b)||0===b.length)return!0;let e=d.backoffLevel??Number(process.env.PIN_DROP_BACKOFF_LEVEL||"2"),f=d.graceMs??Number(process.env.PIN_DROP_GRACE_MS||"20000");return!b.some(a=>{let b="string"==typeof a.testStatus?a.testStatus:"";if(dQ.has(b)||Number(a.backoffLevel??0)>=e)return!1;let d=a.rateLimitedUntil?new Date(String(a.rateLimitedUntil)).getTime():0;return!Number.isFinite(d)||!(d-c>f)})}(c,d||[],Date.now())}catch{return!1}}async function dS({body:a,combo:b,handleSingleModel:f,isModelAvailable:g,log:h,settings:i,allCombos:j,relayOptions:l,signal:m,apiKeyAllowedConnections:n=null,nesting:o=null,comboName:q,models:s,comboStrategy:u,comboStickyLimit:w}){let y;b||(b={name:q,models:s||[],strategy:u,config:{stickyRoundRobinLimit:w}});let H={body:(aL={body:a,combo:b,settings:i,relayOptions:l,log:h}).body,combo:aL.combo,settings:aL.settings??null,relayOptions:aL.relayOptions??null,log:aL.log},{strategy:I,relayConfig:K,resilienceSettings:O,universalHandoffConfig:P,effectiveSessionId:Q,pinnedModel:R,clientRequestedStream:S,config:U,comboTargetTimeoutMs:Z,reasoningTokenBufferEnabled:$}=function(a){var b,c,d;let e,f,g,h,i,j,k,{combo:l,settings:m,relayOptions:n}=a,o=l.strategy||"priority",p="context-relay"===o?N(n?.config||null):null,q=m?(0,ai.xv)(m):(0,ai.xv)(null),r=(b=l.universal_handoff||l.universalHandoff,c=n?.universalHandoffConfig,e=b??{},f=c??{},g=(a,b)=>"boolean"==typeof e[a]?e[a]:"boolean"==typeof f[a]?f[a]:b,h=(a,b)=>{if("string"==typeof e[a]){let b=e[a].trim();if(b.length>0)return b}if("string"==typeof f[a]){let b=f[a].trim();if(b.length>0)return b}return b},i=(a,b,c,d)=>{let g,h=e[a]??f[a];if("number"==typeof h&&Number.isFinite(h))g=h;else if("string"==typeof h){let a=Number(h);Number.isFinite(a)&&(g=a)}return void 0===g?b:void 0!==c&&g<c?c:void 0!==d&&g>d?d:g},j=h("trigger","on-switch"),{enabled:g("enabled",!0),trigger:"always"===j||"on-error"===j?j:"on-switch",providerAllowlist:Array.isArray(k=e[d="providerAllowlist"]??f[d])?k.map(a=>"string"==typeof a?a.trim().toLowerCase():"").filter(Boolean):L,maxMessagesForSummary:i("maxMessagesForSummary",30,5,100),handoffModel:h("handoffModel",""),ttlMinutes:i("ttlMinutes",300,1,10080),preserveSystemPrompt:g("preserveSystemPrompt",!0)}),{effectiveSessionId:s,pinnedModel:t}=function(a){let{combo:b,relayOptions:c,log:d}=a,e=b.context_cache_protection?c?.sessionId??function(a){try{return(0,am.Tn)(a)??null}catch{return null}}(a.body):null,f=null;if(b.context_cache_protection&&e&&!a.body?.[M]){let c=E(e,b.name);c&&(a.body={...a.body,model:c},f=c,d.info("COMBO",`[#401] Context cache: pinned model=${c} (server-side)`))}return{effectiveSessionId:e,pinnedModel:f}}(a),{body:u}=function(a,b){var c;if(!b)return{body:a,pinnedModel:null};let d=Array.isArray(a.messages)?[...a.messages]:[],e=null;e=null,b.system_message&&b.system_message.trim()&&(c=d,d=[{role:"system",content:b.system_message},...c.filter(a=>"system"!==a.role)]);let f=function(a,b){let c;if(!a||!b)return a;try{c=new RegExp(b)}catch{return console.warn(`[ComboAgent] Invalid tool_filter_regex: "${b}"`),a}return a.filter(a=>{let b=a.function?.name??a.name??"";return c.test(String(b))})}(a.tools,b.tool_filter_regex);return d=d.map(a=>"string"==typeof a.content&&ag.test(a.content)?{...a,content:a.content.replace(ah,"").trimEnd()}:a),{body:{...a,messages:d,...f!==a.tools&&{tools:f}},pinnedModel:e}}(a.body,l);a.body=u;let v=a.body?.stream===!0,w=m?C(l,m):{...x,...l?.config||{}},y=function(a,b,c=0){let d=A(b),e=z(a)?A(a.targetTimeoutMs):0;if(e>0)return d<=0?e:Math.min(e,d);let f=A(c);return d<=0||f<=0?d:Math.min(f,d)}(w,aj.MT,12e4),B=!1!==w.reasoningTokenBufferEnabled;return{strategy:o,relayConfig:p,resilienceSettings:q,universalHandoffConfig:r,effectiveSessionId:s,pinnedModel:t,clientRequestedStream:v,config:w,comboTargetTimeoutMs:y,reasoningTokenBufferEnabled:B}}(H);a=H.body;let _=async(a,b,c)=>{let d;if(Z<=0)return f(a,b,c).catch(a=>(0,e.yj)(502,a?.message??"Upstream model error"));let g=new AbortController,i=!1,j=new Promise(a=>{d=setTimeout(()=>{i=!0,h.warn("COMBO",`Model ${b} exceeded ${Z}ms timeout — falling back`),g.abort(Error("combo-per-model-timeout")),a(new Response(JSON.stringify({error:{message:`Model ${b} timed out`}}),{status:524,headers:{"Content-Type":"application/json"}}))},Z)}),k={...c??{},modelAbortSignal:g.signal},l=c?.modelAbortSignal??null,m=null;l&&(l.aborted?g.abort(Error("hedge-cancelled")):(m=()=>{g.abort(Error("hedge-cancelled"))},l.addEventListener("abort",m,{once:!0})));try{return await Promise.race([f(a,b,k).catch(a=>i?new Response(null,{status:599}):(0,e.yj)(502,a?.message??"Upstream model error")),j])}finally{clearTimeout(d),l&&m&&l.removeEventListener("abort",m)}};if(R){let c=!(Array.isArray(j)?j.length>0:!!j)||c0(b,j,bM(U.maxComboDepth)).some(a=>a.modelStr===R),d=!!c&&await dR(R);return c&&!d?h.info("COMBO",`Bypassing strategy — routing directly to pinned context model: ${R}`):h.warn("COMBO",c?`Context-cache pin "${R}" provider durably unhealthy — dropping pin, using strategy`:`Stale context-cache pin "${R}" not in combo "${b.name}" targets — dropping pin, using strategy`),_(a,R)}if("fusion"===I){let c=(b.models||[]).map(a=>"string"==typeof a?a:a&&"object"==typeof a&&"string"==typeof a.model?a.model:null).filter(a=>!!a),d="string"==typeof U.judgeModel?U.judgeModel:void 0,e=U.fusionTuning&&"object"==typeof U.fusionTuning?U.fusionTuning:void 0;return cy({body:a,models:c,handleSingleModel:_,log:h,comboName:b.name,judgeModel:d,tuning:e})}let aa=o||{depth:0,maxDepth:bM(U.maxComboDepth),visitedComboNames:[b.name],rootComboName:b.name,attemptBudget:{count:0,limit:30}},ab="execute"==("execute"===U.nestedComboMode?"execute":"flatten")&&j?function(a,b,c,d=3){return"flatten"!==c&&b?(!function a(b,c,d=new Set,e=0,f=3){if(e>f)throw Error(`Max combo nesting depth (${f}) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let g=cR(c),h=g.find(a=>a.name===b);if(h?.models)for(let b of h.models){let c=cM(b).model;g.find(a=>a.name===c)&&a(c,g,new Set(d),e+1,f)}}(a.name,b,new Set,0,d),cU(a,b)):c0(a,b,d)}(b,j,"execute",aa.maxDepth):[],ac=ab.some(a=>"combo-ref"===a.kind),ad=new Set(["priority","round-robin","random","strict-random","weighted","fill-first"]);if(ac&&ad.has(I)){let c=ab,d=I;if("weighted"===I){let a=cj(U.stickyWeightedLimit),e=cm(b.name,a),f=e?c.find(a=>a.executionKey===e):null;f&&(c=[f,...c.filter(a=>a.executionKey!==f.executionKey)],d="priority")}if("random"===I&&([...c],c=void 0),"strict-random"===I){let a=await (b.name,c.map(a=>a.executionKey),null),d=c.find(b=>b.executionKey===a)||c[0];c=[d,...c.filter(a=>a.executionKey!==d.executionKey)]}let e=null,k=c;if("round-robin"===I){let a=U.stickyRoundRobinLimit;e=cj(null!=a?a:i?.stickyRoundRobinLimit);let{startIndex:d,counter:f}=ck(b.name,c,e);e<=1&&cg.set(b.name,f+1),c=c.map((a,b)=>c[(d+b)%c.length]),k=ab}let o=await cE({body:a,combo:b,strategy:d,effectiveComboStrategy:I,units:c,handleSingleModel:_,isModelAvailable:g,log:h,config:U,settings:i,allCombos:j,signal:m,nesting:aa,baseOptions:{body:a,combo:b,handleSingleModel:f,isModelAvailable:g,log:h,settings:i,allCombos:j,relayOptions:l,signal:m,apiKeyAllowedConnections:n},runCombo:dS});if("weighted"===I&&o.response.ok&&o.unit){let a=cj(U.stickyWeightedLimit);a>1&&cn(b.name,o.unit.executionKey,a)}return"round-robin"===I&&o.response.ok&&o.unit&&e&&e>1&&cl(b.name,o.unit,e,k),o.response}if("round-robin"===I)return dT({body:a,combo:b,handleSingleModel:_,isModelAvailable:g,log:h,settings:i,allCombos:j,signal:m});let at=U.maxRetries??1,au=bN(U.retryDelayMs,2e3),av=bN(U.fallbackDelayMs,0),aw=U.maxSetRetries??0,ax=bN(U.setRetryDelayMs,2e3),ay=async a=>{let b=(0,af.parseModel)(a.modelStr).model||a.modelStr;return!(a.provider&&"OPEN"===(0,ae.qF)(a.provider).getStatus().state||O.providerCooldown.enabled&&a.provider&&"unknown"!==a.provider&&cb(a.provider,a.connectionId??void 0,O)||a.provider&&b&&(0,d.qw)(a.provider,a.connectionId||"",b))&&(!g||await g(a.modelStr,a))},az=await cK(b),aB=j?Array.isArray(j)?await cL(j):{...j,combos:await cL(j.combos||[])}:j,aD=cj(U.stickyWeightedLimit);if("weighted"===I&&!ci.has(b.name)&&ci.size>=500){let a=ci.keys().next().value;void 0!==a&&ci.delete(a)}let aE=new Set;if("weighted"===I)for(let a of y=c1(az,aB))(await Promise.all(a.targets.map(ay))).some(Boolean)&&aE.add(a.step.executionKey);let aF="weighted"===I?cm(b.name,aD):null,aG=aF&&aE.has(aF)?aF:null;"weighted"!==I||aD<=1?ci.delete(b.name):aF&&!aG&&ci.delete(b.name);let aH="weighted"===I?function(a,b,c=null,d=null,e){let f=cU(a,b).filter(a=>!d||d.has(a.executionKey));if(0===f.length)return{orderedTargets:[],selectedStep:null,orderedSteps:[]};let g=c&&f.find(a=>a.executionKey===c)||function(a){if(0===a.length)return null;let b=a.reduce((a,b)=>a+(b.weight||0),0);if(b<=0)return a[void a.length];let c=(void 0)*b;for(let b of a)if((c-=b.weight||0)<=0)return b;return a.at(-1)}(f);if(!g)return{orderedTargets:[],selectedStep:null,orderedSteps:[]};let h=function(a,b,c=!1){let d=a.find(a=>a.executionKey===b),e=a.filter(a=>a.executionKey!==b);return c||e.sort((a,b)=>b.weight-a.weight),d?[d,...e]:e}(f,g.executionKey,cT(a).length>0),i=new Map((e||c1(a,b)).map(a=>[a.step.executionKey,a.targets]));return{orderedTargets:al(h.flatMap(a=>i.get(a.executionKey)||[])),selectedStep:g,orderedSteps:h}}(az,aB,aG,aE,y):null,aI=a=>{if(!aH?.orderedSteps)return null;let b=aH.orderedSteps.find(b=>a.executionKey===b.executionKey||a.executionKey.startsWith(b.executionKey+">"));return b?.executionKey||null},aJ="weighted"===I?aH?.orderedTargets||[]:c0(az,aB,bM(U.maxComboDepth));if(aJ=await aY(aJ,a,h),"weighted"===I?h.info("COMBO",`Weighted selection${aG?" (sticky)":""}${j?" with nested resolution":""}: ${aJ.length} total targets`):j&&h.info("COMBO",`${I} with nested resolution: ${aJ.length} total targets`),"auto"===I){let c=function(a){if("string"!=typeof a||!a.startsWith("auto"))return{valid:!1,error:"Not an auto-prefixed model"};let b=a.split("/");if(1===b.length)if("auto"===b[0])return{valid:!0,variant:void 0};else return{valid:!1,error:"Invalid auto prefix format"};if(2===b.length){if("auto"!==b[0])return{valid:!1,error:"Invalid auto prefix format"};let a=b[1];return""===a||bq.includes(a)?{valid:!0,variant:""===a?void 0:a}:{valid:!1,error:`Invalid auto variant: ${a}`}}return{valid:!1,error:"Invalid auto prefix format"}}(b.name);if("smart"===(c.valid?c.variant:void 0)||U.pipeline_enabled)try{let c=await bv({body:a,combo:b,handleChatCore:_,log:{info:h.info,warn:h.warn,error:h.error??h.warn},settings:i??{},signal:m??void 0});return c instanceof Response?c:function(a,b){let c="string"==typeof b.model&&b.model.length>0?b.model:"auto",d=`chatcmpl-pipeline-${Date.now()}`,e=Math.floor(Date.now()/1e3),f=a.text??"";if(!0!==b.stream)return new Response(JSON.stringify({id:d,object:"chat.completion",created:e,model:c,choices:[{index:0,message:{role:"assistant",content:f},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});let g=(a,b)=>`data: ${JSON.stringify({id:d,object:"chat.completion.chunk",created:e,model:c,choices:[{index:0,delta:a,finish_reason:b}]})}
17
+ ${a.text}`).join("\n\n"),j=[`You are the JUDGE in a model-fusion panel. ${x.length} expert models independently answered the user's most recent request. Their responses are below, anonymized by source.`,"\nDo NOT mention that multiple models were used, and do NOT refer to the sources. Produce ONE authoritative final answer addressed directly to the user.\n\nFirst, internally analyze the panel along these dimensions: consensus (points most sources agree on — treat as higher-confidence), contradictions (where they disagree — resolve with your own judgment), partial coverage, unique insights only one source surfaced, and blind spots every source missed. Then write the best possible final answer grounded in that analysis — more complete and correct than any single response, with no filler.\n\n=== PANEL RESPONSES ===",k,"=== END PANEL RESPONSES ===\n\nNow write the final answer to the user's original request."].join("\n"),l={...a},Array.isArray(a.messages)?l.messages=[...a.messages,{role:"user",content:j}]:Array.isArray(a.input)?l.input=[...a.input,{role:"user",content:j}]:Array.isArray(a.contents)?l.contents=[...a.contents,{role:"user",parts:[{text:j}]}]:l.messages=[{role:"user",content:j}],l);return d.info("FUSION",`Judging ${x.length} answers with ${p}`),c(y,p)}let cz=[408,500,502,503,504,524];function cA(a,b){let{result:c,fallbackResult:e,errorText:f,rawModel:g,isTokenLimitBreach:h,allAccountsRateLimited:i,sets:j,log:k,tag:l,exhaustedLogLevel:m,structuredError:n}=b,{exhaustedProviders:o,exhaustedConnections:p,transientRateLimitedProviders:q}=j,r=a.provider,s=!!(r&&"unknown"!==r)&&!(0,d.DZ)(r,g)&&((0,d.je)(e)||(0,d.w7)(n?.code||f)===aj.QS.QUOTA_EXHAUSTED||i);if(s){o.add(r);let a="debug"===m?k.debug:k.info;a?.(l,`Provider ${r} quota exhausted — marking for skip on remaining targets (#1731)`)}else 429===c.status&&!h&&r&&"unknown"!==r&&q.add(r),function(a,b){var c;let d,{result:e,errorText:f,sets:g,log:h,tag:i}=b,j=a.provider;if(!j||"unknown"===j||!cz.includes(e.status)||"string"==typeof(d=e.headers?.get?.("x-omniroute-provider-breaker"))&&"open"===d.toLowerCase()||/provider_circuit_open/i.test(f)||(c=e.status,502===c&&/empty content/i.test(f)))return;let k=a.connectionId??void 0;k?(g.exhaustedConnections.add(`${j}:${k}`),h.info(i,`Provider ${j} connection ${k} error (${e.status}) — marking for skip on remaining targets (#1731v2)`)):(g.exhaustedProviders.add(j),h.info(i,`Provider ${j} connection error (${e.status}) — marking for skip on remaining targets (#1731)`))}(a,{result:c,errorText:f,sets:j,log:k,tag:l});return s}async function cB(a){return a.isModelAvailable&&!await a.isModelAvailable(a.unit.modelStr,a.unit)?(0,e.yj)(503,`Model ${a.unit.modelStr} is unavailable`):a.handleSingleModel(a.body,a.unit.modelStr,{...a.unit,effectiveComboStrategy:a.effectiveComboStrategy,failoverBeforeRetry:a.failoverBeforeRetry})}async function cC(a){var b,c,d;let f=(b=a.allCombos,c=a.unit.comboName,(Array.isArray(b)?b:b?.combos||[]).filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)&&"string"==typeof a.name).find(a=>a.name===c)||null);if(!f)return(0,e.yj)(503,`Nested combo "${a.unit.comboName}" not found`);let g=(d={context:a.nesting,childComboName:f.name}).context.depth>=d.context.maxDepth?(0,e.yj)(503,`Max combo nesting depth (${d.context.maxDepth}) exceeded`):d.context.visitedComboNames.includes(d.childComboName)?(0,e.yj)(503,`Circular combo reference detected: ${d.childComboName}`):{...d.context,depth:d.context.depth+1,visitedComboNames:[...d.context.visitedComboNames,d.childComboName]};return g instanceof Response?g:a.runCombo({...a.baseOptions,body:a.body,combo:f,nesting:g})}async function cD(a){return"model"===a.unit.kind?cB({body:a.body,unit:a.unit,handleSingleModel:a.handleSingleModel,isModelAvailable:a.isModelAvailable,failoverBeforeRetry:a.failoverBeforeRetry,effectiveComboStrategy:a.effectiveComboStrategy}):cC({body:a.body,unit:a.unit,allCombos:a.allCombos,runCombo:a.runCombo,baseOptions:a.baseOptions,nesting:a.nesting})}async function cE(a){let b=Number(a.config.maxRetries??1),c=bN(a.config.retryDelayMs,2e3),d=function(a,b){if("random"===a){let a=[...b];for(let b=a.length-1;b>0;b-=1){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}if("weighted"===a){let a=function(a){let b=a.reduce((a,b)=>a+Math.max(0,Number(b.weight)||0),0);if(b<=0)return a[0]||null;let c=Math.random()*b;for(let b of a)if((c-=Math.max(0,Number(b.weight)||0))<=0)return b;return a[a.length-1]||null}(b);return a?[a,...b.filter(b=>b.executionKey!==a.executionKey)]:b}return b}(a.strategy,a.units),f=a.body?.stream===!0,g=Date.now(),h=a.effectiveComboStrategy??a.strategy,i=null,j=0;for(let k of d){for(let d=0;d<=b;d+=1){if(a.signal?.aborted)return{response:(0,e.yj)(499,"Client disconnected"),unit:k};if(a.nesting.attemptBudget.count+=1,a.nesting.attemptBudget.count>a.nesting.attemptBudget.limit)return{response:(0,e.yj)(503,"Maximum combo retry limit reached"),unit:k};d>0&&await new Promise(a=>setTimeout(a,c)),a.log.info("COMBO",`Trying ${k.kind} ${"combo-ref"===k.kind?`combo:${k.comboName}`:k.modelStr}${d>0?` (retry ${d})`:""}`);let b=await cD({body:a.body,unit:k,allCombos:a.allCombos,handleSingleModel:a.handleSingleModel,isModelAvailable:a.isModelAvailable,runCombo:a.runCombo,baseOptions:a.baseOptions,nesting:a.nesting,failoverBeforeRetry:a.config.failoverBeforeRetry,effectiveComboStrategy:h});if(i=b,b.ok){if("combo-ref"===k.kind)return t(a.combo.name,null,{success:!0,latencyMs:Date.now()-g,fallbackCount:j,strategy:h,target:{executionKey:k.executionKey,stepId:k.stepId,label:k.label}}),{response:b,unit:k};let c=await cs(b,f,a.log,a.config.responseValidation);if(c.valid)return t(a.combo.name,k.modelStr,{success:!0,latencyMs:Date.now()-g,fallbackCount:j,strategy:h,target:{executionKey:k.executionKey,stepId:k.stepId,label:k.label}}),{response:c.clonedResponse??b,unit:k}}if(![408,429,500,502,503,504].includes(b.status))break}j+=1}return t(a.combo.name,null,{success:!1,latencyMs:Date.now()-g,fallbackCount:j,strategy:h}),{response:i||(0,e.yj)(503,"All nested combo units unavailable"),unit:null}}var cF=c(47493),cG=c(80540);function cH(a){if("string"==typeof a){let b=a.trim(),c=b.indexOf("/");return!(c<=0)&&b.slice(c+1).includes("*")}return!(!a||"object"!=typeof a||Array.isArray(a))&&"provider-wildcard"===a.kind&&"string"==typeof a.providerId}async function cI(a){let b=new Set,c=[];try{for(let d of(await (0,cG.Kb)(a)))d.id&&!b.has(d.id)&&(b.add(d.id),c.push(d.id))}catch{}for(let d of(0,aS.SM)(a))d.id&&!b.has(d.id)&&(b.add(d.id),c.push(d.id));return c}async function cJ(a,b){let c=await cI(a.providerId);if(0===c.length)return null;let d=a.modelPattern,e="*"===d?c:c.filter(a=>(0,cF.UF)(a,d));return 0===e.length?null:e.map(c=>{let e={kind:"model",model:`${a.providerId}/${c}`,providerId:a.providerId,weight:a.weight,_expandedFromWildcard:`${a.providerId}/${d}`,_parentCombo:b};return null!==a.label&&(e.label=a.label),null!==a.connectionId&&(e.connectionId=a.connectionId),null!==a.allowedConnectionIds&&(e.allowedConnectionIds=a.allowedConnectionIds),e})}async function cK(a){let b=a.models;if(!Array.isArray(b)||0===b.length)return a;let c=!1;for(let a of b)if(cH(a)){c=!0;break}if(!c)return a;let d=[];for(let c of b){if(!cH(c)){d.push(c);continue}let b=function(a){if("string"==typeof a){let b=a.trim(),c=b.indexOf("/");if(c<=0)return null;let d=b.slice(0,c),e=b.slice(c+1);return e.includes("*")?{providerId:d,modelPattern:e,weight:0,label:null,connectionId:null,allowedConnectionIds:null}:null}if(a&&"object"==typeof a&&!Array.isArray(a)){if("provider-wildcard"!==a.kind)return null;let b="string"==typeof a.providerId?a.providerId.trim():"";if(!b)return null;let c="string"==typeof a.modelPattern?a.modelPattern.trim():"*",d="number"==typeof a.weight&&Number.isFinite(a.weight)?a.weight:0,e="string"==typeof a.label&&a.label.trim()?a.label.trim():null,f="string"==typeof a.connectionId&&a.connectionId.trim()?a.connectionId.trim():null,g=Array.isArray(a.allowedConnectionIds)?a.allowedConnectionIds.map(a=>"string"==typeof a?a.trim():"").filter(Boolean):null;return{providerId:b,modelPattern:c,weight:d,label:e,connectionId:f,allowedConnectionIds:g?.length?g:null}}return null}(c);if(!b){d.push(c);continue}let e=await cJ(b,a.name);e&&e.length>0?d.push(...e):d.push(c)}return{...a,models:d}}async function cL(a){return Promise.all(a.map(a=>cK(a)))}function cM(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function cN(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function cO(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 cP(a){return{model:function(a){if("string"==typeof a)return a.trim();if(cM(a)){let b=cN(a.model);if(!b)return null;let c=cN(a.providerId);return c?`${c}/${b}`:b}return null}(a)||"",weight:"string"==typeof a?0:cM(a)?cO(a.weight):0}}async function cQ(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,89718)),d=await Promise.all(a.map(async a=>{let c=(0,af.parseModel)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e),f=Number(c?.input);return{modelStr:a,cost:Number.isFinite(f)?f:1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function cR(a){let b=await cQ(a.map(a=>a.modelStr)),c=new Map;for(let b of a){let a=c.get(b.modelStr)||[];a.push(b),c.set(b.modelStr,a)}return b.map(a=>{let b=c.get(a);return b?.shift()||null}).filter(a=>null!==a)}function cS(a,b){let c=(0,ae.qF)(a.provider)?.getStatus?.()?.state;if("OPEN"===c)return-1/0;let d=b?.byModel?.[a.modelStr]||null,e=Number(d?.successRate),f=Number(d?.avgLatencyMs);return(Number.isFinite(e)?e/100:.5)+(Number.isFinite(f)&&f>0?1/Math.log10(f+10):.25)-.25*("HALF_OPEN"===c)}function cT(a){return"string"==typeof a&&a.trim().length>0?a.trim():null}function cU(a){return(Array.isArray(a)?a:a?.combos||[]).map(a=>({...a,id:cT(a.id)||void 0,name:cT(a.name)||"",models:Array.isArray(a.models)?a.models:[],config:ak(a.config)?a.config:null,autoConfig:ak(a.autoConfig)?a.autoConfig:null,context_cache_protection:"boolean"==typeof a.context_cache_protection||"number"==typeof a.context_cache_protection?a.context_cache_protection:void 0,system_message:"string"==typeof a.system_message?a.system_message:null}))}function cV(a,b,c,d,e=[]){var f;let g,h=function(a,{comboName:b,index:c,allCombos:d}){if("string"==typeof a){let b=a.trim();if(!b)return null;let d=b.indexOf("/");return{kind:"model",id:`step-${c}`,model:d>0?b.slice(d+1):b,providerId:d>0?cN(b.slice(0,d)):null,weight:0,label:null}}if(cM(a)){if("combo-ref"===a.kind){let b=cN(a.comboName);return b?{kind:"combo-ref",id:a.id||`step-${c}`,comboName:b,weight:cO(a.weight),label:cN(a.label)||null}:null}let b=cN(a.model);if(!b)return null;let d=b.indexOf("/"),e=cN(a.providerId)||(d>0?cN(b.slice(0,d)):null);return{kind:"model",id:a.id||`step-${c}`,model:d>0?b.slice(d+1):b,providerId:e,weight:cO(a.weight),label:cN(a.label)||null,connectionId:cN(a.connectionId)||null,allowedConnectionIds:Array.isArray(a.allowedConnectionIds)?a.allowedConnectionIds:null}}return null}(a,{comboName:b,index:c,allCombos:d});if(!h)return null;let i=[...e,h.id].join(">"),j="string"==typeof h.label?h.label:null,k=h.weight||0;if("combo-ref"===h.kind)return{kind:"combo-ref",stepId:h.id,executionKey:i,comboName:h.comboName,weight:k,label:j};let l=function(a){if("string"==typeof a)return a;if(!cM(a))return null;let b=cN(a.model);if(!b)return null;let c=cN(a.providerId);return c?`${c}/${b}`:b}(h);return l?{kind:"model",stepId:h.id,executionKey:i,modelStr:l,provider:(f=h.providerId,g=(0,af.parseModel)(l),f||g.provider||g.providerAlias||"unknown"),providerId:h.providerId||null,connectionId:h.connectionId||null,...Array.isArray(h.allowedConnectionIds)&&h.allowedConnectionIds.length>0?{allowedConnectionIds:h.allowedConnectionIds}:{},weight:k,label:j}:null}function cW(a){let b=ak(a?.config)?a.config.compositeTiers:null;if(!ak(b))return[];let c=cT(b.defaultTier),d=ak(b.tiers)?b.tiers:null;if(!c||!d)return[];let e=[],f=new Set,g=new Set,h=new Map(Object.entries(d).map(([a,b])=>{if(!ak(b))return null;let c=cT(a),d=cT(b.stepId),e=cT(b.fallbackTier);return c&&d?[c,{stepId:d,fallbackTier:e}]:null}).filter(a=>null!==a)),i=c;for(;i&&h.has(i)&&!f.has(i);){f.add(i);let a=h.get(i);if(!a)break;g.has(a.stepId)||(e.push(a.stepId),g.add(a.stepId)),i=a.fallbackTier}for(let a of h.values())g.has(a.stepId)||(e.push(a.stepId),g.add(a.stepId));return e}function cX(a,b,c=[]){return function(a,b){let c=cW(b);if(0===c.length)return a;let d=new Map(a.map(a=>[a.stepId,a])),e=new Set,f=[];for(let a of c){let b=d.get(a);!b||e.has(b.stepId)||(f.push(b),e.add(b.stepId))}for(let b of a)e.has(b.stepId)||(f.push(b),e.add(b.stepId));return f}(function(a,b,c=[]){return(a.models||[]).map((d,e)=>cV(d,a.name,e,b,c)).filter(a=>null!==a)}(a,b,c),a)}function cY(a,b,c=new Set,d=0,e=[],f=3){if("model"===a.kind)return[a];if(d>f)return[];let g=cU(b),h=g.find(b=>b.name===a.comboName);return!h||c.has(a.comboName)?[]:cZ(h,g,new Set(c),d+1,[...e,a.stepId],f)}function cZ(a,b,c=new Set,d=0,e=[],f=3){let g=(a.models||[]).map((b,c)=>cV(b,a.name,c,null,e)).filter(a=>a?.kind==="model");if(d>f)return g;if(c.has(a.name))return[];c.add(a.name);let h=cX(a,b,e),i=[];for(let a of h){if("combo-ref"===a.kind){i.push(...cY(a,b,new Set(c),d,e,f));continue}i.push(a)}return i}function c$(a,b){let c,d=(c=cU(b).find(b=>b.name===a),c?.models&&c.models.length>0?c:null);return d?d.models.map(a=>cP(a).model):null}function c_(a){let b=(0,af.parseModel)(a),c=b.provider||b.providerAlias||"unknown",d=b.model||a;return(0,cd.et)(c,d)}function c0(a){let b=Number(a);return Number.isFinite(b)&&b>0?Math.ceil(b):0}function c1(a,b=0){if(b>8||null==a)return!1;if("string"==typeof a)return a.startsWith("data:image/");if(Array.isArray(a))return a.some(a=>c1(a,b+1));if(!ak(a))return!1;let c="string"==typeof a.type?a.type.toLowerCase():null;if("image"===c||"image_url"===c||"input_image"===c||"image_url"in a||"input_image"in a)return!0;let d=ak(a.source)?a.source:null;return!!("string"==typeof d?.media_type?d.media_type.toLowerCase():"").startsWith("image/")||Object.values(a).some(a=>c1(a,b+1))}function c2(a,b,c,d="Context-aware fallback"){let e,f,g,h;if(0===a.length)return a;let i=(e=function(a){let b={};for(let c of["messages","input","tools","functions","response_format"])void 0!==a[c]&&(b[c]=a[c]);return Object.keys(b).length>0?(0,G.estimateTokens)(b):0}(b),f=Math.max(c0(b.max_tokens),c0(b.max_completion_tokens)),{requiresTools:!!(Array.isArray(b.tools)&&b.tools.length>0||Array.isArray(b.functions)&&b.functions.length>0),requiresVision:c1(b.messages)||c1(b.input),requiresStructuredOutput:(g=ak(b.response_format)?b.response_format:null,"json_object"===(h="string"==typeof g?.type?g.type:null)||"json_schema"===h),estimatedInputTokens:e,requestedOutputTokens:f,requiredContextTokens:e+f});if(!(i.requiresTools||i.requiresVision||i.requiresStructuredOutput||i.requiredContextTokens>0))return a;let j=[],k=a.filter(a=>{var b,c;let d,e,f,g=(d=(0,bw.w8)(a.modelStr),e=[],i.requiresTools&&(!1===d.supportsTools||!d.toolCalling)&&e.push("tools"),i.requiresVision&&!0!==d.supportsVision&&e.push("vision"),i.requiresStructuredOutput&&!1===d.structuredOutput&&e.push("structured_output"),b=i.requestedOutputTokens,c=d.maxOutputTokens,!(b<=0)&&null!==c&&c<b&&e.push("output_tokens"),f=d.maxInputTokens??d.contextWindow??null,i.requiredContextTokens>0&&null!=f&&f<i.requiredContextTokens&&e.push("context_window"),e);return 0===g.length||(j.push({target:a,reasons:g}),!1)});return k.length===a.length?a:0===k.length?(c.warn("COMBO",`${d}: all ${a.length} targets were filtered by request requirements; preserving strategy order`),c.debug?.("COMBO",`${d}: rejected targets ${j.map(a=>`${a.target.modelStr}(${a.reasons.join("+")})`).join(", ")}`),a):(c.info("COMBO",`${d}: kept ${k.length}/${a.length} targets for request requirements`),c.debug?.("COMBO",`${d}: rejected targets ${j.map(a=>`${a.target.modelStr}(${a.reasons.join("+")})`).join(", ")}`),k)}function c3(a,b,c=3){return b?cZ(a,b,new Set,0,[],c):cX(a,null).filter(a=>a?.kind==="model")}function c4(a,b){return cX(a,b).map(c=>({step:c,targets:b?cY(c,b,new Set([a.name])):"model"===c.kind?[c]:[]})).filter(a=>a.targets.length>0)}function c5(a){let b=ak(a.shadowRouting)?a.shadowRouting:{},c=Number(b.sampleRate??1),d=Number(b.maxTargets??2),e=Number(b.timeoutMs??3e4);return{enabled:!0===b.enabled,targets:Array.isArray(b.targets)?b.targets:[],sampleRate:Number.isFinite(c)?Math.max(0,Math.min(1,c)):1,maxTargets:Number.isFinite(d)?Math.max(1,Math.min(10,Math.floor(d))):2,timeoutMs:Number.isFinite(e)?Math.max(1e3,Math.min(12e4,Math.floor(e))):3e4}}function c6(a,b,c){let d=c5(b);return!d.enabled||0===d.targets.length||d.sampleRate<=0||(void 0)>d.sampleRate?[]:cZ({...a,name:`${a.name}:shadow`,models:d.targets},c,new Set([a.name]),0,["shadow"]).slice(0,d.maxTargets).map(a=>({...a,trafficType:"shadow"}))}async function c7(a){try{if(!a.body)return;await a.arrayBuffer()}catch{}}function c8(a){return"function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a))}function c9(a,b,c,d,e,f,g,h){let i;if(0===d.length)return;let j=c5(b);try{i=c8(c)}catch(a){h.warn("COMBO","Shadow routing skipped: failed to clone request body",{error:a instanceof Error?a.message:String(a)});return}let k=async()=>{await Promise.all(d.map(async b=>{let c=Date.now();try{var d,k;let l={...c8(i),model:b.modelStr,stream:!1};if(f&&!await f(b.modelStr,b)){u(a.name,b.modelStr,{success:!1,latencyMs:Date.now()-c,target:bR(b)}),h.info("COMBO",`Shadow target skipped (unavailable): ${b.modelStr}`);return}let m=await (d=e(l,b.modelStr,{...b,failoverBeforeRetry:!0,trafficType:"shadow"}),k=j.timeoutMs,new Promise((a,b)=>{let c=setTimeout(()=>b(Error("Shadow route timed out")),k);d.then(b=>{clearTimeout(c),a(b)},a=>{clearTimeout(c),b(a)})}));await c7(m.clone()),u(a.name,b.modelStr,{success:m.ok,latencyMs:Date.now()-c,target:bR(b)}),h.info("COMBO",`Shadow target ${b.modelStr} completed with status ${m.status} (${g})`)}catch(d){u(a.name,b.modelStr,{success:!1,latencyMs:Date.now()-c,target:bR(b)}),h.warn("COMBO",`Shadow target ${b.modelStr} failed`,{error:d instanceof Error?d.message:String(d)})}}))};setTimeout(()=>void k(),0)}let da=["weekly","session","monthly"];function db(a){let b=Number(a);return Number.isFinite(b)?b:null}function dc(a,b){let c=db(a);return null===c?b:Math.max(0,Math.min(100,c))}function dd(a,b){let c=db(a);return null===c||c<0?b:c}function de(a,b,c){let d=db(a);return null===d||d<0?b:Math.min(c,Math.floor(d))}function df(a){let b=Array.isArray(a?.resetWindowWindows)?a.resetWindowWindows:null,c=b?.filter(a=>da.includes(String(a))).filter((a,b,c)=>c.indexOf(a)===b);return{windows:c&&c.length>0?c:a?.resetWindowIncludeSession===!0?["weekly","session"]:["weekly"],tieBandMs:Math.max(0,db(a?.resetWindowTieBandMs)??6e4),quotaCacheTtlMs:de(a?.resetWindowQuotaCacheTtlMs,0,3e5),quotaCacheMaxStaleMs:de(a?.resetWindowQuotaCacheMaxStaleMs,0,36e5)}}function dg(a){return(a.providerId||a.provider||"").toLowerCase()||null}function dh(a){return"string"==typeof a&&a.trim().length>0?a.trim():"number"==typeof a&&Number.isFinite(a)?String(a):null}function di(a){if(!a)return NaN;let b=Date.parse(a);if(Number.isFinite(b))return b;if(!/^\d+(?:\.\d+)?$/.test(a))return NaN;let c=Number(a);return Number.isFinite(c)?c<1e10?1e3*c:c:NaN}function dj(a,b){if(!ak(a))return null;let c=a[b];return ak(c)?{percentUsed:db(c.percentUsed),resetAt:dh(c.resetAt)}:null}function dk(a,b,c,d,e){let f=aC(a);return d*f+function(a,b){if(!a)return .5;let c=di(a);if(!Number.isFinite(c))return .5;let d=c-Date.now();return d<=0?1:aC(1-d/b)}(b,c)*(1-f)*e}function dl(a,b){if(!a||!ak(a)||!0===a.limitReached)return 1/0;let c=1/0;for(let d of b){let b=function(a,b){return(a&&ak(a)?"session"===b?dj(a,"window5h"):"weekly"===b?dj(a,"window7d")||dj(a,"windowWeekly"):"monthly"===b?dj(a,"windowMonthly"):null:null)||function(a,b){let c;if(!a||!ak(a)||!ak(a.windows))return null;let d=Object.entries(a.windows).map(([a,b])=>({key:a.toLowerCase(),value:b})).filter(({key:a})=>a===b||a.startsWith(`${b} `));if(0===d.length)return null;d.sort((a,b)=>a.key.localeCompare(b.key));let e=d[0].value;return ak(e)?{percentUsed:null===(c=db(e.percentUsed))?null:c>1?aC(c/100):aC(c),resetAt:dh(e.resetAt)}:null}(a,b)}(a,d),e=di(b?.resetAt??null);Number.isFinite(e)&&(c=Math.min(c,e))}return Number.isFinite(c)||(c=di(dh(a.resetAt))),Number.isFinite(c)?c:1/0}let dm=new Map,dn=new Map;async function dp(a,b,c,d,e){let f=dg(a);if(!f||!(0,Z.__)(f))return[];if(!b.has(f)){let a=dm.get(f);if(a&&Date.now()-a.fetchedAt<3e4)return b.set(f,a.connections),a.connections;c.has(f)||c.set(f,(async()=>{try{let a=await (0,aR.P)({provider:f,isActive:!0}),b=Array.isArray(a)?a:[];if(!dm.has(f)&&dm.size>=200){let a=dm.keys().next().value;void 0!==a&&dm.delete(a)}return dm.set(f,{connections:b,fetchedAt:Date.now()}),b}catch(a){return e.warn?.("COMBO","Reset-aware failed to load quota-aware connections.",{comboName:d,err:a,operation:"getProviderConnections",provider:f}),[]}})());let g=await c.get(f);b.set(f,g)}return b.get(f)||[]}function dq(a){if(!Array.isArray(a))return null;let b=a.filter(a=>"string"==typeof a&&a.trim().length>0);return b.length>0?b:null}async function dr(a,b,c,d){let e=new Map,f=new Map,g=new Map,h=[];for(let{target:k,connections:l}of(await Promise.all(a.map(async a=>({connections:await dp(a,e,f,b,c),target:a}))))){var i,j;for(let a of l)"string"==typeof a.id&&g.set(a.id,a);let a=(i=k,j=l,i.connectionId?[i.connectionId]:Array.isArray(i.allowedConnectionIds)&&i.allowedConnectionIds.length>0?i.allowedConnectionIds.filter(a=>"string"==typeof a&&a.trim().length>0):j.map(a=>"string"==typeof a.id?a.id:null).filter(a=>!!a)),b=function(a,b){let c=dq(b);if(!c)return a;let d=new Set(c);return a.filter(a=>d.has(a))}(a,d);if(0===b.length){if(a.length>0&&dq(d))continue;h.push(k);continue}for(let a of b)h.push({...k,connectionId:a,executionKey:k.connectionId===a?k.executionKey:`${k.executionKey}@${a}`})}return{connectionById:g,expandedTargets:h}}async function ds({comboName:a,config:b,connectionById:c,expandedTargets:d,log:e,scoreQuota:f}){let g=new Map;return du(d,5,async(d,h)=>{let i=null,j=dg(d),k=j?(0,Z.__)(j):null;if(k&&j&&d.connectionId){let f=`${j}:${d.connectionId}`;g.has(f)||g.set(f,dv({provider:j,connectionId:d.connectionId,connection:c.get(d.connectionId),fetcher:k,config:b,log:e,comboName:a})),i=await g.get(f)}return{target:d,index:h,...f(i)}})}function dt(a,b,c){let d=b;if(b.length>1){let a=cg.get(c)||0;if(!cg.has(c)&&cg.size>=500){let a=cg.keys().next().value;void 0!==a&&cg.delete(a)}cg.set(c,a+1);let e=a%b.length;d=[...b.slice(e),...b.slice(0,e)]}let e=new Set(d.map(a=>a.target.executionKey));return[...d,...a.filter(a=>!e.has(a.target.executionKey))]}async function du(a,b,c){let d=Array(a.length),e=0,f=Math.max(1,Math.min(b,a.length));return await Promise.all(Array.from({length:f},async()=>{for(;e<a.length;){let b=e++;d[b]=await c(a[b],b)}})),d}async function dv({provider:a,connectionId:b,connection:c,fetcher:d,config:e,log:f,comboName:g}){let h=`${a}:${b}`,i=e.quotaCacheTtlMs,j=e.quotaCacheMaxStaleMs,k=Date.now(),l=dn.get(h);if(i<=0&&j<=0)try{return await d(b,c)}catch(c){return f.warn?.("COMBO","Reset-aware quota fetch failed.",{comboName:g,connectionId:b,err:c,operation:"quotaFetch",provider:a}),null}let m=()=>{let e=dn.get(h);if(e?.refreshPromise!=null)return e.refreshPromise;let i=d(b,c).then(a=>{if(a){if(!dn.has(h)&&dn.size>=200){let a=dn.keys().next().value;void 0!==a&&dn.delete(a)}dn.set(h,{quota:a,fetchedAt:Date.now(),refreshPromise:null})}else dn.delete(h);return a}).catch(c=>{let d=dn.get(h);if(d){if(!dn.has(h)&&dn.size>=200){let a=dn.keys().next().value;void 0!==a&&dn.delete(a)}dn.set(h,{...d,refreshPromise:null})}return f.warn?.("COMBO","Reset-aware quota fetch failed.",{comboName:g,connectionId:b,err:c,operation:"quotaFetch",provider:a}),null});if(!dn.has(h)&&dn.size>=200){let a=dn.keys().next().value;void 0!==a&&dn.delete(a)}return dn.set(h,{quota:e?.quota??l?.quota??null,fetchedAt:e?.fetchedAt??l?.fetchedAt??0,refreshPromise:i}),i};if(i>0&&l){let a=k-l.fetchedAt;if(a<=i)return l.quota;if(j>0&&a<=i+j)return m(),l.quota}return m()}async function dw(a,b){if(0===a.length)return new Map;let c=await du(a,5,async a=>{let c=await (0,d.LN)(a.provider).catch(()=>null);if("OPEN"===(0,ae.qF)(a.provider).getStatus().state)return{key:a.executionKey,result:{profile:c,available:!1}};let e=!0;return b&&(e=await Promise.resolve(b(a.modelStr,a)).catch(()=>!0)),{key:a.executionKey,result:{profile:c,available:e}}}),e=new Map;for(let{key:a,result:b}of c)e.set(a,b);return e}async function dx(a,b,c,d,e){let f,g,h;if(0===a.length)return a;let i={sessionWeight:h=(g=(f=dd(c?.resetAwareSessionWeight,.35))+dd(c?.resetAwareWeeklyWeight,.65))>0?f/g:.35,weeklyWeight:1-h,tieBand:dc(c?.resetAwareTieBandPercent,5)/100,exhaustionGuard:dc(c?.resetAwareExhaustionGuardPercent,10)/100,quotaCacheTtlMs:de(c?.resetAwareQuotaCacheTtlMs,0,3e5),quotaCacheMaxStaleMs:de(c?.resetAwareQuotaCacheMaxStaleMs,0,36e5)},{connectionById:j,expandedTargets:k}=await dr(a,b,d,e),l=await ds({comboName:b,config:i,connectionById:j,expandedTargets:k,log:d,scoreQuota:a=>({score:function(a,b){if(!a||!ak(a))return{score:.5};if(!0===a.limitReached)return{score:-1/0};let c=aC(db(a.percentUsed)??.5),d=dj(a,"window5h"),e=dj(a,"window7d")||dj(a,"windowWeekly"),f=aC(1-(d?.percentUsed??c)),g=aC(1-(e?.percentUsed??c)),h=dk(f,d?.resetAt,18e6,.45,.55),i=dk(g,e?.resetAt??dh(a.resetAt),6048e5,.25,.75),j=b.sessionWeight*h+b.weeklyWeight*i;return b.exhaustionGuard>0&&f<b.exhaustionGuard&&(j*=Math.max(.05,f/b.exhaustionGuard)),{score:j}}(a,i).score})});l.sort((a,b)=>b.score!==a.score?b.score-a.score:a.index-b.index);let m=l[0]?.score??0,n=l.filter(a=>m-a.score<=i.tieBand);return dt(l,n,`reset-aware:${b}`).map(a=>a.target)}async function dy(a,b,c,d,e){if(0===a.length)return a;let f=df(c),{connectionById:g,expandedTargets:h}=await dr(a,b,d,e),i=await ds({comboName:b,config:f,connectionById:g,expandedTargets:h,log:d,scoreQuota:a=>({resetMs:dl(a,f.windows)})});i.sort((a,b)=>a.resetMs!==b.resetMs?a.resetMs-b.resetMs:a.index-b.index);let j=i[0]?.resetMs??1/0;if(!Number.isFinite(j)||f.tieBandMs<=0)return i.map(a=>a.target);let k=i.filter(a=>a.resetMs-j<=f.tieBandMs);return k.length<=1?i.map(a=>a.target):dt(i,k,`reset-window:${b}`).map(a=>a.target)}async function dz(){return(await c.e(1999).then(c.bind(c,71999))).getSaturation}async function dA(a,b,c,d){if(a.length<=1)return a;try{let{expandedTargets:e}=await dr(a,b,c,d);if(e.length<=1)return e;let f=await dz(),g=new Map,h=a=>`${a.provider}:${a.connectionId}`;await du(e,5,async a=>{if(!a.connectionId)return;let b=h(a);g.has(b)||(g.set(b,(async()=>{let[b,c]=await Promise.all([f(a.connectionId,a.provider,{unit:"percent",window:"5h"}),f(a.connectionId,a.provider,{unit:"percent",window:"weekly"})]);return{util5h:b,util7d:c}})()),await g.get(b))});let i=new Map;for(let a of e){if(!a.connectionId)continue;let b=await g.get(h(a));b&&i.set(a.executionKey,b)}if(e.length<=1)return e;let j=e.map((a,b)=>({candidate:a,index:b,headroom:bA(i.get(a.executionKey))}));return j.sort((a,b)=>b.headroom!==a.headroom?b.headroom-a.headroom:a.index-b.index),j.map(a=>a.candidate)}catch(d){return c.warn?.({err:d?.message,comboName:b},"headroom ordering failed — keeping target order"),a}}let dB={light:1,standard:2,heavy:3,critical:4},dC={light:35,standard:65,heavy:95,critical:120},dD=/\b(hi|hello|thanks|thank you|ping|format|rewrite|grammar|translate|summari[sz]e|short|quick|one[- ]?liner|explain briefly)\b/i,dE=/\b(debug|root cause|architecture|architectural|refactor|migrate|implementation|implement|design|analy[sz]e|investigate|compare|benchmark|whitebox|codebase|end[- ]?to[- ]?end|e2e)\b/i,dF=/\b(critical|security|vulnerability|exploit|rce|remote code execution|supply chain|account takeover|auth bypass|privilege escalation|tenant|cross[- ]tenant|sandbox escape|ssrf|deserialization|prod incident|data exfiltration|bug bounty)\b/i;function dG(a,b=[]){if(null==a)return b;if("string"==typeof a||"number"==typeof a||"boolean"==typeof a)return b.push(String(a)),b;if(Array.isArray(a)){for(let c of a)dG(c,b);return b}return"object"!=typeof a||("string"==typeof a.text&&b.push(a.text),"string"==typeof a.input_text&&b.push(a.input_text),"string"==typeof a.output_text&&b.push(a.output_text),"string"==typeof a.content?b.push(a.content):Array.isArray(a.content)&&dG(a.content,b),Array.isArray(a.parts)&&dG(a.parts,b),"string"==typeof a.query&&b.push(a.query),"string"==typeof a.url&&b.push(a.url)),b}function dH(a){var b,c;let d,e,f,g,h,i,j,k,l,m,n,o,p=(d=(c=b=a??{}).contents??c.request?.contents,e=dG([c.system,c.instructions,c.messages,c.input,d,c.query,c.url]).join("\n").length,f=b.contents??b.request?.contents,g=(Array.isArray(b.messages)?b.messages.length:0)+(Array.isArray(b.input)?b.input.length:0)+(Array.isArray(b.contents)?b.contents.length:0)+(Array.isArray(f)?f.length:0),h=Array.isArray(b?.tools)?b.tools.length:0,i=b.generationConfig,k=(j=[b.max_tokens,b.max_output_tokens,b.max_completion_tokens,i?.maxOutputTokens].map(a=>Number.parseInt(String(a??""),10)).filter(a=>Number.isFinite(a))).length>0?Math.max(...j):0,l=b?.reasoning,m=String(b?.reasoning_effort??l?.effort??"").toLowerCase(),n=b?.contents??b?.request?.contents,o=dG([b?.system,b?.instructions,b?.messages,b?.input,n,b?.query,b?.url]).join("\n"),{promptChars:e,messageCount:g,toolCount:h,outputTokens:k,effort:m,hasExplicitReasoning:!!(m&&"none"!==m&&"off"!==m&&"disabled"!==m),lightKeyword:dD.test(o),heavyKeyword:dE.test(o),criticalKeyword:dF.test(o)}),q=[],r=(a,b)=>(a&&q.push(b),a),s=/^(high|xhigh|max|maximum|hard|deep)$/.test(p.effort),t=!p.hasExplicitReasoning||/^(low|minimal|none|off|disabled)$/.test(p.effort);return r(p.promptChars>=1e5,"huge-context")||r(p.outputTokens>=32768,"huge-output")||r(p.toolCount>=8&&p.promptChars>=16e3,"many-tools-large-context")||r(p.criticalKeyword&&(s||p.toolCount>=3||p.promptChars>=8e3),"critical-domain")?{level:"critical",weight:dB.critical,...p,reasons:q}:[r(p.promptChars>=5e4,"large-context"),r(p.promptChars>=24e3,"medium-large-context"),r(p.messageCount>=16,"long-conversation"),r(p.toolCount>=4,"many-tools"),r(p.outputTokens>=8192,"large-output"),r(s,"high-reasoning-effort"),r(p.criticalKeyword,"security-sensitive"),r(p.heavyKeyword&&p.promptChars>=4e3,"complex-task")].filter(Boolean).length>=2||p.promptChars>=5e4||s?{level:"heavy",weight:dB.heavy,...p,reasons:q}:p.promptChars<=2e3&&p.messageCount<=3&&0===p.toolCount&&p.outputTokens<=1500&&t&&!p.criticalKeyword&&!p.heavyKeyword||p.lightKeyword&&p.promptChars<=4e3&&0===p.toolCount&&t&&!p.criticalKeyword?{level:"light",weight:dB.light,...p,reasons:q.length>0?q:["small-simple-request"]}:{level:"standard",weight:dB.standard,...p,reasons:q.length>0?q:["default"]}}let dI=new Set(["vision"]);function dJ(a){return String(a??"").replace(/\s+/g," ").trim().slice(0,12e3)}function dK(a,b,c="content"){if(!Array.isArray(a))return"";for(let d of a){if(!d||"object"!=typeof d||!b.has(String(d.role??"")))continue;let a=dJ(dG("parts"===c?d.parts:d.content).join("\n"));if(a)return a}return""}function dL(a,b,c="content"){return Array.isArray(a)?dJ(a.filter(a=>!!a&&"object"==typeof a&&b.has(String(a.role??""))).map(a=>dG("parts"===c?a.parts:a.content).join("\n")).filter(Boolean).join("\n")):""}function dM(a){let b=dJ(a);return b?(0,by.createHash)("sha1").update(b).digest("hex").slice(0,24):null}let dN={"grok-4-fast-non-reasoning":1143,"grok-4-1-fast-non-reasoning":1244,"gemini-2.5-flash":1238,"kimi-k2.5":1646,"gpt-4o-mini":2764,"claude-sonnet-4.6":4e3,"claude-opus-4.6":6e3,"deepseek-chat":2e3};function dO(a){return dN[String(a||"").toLowerCase()]??1500}function dP(a){return Number.isFinite(a)?Math.max(0,Math.min(100,a)):100}function dQ(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a)){let a=Number(d);c&&Number.isFinite(a)&&(b[c]=a)}return b}let dR=new Set(["banned","credits_exhausted","deactivated","expired","rate_limited"]);async function dS(a,b,d=null,e=df(null),f=null){let g=v(b),h=(f??(0,ai.xv)(null))?.quotaPreflight?.enabled===!0,{getPricingForModel:i}=await Promise.resolve().then(c.bind(c,89718)),j=new Map,k={};try{let{getModelLatencyStats:a}=await c.e(4989).then(c.bind(c,47370));k=await a({windowHours:24,minSamples:3,maxRows:1e4})}catch{}let l=Array.from(new Set(a.map(a=>a.provider||(0,af.parseModel)(a.modelStr).provider||"unknown"))),m=new Map,n=new Map,o=new Map;await Promise.all(l.map(async a=>{try{let b=await (0,aR.P)({provider:a,isActive:!0}),c=Array.isArray(b)?b:[];for(let b of(m.set(a,c.length),n.set(a,c),c))b&&"object"==typeof b&&"string"==typeof b.id&&o.set(b.id,b)}catch{m.set(a,0),n.set(a,[])}}));let p=[];for(let b of a){let a=b.provider||(0,af.parseModel)(b.modelStr).provider||"unknown",c=n.get(a)||[];if(b.connectionId){p.push(b);continue}let d=c.map(a=>a&&"object"==typeof a&&"string"==typeof a.id?a.id:null).filter(a=>null!==a),e=Array.isArray(b.allowedConnectionIds)?new Set(b.allowedConnectionIds.filter(a=>"string"==typeof a&&a.trim().length>0)):null,f=e?d.filter(a=>e.has(a)):d;if(0===f.length){p.push(b);continue}for(let a of f)p.push({...b,connectionId:a,executionKey:`${b.executionKey}@${a}`})}return(await Promise.all(p.map(async a=>{let c,l,n,p=a.modelStr,q=(0,af.parseModel)(p),r=a.provider||q.provider||q.providerAlias||"unknown",s=q.model||p,t=k[`${r}/${s}`]||null,u=Number(t?.totalRequests),v=Number.isFinite(u)&&u>=10,w=1;try{let a=await i(r,s),b=Number(a?.input),c=Number(a?.output);Number.isFinite(b)&&b>=0&&(w=Number.isFinite(c)&&c>=0?.6*b+.4*c:b)}catch{}let x=g?.byModel?.[p]||null,y=Number(x?.avgLatencyMs),z=Number(x?.successRate),A=Number(t?.p95LatencyMs),B=Number(t?.latencyStdDev),C=Number(t?.successRate),D=v?Number.isFinite(A)&&A>0?A:dO(s):Number.isFinite(y)&&y>0?y:dO(s),E=v?Number.isFinite(C)&&C>=0&&C<=1?1-C:.05:Number.isFinite(z)&&z>=0&&z<=100?1-z/100:.05,F=v&&Number.isFinite(B)&&B>0?Math.max(10,B):Math.max(10,.1*D),G=(0,ae.qF)(r)?.getStatus?.()?.state,H=(n=(0,bx.bb)(d||null))?a.connectionId===n?1:a.connectionId?.1:.5:.5,I=.5,J=100,K=!1,L=(0,Z.__)(r),M=a.connectionId?o.get(a.connectionId):void 0,N=function(a){var b;if(!a)return;let c="string"==typeof(b=a.testStatus)?b.trim().toLowerCase():"";return dR.has(c)?c:"unavailable"===c&&function(a){if(null==a||""===a)return!1;let b=new Date(String(a)).getTime();return Number.isFinite(b)&&b>Date.now()}(a.rateLimitedUntil)?"rate_limited":void 0}(M),O=h?N:void 0,P=!1;if(O?(K=!0,c=O,J=0):N&&(P=!0,l=N),L&&a.connectionId){let d=`${r}:${a.connectionId}`;j.has(d)||j.set(d,dv({provider:r,connectionId:a.connectionId,connection:M,fetcher:L,config:e,log:{},comboName:b}));let g=await j.get(d);if(I=function(a,b){var c;let d=dl(a,b.windows);if(!Number.isFinite(d))return .5;let e=d-Date.now();return e<=0?1:aC(1-e/((c=b.windows).includes("monthly")?2592e6:c.includes("weekly")?6048e5:18e6))}(g,e),K||(J=function(a){if(!a||"object"!=typeof a)return 100;if(!0===a.limitReached)return 0;let b=a.windows;if(b&&"object"==typeof b&&!Array.isArray(b)){let a=null;for(let c of Object.values(b)){if(!c||"object"!=typeof c)continue;let b=Number(c.percentUsed);if(!Number.isFinite(b))continue;let d=dP((1-b)*100);a=null===a?d:Math.min(a,d)}if(null!==a)return a}let c=Number(a.percentUsed);return Number.isFinite(c)?dP((1-c)*100):100}(g)),!K&&h){let a,b,d,e,h,i=(0,Z.dN)(g,(a=(f??(0,ai.xv)(null))?.quotaPreflight,b=a?.defaultThresholdPercent??2,d=a?.warnThresholdPercent??20,e=dQ(a?.providerWindowDefaults?.[r]),h=dQ(M?.quotaWindowThresholds),{resolveMinRemainingPercent:a=>{if(null!==a){let b,c;for(let d of(b=[a],(c=a.toLowerCase())!==a&&b.push(c),"codex"===r&&((c.includes("session")||"5h"===c||"five_hour"===c)&&b.push("session"),(c.includes("weekly")||"7d"===c||"seven_day"===c)&&b.push("weekly"),(c.includes("monthly")||"30d"===c)&&b.push("monthly")),[...new Set(b)])){let a=h[d];if("number"==typeof a)return a;let b=e[d];if("number"==typeof b)return b}}return b},resolveWarnRemainingPercent:()=>d}));i.proceed||(K=!0,c=i.reason||"quota_exhausted")}}return{stepId:a.stepId,executionKey:a.executionKey,modelStr:p,provider:r,model:s,quotaRemaining:J,quotaTotal:100,circuitBreakerState:"OPEN"===G||"HALF_OPEN"===G?G:"CLOSED",costPer1MTokens:w,p95LatencyMs:D,latencyStdDev:F,errorRate:E,accountTier:"standard",quotaResetIntervalSecs:86400,contextAffinity:H,resetWindowAffinity:I,quotaCutoffBlocked:K,quotaCutoffReason:c,statusPenalty:P,statusPenaltyReason:l,connectionPoolSize:m.get(r)??1,connectionId:a.connectionId??void 0}}))).filter(a=>{let b=null.get(a.provider);return!b?.has(a.model)})}let dT=new Set(["credits_exhausted","banned","expired"]);async function dU(a){try{let b=(0,af.parseModel)(a).provider;if(!b)return!1;let c=(0,ae.qF)(b)?.getStatus?.()?.state,d=await (0,aR.P)({provider:b,isActive:!0});return function(a,b,c,d={}){if("OPEN"===a||!Array.isArray(b)||0===b.length)return!0;let e=d.backoffLevel??Number(process.env.PIN_DROP_BACKOFF_LEVEL||"2"),f=d.graceMs??Number(process.env.PIN_DROP_GRACE_MS||"20000");return!b.some(a=>{let b="string"==typeof a.testStatus?a.testStatus:"";if(dT.has(b)||Number(a.backoffLevel??0)>=e)return!1;let d=a.rateLimitedUntil?new Date(String(a.rateLimitedUntil)).getTime():0;return!Number.isFinite(d)||!(d-c>f)})}(c,d||[],Date.now())}catch{return!1}}async function dV({body:a,combo:b,handleSingleModel:f,isModelAvailable:g,log:h,settings:i,allCombos:j,relayOptions:l,signal:m,apiKeyAllowedConnections:n=null,nesting:o=null,comboName:q,models:s,comboStrategy:u,comboStickyLimit:w}){let y;b||(b={name:q,models:s||[],strategy:u,config:{stickyRoundRobinLimit:w}});let H={body:(aL={body:a,combo:b,settings:i,relayOptions:l,log:h}).body,combo:aL.combo,settings:aL.settings??null,relayOptions:aL.relayOptions??null,log:aL.log},{strategy:I,relayConfig:K,resilienceSettings:O,universalHandoffConfig:P,effectiveSessionId:Q,pinnedModel:R,clientRequestedStream:S,config:U,comboTargetTimeoutMs:Z,reasoningTokenBufferEnabled:$}=function(a){var b,c,d;let e,f,g,h,i,j,k,{combo:l,settings:m,relayOptions:n}=a,o=l.strategy||"priority",p="context-relay"===o?N(n?.config||null):null,q=m?(0,ai.xv)(m):(0,ai.xv)(null),r=(b=l.universal_handoff||l.universalHandoff,c=n?.universalHandoffConfig,e=b??{},f=c??{},g=(a,b)=>"boolean"==typeof e[a]?e[a]:"boolean"==typeof f[a]?f[a]:b,h=(a,b)=>{if("string"==typeof e[a]){let b=e[a].trim();if(b.length>0)return b}if("string"==typeof f[a]){let b=f[a].trim();if(b.length>0)return b}return b},i=(a,b,c,d)=>{let g,h=e[a]??f[a];if("number"==typeof h&&Number.isFinite(h))g=h;else if("string"==typeof h){let a=Number(h);Number.isFinite(a)&&(g=a)}return void 0===g?b:void 0!==c&&g<c?c:void 0!==d&&g>d?d:g},j=h("trigger","on-switch"),{enabled:g("enabled",!0),trigger:"always"===j||"on-error"===j?j:"on-switch",providerAllowlist:Array.isArray(k=e[d="providerAllowlist"]??f[d])?k.map(a=>"string"==typeof a?a.trim().toLowerCase():"").filter(Boolean):L,maxMessagesForSummary:i("maxMessagesForSummary",30,5,100),handoffModel:h("handoffModel",""),ttlMinutes:i("ttlMinutes",300,1,10080),preserveSystemPrompt:g("preserveSystemPrompt",!0)}),{effectiveSessionId:s,pinnedModel:t}=function(a){let{combo:b,relayOptions:c,log:d}=a,e=b.context_cache_protection?c?.sessionId??function(a){try{return(0,am.Tn)(a)??null}catch{return null}}(a.body):null,f=null;if(b.context_cache_protection&&e&&!a.body?.[M]){let c=E(e,b.name);c&&(a.body={...a.body,model:c},f=c,d.info("COMBO",`[#401] Context cache: pinned model=${c} (server-side)`))}return{effectiveSessionId:e,pinnedModel:f}}(a),{body:u}=function(a,b){var c;if(!b)return{body:a,pinnedModel:null};let d=Array.isArray(a.messages)?[...a.messages]:[],e=null;e=null,b.system_message&&b.system_message.trim()&&(c=d,d=[{role:"system",content:b.system_message},...c.filter(a=>"system"!==a.role)]);let f=function(a,b){let c;if(!a||!b)return a;try{c=new RegExp(b)}catch{return console.warn(`[ComboAgent] Invalid tool_filter_regex: "${b}"`),a}return a.filter(a=>{let b=a.function?.name??a.name??"";return c.test(String(b))})}(a.tools,b.tool_filter_regex);return d=d.map(a=>"string"==typeof a.content&&ag.test(a.content)?{...a,content:a.content.replace(ah,"").trimEnd()}:a),{body:{...a,messages:d,...f!==a.tools&&{tools:f}},pinnedModel:e}}(a.body,l);a.body=u;let v=a.body?.stream===!0,w=m?C(l,m):{...x,...l?.config||{}},y=function(a,b,c=0){let d=A(b),e=z(a)?A(a.targetTimeoutMs):0;if(e>0)return d<=0?e:Math.min(e,d);let f=A(c);return d<=0||f<=0?d:Math.min(f,d)}(w,aj.MT,12e4),B=!1!==w.reasoningTokenBufferEnabled;return{strategy:o,relayConfig:p,resilienceSettings:q,universalHandoffConfig:r,effectiveSessionId:s,pinnedModel:t,clientRequestedStream:v,config:w,comboTargetTimeoutMs:y,reasoningTokenBufferEnabled:B}}(H);a=H.body;let _=async(a,b,c)=>{let d;if(Z<=0)return f(a,b,c).catch(a=>(0,e.yj)(502,a?.message??"Upstream model error"));let g=new AbortController,i=!1,j=new Promise(a=>{d=setTimeout(()=>{i=!0,h.warn("COMBO",`Model ${b} exceeded ${Z}ms timeout — falling back`),g.abort(Error("combo-per-model-timeout")),a(new Response(JSON.stringify({error:{message:`Model ${b} timed out`}}),{status:524,headers:{"Content-Type":"application/json"}}))},Z)}),k={...c??{},modelAbortSignal:g.signal},l=c?.modelAbortSignal??null,m=null;l&&(l.aborted?g.abort(Error("hedge-cancelled")):(m=()=>{g.abort(Error("hedge-cancelled"))},l.addEventListener("abort",m,{once:!0})));try{return await Promise.race([f(a,b,k).catch(a=>i?new Response(null,{status:599}):(0,e.yj)(502,a?.message??"Upstream model error")),j])}finally{clearTimeout(d),l&&m&&l.removeEventListener("abort",m)}};if(R){let c=!(Array.isArray(j)?j.length>0:!!j)||c3(b,j,bM(U.maxComboDepth)).some(a=>a.modelStr===R),d=!!c&&await dU(R);return c&&!d?h.info("COMBO",`Bypassing strategy — routing directly to pinned context model: ${R}`):h.warn("COMBO",c?`Context-cache pin "${R}" provider durably unhealthy — dropping pin, using strategy`:`Stale context-cache pin "${R}" not in combo "${b.name}" targets — dropping pin, using strategy`),_(a,R)}if("fusion"===I){let c=(b.models||[]).map(a=>"string"==typeof a?a:a&&"object"==typeof a&&"string"==typeof a.model?a.model:null).filter(a=>!!a),d="string"==typeof U.judgeModel?U.judgeModel:void 0,e=U.fusionTuning&&"object"==typeof U.fusionTuning?U.fusionTuning:void 0;return cy({body:a,models:c,handleSingleModel:_,log:h,comboName:b.name,judgeModel:d,tuning:e})}let aa=o||{depth:0,maxDepth:bM(U.maxComboDepth),visitedComboNames:[b.name],rootComboName:b.name,attemptBudget:{count:0,limit:30}},ab="execute"==("execute"===U.nestedComboMode?"execute":"flatten")&&j?function(a,b,c,d=3){return"flatten"!==c&&b?(!function a(b,c,d=new Set,e=0,f=3){if(e>f)throw Error(`Max combo nesting depth (${f}) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let g=cU(c),h=g.find(a=>a.name===b);if(h?.models)for(let b of h.models){let c=cP(b).model;g.find(a=>a.name===c)&&a(c,g,new Set(d),e+1,f)}}(a.name,b,new Set,0,d),cX(a,b)):c3(a,b,d)}(b,j,"execute",aa.maxDepth):[],ac=ab.some(a=>"combo-ref"===a.kind),ad=new Set(["priority","round-robin","random","strict-random","weighted","fill-first"]);if(ac&&ad.has(I)){let c=ab,d=I;if("weighted"===I){let a=cj(U.stickyWeightedLimit),e=cm(b.name,a),f=e?c.find(a=>a.executionKey===e):null;f&&(c=[f,...c.filter(a=>a.executionKey!==f.executionKey)],d="priority")}if("random"===I&&([...c],c=void 0),"strict-random"===I){let a=await (b.name,c.map(a=>a.executionKey),null),d=c.find(b=>b.executionKey===a)||c[0];c=[d,...c.filter(a=>a.executionKey!==d.executionKey)]}let e=null,k=c;if("round-robin"===I){let a=U.stickyRoundRobinLimit;e=cj(null!=a?a:i?.stickyRoundRobinLimit);let{startIndex:d,counter:f}=ck(b.name,c,e);e<=1&&cg.set(b.name,f+1),c=c.map((a,b)=>c[(d+b)%c.length]),k=ab}let o=await cE({body:a,combo:b,strategy:d,effectiveComboStrategy:I,units:c,handleSingleModel:_,isModelAvailable:g,log:h,config:U,settings:i,allCombos:j,signal:m,nesting:aa,baseOptions:{body:a,combo:b,handleSingleModel:f,isModelAvailable:g,log:h,settings:i,allCombos:j,relayOptions:l,signal:m,apiKeyAllowedConnections:n},runCombo:dV});if("weighted"===I&&o.response.ok&&o.unit){let a=cj(U.stickyWeightedLimit);a>1&&cn(b.name,o.unit.executionKey,a)}return"round-robin"===I&&o.response.ok&&o.unit&&e&&e>1&&cl(b.name,o.unit,e,k),o.response}if("round-robin"===I)return dW({body:a,combo:b,handleSingleModel:_,isModelAvailable:g,log:h,settings:i,allCombos:j,signal:m});let at=U.maxRetries??1,au=bN(U.retryDelayMs,2e3),av=bN(U.fallbackDelayMs,0),aw=U.maxSetRetries??0,ax=bN(U.setRetryDelayMs,2e3),ay=async a=>{let b=(0,af.parseModel)(a.modelStr).model||a.modelStr;return!(a.provider&&"OPEN"===(0,ae.qF)(a.provider).getStatus().state||O.providerCooldown.enabled&&a.provider&&"unknown"!==a.provider&&cb(a.provider,a.connectionId??void 0,O)||a.provider&&b&&(0,d.qw)(a.provider,a.connectionId||"",b))&&(!g||await g(a.modelStr,a))},az=await cK(b),aB=j?Array.isArray(j)?await cL(j):{...j,combos:await cL(j.combos||[])}:j,aD=cj(U.stickyWeightedLimit);if("weighted"===I&&!ci.has(b.name)&&ci.size>=500){let a=ci.keys().next().value;void 0!==a&&ci.delete(a)}let aE=new Set;if("weighted"===I)for(let a of y=c4(az,aB))(await Promise.all(a.targets.map(ay))).some(Boolean)&&aE.add(a.step.executionKey);let aF="weighted"===I?cm(b.name,aD):null,aG=aF&&aE.has(aF)?aF:null;"weighted"!==I||aD<=1?ci.delete(b.name):aF&&!aG&&ci.delete(b.name);let aH="weighted"===I?function(a,b,c=null,d=null,e){let f=cX(a,b).filter(a=>!d||d.has(a.executionKey));if(0===f.length)return{orderedTargets:[],selectedStep:null,orderedSteps:[]};let g=c&&f.find(a=>a.executionKey===c)||function(a){if(0===a.length)return null;let b=a.reduce((a,b)=>a+(b.weight||0),0);if(b<=0)return a[void a.length];let c=(void 0)*b;for(let b of a)if((c-=b.weight||0)<=0)return b;return a.at(-1)}(f);if(!g)return{orderedTargets:[],selectedStep:null,orderedSteps:[]};let h=function(a,b,c=!1){let d=a.find(a=>a.executionKey===b),e=a.filter(a=>a.executionKey!==b);return c||e.sort((a,b)=>b.weight-a.weight),d?[d,...e]:e}(f,g.executionKey,cW(a).length>0),i=new Map((e||c4(a,b)).map(a=>[a.step.executionKey,a.targets]));return{orderedTargets:al(h.flatMap(a=>i.get(a.executionKey)||[])),selectedStep:g,orderedSteps:h}}(az,aB,aG,aE,y):null,aI=a=>{if(!aH?.orderedSteps)return null;let b=aH.orderedSteps.find(b=>a.executionKey===b.executionKey||a.executionKey.startsWith(b.executionKey+">"));return b?.executionKey||null},aJ="weighted"===I?aH?.orderedTargets||[]:c3(az,aB,bM(U.maxComboDepth));if(aJ=await aY(aJ,a,h),"weighted"===I?h.info("COMBO",`Weighted selection${aG?" (sticky)":""}${j?" with nested resolution":""}: ${aJ.length} total targets`):j&&h.info("COMBO",`${I} with nested resolution: ${aJ.length} total targets`),"auto"===I){let c=function(a){if("string"!=typeof a||!a.startsWith("auto"))return{valid:!1,error:"Not an auto-prefixed model"};let b=a.split("/");if(1===b.length)if("auto"===b[0])return{valid:!0,variant:void 0};else return{valid:!1,error:"Invalid auto prefix format"};if(2===b.length){if("auto"!==b[0])return{valid:!1,error:"Invalid auto prefix format"};let a=b[1];return""===a||bq.includes(a)?{valid:!0,variant:""===a?void 0:a}:{valid:!1,error:`Invalid auto variant: ${a}`}}return{valid:!1,error:"Invalid auto prefix format"}}(b.name);if("smart"===(c.valid?c.variant:void 0)||U.pipeline_enabled)try{let c=await bv({body:a,combo:b,handleChatCore:_,log:{info:h.info,warn:h.warn,error:h.error??h.warn},settings:i??{},signal:m??void 0});return c instanceof Response?c:function(a,b){let c="string"==typeof b.model&&b.model.length>0?b.model:"auto",d=`chatcmpl-pipeline-${Date.now()}`,e=Math.floor(Date.now()/1e3),f=a.text??"";if(!0!==b.stream)return new Response(JSON.stringify({id:d,object:"chat.completion",created:e,model:c,choices:[{index:0,message:{role:"assistant",content:f},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});let g=(a,b)=>`data: ${JSON.stringify({id:d,object:"chat.completion.chunk",created:e,model:c,choices:[{index:0,delta:a,finish_reason:b}]})}
18
18
 
19
- `;return new Response(g({role:"assistant",content:f},null)+g({},"stop")+"data: [DONE]\n\n",{status:200,headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache",Connection:"keep-alive"}})}(c,a)}catch(b){let a=b instanceof Error?b.message:"";"PIPELINE_DISABLED"===a?h.info("COMBO","Pipeline disabled, falling through to standard auto routing"):"PIPELINE_TOKEN_THRESHOLD"===a?h.info("COMBO","Pipeline skipped (prompt below token threshold), falling through to standard auto routing"):h.warn("COMBO","Pipeline dispatch failed, falling through to standard auto routing",{err:b})}}let aK=!1;if("auto"===I){var aL,aM,aR;let d,f,g,j,m,n=Array.isArray(a?.tools)&&a.tools.length>0,o=[...aJ];if(n){let a=o.filter(a=>(0,bw.P5)(a.modelStr));a.length>0?o=a:h.warn("COMBO","Auto strategy: all candidates filtered by tool-calling policy, falling back to full pool")}let q=a.messages,s=(0,G.estimateTokens)("string"==typeof q||null!==q&&"object"==typeof q?q:[]);if(s>0){let a=o.filter(a=>{let b=cY(a.modelStr);return null==b||b>=s});a.length>0?(h.debug?.("COMBO",`Auto strategy: context-window filter kept ${a.length}/${o.length} candidates (est. ${s} tokens)`),o=a):h.warn("COMBO",`Auto strategy: all candidates filtered by context-window policy (est. ${s} tokens), falling back to full pool`),o=await aZ(o,b)}let t=function(a){if(!a||"object"!=typeof a)return"";let b=Array.isArray(a.messages)?[...a.messages].reverse().find(a=>ak(a)&&"user"===a.role):null;if(ak(b)){var c;return"string"==typeof(c=b.content)?c:Array.isArray(c)?c.map(a=>ak(a)&&"string"==typeof a.text?a.text:"").join("\n"):""}if("string"==typeof a.input)return a.input;if(Array.isArray(a.input)){let b=a.input.map(a=>ak(a)?"string"==typeof a.content?a.content:"string"==typeof a.text?a.text:"":"").filter(Boolean).join("\n");if(b)return b}return"string"==typeof a.prompt?a.prompt:""}(a),u="string"==typeof b?.system_message?b.system_message:void 0,v=function(a,b,c){if(!b.enabled)return"medium";let d=`${c??""} ${a}`.toLowerCase(),e=a.trim().split(/\s+/).length,f=b.simpleMaxWords??60,g=[...an,...b.extraCodeKeywords??[]],h=[...ap,...b.extraMathKeywords??[]],i=[...ao,...b.extraReasoningKeywords??[]],j=[...aq,...b.extraCreativeKeywords??[]],k=[...ar,...b.extraSimpleKeywords??[]];for(let a of g)if(d.includes(a.toLowerCase()))return"code";for(let a of h)if(d.includes(a.toLowerCase()))return"math";for(let a of i)if(d.includes(a.toLowerCase()))return"reasoning";for(let a of j)if(d.includes(a.toLowerCase()))return"creative";if(e<f){for(let a of k)if(d.includes(a.toLowerCase()))return"simple"}return"medium"}(t,(aM=b,f=i||{},g=aM?.autoConfig||{},j=ak(aM?.config?.auto)?aM.config.auto:{},m=ak(g.intentConfig)&&g.intentConfig||ak(j.intentConfig)&&j.intentConfig||ak(aM?.config?.intentConfig)&&aM.config.intentConfig||{},{...as,...m,..."boolean"==typeof f.intentDetectionEnabled?{enabled:f.intentDetectionEnabled}:{},...Number.isFinite(Number(f.intentSimpleMaxWords))?{simpleMaxWords:Number(f.intentSimpleMaxWords)}:{},...aX(f.intentExtraCodeKeywords).length>0?{extraCodeKeywords:aX(f.intentExtraCodeKeywords)}:{},...aX(f.intentExtraReasoningKeywords).length>0?{extraReasoningKeywords:aX(f.intentExtraReasoningKeywords)}:{},...aX(f.intentExtraSimpleKeywords).length>0?{extraSimpleKeywords:aX(f.intentExtraSimpleKeywords)}:{}}),u);!function(a,b){!p.has(a)&&p.size>=500&&r(p,{deletePairedShadow:!0}),p.has(a)||p.set(a,k("priority"));let c=p.get(a);if(!c)return;let d=String(b||"unknown");c.intentCounts[d]=(c.intentCounts[d]||0)+1}(b.name,v);let w=function(a){switch(a){case"code":return"coding";case"reasoning":return"analysis";default:return"default"}}(v),x=b?.autoConfig||(ak(b?.config?.auto)?b.config.auto:null)||b?.config||{},y=ak(x)?x:{},z="string"==typeof y.routerStrategy?y.routerStrategy:"string"==typeof y.routingStrategy?y.routingStrategy:"string"==typeof y.strategyName?y.strategyName:"rules",A=Array.isArray(y.candidatePool)?y.candidatePool:[...new Set(o.map(a=>a.provider))],B=y.weights&&"object"==typeof y.weights?y.weights:aN,C=Number.isFinite(Number(y.explorationRate))?Number(y.explorationRate):.05,D=Number.isFinite(Number(y.budgetCap))?Number(y.budgetCap):void 0,E="string"==typeof y.modePack?y.modePack:void 0,F=dc(y),H=function(a){if(!a)return;let b=ak(a.sla)?a.sla:{},c=c8(a.slaTargetP95Ms??b.targetP95Ms),d=c8(a.slaMaxErrorRate??b.maxErrorRate),e=c8(a.slaMaxCostPer1MTokens??b.maxCostPer1MTokens),f=a.slaHardConstraints??b.hardConstraints,g={};return null!==c&&c>0&&(g.targetP95Ms=c),null!==d&&d>=0&&(g.maxErrorRate=aC(d)),null!==e&&e>0&&(g.maxCostPer1MTokens=e),"boolean"==typeof f&&(g.hardConstraints=f),Object.keys(g).length>0?g:void 0}(y);try{let{getLKGP:a}=await Promise.resolve().then(c.bind(c,89718)),e=await a(b.name,b.id||b.name);e&&(d=e.provider)}catch(a){h.warn("COMBO","Failed to retrieve Last Known Good Provider. This is non-fatal.",{err:a})}let I=l?.bypassProviderQuotaPolicy===!0?{...O,quotaPreflight:{...O.quotaPreflight,enabled:!1}}:O,J=await dP(o,b.name,l?.sessionId,F,I),K=J.filter(a=>!0!==a.quotaCutoffBlocked),L=J.length-K.length;for(let a of(L>0&&h.info("COMBO",`Auto strategy: quota cutoff skipped ${L}/${J.length} account candidates`),K)){if(!a.executionKey)continue;let b=aV.get(a.executionKey);b||(b=new Map,aV.set(a.executionKey,b)),b.set(a.stepId,a)}if(J.length>0&&0===K.length)return(0,e.wO)(429,"All auto strategy candidates are below configured quota cutoffs");if(K.length>0){let c,f,g=null,i=null,j="";if("rules"!==z)try{let a=function(a,b,c="rules"){return bp(c).select(a,b)}(K,{taskType:w,requestHasTools:n,lastKnownGoodProvider:d,estimatedInputTokens:s,sla:H},z);g=a.provider,i=a.model,j=a.reason,aK=!0}catch(a){h.warn("COMBO",`Auto strategy '${z}' failed (${a?.message||"unknown"}), falling back to rules`)}if(!g||!i){let a=function(a,b,c="default"){let d,e=(a2||(a2=new a1),a2),f=a.weights;if(a.modePack){let b=a0[a.modePack];b&&(f=b)}.01>Math.abs(Object.values(f).reduce((a,b)=>a+b,0)-1)||(f=aN);let g=[],h=b.filter(b=>(!(a.candidatePool.length>0)||!!a.candidatePool.includes(b.provider))&&(!e.evaluate(b.provider,.5,b.circuitBreakerState).excluded||(g.push(b.provider),!1)));0===h.length&&(h.push(...b),g.length=0);let i=aQ(h,c,f,aA),j=i.filter(a=>!e.evaluate(a.provider,a.score,"CLOSED").excluded||(g.push(a.provider),!1)),k=j.length>0?j:i,l=Math.random()<(e.isInIncidentMode()?0:a.explorationRate)&&k.length>1;if(l){let a=Math.floor(Math.random()*k.length);d=k[a]}else d=a6(a.name).pick(k);if(a.budgetCap){let c=new Map;for(let a of b)c.set(`${a.provider}\0${a.model}`,a.costPer1MTokens);let e=a=>(c.get(`${a.provider}\0${a.model}`)??0)/1e6*1e3;if(e(d)>a.budgetCap){let b=k.filter(b=>e(b)<=a.budgetCap);if(b.length>0)d=a6(`${a.name}#budget`).pick(b);else{let a=[...k].sort((a,b)=>e(a)-e(b))[0];a&&(d=a)}}}return{provider:d.provider,model:d.model,score:d.score,isExploration:l,factors:d.factors,excluded:g,connectionId:d.connectionId}}({id:b.id||b.name,name:b.name,type:"auto",candidatePool:A,weights:B,modePack:E,budgetCap:D,explorationRate:C},K,w);g=a.provider,i=a.model,j=`score=${a.score.toFixed(3)}${a.isExploration?" (exploration)":""}`}let k=!0===U.complexityAwareRouting?function(a,b,c){try{let d,e,f,g,h={messages:Array.isArray(b?.messages)?b.messages:[],tools:Array.isArray(b?.tools)?b.tools:void 0,model:"string"==typeof b?.model?b.model:void 0},i=b4(a,h),j=(d=b1(h),e=b2(d.score),f=Array.isArray(h.tools)&&h.tools.length>0||d.breakdown.toolCalling>0,g=b3(e),f&&(g=b6(g,"cheap")),{score:d.score,level:e,recommendedTier:g,hasToolUse:f,signals:d.rulesTriggered});return i.recommendedMinTier=b6(i.recommendedMinTier,j.recommendedTier),c.info("COMBO",`Complexity-aware routing: level=${j.level} score=${j.score} minTier=${i.recommendedMinTier} tools=${j.hasToolUse}`),i}catch{return null}}(o.filter(a=>"model"===a.kind),a,h):null,l=(c=new Map((aR=o).map(a=>[a.executionKey,a])),(f=K.filter(a=>!0!==a.quotaCutoffBlocked)).map(a=>{let b=c.get(a.executionKey)||aR.find(b=>b.stepId===a.stepId||b.provider===a.provider&&b.modelStr===a.modelStr);if(!b)return null;let d={...b,stepId:a.stepId,executionKey:a.executionKey,modelStr:a.modelStr,provider:a.provider,connectionId:a.connectionId??b.connectionId},e=aO(aP(a,f,w??"general",aA,k??void 0),B);return"quotaSoftPenalty"in a&&!0===a.quotaSoftPenalty&&(e*=aT),"statusPenalty"in a&&!0===a.statusPenalty&&(e*=aU),{target:d,score:e}}).filter(a=>null!==a).sort((a,b)=>b.score-a.score)),m=l.map(a=>a.target),p=l.find(a=>{let b=(0,af.parseModel)(a.target.modelStr).model||a.target.modelStr;return a.target.provider===g&&b===i})?.target||m[0]||o[0];if(!p)return(0,e.wO)(429,"No auto strategy targets remained after quota cutoff filtering");aJ=al([p,...m,...o].filter(a=>null!=a)),h.info("COMBO",`Auto selection: ${p?.modelStr||`${g}/${i}`} | intent=${v} task=${w} | strategy=${z} | ${j}`)}else h.warn("COMBO","Auto strategy has no candidates, keeping default ordering")}else if("lkgp"===I)try{let{getLKGP:a}=await Promise.resolve().then(c.bind(c,89718)),d=await a(b.name,b.id||b.name);if(d){let a=d.provider,c=d.connectionId,e=-1;if(c&&(e=aJ.findIndex(b=>b.provider===a&&b.connectionId===c)),e<0&&(e=aJ.findIndex(b=>b.provider===a||"string"==typeof b.modelStr&&b.modelStr.startsWith(`${a}/`))),e>0){let[d]=aJ.splice(e,1);aJ.unshift(d),h.info("COMBO",`[LKGP] Prioritizing last known good provider ${a}${c?` (account ${c})`:""} for combo "${b.name}"`)}else 0===e&&h.debug?.("COMBO",`[LKGP] Last known good provider ${a}${c?` (account ${c})`:""} already first for combo "${b.name}"`)}}catch(a){h.warn("COMBO","Failed to retrieve Last Known Good Provider. This is non-fatal.",{err:a})}else if("strict-random"===I){let a=await (b.name,aJ.map(a=>a.executionKey),null);aJ=[aJ.find(b=>b.executionKey===a)||null,...void aJ.filter(b=>b.executionKey!==a)].filter(a=>null!==a),h.info("COMBO",`Strict-random deck: ${a} selected (${aJ.length} targets)`)}else if("random"===I)[...aJ],aJ=void 0,h.info("COMBO",`Random shuffle: ${aJ.length} targets`);else if("fill-first"===I)h.info("COMBO",`Fill-first ordering: preserving priority order (${aJ.length} targets)`);else if("p2c"===I)aJ=function(a,b){if(a.length<=1)return a;let c=v(b),d=void a.length,e=void a.length;e>=d&&e++;let f=a[d],g=cP(a[e],c)>cP(f,c)?e:d;return[a[g],...a.filter((a,b)=>b!==g)]}(aJ,b.name),h.info("COMBO",`Power-of-two-choices ordering: selected ${aJ[0]?.modelStr}`);else if("least-used"===I)aJ=function(a,b){let c=function(a,b){let c=v(b);if(!c?.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(a.map(a=>a.modelStr),b),d=new Map;for(let b of a){let a=d.get(b.modelStr)||[];a.push(b),d.set(b.modelStr,a)}return c.map(a=>{let b=d.get(a);return b?.shift()||null}).filter(a=>null!==a)}(aJ,b.name),h.info("COMBO",`Least-used ordering: ${aJ[0]?.modelStr} has fewest requests`);else if("cost-optimized"===I){if(aJ=await cO(aJ),!0===U.manifestRouting)try{let b=b4(aJ.filter(a=>"model"===a.kind),{messages:Array.isArray(a?.messages)?a.messages:[],tools:Array.isArray(a?.tools)?a.tools:void 0,model:"string"==typeof a?.model?a.model:void 0});if("require-premium"===b.strategyModifier){let a=aJ.filter(a=>"model"!==a.kind||b.eligibleTargets.some(b=>b.provider===a.provider&&b.modelStr===a.modelStr));a.length>0&&(aJ=a)}h.debug?.({strategyModifier:b.strategyModifier,specificityLevel:b.specificityLevel,score:b.specificity.score},"manifest routing applied")}catch(a){h.warn({err:a},"manifest routing failed, falling back to standard strategy")}h.info("COMBO",`Cost-optimized ordering: cheapest first (${aJ[0]?.modelStr})`)}else if("reset-aware"===I)aJ=await du(aJ,b.name,U,h,n),h.info("COMBO",`Reset-aware ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} first`);else if("reset-window"===I)aJ=await dv(aJ,b.name,U,h,n),h.info("COMBO",`Reset-window ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} first`);else if("context-optimized"===I)aJ=function(a){let b;if(!a.some(a=>null!=cY(a.modelStr)))return a;let c=((b=a.map(a=>a.modelStr).map(a=>({modelStr:a,context:cY(a)??0}))).sort((a,b)=>b.context-a.context),b.map(a=>a.modelStr)),d=new Map;for(let b of a){let a=d.get(b.modelStr)||[];a.push(b),d.set(b.modelStr,a)}return c.map(a=>{let b=d.get(a);return b?.shift()||null}).filter(a=>null!==a)}(aJ),h.info("COMBO",`Context-optimized ordering: largest first (${aJ[0]?.modelStr})`);else if("headroom"===I)aJ=await dx(aJ,b.name,h,n),h.info("COMBO",`Headroom ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} has most free capacity`);else if("quota-share"===I){let c="string"==typeof a?.model?a.model:aJ[0]?.modelStr??"",d=await bT(aJ);aJ=function(a,b,c,d=Date.now(),e){var f,g;let h,i,j,k,l,m;if(0===a.length)return{target:null,orderedTargets:[],decrementInflight:()=>{}};let n=(k=(j=c.indexOf("/"))>=0?c.slice(j+1):c,(l=a.filter(a=>""===(a.connectionId??"")||!0)).length>0?l:a),o=a.filter(a=>!n.includes(a)),{withRoom:p,atCap:q}=function(a,b,c){if(!b||0===b.size)return{withRoom:a,atCap:[]};let d=[],e=[];for(let f of a){let a=f.connectionId??"",g=function(a,b){if(!a||!b)return null;let c=b.get(a);return"number"!=typeof c||!Number.isFinite(c)||c<=0?null:c}(a,b);if(null===g){d.push(f);continue}bG(a,c)>=g?e.push(f):d.push(f)}return 0===d.length?{withRoom:a,atCap:[]}:{withRoom:d,atCap:e}}(n,e?.maxConcurrentByConnection,d),r=function(a,b){if(a.length<=1)return a.slice();let c=function(a){let b=bH.get(a);if(!b){if(bH.size>=200){let a=bH.keys().next().value;void 0!==a&&bH.delete(a)}b=new Map,bH.set(a,b)}return b}(b),d=a.reduce((a,b)=>a+bI(b.weight),0);for(let b of a){let a=bI(b.weight)/d;c.set(b.executionKey,(c.get(b.executionKey)??0)+a)}let e=a[0],f=c.get(e.executionKey)??0;for(let b=1;b<a.length;b++){let d=c.get(a[b].executionKey)??0;d>f&&(f=d,e=a[b])}c.set(e.executionKey,f-1);let g=a.filter(a=>a.executionKey!==e.executionKey);return[e,...g]}(p,b);r.length>=2&&1==(f=r[0],g=r[1],m=bG(f.connectionId??"",d),+(bG(g.connectionId??"",d)<m))?(h=r[1],i=[r[0],...r.slice(2)]):(h=r[0],i=r.slice(1));let s=h.connectionId??"";s&&function(a,b=12e4,c=Date.now()){if(!a)return;var d=c;for(let[a,b]of bF)b.expiresAtMs<=d&&bF.delete(a);let e=bF.get(a),f=(e&&e.expiresAtMs>c?e.count:0)+1;bF.set(a,{count:f,expiresAtMs:c+b})}(s,void 0,d);let t=[h,...i,...q,...o],u=!1;return{target:h,orderedTargets:t,decrementInflight:()=>{!u&&(u=!0,s&&function(a,b=Date.now()){if(!a)return;let c=bF.get(a);if(!c||c.expiresAtMs<=b)return bF.delete(a);let d=Math.max(0,c.count-1);0===d?bF.delete(a):bF.set(a,{count:d,expiresAtMs:c.expiresAtMs})}(s,d))}}}(aJ,b.name,c,Date.now(),{maxConcurrentByConnection:d}).orderedTargets,h.info("COMBO",`Quota-share ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} selected (DRR+P2C)`)}let aS=await bE(aJ,a.messages);if(aJ=c_(aJ=b$(aJ=aS.targets,U.evalRouting,h),a,h),["smart","task","task-aware","task_aware","auto"].includes(String(I??"").toLowerCase())){let b=dE(a),c=function(a){if(!a||"object"!=typeof a)return null;let b=a.metadata,c=[a.conversation_id,a.conversationId,a.thread_id,a.threadId,a.session_id,a.sessionId,b?.conversation_id,b?.conversationId,b?.thread_id,b?.threadId,b?.session_id,b?.sessionId].find(a=>null!=a&&String(a).trim());if(null!=c)return dJ(`explicit:${String(c).trim()}`);let d=new Set(["system","developer"]),e=new Set(["user"]),f=a.contents??a.request?.contents;return dJ([dD(a.system).join("\n"),dD(a.instructions).join("\n"),dI(a.messages??[],d),dI(a.input??[],d),dI(f??[],d,"parts"),dH(a.messages??[],e),"string"==typeof a.input?a.input:dH(a.input??[],e),dH(f??[],e,"parts"),a.query,a.url].filter(Boolean).join("\n"))}(a),d=function(a,b=dE({}),c=new Set){if(!Array.isArray(a)||a.length<=1)return a;let d=a.map((a,d)=>({t:a,i:d,score:function(a,b=dE({}),c=new Set){let d,e,f,g,h,i=(0,bw.w8)(a),j=dz[b.level],k=(d=`${a??""}`.toLowerCase(),e=(0,bw.w8)(a),f=35,e.reasoning&&(f+=18),!0===e.supportsVision&&(f+=3),e.toolCalling&&(f+=3),(g=e.contextWindow??0)>=1e6?f+=22:g>=4e5?f+=15:g>=2e5?f+=9:g>0&&g<=32e3&&(f-=10),(h=e.maxOutputTokens??0)>=128e3?f+=12:h>=64e3?f+=8:h>0&&h<=8192&&(f-=8),/\b(opus|mythos|gpt-5|o3|o4|pro|max|ultra|deepseek-v4-pro|sonnet-4|glm-5|kimi-k2\.7|minimax-m3|reasoner)\b/i.test(d)&&(f+=28),/\b(coder|code|coding)\b/i.test(d)&&(f+=8),/\b(haiku|flash|mini|lite|small|nano|instant|fast|turbo|3\.5|8b|7b)\b/i.test(d)&&(f-=24),Math.max(0,Math.min(150,f))),l=100-Math.abs(k-j);for(let a of c)dF.has(a)&&"vision"===a&&!0!==i.supportsVision&&(l-=1e4);(c.has("reasoning")||b.weight>=dy.heavy)&&!i.reasoning&&(l-=120),c.has("search")&&!i.toolCalling&&(l-=30);let m=Math.ceil((b.promptChars??0)/4),n=i.contextWindow??0;n>0&&m>.85*n&&(l-=200);let o=i.maxOutputTokens??0;return o>0&&b.outputTokens>0&&b.outputTokens>o&&(l-=80),"light"===b.level&&k>95&&(l-=35),"standard"===b.level&&k>125&&(l-=10),"heavy"===b.level&&k<65&&(l-=60),"critical"===b.level&&k<85&&(l-=100),l}(a.modelStr,b,c)})).sort((a,b)=>b.score-a.score||a.i-b.i).map(a=>a.t);return d.every((b,c)=>b===a[c])?a:d}(aJ,b),e=aK?aJ[0]:void 0,f=e?[e,...d.filter(a=>a!==e)]:d;if(f[0]?.modelStr!==aJ[0]?.modelStr){let a=Array.isArray(b.reasons)&&b.reasons.length>0?` (${b.reasons.join(",")})`:"";h.info("COMBO",`task-route task=${b.level}${a} cacheKey=${c??"none"} → ${f[0]?.modelStr}`)}aJ=f}let aW="priority"===I?await dt(aJ,g).catch(()=>new Map):new Map;if(0===aJ.length)return bO("Combo has no executable targets");c6(b,U,a,c3(b,U,j),f,g,I,h);let a3=aJ.map(a=>a.executionKey).filter(Boolean),a4=0,a5="quota-share"===I&&O.comboCooldownWait.enabled,a7=0,a8=O.comboCooldownWait.budgetMs,a9="quota-share"===I&&O.quotaShareConcurrencyLimit.enabled,ba=async()=>{for(let f=0;f<=aw;f++){let j=new Set,k=new Set,n=new Set;if(f>0&&(h.info("COMBO",`All targets failed — retrying set (${f}/${aw})`),await new Promise(a=>{let b=setTimeout(a,ax);m?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),m?.aborted))return h.info("COMBO","Client disconnected during set retry delay — aborting"),(0,e.yj)(499,"Client disconnected");let o=null,p=null,q=null,r=Date.now(),s=0,u=0,w=null,x=new Promise(a=>{w=a}),y=new Set,z=!1,A=new Map,B=!0===U.zeroLatencyOptimizationsEnabled,C=async f=>{var w,x,y,z,C,G,H;let L=aJ[f],R=L.modelStr,Z=(0,af.parseModel)(R).model||R,aa=L.provider;if("OPEN"===(0,ae.qF)(aa).getStatus().state)return h.info("COMBO",`Skipping ${R} — circuit breaker OPEN for ${aa}`),f>0&&s++,null;if(O.providerCooldown.enabled&&aa&&"unknown"!==aa&&cb(aa,L.connectionId??void 0,O))return h.info("COMBO",`Skipping ${R} — provider ${aa} in global cooldown`),f>0&&s++,null;let ab=aW.get(L.executionKey),ac=ab?.profile??await (0,d.LN)(aa),ad=aa&&"unknown"!==aa&&n.has(aa)?{...L,allowRateLimitedConnection:!0,modelAbortSignal:A.get(f).signal}:{...L,modelAbortSignal:A.get(f).signal},ag=bL(L,j,k);if(ag)return h.info("COMBO",ag),f>0&&s++,null;if(aa&&Z&&(0,d.qw)(aa,L.connectionId||"",Z))return h.info("COMBO",`Skipping ${R} — model locked by resilience (cooldown active)`),f>0&&s++,null;if(g&&!await g(R,ad))return h.debug?.("COMBO",`Skipping ${R} — no credentials available or model excluded`),f>0&&s++,null;let ah=L.connectionId;if(ah){let a=(G=ah,H=R,{allowed:!1,reason:`Credential gate: ${H} — connection ${G} has known-bad credentials (skipping)`});if(!1===a.allowed)return w=a.reason||"Credential gate blocked",h?.info&&h.info("CREDENTIAL_GATE",w),f>0&&s++,null}for(let g=0;g<=at;g++){if(m?.aborted)return h.info("COMBO",`Client disconnected — aborting combo loop before model ${R}`),{ok:!1,response:(0,e.yj)(499,"Client disconnected")};if(++a4>30)return h.warn("COMBO","Maximum combo attempts (30) exceeded across all targets and fallbacks. Terminating loop to prevent runaway background requests."),{ok:!1,response:(0,e.yj)(503,"Maximum combo retry limit reached")};if(B&&U.predictiveTtftMs&&U.predictiveTtftMs>0&&0===g){let a=v(b.name);if(a){let b=aJ[f].executionKey||R,c=a.byTarget[b]||a.byModel[R];if(x=U.predictiveTtftMs,c&&x>0&&(c.requests??0)>=5&&(c.avgLatencyMs??0)>x){h.warn("COMBO",`Predictive TTFT Circuit Breaker: skipping ${R} (avg ${c.avgLatencyMs}ms > max ${U.predictiveTtftMs}ms)`);break}}}if(g>0&&(h.info("COMBO",`Retrying ${R} in ${au}ms (attempt ${g+1}/${at+1})`),await new Promise(a=>{let b=setTimeout(a,au);m?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),m?.aborted))return h.info("COMBO","Client disconnected during retry delay — aborting"),{ok:!1,response:(0,e.yj)(499,"Client disconnected")};h.info("COMBO",`Trying model ${f+1}/${aJ.length}: ${R}${g>0?` (retry ${g})`:""}`),(0,a$.I)("combo.target.attempt",{comboName:b.name,targetIndex:f,provider:aa,model:R,timestamp:Date.now(),strategy:I});let w=structuredClone(a);if(B&&f>0&&U.fallbackCompressionMode&&"off"!==U.fallbackCompressionMode){let{estimateTokens:a}=await Promise.resolve().then(c.bind(c,14720)),b=a(JSON.stringify(w));if(b>(U.fallbackCompressionThreshold??1e3)){let{applyCompression:a}=await Promise.all([c.e(1041),c.e(4036),c.e(2851)]).then(c.bind(c,14036)),d=a(w,U.fallbackCompressionMode,{model:R,bailout:{enabled:!0,minGainPercent:0}});d.compressed&&(h.info("COMBO",`Proactive fallback compression applied (${U.fallbackCompressionMode}): ${b} -> ${d.stats?.compressedTokens} tokens`),w=d.body)}}if(P.enabled&&l?.sessionId&&!a?.[M]){let a=E(l.sessionId,b.name);a&&a!==R&&(w=function(a,b,c,d,e){let f=function(a,b,c,d){let e=T(a),f=T(b),g=T(c);if(!d||!d.summary)return`<context_handoff>
19
+ `;return new Response(g({role:"assistant",content:f},null)+g({},"stop")+"data: [DONE]\n\n",{status:200,headers:{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache",Connection:"keep-alive"}})}(c,a)}catch(b){let a=b instanceof Error?b.message:"";"PIPELINE_DISABLED"===a?h.info("COMBO","Pipeline disabled, falling through to standard auto routing"):"PIPELINE_TOKEN_THRESHOLD"===a?h.info("COMBO","Pipeline skipped (prompt below token threshold), falling through to standard auto routing"):h.warn("COMBO","Pipeline dispatch failed, falling through to standard auto routing",{err:b})}}let aK=!1;if("auto"===I){var aL,aM,aR;let d,f,g,j,m,n=Array.isArray(a?.tools)&&a.tools.length>0,o=[...aJ];if(n){let a=o.filter(a=>(0,bw.P5)(a.modelStr));a.length>0?o=a:h.warn("COMBO","Auto strategy: all candidates filtered by tool-calling policy, falling back to full pool")}let q=a.messages,s=(0,G.estimateTokens)("string"==typeof q||null!==q&&"object"==typeof q?q:[]);if(s>0){let a=o.filter(a=>{let b=c_(a.modelStr);return null==b||b>=s});a.length>0?(h.debug?.("COMBO",`Auto strategy: context-window filter kept ${a.length}/${o.length} candidates (est. ${s} tokens)`),o=a):h.warn("COMBO",`Auto strategy: all candidates filtered by context-window policy (est. ${s} tokens), falling back to full pool`),o=await aZ(o,b)}let t=function(a){if(!a||"object"!=typeof a)return"";let b=Array.isArray(a.messages)?[...a.messages].reverse().find(a=>ak(a)&&"user"===a.role):null;if(ak(b)){var c;return"string"==typeof(c=b.content)?c:Array.isArray(c)?c.map(a=>ak(a)&&"string"==typeof a.text?a.text:"").join("\n"):""}if("string"==typeof a.input)return a.input;if(Array.isArray(a.input)){let b=a.input.map(a=>ak(a)?"string"==typeof a.content?a.content:"string"==typeof a.text?a.text:"":"").filter(Boolean).join("\n");if(b)return b}return"string"==typeof a.prompt?a.prompt:""}(a),u="string"==typeof b?.system_message?b.system_message:void 0,v=function(a,b,c){if(!b.enabled)return"medium";let d=`${c??""} ${a}`.toLowerCase(),e=a.trim().split(/\s+/).length,f=b.simpleMaxWords??60,g=[...an,...b.extraCodeKeywords??[]],h=[...ap,...b.extraMathKeywords??[]],i=[...ao,...b.extraReasoningKeywords??[]],j=[...aq,...b.extraCreativeKeywords??[]],k=[...ar,...b.extraSimpleKeywords??[]];for(let a of g)if(d.includes(a.toLowerCase()))return"code";for(let a of h)if(d.includes(a.toLowerCase()))return"math";for(let a of i)if(d.includes(a.toLowerCase()))return"reasoning";for(let a of j)if(d.includes(a.toLowerCase()))return"creative";if(e<f){for(let a of k)if(d.includes(a.toLowerCase()))return"simple"}return"medium"}(t,(aM=b,f=i||{},g=aM?.autoConfig||{},j=ak(aM?.config?.auto)?aM.config.auto:{},m=ak(g.intentConfig)&&g.intentConfig||ak(j.intentConfig)&&j.intentConfig||ak(aM?.config?.intentConfig)&&aM.config.intentConfig||{},{...as,...m,..."boolean"==typeof f.intentDetectionEnabled?{enabled:f.intentDetectionEnabled}:{},...Number.isFinite(Number(f.intentSimpleMaxWords))?{simpleMaxWords:Number(f.intentSimpleMaxWords)}:{},...aX(f.intentExtraCodeKeywords).length>0?{extraCodeKeywords:aX(f.intentExtraCodeKeywords)}:{},...aX(f.intentExtraReasoningKeywords).length>0?{extraReasoningKeywords:aX(f.intentExtraReasoningKeywords)}:{},...aX(f.intentExtraSimpleKeywords).length>0?{extraSimpleKeywords:aX(f.intentExtraSimpleKeywords)}:{}}),u);!function(a,b){!p.has(a)&&p.size>=500&&r(p,{deletePairedShadow:!0}),p.has(a)||p.set(a,k("priority"));let c=p.get(a);if(!c)return;let d=String(b||"unknown");c.intentCounts[d]=(c.intentCounts[d]||0)+1}(b.name,v);let w=function(a){switch(a){case"code":return"coding";case"reasoning":return"analysis";default:return"default"}}(v),x=b?.autoConfig||(ak(b?.config?.auto)?b.config.auto:null)||b?.config||{},y=ak(x)?x:{},z="string"==typeof y.routerStrategy?y.routerStrategy:"string"==typeof y.routingStrategy?y.routingStrategy:"string"==typeof y.strategyName?y.strategyName:"rules",A=Array.isArray(y.candidatePool)?y.candidatePool:[...new Set(o.map(a=>a.provider))],B=y.weights&&"object"==typeof y.weights?y.weights:aN,C=Number.isFinite(Number(y.explorationRate))?Number(y.explorationRate):.05,D=Number.isFinite(Number(y.budgetCap))?Number(y.budgetCap):void 0,E="string"==typeof y.modePack?y.modePack:void 0,F=df(y),H=function(a){if(!a)return;let b=ak(a.sla)?a.sla:{},c=db(a.slaTargetP95Ms??b.targetP95Ms),d=db(a.slaMaxErrorRate??b.maxErrorRate),e=db(a.slaMaxCostPer1MTokens??b.maxCostPer1MTokens),f=a.slaHardConstraints??b.hardConstraints,g={};return null!==c&&c>0&&(g.targetP95Ms=c),null!==d&&d>=0&&(g.maxErrorRate=aC(d)),null!==e&&e>0&&(g.maxCostPer1MTokens=e),"boolean"==typeof f&&(g.hardConstraints=f),Object.keys(g).length>0?g:void 0}(y);try{let{getLKGP:a}=await Promise.resolve().then(c.bind(c,89718)),e=await a(b.name,b.id||b.name);e&&(d=e.provider)}catch(a){h.warn("COMBO","Failed to retrieve Last Known Good Provider. This is non-fatal.",{err:a})}let I=l?.bypassProviderQuotaPolicy===!0?{...O,quotaPreflight:{...O.quotaPreflight,enabled:!1}}:O,J=await dS(o,b.name,l?.sessionId,F,I),K=J.filter(a=>!0!==a.quotaCutoffBlocked),L=J.length-K.length;for(let a of(L>0&&h.info("COMBO",`Auto strategy: quota cutoff skipped ${L}/${J.length} account candidates`),K)){if(!a.executionKey)continue;let b=aV.get(a.executionKey);b||(b=new Map,aV.set(a.executionKey,b)),b.set(a.stepId,a)}if(J.length>0&&0===K.length)return(0,e.wO)(429,"All auto strategy candidates are below configured quota cutoffs");if(K.length>0){let c,f,g=null,i=null,j="";if("rules"!==z)try{let a=function(a,b,c="rules"){return bp(c).select(a,b)}(K,{taskType:w,requestHasTools:n,lastKnownGoodProvider:d,estimatedInputTokens:s,sla:H},z);g=a.provider,i=a.model,j=a.reason,aK=!0}catch(a){h.warn("COMBO",`Auto strategy '${z}' failed (${a?.message||"unknown"}), falling back to rules`)}if(!g||!i){let a=function(a,b,c="default"){let d,e=(a2||(a2=new a1),a2),f=a.weights;if(a.modePack){let b=a0[a.modePack];b&&(f=b)}.01>Math.abs(Object.values(f).reduce((a,b)=>a+b,0)-1)||(f=aN);let g=[],h=b.filter(b=>(!(a.candidatePool.length>0)||!!a.candidatePool.includes(b.provider))&&(!e.evaluate(b.provider,.5,b.circuitBreakerState).excluded||(g.push(b.provider),!1)));0===h.length&&(h.push(...b),g.length=0);let i=aQ(h,c,f,aA),j=i.filter(a=>!e.evaluate(a.provider,a.score,"CLOSED").excluded||(g.push(a.provider),!1)),k=j.length>0?j:i,l=Math.random()<(e.isInIncidentMode()?0:a.explorationRate)&&k.length>1;if(l){let a=Math.floor(Math.random()*k.length);d=k[a]}else d=a6(a.name).pick(k);if(a.budgetCap){let c=new Map;for(let a of b)c.set(`${a.provider}\0${a.model}`,a.costPer1MTokens);let e=a=>(c.get(`${a.provider}\0${a.model}`)??0)/1e6*1e3;if(e(d)>a.budgetCap){let b=k.filter(b=>e(b)<=a.budgetCap);if(b.length>0)d=a6(`${a.name}#budget`).pick(b);else{let a=[...k].sort((a,b)=>e(a)-e(b))[0];a&&(d=a)}}}return{provider:d.provider,model:d.model,score:d.score,isExploration:l,factors:d.factors,excluded:g,connectionId:d.connectionId}}({id:b.id||b.name,name:b.name,type:"auto",candidatePool:A,weights:B,modePack:E,budgetCap:D,explorationRate:C},K,w);g=a.provider,i=a.model,j=`score=${a.score.toFixed(3)}${a.isExploration?" (exploration)":""}`}let k=!0===U.complexityAwareRouting?function(a,b,c){try{let d,e,f,g,h={messages:Array.isArray(b?.messages)?b.messages:[],tools:Array.isArray(b?.tools)?b.tools:void 0,model:"string"==typeof b?.model?b.model:void 0},i=b4(a,h),j=(d=b1(h),e=b2(d.score),f=Array.isArray(h.tools)&&h.tools.length>0||d.breakdown.toolCalling>0,g=b3(e),f&&(g=b6(g,"cheap")),{score:d.score,level:e,recommendedTier:g,hasToolUse:f,signals:d.rulesTriggered});return i.recommendedMinTier=b6(i.recommendedMinTier,j.recommendedTier),c.info("COMBO",`Complexity-aware routing: level=${j.level} score=${j.score} minTier=${i.recommendedMinTier} tools=${j.hasToolUse}`),i}catch{return null}}(o.filter(a=>"model"===a.kind),a,h):null,l=(c=new Map((aR=o).map(a=>[a.executionKey,a])),(f=K.filter(a=>!0!==a.quotaCutoffBlocked)).map(a=>{let b=c.get(a.executionKey)||aR.find(b=>b.stepId===a.stepId||b.provider===a.provider&&b.modelStr===a.modelStr);if(!b)return null;let d={...b,stepId:a.stepId,executionKey:a.executionKey,modelStr:a.modelStr,provider:a.provider,connectionId:a.connectionId??b.connectionId},e=aO(aP(a,f,w??"general",aA,k??void 0),B);return"quotaSoftPenalty"in a&&!0===a.quotaSoftPenalty&&(e*=aT),"statusPenalty"in a&&!0===a.statusPenalty&&(e*=aU),{target:d,score:e}}).filter(a=>null!==a).sort((a,b)=>b.score-a.score)),m=l.map(a=>a.target),p=l.find(a=>{let b=(0,af.parseModel)(a.target.modelStr).model||a.target.modelStr;return a.target.provider===g&&b===i})?.target||m[0]||o[0];if(!p)return(0,e.wO)(429,"No auto strategy targets remained after quota cutoff filtering");aJ=al([p,...m,...o].filter(a=>null!=a)),h.info("COMBO",`Auto selection: ${p?.modelStr||`${g}/${i}`} | intent=${v} task=${w} | strategy=${z} | ${j}`)}else h.warn("COMBO","Auto strategy has no candidates, keeping default ordering")}else if("lkgp"===I)try{let{getLKGP:a}=await Promise.resolve().then(c.bind(c,89718)),d=await a(b.name,b.id||b.name);if(d){let a=d.provider,c=d.connectionId,e=-1;if(c&&(e=aJ.findIndex(b=>b.provider===a&&b.connectionId===c)),e<0&&(e=aJ.findIndex(b=>b.provider===a||"string"==typeof b.modelStr&&b.modelStr.startsWith(`${a}/`))),e>0){let[d]=aJ.splice(e,1);aJ.unshift(d),h.info("COMBO",`[LKGP] Prioritizing last known good provider ${a}${c?` (account ${c})`:""} for combo "${b.name}"`)}else 0===e&&h.debug?.("COMBO",`[LKGP] Last known good provider ${a}${c?` (account ${c})`:""} already first for combo "${b.name}"`)}}catch(a){h.warn("COMBO","Failed to retrieve Last Known Good Provider. This is non-fatal.",{err:a})}else if("strict-random"===I){let a=await (b.name,aJ.map(a=>a.executionKey),null);aJ=[aJ.find(b=>b.executionKey===a)||null,...void aJ.filter(b=>b.executionKey!==a)].filter(a=>null!==a),h.info("COMBO",`Strict-random deck: ${a} selected (${aJ.length} targets)`)}else if("random"===I)[...aJ],aJ=void 0,h.info("COMBO",`Random shuffle: ${aJ.length} targets`);else if("fill-first"===I)h.info("COMBO",`Fill-first ordering: preserving priority order (${aJ.length} targets)`);else if("p2c"===I)aJ=function(a,b){if(a.length<=1)return a;let c=v(b),d=void a.length,e=void a.length;e>=d&&e++;let f=a[d],g=cS(a[e],c)>cS(f,c)?e:d;return[a[g],...a.filter((a,b)=>b!==g)]}(aJ,b.name),h.info("COMBO",`Power-of-two-choices ordering: selected ${aJ[0]?.modelStr}`);else if("least-used"===I)aJ=function(a,b){let c=function(a,b){let c=v(b);if(!c?.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(a.map(a=>a.modelStr),b),d=new Map;for(let b of a){let a=d.get(b.modelStr)||[];a.push(b),d.set(b.modelStr,a)}return c.map(a=>{let b=d.get(a);return b?.shift()||null}).filter(a=>null!==a)}(aJ,b.name),h.info("COMBO",`Least-used ordering: ${aJ[0]?.modelStr} has fewest requests`);else if("cost-optimized"===I){if(aJ=await cR(aJ),!0===U.manifestRouting)try{let b=b4(aJ.filter(a=>"model"===a.kind),{messages:Array.isArray(a?.messages)?a.messages:[],tools:Array.isArray(a?.tools)?a.tools:void 0,model:"string"==typeof a?.model?a.model:void 0});if("require-premium"===b.strategyModifier){let a=aJ.filter(a=>"model"!==a.kind||b.eligibleTargets.some(b=>b.provider===a.provider&&b.modelStr===a.modelStr));a.length>0&&(aJ=a)}h.debug?.({strategyModifier:b.strategyModifier,specificityLevel:b.specificityLevel,score:b.specificity.score},"manifest routing applied")}catch(a){h.warn({err:a},"manifest routing failed, falling back to standard strategy")}h.info("COMBO",`Cost-optimized ordering: cheapest first (${aJ[0]?.modelStr})`)}else if("reset-aware"===I)aJ=await dx(aJ,b.name,U,h,n),h.info("COMBO",`Reset-aware ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} first`);else if("reset-window"===I)aJ=await dy(aJ,b.name,U,h,n),h.info("COMBO",`Reset-window ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} first`);else if("context-optimized"===I)aJ=function(a){let b;if(!a.some(a=>null!=c_(a.modelStr)))return a;let c=((b=a.map(a=>a.modelStr).map(a=>({modelStr:a,context:c_(a)??0}))).sort((a,b)=>b.context-a.context),b.map(a=>a.modelStr)),d=new Map;for(let b of a){let a=d.get(b.modelStr)||[];a.push(b),d.set(b.modelStr,a)}return c.map(a=>{let b=d.get(a);return b?.shift()||null}).filter(a=>null!==a)}(aJ),h.info("COMBO",`Context-optimized ordering: largest first (${aJ[0]?.modelStr})`);else if("headroom"===I)aJ=await dA(aJ,b.name,h,n),h.info("COMBO",`Headroom ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} has most free capacity`);else if("quota-share"===I){let c="string"==typeof a?.model?a.model:aJ[0]?.modelStr??"",d=await bT(aJ);aJ=function(a,b,c,d=Date.now(),e){var f,g;let h,i,j,k,l,m;if(0===a.length)return{target:null,orderedTargets:[],decrementInflight:()=>{}};let n=(k=(j=c.indexOf("/"))>=0?c.slice(j+1):c,(l=a.filter(a=>""===(a.connectionId??"")||!0)).length>0?l:a),o=a.filter(a=>!n.includes(a)),{withRoom:p,atCap:q}=function(a,b,c){if(!b||0===b.size)return{withRoom:a,atCap:[]};let d=[],e=[];for(let f of a){let a=f.connectionId??"",g=function(a,b){if(!a||!b)return null;let c=b.get(a);return"number"!=typeof c||!Number.isFinite(c)||c<=0?null:c}(a,b);if(null===g){d.push(f);continue}bG(a,c)>=g?e.push(f):d.push(f)}return 0===d.length?{withRoom:a,atCap:[]}:{withRoom:d,atCap:e}}(n,e?.maxConcurrentByConnection,d),r=function(a,b){if(a.length<=1)return a.slice();let c=function(a){let b=bH.get(a);if(!b){if(bH.size>=200){let a=bH.keys().next().value;void 0!==a&&bH.delete(a)}b=new Map,bH.set(a,b)}return b}(b),d=a.reduce((a,b)=>a+bI(b.weight),0);for(let b of a){let a=bI(b.weight)/d;c.set(b.executionKey,(c.get(b.executionKey)??0)+a)}let e=a[0],f=c.get(e.executionKey)??0;for(let b=1;b<a.length;b++){let d=c.get(a[b].executionKey)??0;d>f&&(f=d,e=a[b])}c.set(e.executionKey,f-1);let g=a.filter(a=>a.executionKey!==e.executionKey);return[e,...g]}(p,b);r.length>=2&&1==(f=r[0],g=r[1],m=bG(f.connectionId??"",d),+(bG(g.connectionId??"",d)<m))?(h=r[1],i=[r[0],...r.slice(2)]):(h=r[0],i=r.slice(1));let s=h.connectionId??"";s&&function(a,b=12e4,c=Date.now()){if(!a)return;var d=c;for(let[a,b]of bF)b.expiresAtMs<=d&&bF.delete(a);let e=bF.get(a),f=(e&&e.expiresAtMs>c?e.count:0)+1;bF.set(a,{count:f,expiresAtMs:c+b})}(s,void 0,d);let t=[h,...i,...q,...o],u=!1;return{target:h,orderedTargets:t,decrementInflight:()=>{!u&&(u=!0,s&&function(a,b=Date.now()){if(!a)return;let c=bF.get(a);if(!c||c.expiresAtMs<=b)return bF.delete(a);let d=Math.max(0,c.count-1);0===d?bF.delete(a):bF.set(a,{count:d,expiresAtMs:c.expiresAtMs})}(s,d))}}}(aJ,b.name,c,Date.now(),{maxConcurrentByConnection:d}).orderedTargets,h.info("COMBO",`Quota-share ordering: ${aJ[0]?.modelStr}${aJ[0]?.connectionId?` (${aJ[0].connectionId})`:""} selected (DRR+P2C)`)}let aS=await bE(aJ,a.messages);if(aJ=c2(aJ=b$(aJ=aS.targets,U.evalRouting,h),a,h),["smart","task","task-aware","task_aware","auto"].includes(String(I??"").toLowerCase())){let b=dH(a),c=function(a){if(!a||"object"!=typeof a)return null;let b=a.metadata,c=[a.conversation_id,a.conversationId,a.thread_id,a.threadId,a.session_id,a.sessionId,b?.conversation_id,b?.conversationId,b?.thread_id,b?.threadId,b?.session_id,b?.sessionId].find(a=>null!=a&&String(a).trim());if(null!=c)return dM(`explicit:${String(c).trim()}`);let d=new Set(["system","developer"]),e=new Set(["user"]),f=a.contents??a.request?.contents;return dM([dG(a.system).join("\n"),dG(a.instructions).join("\n"),dL(a.messages??[],d),dL(a.input??[],d),dL(f??[],d,"parts"),dK(a.messages??[],e),"string"==typeof a.input?a.input:dK(a.input??[],e),dK(f??[],e,"parts"),a.query,a.url].filter(Boolean).join("\n"))}(a),d=function(a,b=dH({}),c=new Set){if(!Array.isArray(a)||a.length<=1)return a;let d=a.map((a,d)=>({t:a,i:d,score:function(a,b=dH({}),c=new Set){let d,e,f,g,h,i=(0,bw.w8)(a),j=dC[b.level],k=(d=`${a??""}`.toLowerCase(),e=(0,bw.w8)(a),f=35,e.reasoning&&(f+=18),!0===e.supportsVision&&(f+=3),e.toolCalling&&(f+=3),(g=e.contextWindow??0)>=1e6?f+=22:g>=4e5?f+=15:g>=2e5?f+=9:g>0&&g<=32e3&&(f-=10),(h=e.maxOutputTokens??0)>=128e3?f+=12:h>=64e3?f+=8:h>0&&h<=8192&&(f-=8),/\b(opus|mythos|gpt-5|o3|o4|pro|max|ultra|deepseek-v4-pro|sonnet-4|glm-5|kimi-k2\.7|minimax-m3|reasoner)\b/i.test(d)&&(f+=28),/\b(coder|code|coding)\b/i.test(d)&&(f+=8),/\b(haiku|flash|mini|lite|small|nano|instant|fast|turbo|3\.5|8b|7b)\b/i.test(d)&&(f-=24),Math.max(0,Math.min(150,f))),l=100-Math.abs(k-j);for(let a of c)dI.has(a)&&"vision"===a&&!0!==i.supportsVision&&(l-=1e4);(c.has("reasoning")||b.weight>=dB.heavy)&&!i.reasoning&&(l-=120),c.has("search")&&!i.toolCalling&&(l-=30);let m=Math.ceil((b.promptChars??0)/4),n=i.contextWindow??0;n>0&&m>.85*n&&(l-=200);let o=i.maxOutputTokens??0;return o>0&&b.outputTokens>0&&b.outputTokens>o&&(l-=80),"light"===b.level&&k>95&&(l-=35),"standard"===b.level&&k>125&&(l-=10),"heavy"===b.level&&k<65&&(l-=60),"critical"===b.level&&k<85&&(l-=100),l}(a.modelStr,b,c)})).sort((a,b)=>b.score-a.score||a.i-b.i).map(a=>a.t);return d.every((b,c)=>b===a[c])?a:d}(aJ,b),e=aK?aJ[0]:void 0,f=e?[e,...d.filter(a=>a!==e)]:d;if(f[0]?.modelStr!==aJ[0]?.modelStr){let a=Array.isArray(b.reasons)&&b.reasons.length>0?` (${b.reasons.join(",")})`:"";h.info("COMBO",`task-route task=${b.level}${a} cacheKey=${c??"none"} → ${f[0]?.modelStr}`)}aJ=f}let aW="priority"===I?await dw(aJ,g).catch(()=>new Map):new Map;if(0===aJ.length)return bO("Combo has no executable targets");c9(b,U,a,c6(b,U,j),f,g,I,h);let a3=aJ.map(a=>a.executionKey).filter(Boolean),a4=0,a5="quota-share"===I&&O.comboCooldownWait.enabled,a7=0,a8=O.comboCooldownWait.budgetMs,a9="quota-share"===I&&O.quotaShareConcurrencyLimit.enabled,ba=async()=>{for(let f=0;f<=aw;f++){let j=new Set,k=new Set,n=new Set;if(f>0&&(h.info("COMBO",`All targets failed — retrying set (${f}/${aw})`),await new Promise(a=>{let b=setTimeout(a,ax);m?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),m?.aborted))return h.info("COMBO","Client disconnected during set retry delay — aborting"),(0,e.yj)(499,"Client disconnected");let o=null,p=null,q=null,r=Date.now(),s=0,u=0,w=null,x=new Promise(a=>{w=a}),y=new Set,z=!1,A=new Map,B=!0===U.zeroLatencyOptimizationsEnabled,C=async f=>{var w,x,y,z,C,G,H;let L=aJ[f],R=L.modelStr,Z=(0,af.parseModel)(R).model||R,aa=L.provider;if(h.info("COMBO",`executeTarget[${f}] modelStr=${R} provider=${aa} rawModel=${Z}`),"OPEN"===(0,ae.qF)(aa).getStatus().state)return h.info("COMBO",`Skipping ${R} — circuit breaker OPEN for ${aa}`),f>0&&s++,null;if(O.providerCooldown.enabled&&aa&&"unknown"!==aa&&cb(aa,L.connectionId??void 0,O))return h.info("COMBO",`Skipping ${R} — provider ${aa} in global cooldown`),f>0&&s++,null;let ab=aW.get(L.executionKey),ac=ab?.profile??await (0,d.LN)(aa),ad=aa&&"unknown"!==aa&&n.has(aa)?{...L,allowRateLimitedConnection:!0,modelAbortSignal:A.get(f).signal}:{...L,modelAbortSignal:A.get(f).signal},ag=bL(L,j,k);if(ag)return h.info("COMBO",ag),f>0&&s++,null;if(aa&&Z&&(0,d.qw)(aa,L.connectionId||"",Z))return h.info("COMBO",`Skipping ${R} — model locked by resilience (cooldown active)`),f>0&&s++,null;if(g&&!await g(R,ad))return h.debug?.("COMBO",`Skipping ${R} — no credentials available or model excluded`),f>0&&s++,null;let ah=L.connectionId;if(ah){let a=(G=ah,H=R,{allowed:!1,reason:`Credential gate: ${H} — connection ${G} has known-bad credentials (skipping)`});if(!1===a.allowed)return w=a.reason||"Credential gate blocked",h?.info&&h.info("CREDENTIAL_GATE",w),f>0&&s++,null}for(let g=0;g<=at;g++){if(m?.aborted)return h.info("COMBO",`Client disconnected — aborting combo loop before model ${R}`),{ok:!1,response:(0,e.yj)(499,"Client disconnected")};if(++a4>30)return h.warn("COMBO","Maximum combo attempts (30) exceeded across all targets and fallbacks. Terminating loop to prevent runaway background requests."),{ok:!1,response:(0,e.yj)(503,"Maximum combo retry limit reached")};if(B&&U.predictiveTtftMs&&U.predictiveTtftMs>0&&0===g){let a=v(b.name);if(a){let b=aJ[f].executionKey||R,c=a.byTarget[b]||a.byModel[R];if(x=U.predictiveTtftMs,c&&x>0&&(c.requests??0)>=5&&(c.avgLatencyMs??0)>x){h.warn("COMBO",`Predictive TTFT Circuit Breaker: skipping ${R} (avg ${c.avgLatencyMs}ms > max ${U.predictiveTtftMs}ms)`);break}}}if(g>0&&(h.info("COMBO",`Retrying ${R} in ${au}ms (attempt ${g+1}/${at+1})`),await new Promise(a=>{let b=setTimeout(a,au);m?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),m?.aborted))return h.info("COMBO","Client disconnected during retry delay — aborting"),{ok:!1,response:(0,e.yj)(499,"Client disconnected")};h.info("COMBO",`Trying model ${f+1}/${aJ.length}: ${R}${g>0?` (retry ${g})`:""}`),(0,a$.I)("combo.target.attempt",{comboName:b.name,targetIndex:f,provider:aa,model:R,timestamp:Date.now(),strategy:I});let w=structuredClone(a);if(B&&f>0&&U.fallbackCompressionMode&&"off"!==U.fallbackCompressionMode){let{estimateTokens:a}=await Promise.resolve().then(c.bind(c,14720)),b=a(JSON.stringify(w));if(b>(U.fallbackCompressionThreshold??1e3)){let{applyCompression:a}=await Promise.all([c.e(1041),c.e(4036),c.e(2851)]).then(c.bind(c,14036)),d=a(w,U.fallbackCompressionMode,{model:R,bailout:{enabled:!0,minGainPercent:0}});d.compressed&&(h.info("COMBO",`Proactive fallback compression applied (${U.fallbackCompressionMode}): ${b} -> ${d.stats?.compressedTokens} tokens`),w=d.body)}}if(P.enabled&&l?.sessionId&&!a?.[M]){let a=E(l.sessionId,b.name);a&&a!==R&&(w=function(a,b,c,d,e){let f=function(a,b,c,d){let e=T(a),f=T(b),g=T(c);if(!d||!d.summary)return`<context_handoff>
20
20
  <transfer_reason>${g}</transfer_reason>
21
21
  <previous_model>${e}</previous_model>
22
22
  <current_model>${f}</current_model>
@@ -38,4 +38,4 @@ Continues conversation transfered from ${e} to ${f}.
38
38
  The context above contains a concise summary of prior work.
39
39
  Continue seamlessly from where the session left off.`}(b,c,d,e);if(Object.prototype.hasOwnProperty.call(a,"input")||Object.prototype.hasOwnProperty.call(a,"instructions")){let b="string"==typeof a.instructions&&a.instructions.trim().length>0?a.instructions:"",c={...a,instructions:b?`${f}
40
40
 
41
- ${b}`:f};if(Array.isArray(c.messages)&&0===c.messages.length){let{messages:a,...b}=c;return b}return c}let g=Array.isArray(a.messages)?[...a.messages]:[];return{...a,messages:[{role:"system",content:f},...g]}}(w,a,R,`Model routing: ${a} → ${R}`,D(l.sessionId,b.name)))}{let a=w,b=ce(a.max_tokens),c=cf(R,a.max_tokens,{enabled:$});null!==b&&null!==c&&(a.max_tokens=c,c!==b&&h.info("COMBO",`Reasoning model ${R}: adjusted max_tokens ${b} -> ${c}`))}let A=await _(w,R,{...ad,effectiveComboStrategy:I,failoverBeforeRetry:U.failoverBeforeRetry});if(A.ok){let e=A.headers?.get("X-OmniRoute-Selected-Connection-Id")||A.headers?.get("x-omniroute-selected-connection-id")||L.connectionId||"",g=await cs(A,S,h,U.responseValidation);if(!g.valid){if(h.warn("COMBO",`Model ${R} returned 200 but failed quality check: ${g.reason}`),t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,o=`Upstream response failed quality validation: ${g.reason}`,q||(q=502),f>0&&s++,aa&&Z){let a=(0,X.Sy)(i);a.enabled&&a.errorCodes.includes(502)&&(0,d.E$)(aa,L.connectionId||"",Z,"quality_failure",502,a.baseCooldownMs,ac,{exactCooldownMs:a.useExponentialBackoff?0:a.baseCooldownMs,maxCooldownMs:a.maxCooldownMs})}return(0,a$.I)("combo.target.failed",{comboName:b.name,targetIndex:f,provider:aa,model:R,error:`Quality: ${g.reason}`,latencyMs:Date.now()-r}),null}if(aa&&Z){let a=(0,d.lB)(aa,e,Z);a.cleared?h.info("COMBO",`Model ${R} fully recovered — lockout cleared`):a.newFailureCount>0&&h.debug("COMBO",`Model ${R} decayed to failureCount=${a.newFailureCount}`)}let j=Date.now()-r;if((0,a$.I)("combo.target.succeeded",{comboName:b.name,targetIndex:f,provider:aa,model:R,latencyMs:j}),h.info("COMBO",`Model ${R} succeeded (${j}ms, ${s} fallbacks)`),t(b.name,R,{success:!0,latencyMs:j,fallbackCount:s,strategy:I,target:bR(L)}),u++,aa&&"unknown"!==aa&&cc(aa,e||void 0),"weighted"===I&&aD>1){let a=aI(L);a&&cn(b.name,a,aD)}if(a_("request.completed",{combo:b.name,provider:aa,model:R,account:"string"==typeof L.label&&L.label.trim().length>0?L.label.trim():"",accountId:e??"",latencyMs:j,fallbackCount:s}),b.context_cache_protection&&Q&&!a?.[M]&&F(Q,b.name,R,aa,L.connectionId??void 0),P.enabled&&l?.sessionId&&!a?.[M]){let c=E(l.sessionId,b.name);if(F(l.sessionId,b.name,R,aa,L.connectionId??void 0),c&&c!==R){let d=Array.isArray(a?.messages)&&a.messages.length>0?a.messages:Array.isArray(a?.input)?a.input:[];!function(a){var b,c;if("generate"!==function(a){if(!a.universalConfig.enabled||!a.previousModel||a.previousModel===a.currentModel)return"skip";if(a.sessionId){let b=D(a.sessionId,a.comboName);if(b&&b.summary)return"inject"}return"generate"}({sessionId:a.sessionId,comboName:a.comboName,previousModel:a.prevModel,currentModel:a.currModel,universalConfig:a.universalConfig})||!a.sessionId)return;let d=(b=a.sessionId,c=a.comboName,`${b}::${c}`);if(J.has(d))return;J.add(d);let e=60*(a.universalConfig.ttlMinutes||300)*1e3;setImmediate(()=>{W({sessionId:a.sessionId,comboName:a.comboName,messages:a.messages,prevModel:a.prevModel||"unknown",currModel:a.currModel,handoffModel:a.universalConfig.handoffModel||a.currModel,ttlMs:e,maxMessages:a.universalConfig.maxMessagesForSummary,providerAllowlist:a.universalConfig.providerAllowlist,handleSingleModel:a.handleSingleModel}).catch(a=>{console.warn("[universal-handoff] Generation failed:",a?.message||a)}).finally(()=>{J.delete(d)})})}({sessionId:l.sessionId,comboName:b.name,messages:d,prevModel:c,currModel:R,universalConfig:P,handleSingleModel:_})}F(l.sessionId,b.name,R,aa,L.connectionId??void 0)}if("context-relay"===I&&l?.sessionId&&K&&K.handoffProviders.includes(aa)&&"codex"===aa){let c=(0,bx.bb)(l.sessionId);if(c){let d=await (0,Y.GF)(c).catch(()=>null);if(d){let e=[d.windows?.session?.resetAt,d.windows?.weekly?.resetAt,d.resetAt].filter(a=>"string"==typeof a&&a.length>0).sort((a,b)=>a.localeCompare(b)),f=Array.isArray(a?.messages)&&a.messages.length>0?a.messages:Array.isArray(a?.input)?a.input:[];!function(a){var b,c;if(!a.sessionId||!a.connectionId)return;let d=N(a.config);if(0===d.handoffProviders.length||a.percentUsed<d.handoffThreshold||a.percentUsed>=.95)return;a.sessionId,a.comboName;let e=(b=a.sessionId,c=a.comboName,`${b}::${c}`);J.has(e)||(J.add(e),setImmediate(()=>{V({...a,sessionId:a.sessionId,connectionId:a.connectionId,config:d}).catch(a=>{console.warn("[context-relay] Handoff generation failed:",a?.message||a)}).finally(()=>{J.delete(e)})}))}({sessionId:l.sessionId,comboName:b.name,connectionId:c,percentUsed:d.percentUsed,messages:f,model:R,expiresAt:e[0]||null,config:K,handleSingleModel:_})}}}if(aS.messageHash&&L.connectionId&&bD(aS.messageHash,L.connectionId),aa){let a=e||void 0;(async()=>{try{let{setLKGP:d}=await Promise.resolve().then(c.bind(c,89718));await Promise.all([d(b.name,L.executionKey,aa,a),d(b.name,b.id||b.name,aa,a)])}catch(a){h.warn("COMBO","Failed to record Last Known Good Provider. This is non-fatal.",{err:a})}})()}return{ok:!0,response:g.clonedResponse??A}}let G=A.statusText||"",H=null,ab=null;try{let a=A.clone();try{let b=await a.text();if(b){G=b.substring(0,500),H=JSON.parse(b);let a=H?.error;G="object"==typeof a&&a?.message||("string"==typeof a?a:null)||H?.message||G,ab=H?.retryAfter||null}}catch{}}catch{}if(ab&&(!p||new Date(ab)<new Date(p))&&(p=ab),"string"!=typeof G)try{G=JSON.stringify(G)}catch{G=String(G)}let ae=(502===A.status||504===A.status)&&bP(H),af=429===A.status&&bQ(H);if(499===A.status)return h.info("COMBO",`Client disconnected (499) during ${R} — stopping combo loop`),t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,{ok:!1,response:A};let ag=H?.error,ah=ag&&"object"==typeof ag?{code:void 0!==ag.code&&null!==ag.code?String(ag.code):void 0,type:void 0!==ag.type&&null!==ag.type?String(ag.type):void 0}:void 0,ai=(0,d.hk)(A.status,G,0,null,aa,A.headers,ac,ah),{cooldownMs:aj}=ai,ak=A.headers?.get("X-OmniRoute-Selected-Connection-Id")||A.headers?.get("x-omniroute-selected-connection-id")||void 0,al=ak?{...L,connectionId:ak}:L,am=cA(al,{result:A,fallbackResult:ai,errorText:G,rawModel:Z,isTokenLimitBreach:af,allAccountsRateLimited:!1,sets:{exhaustedProviders:j,exhaustedConnections:k,transientRateLimitedProviders:n},log:h,tag:"COMBO",exhaustedLogLevel:"info",structuredError:ah});if(400===A.status&&ai.shouldFallback&&(y=G,!(/\bcontext.*(?:length_exceeded|too long|overflow|exceeded|window|limit)\b/i.test(y)||/exceeds.*context/i.test(y)||/your input exceeds/i.test(y)))&&(z=G,!(/\bmax_tokens\b.*(?:illegal|must|range|invalid)/i.test(z)||/\bparameter is illegal\b/i.test(z)||/\bis illegal.*range\b/i.test(z)))&&(G.toLowerCase().includes("context")||G.toLowerCase().includes("prompt")||G.toLowerCase().includes("token")||G.toLowerCase().includes("malformed")||G.toLowerCase().includes("invalid")||G.toLowerCase().includes("bad request")))return h.warn("COMBO",`400 Bad Request with body-specific error detected on ${R} — skipping fallback to other targets to prevent infinite loop`),t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,o=G||String(A.status),q||(q=A.status),f>0&&s++,h.warn("COMBO",`Model ${R} failed with body-specific error, stopping combo`),{ok:!1,response:A};let an=aJ[f+1],ao="string"==typeof an?.provider&&an.provider===aa;!(C={isStreamReadinessFailure:ae,status:A.status,sameProviderNext:ao,skipProviderBreaker:ai.skipProviderBreaker}).isStreamReadinessFailure&&(0,d.v6)(C.status)&&!C.sameProviderNext&&!C.skipProviderBreaker&&(0,d.p8)(aa,h,al.connectionId,ac);let ap=!ae&&!af&&[408,429,500,502,503,504].includes(A.status);if(g<at&&ap&&!am){let a=!1;if(aa&&Z&&0===g){let b=(0,X.Sy)(i);b.enabled&&b.errorCodes.includes(A.status)&&((0,d.E$)(aa,al.connectionId||"",Z,(0,d.M$)(A.status),A.status,b.baseCooldownMs,ac,{exactCooldownMs:(0,d.pX)(aj,b),maxCooldownMs:b.maxCooldownMs}),a=!0)}if(a)return h.info("COMBO",`Skipping retry for ${R} — model lockout active`),f>0&&s++,null;continue}if(t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,o=G||String(A.status),q||(q=A.status),f>0&&s++,aa&&Z){let a=(0,X.Sy)(i);a.enabled&&a.errorCodes.includes(A.status)&&(0,d.E$)(aa,al.connectionId||"",Z,(0,d.M$)(A.status),A.status,a.baseCooldownMs,ac,{exactCooldownMs:(0,d.pX)(aj,a),maxCooldownMs:a.maxCooldownMs})}h.warn("COMBO",`Model ${R} failed, trying next`,{status:A.status}),O.providerCooldown.enabled&&aa&&"unknown"!==aa&&ca(aa,al.connectionId??void 0,O);let aq=av>0&&aj>0&&aj<=5e3?Math.min(aj,av):0;if([502,503,504].includes(A.status)&&aq>0&&(h.debug?.("COMBO",`Waiting ${aq}ms before fallback to next model`),await new Promise(a=>{let b=setTimeout(a,aq);m?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),m?.aborted))return h.info("COMBO","Client disconnected during fallback wait — aborting"),{ok:!1,response:(0,e.yj)(499,"Client disconnected")};break}return null};for(let a=0;a<aJ.length&&!z;a++){let b=new AbortController;A.set(a,b);let c=()=>b.abort();m?.addEventListener("abort",c);let d=(async()=>{try{let b=await C(a);if(b&&!z)if(b.ok)for(let[c,d]of(z=!0,w(b.response),A.entries()))c!==a&&d.abort();else b.response&&(z=!0,w(b.response))}finally{m?.removeEventListener("abort",c)}})().catch(b=>{(h.error??h.warn)("COMBO",`Speculative task error for target ${a}`,b)});if(y.add(d),d.finally(()=>y.delete(d)),B&&U.hedging&&a+1<aJ.length){let a=bN(U.hedgeDelayMs,500),b=new Promise(b=>{setTimeout(b,a)});await Promise.race([d,x,b])}else await Promise.race([d,x])}if(!z&&y.size>0&&await Promise.race([x,Promise.all([...y])]),z)return await x;let G=Date.now()-r;if(0===u&&t(b.name,null,{success:!1,latencyMs:G,fallbackCount:s,strategy:I}),f<aw)continue;if(!q)return a_("request.failed",{combo:b.name,reason:"ALL_ACCOUNTS_INACTIVE",latencyMs:G,fallbackCount:s}),new Response(JSON.stringify({error:{message:"Service temporarily unavailable: all upstream accounts are inactive",type:"service_unavailable",code:"ALL_ACCOUNTS_INACTIVE"}}),{status:503,headers:{"Content-Type":"application/json"}});let H=q,L=o||"All combo models unavailable";if(p){if(a5&&429===H){let a=function(a){let{targets:b,earliestRetryAfter:c,attempt:d,budgetLeftMs:e,settings:f,lookupLock:g,computeWaitMs:h}=a;if(!f.enabled)return{wait:!1,waitMs:0,reason:null};let i=null;for(let a of b){let b="string"==typeof a.provider?a.provider:"";if(!b)continue;let c=g(b,"string"==typeof a.connectionId?a.connectionId:"");if(!c)continue;let d="number"==typeof c.remainingMs&&Number.isFinite(c.remainingMs)?c.remainingMs:0;d<=0||(!i||d<i.remainingMs)&&(i={reason:c.reason,remainingMs:d})}if(!i)return{wait:!1,waitMs:0,reason:null};let j=h(c),k="number"==typeof j&&Number.isFinite(j)&&j>0?j:0,l=Math.max(i.remainingMs,k)+50;return{...function(a){var b;let{reason:c,attempt:d,budgetLeftMs:e,settings:f}=a,g="number"==typeof(b=a.waitMs)&&Number.isFinite(b)&&b>0?b:0;return{wait:!0===f.enabled&&!("string"!=typeof c||0===c.length||ct.has(c))&&cu.has(c)&&g>0&&g<=f.maxWaitMs&&d<f.maxAttempts&&e>=g,waitMs:g}}({reason:i.reason,waitMs:l,attempt:d,budgetLeftMs:e,settings:f}),reason:"string"==typeof i.reason?i.reason:null}}({targets:aJ,earliestRetryAfter:p,attempt:a7,budgetLeftMs:a8,settings:O.comboCooldownWait,lookupLock:(a,b)=>{let c=(0,af.parseModel)(aJ[0]?.modelStr??"").model||"";return(0,d.ls)(a,b,c)},computeWaitMs:a=>cv(a).waitMs});if(a.wait){if(h.info("COMBO",`Quota-share cooldown wait: ${L} — waiting ${Math.ceil(a.waitMs/1e3)}s (reason=${a.reason??"?"}) then retrying (attempt ${a7+1}/${O.comboCooldownWait.maxAttempts})`),!await cw(a.waitMs,m))return h.info("COMBO","Quota-share cooldown wait aborted by client disconnect"),(0,e.yj)(499,"Request aborted");return a7+=1,a8=Math.max(0,a8-a.waitMs),ba()}}let a=(0,d.Qo)(cr(p));return h.warn("COMBO",`All models failed | ${L} (${a})`),(0,e.wO)(H,L,p,a)}return h.warn("COMBO",`All models failed | ${L}`),new Response(JSON.stringify({error:{message:L}}),{status:H,headers:{"Content-Type":"application/json"}})}return(0,e.yj)(503,"Combo routing completed without an upstream response")},bb=null,bc=aJ[0]?.connectionId;if(a9&&bc){let a=await bS(bc);bb=await bU(aJ[0],a,{queueTimeoutMs:U.queueTimeoutMs??3e4,maxQueueSize:B(U)},h)}try{return await ba()}finally{bb?.();for(let a of a3)aV.delete(a)}}async function dT({body:a,combo:b,handleSingleModel:f,isModelAvailable:g,log:h,settings:i,allCombos:j,signal:k}){var l;let m,n=i?C(b,i):{...x,...b.config||{}},o=(l=n.concurrencyPerModel??3,m=new Map,async a=>{var b;if(!a)return l;let c=m.get(a);return void 0===c&&(c=await bS(a),m.set(a,c)),"number"==typeof(b=c)&&Number.isFinite(b)&&b>0?Math.floor(b):l}),p=n.queueTimeoutMs??3e4,q=B(n),r=n.maxRetries??1,s=bN(n.retryDelayMs,2e3),u=bN(n.fallbackDelayMs,0),v=!1!==n.reasoningTokenBufferEnabled,w=i?(0,ai.xv)(i):(0,ai.xv)(null),y=c0(await cK(b),j?Array.isArray(j)?await cL(j):{...j,combos:await cL(j.combos||[])}:j,bM(n.maxComboDepth)),z=c_(b$(await aY(y,a,h),n.evalRouting,h),a,h,"Context-aware round-robin fallback"),A=z.length;if(0===A)return bO("Round-robin combo has no executable targets");c6(b,n,a,c3(b,n,j),f,g,"round-robin",h);let D=n.stickyRoundRobinLimit,E=cj(null!=D?D:i?.stickyRoundRobinLimit),F=E>1;if(F){let a=ch.get(b.name);if(a){let c=z.find(b=>b.executionKey===a.executionKey);if(c){let a=(0,af.parseModel)(c.modelStr).model||c.modelStr;(!c.provider||"OPEN"!==(0,ae.qF)(c.provider).getStatus().state)&&!(w.providerCooldown.enabled&&c.provider&&"unknown"!==c.provider&&cb(c.provider,c.connectionId??void 0,w))&&!(c.provider&&a&&(0,d.qw)(c.provider,c.connectionId||"",a))&&(!g||await g(c.modelStr,c))||(h.info("COMBO-RR",`Clearing stale sticky target ${c.modelStr} — unavailable`),ch.delete(b.name))}}}if(!cg.has(b.name)&&!ch.has(b.name)&&cg.size>=500){let a=cg.keys().next().value;void 0!==a&&(cg.delete(a),ch.delete(a))}cg.has(b.name)||cg.set(b.name,0);let{startIndex:G,counter:H}=ck(b.name,z,E);F||cg.set(b.name,H+1);let I=await bE(z,a?.messages),J=G;if(I.stuck){let a=z.findIndex(a=>a.connectionId===I.targets[0]?.connectionId);a>=0&&(J=a)}let K=a?.stream===!0,L=Date.now(),M=null,N=null,O=null,P=0,Q=0,R=0,S=new Set,T=new Set,U=new Set;for(let i=0;i<A;i++){let j,l=z[(J+i)%A],m=l.modelStr,x=l.provider,y=await (0,d.LN)(x),B=`combo:${b.name}:${l.executionKey}`,C=x&&"unknown"!==x&&U.has(x)?{...l,allowRateLimitedConnection:!0}:l;if(g&&!await g(m,C)){h.debug?.("COMBO-RR",`Skipping ${m} — no credentials available or model excluded`),i>0&&Q++;continue}if(w.providerCooldown.enabled&&x&&"unknown"!==x&&cb(x,l.connectionId,w)){h.info("COMBO-RR",`Skipping ${m} — provider ${x} in global cooldown`),i>0&&Q++;continue}let D=bL(l,S,T);if(D){h.info("COMBO-RR",D),i>0&&Q++;continue}let G=await o(l.connectionId);try{j=await ad(B,{maxConcurrency:G,timeoutMs:p,maxQueueSize:q})}catch(b){let a=ak(b)&&"string"==typeof b.code?b.code:null;if("SEMAPHORE_TIMEOUT"===a||"SEMAPHORE_QUEUE_FULL"===a){h.warn("COMBO-RR",`Semaphore ${"SEMAPHORE_QUEUE_FULL"===a?"queue full":"timeout"} for ${m}, trying next model`),i>0&&Q++;continue}throw b}try{for(let g=0;g<=r;g++){if(++P>30)return h.warn("COMBO-RR","Maximum combo attempts (30) exceeded. Terminating loop to prevent runaway requests."),(0,e.yj)(503,"Maximum combo retry limit reached");g>0&&(h.info("COMBO-RR",`Retrying ${m} in ${s}ms (attempt ${g+1}/${r+1})`),await new Promise(a=>setTimeout(a,s))),h.info("COMBO-RR",`[RR #${H}] → ${m}${i>0?` (fallback +${i})`:""}${g>0?` (retry ${g})`:""}`);let j=a;{let b=ce(a.max_tokens),c=cf(m,a.max_tokens,{enabled:v});null!==b&&null!==c&&c!==b&&(j={...a,max_tokens:c},h.info("COMBO-RR",`Reasoning model ${m}: adjusted max_tokens ${b} -> ${c}`))}let o=await f(j,m,{...C,effectiveComboStrategy:"round-robin",failoverBeforeRetry:n.failoverBeforeRetry});if(o.ok){let a=await cs(o,K,h,n.responseValidation);if(!a.valid){h.warn("COMBO-RR",`${m} returned 200 but failed quality check: ${a.reason}`),t(b.name,m,{success:!1,latencyMs:Date.now()-L,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++,M=`Upstream response failed quality validation: ${a.reason}`,N||(N=502),i>0&&Q++;break}let e=Date.now()-L;h.info("COMBO-RR",`${m} succeeded (${e}ms, ${Q} fallbacks)`),t(b.name,m,{success:!0,latencyMs:e,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++;let f=o.headers?.get("X-OmniRoute-Selected-Connection-Id")||o.headers?.get("x-omniroute-selected-connection-id")||l.connectionId||"",g=(0,af.parseModel)(m).model||m;if(x&&g){let a=(0,d.lB)(x,f,g);a.cleared?h.info("COMBO-RR",`Model ${m} fully recovered — lockout cleared`):a.newFailureCount>0&&h.debug?.("COMBO-RR",`Model ${m} decayed to failureCount=${a.newFailureCount}`)}if(x&&"unknown"!==x&&cc(x,f||void 0),F&&cl(b.name,l,E,z),I.messageHash){let a=f||l.connectionId;a&&bD(I.messageHash,a)}if(x){let a=f||void 0;(async()=>{try{let{setLKGP:d}=await Promise.resolve().then(c.bind(c,89718));await Promise.all([d(b.name,l.executionKey,x,a),d(b.name,b.id||b.name,x,a)])}catch(a){h.warn("COMBO-RR","Failed to record Last Known Good Provider. This is non-fatal.",{err:a})}})()}return a.clonedResponse??o}let p=o.statusText||"",q=null,A=null;try{let a=o.clone();try{let b=await a.text();if(b){p=b.substring(0,500),A=JSON.parse(b);let a=A?.error;p="object"==typeof a&&a?.message||("string"==typeof a?a:null)||A?.message||p,q=A?.retryAfter||null}}catch{}}catch{}if(499===o.status)return h.info("COMBO-RR",`Client disconnected (499) during ${m} — stopping combo loop`),t(b.name,m,{success:!1,latencyMs:Date.now()-L,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++,o;if(q&&(!O||new Date(q)<new Date(O))&&(O=q),"string"!=typeof p)try{p=JSON.stringify(p)}catch{p=String(p)}let D=(502===o.status||504===o.status)&&bP(A),G=429===o.status&&bQ(A),J=A?.error,V=J&&"object"==typeof J?{code:void 0!==J.code&&null!==J.code?String(J.code):void 0,type:void 0!==J.type&&null!==J.type?String(J.type):void 0}:void 0,W=(0,d.hk)(o.status,p,0,null,x,o.headers,y,V),{cooldownMs:X}=W,Y=o.headers?.get("X-OmniRoute-Selected-Connection-Id")||o.headers?.get("x-omniroute-selected-connection-id")||void 0,Z=Y?{...l,connectionId:Y}:l,$=function(a,b,c){return 503===a&&!!b?.includes("application/json")&&bK.some(a=>a.test(c))}(o.status,o.headers?.get("content-type")??null,p),aa=cA(Z,{result:o,fallbackResult:W,errorText:p,rawModel:(0,af.parseModel)(m).model||m,isTokenLimitBreach:G,allAccountsRateLimited:$,sets:{exhaustedProviders:S,exhaustedConnections:T,transientRateLimitedProviders:U},log:h,tag:"COMBO-RR",exhaustedLogLevel:"debug",structuredError:V});!D&&!G&&bJ.includes(o.status)&&X>0&&(!function(a,b){let c=_(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,ab(a))},b+50)}(B,X),h.warn("COMBO-RR",`${m} error ${o.status}, cooldown ${X}ms`)),$&&h.info("COMBO-RR",`All accounts rate-limited for ${m}, falling back to next model`);let ac=!D&&!G&&[408,429,500,502,503,504].includes(o.status);if(g<r&&ac&&!aa)continue;t(b.name,m,{success:!1,latencyMs:Date.now()-L,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++,M=p||String(o.status),N||(N=o.status),i>0&&Q++,h.warn("COMBO-RR",`${m} failed, trying next model`,{status:o.status}),w.providerCooldown.enabled&&x&&"unknown"!==x&&ca(x,Z.connectionId??void 0,w);let ad=u>0&&X>0&&X<=5e3?Math.min(X,u):0;if([502,503,504].includes(o.status)&&ad>0&&(h.debug?.("COMBO-RR",`Waiting ${ad}ms before fallback to next model`),await new Promise(a=>{let b=setTimeout(a,ad);k?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),k?.aborted))return h.info("COMBO-RR","Client disconnected during fallback wait — aborting"),(0,e.yj)(499,"Client disconnected");break}}finally{j()}}let V=Date.now()-L;if(0===R&&t(b.name,null,{success:!1,latencyMs:V,fallbackCount:Q,strategy:"round-robin"}),!N)return new Response(JSON.stringify({error:{message:"Service temporarily unavailable: all upstream accounts are inactive",type:"service_unavailable",code:"ALL_ACCOUNTS_INACTIVE"}}),{status:503,headers:{"Content-Type":"application/json"}});let W=N,X=M||"All round-robin combo models unavailable";if(O){let a=(0,d.Qo)(cr(O));return h.warn("COMBO-RR",`All models failed | ${X} (${a})`),(0,e.wO)(W,X,O,a)}return h.warn("COMBO-RR",`All models failed | ${X}`),new Response(JSON.stringify({error:{message:X}}),{status:W,headers:{"Content-Type":"application/json"}})}let dU=new Map;function dV(a){a?dU.delete(a):dU.clear()}}};
41
+ ${b}`:f};if(Array.isArray(c.messages)&&0===c.messages.length){let{messages:a,...b}=c;return b}return c}let g=Array.isArray(a.messages)?[...a.messages]:[];return{...a,messages:[{role:"system",content:f},...g]}}(w,a,R,`Model routing: ${a} → ${R}`,D(l.sessionId,b.name)))}{let a=w,b=ce(a.max_tokens),c=cf(R,a.max_tokens,{enabled:$});null!==b&&null!==c&&(a.max_tokens=c,c!==b&&h.info("COMBO",`Reasoning model ${R}: adjusted max_tokens ${b} -> ${c}`))}let A=await _(w,R,{...ad,effectiveComboStrategy:I,failoverBeforeRetry:U.failoverBeforeRetry});if(A.ok){let e=A.headers?.get("X-OmniRoute-Selected-Connection-Id")||A.headers?.get("x-omniroute-selected-connection-id")||L.connectionId||"",g=await cs(A,S,h,U.responseValidation);if(!g.valid){if(h.warn("COMBO",`Model ${R} returned 200 but failed quality check: ${g.reason}`),t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,o=`Upstream response failed quality validation: ${g.reason}`,q||(q=502),f>0&&s++,aa&&Z){let a=(0,X.Sy)(i);a.enabled&&a.errorCodes.includes(502)&&(0,d.E$)(aa,L.connectionId||"",Z,"quality_failure",502,a.baseCooldownMs,ac,{exactCooldownMs:a.useExponentialBackoff?0:a.baseCooldownMs,maxCooldownMs:a.maxCooldownMs})}return(0,a$.I)("combo.target.failed",{comboName:b.name,targetIndex:f,provider:aa,model:R,error:`Quality: ${g.reason}`,latencyMs:Date.now()-r}),null}if(aa&&Z){let a=(0,d.lB)(aa,e,Z);a.cleared?h.info("COMBO",`Model ${R} fully recovered — lockout cleared`):a.newFailureCount>0&&h.debug("COMBO",`Model ${R} decayed to failureCount=${a.newFailureCount}`)}let j=Date.now()-r;if((0,a$.I)("combo.target.succeeded",{comboName:b.name,targetIndex:f,provider:aa,model:R,latencyMs:j}),h.info("COMBO",`Model ${R} succeeded (${j}ms, ${s} fallbacks)`),t(b.name,R,{success:!0,latencyMs:j,fallbackCount:s,strategy:I,target:bR(L)}),u++,aa&&"unknown"!==aa&&cc(aa,e||void 0),"weighted"===I&&aD>1){let a=aI(L);a&&cn(b.name,a,aD)}if(a_("request.completed",{combo:b.name,provider:aa,model:R,account:"string"==typeof L.label&&L.label.trim().length>0?L.label.trim():"",accountId:e??"",latencyMs:j,fallbackCount:s}),b.context_cache_protection&&Q&&!a?.[M]&&F(Q,b.name,R,aa,L.connectionId??void 0),P.enabled&&l?.sessionId&&!a?.[M]){let c=E(l.sessionId,b.name);if(F(l.sessionId,b.name,R,aa,L.connectionId??void 0),c&&c!==R){let d=Array.isArray(a?.messages)&&a.messages.length>0?a.messages:Array.isArray(a?.input)?a.input:[];!function(a){var b,c;if("generate"!==function(a){if(!a.universalConfig.enabled||!a.previousModel||a.previousModel===a.currentModel)return"skip";if(a.sessionId){let b=D(a.sessionId,a.comboName);if(b&&b.summary)return"inject"}return"generate"}({sessionId:a.sessionId,comboName:a.comboName,previousModel:a.prevModel,currentModel:a.currModel,universalConfig:a.universalConfig})||!a.sessionId)return;let d=(b=a.sessionId,c=a.comboName,`${b}::${c}`);if(J.has(d))return;J.add(d);let e=60*(a.universalConfig.ttlMinutes||300)*1e3;setImmediate(()=>{W({sessionId:a.sessionId,comboName:a.comboName,messages:a.messages,prevModel:a.prevModel||"unknown",currModel:a.currModel,handoffModel:a.universalConfig.handoffModel||a.currModel,ttlMs:e,maxMessages:a.universalConfig.maxMessagesForSummary,providerAllowlist:a.universalConfig.providerAllowlist,handleSingleModel:a.handleSingleModel}).catch(a=>{console.warn("[universal-handoff] Generation failed:",a?.message||a)}).finally(()=>{J.delete(d)})})}({sessionId:l.sessionId,comboName:b.name,messages:d,prevModel:c,currModel:R,universalConfig:P,handleSingleModel:_})}F(l.sessionId,b.name,R,aa,L.connectionId??void 0)}if("context-relay"===I&&l?.sessionId&&K&&K.handoffProviders.includes(aa)&&"codex"===aa){let c=(0,bx.bb)(l.sessionId);if(c){let d=await (0,Y.GF)(c).catch(()=>null);if(d){let e=[d.windows?.session?.resetAt,d.windows?.weekly?.resetAt,d.resetAt].filter(a=>"string"==typeof a&&a.length>0).sort((a,b)=>a.localeCompare(b)),f=Array.isArray(a?.messages)&&a.messages.length>0?a.messages:Array.isArray(a?.input)?a.input:[];!function(a){var b,c;if(!a.sessionId||!a.connectionId)return;let d=N(a.config);if(0===d.handoffProviders.length||a.percentUsed<d.handoffThreshold||a.percentUsed>=.95)return;a.sessionId,a.comboName;let e=(b=a.sessionId,c=a.comboName,`${b}::${c}`);J.has(e)||(J.add(e),setImmediate(()=>{V({...a,sessionId:a.sessionId,connectionId:a.connectionId,config:d}).catch(a=>{console.warn("[context-relay] Handoff generation failed:",a?.message||a)}).finally(()=>{J.delete(e)})}))}({sessionId:l.sessionId,comboName:b.name,connectionId:c,percentUsed:d.percentUsed,messages:f,model:R,expiresAt:e[0]||null,config:K,handleSingleModel:_})}}}if(aS.messageHash&&L.connectionId&&bD(aS.messageHash,L.connectionId),aa){let a=e||void 0;(async()=>{try{let{setLKGP:d}=await Promise.resolve().then(c.bind(c,89718));await Promise.all([d(b.name,L.executionKey,aa,a),d(b.name,b.id||b.name,aa,a)])}catch(a){h.warn("COMBO","Failed to record Last Known Good Provider. This is non-fatal.",{err:a})}})()}return{ok:!0,response:g.clonedResponse??A}}let G=A.statusText||"",H=null,ab=null;try{let a=A.clone();try{let b=await a.text();if(b){G=b.substring(0,500),H=JSON.parse(b);let a=H?.error;G="object"==typeof a&&a?.message||("string"==typeof a?a:null)||H?.message||G,ab=H?.retryAfter||null}}catch{}}catch{}if(ab&&(!p||new Date(ab)<new Date(p))&&(p=ab),"string"!=typeof G)try{G=JSON.stringify(G)}catch{G=String(G)}let ae=(502===A.status||504===A.status)&&bP(H),af=429===A.status&&bQ(H);if(499===A.status)return h.info("COMBO",`Client disconnected (499) during ${R} — stopping combo loop`),t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,{ok:!1,response:A};let ag=H?.error,ah=ag&&"object"==typeof ag?{code:void 0!==ag.code&&null!==ag.code?String(ag.code):void 0,type:void 0!==ag.type&&null!==ag.type?String(ag.type):void 0}:void 0,ai=(0,d.hk)(A.status,G,0,null,aa,A.headers,ac,ah),{cooldownMs:aj}=ai,ak=A.headers?.get("X-OmniRoute-Selected-Connection-Id")||A.headers?.get("x-omniroute-selected-connection-id")||void 0,al=ak?{...L,connectionId:ak}:L,am=cA(al,{result:A,fallbackResult:ai,errorText:G,rawModel:Z,isTokenLimitBreach:af,allAccountsRateLimited:!1,sets:{exhaustedProviders:j,exhaustedConnections:k,transientRateLimitedProviders:n},log:h,tag:"COMBO",exhaustedLogLevel:"info",structuredError:ah});if(400===A.status&&ai.shouldFallback&&(y=G,!(/\bcontext.*(?:length_exceeded|too long|overflow|exceeded|window|limit)\b/i.test(y)||/exceeds.*context/i.test(y)||/your input exceeds/i.test(y)))&&(z=G,!(/\bmax_tokens\b.*(?:illegal|must|range|invalid)/i.test(z)||/\bparameter is illegal\b/i.test(z)||/\bis illegal.*range\b/i.test(z)))&&(G.toLowerCase().includes("context")||G.toLowerCase().includes("prompt")||G.toLowerCase().includes("token")||G.toLowerCase().includes("malformed")||G.toLowerCase().includes("invalid")||G.toLowerCase().includes("bad request")))return h.warn("COMBO",`400 Bad Request with body-specific error detected on ${R} — skipping fallback to other targets to prevent infinite loop`),t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,o=G||String(A.status),q||(q=A.status),f>0&&s++,h.warn("COMBO",`Model ${R} failed with body-specific error, stopping combo`),{ok:!1,response:A};let an=aJ[f+1],ao="string"==typeof an?.provider&&an.provider===aa;!(C={isStreamReadinessFailure:ae,status:A.status,sameProviderNext:ao,skipProviderBreaker:ai.skipProviderBreaker}).isStreamReadinessFailure&&(0,d.v6)(C.status)&&!C.sameProviderNext&&!C.skipProviderBreaker&&(0,d.p8)(aa,h,al.connectionId,ac);let ap=!ae&&!af&&[408,429,500,502,503,504].includes(A.status);if(g<at&&ap&&!am){let a=!1;if(aa&&Z&&0===g){let b=(0,X.Sy)(i);b.enabled&&b.errorCodes.includes(A.status)&&((0,d.E$)(aa,al.connectionId||"",Z,(0,d.M$)(A.status),A.status,b.baseCooldownMs,ac,{exactCooldownMs:(0,d.pX)(aj,b),maxCooldownMs:b.maxCooldownMs}),a=!0)}if(a)return h.info("COMBO",`Skipping retry for ${R} — model lockout active`),f>0&&s++,null;continue}if(t(b.name,R,{success:!1,latencyMs:Date.now()-r,fallbackCount:s,strategy:I,target:bR(L)}),u++,o=G||String(A.status),q||(q=A.status),f>0&&s++,aa&&Z){let a=(0,X.Sy)(i);a.enabled&&a.errorCodes.includes(A.status)&&(0,d.E$)(aa,al.connectionId||"",Z,(0,d.M$)(A.status),A.status,a.baseCooldownMs,ac,{exactCooldownMs:(0,d.pX)(aj,a),maxCooldownMs:a.maxCooldownMs})}h.warn("COMBO",`Model ${R} failed, trying next`,{status:A.status}),O.providerCooldown.enabled&&aa&&"unknown"!==aa&&ca(aa,al.connectionId??void 0,O);let aq=av>0&&aj>0&&aj<=5e3?Math.min(aj,av):0;if([502,503,504].includes(A.status)&&aq>0&&(h.debug?.("COMBO",`Waiting ${aq}ms before fallback to next model`),await new Promise(a=>{let b=setTimeout(a,aq);m?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),m?.aborted))return h.info("COMBO","Client disconnected during fallback wait — aborting"),{ok:!1,response:(0,e.yj)(499,"Client disconnected")};break}return null};for(let a=0;a<aJ.length&&!z;a++){let b=new AbortController;A.set(a,b);let c=()=>b.abort();m?.addEventListener("abort",c);let d=(async()=>{try{let b=await C(a);if(b&&!z)if(b.ok)for(let[c,d]of(z=!0,w(b.response),A.entries()))c!==a&&d.abort();else b.response&&(z=!0,w(b.response))}finally{m?.removeEventListener("abort",c)}})().catch(b=>{let c=h.error??h.warn,d=b instanceof Error?`${b.message} ${b.stack?.split("\n").slice(0,3).join(" ")}`:String(b);c("COMBO",`Speculative task error for target ${a}`,d),console.error(`[COMBO] Speculative task error for target ${a}:`,b)});if(y.add(d),d.finally(()=>y.delete(d)),B&&U.hedging&&a+1<aJ.length){let a=bN(U.hedgeDelayMs,500),b=new Promise(b=>{setTimeout(b,a)});await Promise.race([d,x,b])}else await Promise.race([d,x])}if(!z&&y.size>0&&await Promise.race([x,Promise.all([...y])]),z)return await x;let G=Date.now()-r;if(0===u&&t(b.name,null,{success:!1,latencyMs:G,fallbackCount:s,strategy:I}),f<aw)continue;if(!q)return a_("request.failed",{combo:b.name,reason:"ALL_ACCOUNTS_INACTIVE",latencyMs:G,fallbackCount:s}),new Response(JSON.stringify({error:{message:"Service temporarily unavailable: all upstream accounts are inactive",type:"service_unavailable",code:"ALL_ACCOUNTS_INACTIVE"}}),{status:503,headers:{"Content-Type":"application/json"}});let H=q,L=o||"All combo models unavailable";if(p){if(a5&&429===H){let a=function(a){let{targets:b,earliestRetryAfter:c,attempt:d,budgetLeftMs:e,settings:f,lookupLock:g,computeWaitMs:h}=a;if(!f.enabled)return{wait:!1,waitMs:0,reason:null};let i=null;for(let a of b){let b="string"==typeof a.provider?a.provider:"";if(!b)continue;let c=g(b,"string"==typeof a.connectionId?a.connectionId:"");if(!c)continue;let d="number"==typeof c.remainingMs&&Number.isFinite(c.remainingMs)?c.remainingMs:0;d<=0||(!i||d<i.remainingMs)&&(i={reason:c.reason,remainingMs:d})}if(!i)return{wait:!1,waitMs:0,reason:null};let j=h(c),k="number"==typeof j&&Number.isFinite(j)&&j>0?j:0,l=Math.max(i.remainingMs,k)+50;return{...function(a){var b;let{reason:c,attempt:d,budgetLeftMs:e,settings:f}=a,g="number"==typeof(b=a.waitMs)&&Number.isFinite(b)&&b>0?b:0;return{wait:!0===f.enabled&&!("string"!=typeof c||0===c.length||ct.has(c))&&cu.has(c)&&g>0&&g<=f.maxWaitMs&&d<f.maxAttempts&&e>=g,waitMs:g}}({reason:i.reason,waitMs:l,attempt:d,budgetLeftMs:e,settings:f}),reason:"string"==typeof i.reason?i.reason:null}}({targets:aJ,earliestRetryAfter:p,attempt:a7,budgetLeftMs:a8,settings:O.comboCooldownWait,lookupLock:(a,b)=>{let c=(0,af.parseModel)(aJ[0]?.modelStr??"").model||"";return(0,d.ls)(a,b,c)},computeWaitMs:a=>cv(a).waitMs});if(a.wait){if(h.info("COMBO",`Quota-share cooldown wait: ${L} — waiting ${Math.ceil(a.waitMs/1e3)}s (reason=${a.reason??"?"}) then retrying (attempt ${a7+1}/${O.comboCooldownWait.maxAttempts})`),!await cw(a.waitMs,m))return h.info("COMBO","Quota-share cooldown wait aborted by client disconnect"),(0,e.yj)(499,"Request aborted");return a7+=1,a8=Math.max(0,a8-a.waitMs),ba()}}let a=(0,d.Qo)(cr(p));return h.warn("COMBO",`All models failed | ${L} (${a})`),(0,e.wO)(H,L,p,a)}return h.warn("COMBO",`All models failed | ${L}`),new Response(JSON.stringify({error:{message:L}}),{status:H,headers:{"Content-Type":"application/json"}})}return(0,e.yj)(503,"Combo routing completed without an upstream response")},bb=null,bc=aJ[0]?.connectionId;if(a9&&bc){let a=await bS(bc);bb=await bU(aJ[0],a,{queueTimeoutMs:U.queueTimeoutMs??3e4,maxQueueSize:B(U)},h)}try{return await ba()}finally{bb?.();for(let a of a3)aV.delete(a)}}async function dW({body:a,combo:b,handleSingleModel:f,isModelAvailable:g,log:h,settings:i,allCombos:j,signal:k}){var l;let m,n=i?C(b,i):{...x,...b.config||{}},o=(l=n.concurrencyPerModel??3,m=new Map,async a=>{var b;if(!a)return l;let c=m.get(a);return void 0===c&&(c=await bS(a),m.set(a,c)),"number"==typeof(b=c)&&Number.isFinite(b)&&b>0?Math.floor(b):l}),p=n.queueTimeoutMs??3e4,q=B(n),r=n.maxRetries??1,s=bN(n.retryDelayMs,2e3),u=bN(n.fallbackDelayMs,0),v=!1!==n.reasoningTokenBufferEnabled,w=i?(0,ai.xv)(i):(0,ai.xv)(null),y=c3(await cK(b),j?Array.isArray(j)?await cL(j):{...j,combos:await cL(j.combos||[])}:j,bM(n.maxComboDepth)),z=c2(b$(await aY(y,a,h),n.evalRouting,h),a,h,"Context-aware round-robin fallback"),A=z.length;if(0===A)return bO("Round-robin combo has no executable targets");c9(b,n,a,c6(b,n,j),f,g,"round-robin",h);let D=n.stickyRoundRobinLimit,E=cj(null!=D?D:i?.stickyRoundRobinLimit),F=E>1;if(F){let a=ch.get(b.name);if(a){let c=z.find(b=>b.executionKey===a.executionKey);if(c){let a=(0,af.parseModel)(c.modelStr).model||c.modelStr;(!c.provider||"OPEN"!==(0,ae.qF)(c.provider).getStatus().state)&&!(w.providerCooldown.enabled&&c.provider&&"unknown"!==c.provider&&cb(c.provider,c.connectionId??void 0,w))&&!(c.provider&&a&&(0,d.qw)(c.provider,c.connectionId||"",a))&&(!g||await g(c.modelStr,c))||(h.info("COMBO-RR",`Clearing stale sticky target ${c.modelStr} — unavailable`),ch.delete(b.name))}}}if(!cg.has(b.name)&&!ch.has(b.name)&&cg.size>=500){let a=cg.keys().next().value;void 0!==a&&(cg.delete(a),ch.delete(a))}cg.has(b.name)||cg.set(b.name,0);let{startIndex:G,counter:H}=ck(b.name,z,E);F||cg.set(b.name,H+1);let I=await bE(z,a?.messages),J=G;if(I.stuck){let a=z.findIndex(a=>a.connectionId===I.targets[0]?.connectionId);a>=0&&(J=a)}let K=a?.stream===!0,L=Date.now(),M=null,N=null,O=null,P=0,Q=0,R=0,S=new Set,T=new Set,U=new Set;for(let i=0;i<A;i++){let j,l=z[(J+i)%A],m=l.modelStr,x=l.provider,y=await (0,d.LN)(x),B=`combo:${b.name}:${l.executionKey}`,C=x&&"unknown"!==x&&U.has(x)?{...l,allowRateLimitedConnection:!0}:l;if(g&&!await g(m,C)){h.debug?.("COMBO-RR",`Skipping ${m} — no credentials available or model excluded`),i>0&&Q++;continue}if(w.providerCooldown.enabled&&x&&"unknown"!==x&&cb(x,l.connectionId,w)){h.info("COMBO-RR",`Skipping ${m} — provider ${x} in global cooldown`),i>0&&Q++;continue}let D=bL(l,S,T);if(D){h.info("COMBO-RR",D),i>0&&Q++;continue}let G=await o(l.connectionId);try{j=await ad(B,{maxConcurrency:G,timeoutMs:p,maxQueueSize:q})}catch(b){let a=ak(b)&&"string"==typeof b.code?b.code:null;if("SEMAPHORE_TIMEOUT"===a||"SEMAPHORE_QUEUE_FULL"===a){h.warn("COMBO-RR",`Semaphore ${"SEMAPHORE_QUEUE_FULL"===a?"queue full":"timeout"} for ${m}, trying next model`),i>0&&Q++;continue}throw b}try{for(let g=0;g<=r;g++){if(++P>30)return h.warn("COMBO-RR","Maximum combo attempts (30) exceeded. Terminating loop to prevent runaway requests."),(0,e.yj)(503,"Maximum combo retry limit reached");g>0&&(h.info("COMBO-RR",`Retrying ${m} in ${s}ms (attempt ${g+1}/${r+1})`),await new Promise(a=>setTimeout(a,s))),h.info("COMBO-RR",`[RR #${H}] → ${m}${i>0?` (fallback +${i})`:""}${g>0?` (retry ${g})`:""}`);let j=a;{let b=ce(a.max_tokens),c=cf(m,a.max_tokens,{enabled:v});null!==b&&null!==c&&c!==b&&(j={...a,max_tokens:c},h.info("COMBO-RR",`Reasoning model ${m}: adjusted max_tokens ${b} -> ${c}`))}let o=await f(j,m,{...C,effectiveComboStrategy:"round-robin",failoverBeforeRetry:n.failoverBeforeRetry});if(o.ok){let a=await cs(o,K,h,n.responseValidation);if(!a.valid){h.warn("COMBO-RR",`${m} returned 200 but failed quality check: ${a.reason}`),t(b.name,m,{success:!1,latencyMs:Date.now()-L,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++,M=`Upstream response failed quality validation: ${a.reason}`,N||(N=502),i>0&&Q++;break}let e=Date.now()-L;h.info("COMBO-RR",`${m} succeeded (${e}ms, ${Q} fallbacks)`),t(b.name,m,{success:!0,latencyMs:e,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++;let f=o.headers?.get("X-OmniRoute-Selected-Connection-Id")||o.headers?.get("x-omniroute-selected-connection-id")||l.connectionId||"",g=(0,af.parseModel)(m).model||m;if(x&&g){let a=(0,d.lB)(x,f,g);a.cleared?h.info("COMBO-RR",`Model ${m} fully recovered — lockout cleared`):a.newFailureCount>0&&h.debug?.("COMBO-RR",`Model ${m} decayed to failureCount=${a.newFailureCount}`)}if(x&&"unknown"!==x&&cc(x,f||void 0),F&&cl(b.name,l,E,z),I.messageHash){let a=f||l.connectionId;a&&bD(I.messageHash,a)}if(x){let a=f||void 0;(async()=>{try{let{setLKGP:d}=await Promise.resolve().then(c.bind(c,89718));await Promise.all([d(b.name,l.executionKey,x,a),d(b.name,b.id||b.name,x,a)])}catch(a){h.warn("COMBO-RR","Failed to record Last Known Good Provider. This is non-fatal.",{err:a})}})()}return a.clonedResponse??o}let p=o.statusText||"",q=null,A=null;try{let a=o.clone();try{let b=await a.text();if(b){p=b.substring(0,500),A=JSON.parse(b);let a=A?.error;p="object"==typeof a&&a?.message||("string"==typeof a?a:null)||A?.message||p,q=A?.retryAfter||null}}catch{}}catch{}if(499===o.status)return h.info("COMBO-RR",`Client disconnected (499) during ${m} — stopping combo loop`),t(b.name,m,{success:!1,latencyMs:Date.now()-L,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++,o;if(q&&(!O||new Date(q)<new Date(O))&&(O=q),"string"!=typeof p)try{p=JSON.stringify(p)}catch{p=String(p)}let D=(502===o.status||504===o.status)&&bP(A),G=429===o.status&&bQ(A),J=A?.error,V=J&&"object"==typeof J?{code:void 0!==J.code&&null!==J.code?String(J.code):void 0,type:void 0!==J.type&&null!==J.type?String(J.type):void 0}:void 0,W=(0,d.hk)(o.status,p,0,null,x,o.headers,y,V),{cooldownMs:X}=W,Y=o.headers?.get("X-OmniRoute-Selected-Connection-Id")||o.headers?.get("x-omniroute-selected-connection-id")||void 0,Z=Y?{...l,connectionId:Y}:l,$=function(a,b,c){return 503===a&&!!b?.includes("application/json")&&bK.some(a=>a.test(c))}(o.status,o.headers?.get("content-type")??null,p),aa=cA(Z,{result:o,fallbackResult:W,errorText:p,rawModel:(0,af.parseModel)(m).model||m,isTokenLimitBreach:G,allAccountsRateLimited:$,sets:{exhaustedProviders:S,exhaustedConnections:T,transientRateLimitedProviders:U},log:h,tag:"COMBO-RR",exhaustedLogLevel:"debug",structuredError:V});!D&&!G&&bJ.includes(o.status)&&X>0&&(!function(a,b){let c=_(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,ab(a))},b+50)}(B,X),h.warn("COMBO-RR",`${m} error ${o.status}, cooldown ${X}ms`)),$&&h.info("COMBO-RR",`All accounts rate-limited for ${m}, falling back to next model`);let ac=!D&&!G&&[408,429,500,502,503,504].includes(o.status);if(g<r&&ac&&!aa)continue;t(b.name,m,{success:!1,latencyMs:Date.now()-L,fallbackCount:Q,strategy:"round-robin",target:bR(l)}),R++,M=p||String(o.status),N||(N=o.status),i>0&&Q++,h.warn("COMBO-RR",`${m} failed, trying next model`,{status:o.status}),w.providerCooldown.enabled&&x&&"unknown"!==x&&ca(x,Z.connectionId??void 0,w);let ad=u>0&&X>0&&X<=5e3?Math.min(X,u):0;if([502,503,504].includes(o.status)&&ad>0&&(h.debug?.("COMBO-RR",`Waiting ${ad}ms before fallback to next model`),await new Promise(a=>{let b=setTimeout(a,ad);k?.addEventListener("abort",()=>{clearTimeout(b),a(void 0)},{once:!0})}),k?.aborted))return h.info("COMBO-RR","Client disconnected during fallback wait — aborting"),(0,e.yj)(499,"Client disconnected");break}}finally{j()}}let V=Date.now()-L;if(0===R&&t(b.name,null,{success:!1,latencyMs:V,fallbackCount:Q,strategy:"round-robin"}),!N)return new Response(JSON.stringify({error:{message:"Service temporarily unavailable: all upstream accounts are inactive",type:"service_unavailable",code:"ALL_ACCOUNTS_INACTIVE"}}),{status:503,headers:{"Content-Type":"application/json"}});let W=N,X=M||"All round-robin combo models unavailable";if(O){let a=(0,d.Qo)(cr(O));return h.warn("COMBO-RR",`All models failed | ${X} (${a})`),(0,e.wO)(W,X,O,a)}return h.warn("COMBO-RR",`All models failed | ${X}`),new Response(JSON.stringify({error:{message:X}}),{status:W,headers:{"Content-Type":"application/json"}})}let dX=new Map;function dY(a){a?dX.delete(a):dX.clear()}}};