@sifxprime/krouter 0.5.146 → 0.5.148

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 (245) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +10 -10
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +19 -19
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.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.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +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/presidio/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  40. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  41. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  43. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  44. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  45. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  46. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  47. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  48. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  49. package/app/.next-cli-build/server/app/api/import/route.js +1 -1
  50. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  51. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  52. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  53. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  54. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  55. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  56. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  57. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  58. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  59. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  60. package/app/.next-cli-build/server/app/api/settings/environment/route.js +1 -1
  61. package/app/.next-cli-build/server/app/api/settings/presidio/route.js +1 -1
  62. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  63. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  64. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  65. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  66. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  67. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  68. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  69. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/callback.html +1 -1
  71. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  72. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  73. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  74. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  75. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  76. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  77. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +6 -6
  78. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  79. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  80. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  81. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  82. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +6 -6
  83. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  84. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  85. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  86. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  87. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +6 -6
  88. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  89. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  90. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  91. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  92. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +6 -6
  93. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  94. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  95. package/app/.next-cli-build/server/app/dashboard/environment.html +1 -1
  96. package/app/.next-cli-build/server/app/dashboard/environment.rsc +6 -6
  97. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard/environment/__PAGE__.segment.rsc +6 -6
  98. package/app/.next-cli-build/server/app/dashboard/environment.segments/_full.segment.rsc +6 -6
  99. package/app/.next-cli-build/server/app/dashboard/environment.segments/_tree.segment.rsc +2 -2
  100. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  101. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  102. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +6 -6
  103. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  104. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  105. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  106. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  107. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +6 -6
  108. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  109. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  110. package/app/.next-cli-build/server/app/dashboard/presidio.html +1 -1
  111. package/app/.next-cli-build/server/app/dashboard/presidio.rsc +6 -6
  112. package/app/.next-cli-build/server/app/dashboard/presidio.segments/!KGRhc2hib2FyZCk/dashboard/presidio/__PAGE__.segment.rsc +6 -6
  113. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_full.segment.rsc +6 -6
  114. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_tree.segment.rsc +2 -2
  115. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  116. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  117. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +6 -6
  118. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  119. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  120. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  121. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  122. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +6 -6
  123. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  124. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  125. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  126. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  127. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +6 -6
  128. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  129. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  130. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  131. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  132. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +6 -6
  133. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  134. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  135. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  136. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
  137. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +6 -6
  138. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  139. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  140. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  141. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  142. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +7 -7
  143. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  144. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  145. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  146. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  147. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  148. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  149. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  150. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  151. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +5 -5
  152. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  153. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  154. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +6 -6
  155. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  156. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  157. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  158. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  159. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
  160. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  161. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  162. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  163. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  164. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +6 -6
  165. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  166. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  167. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  168. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  169. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +6 -6
  170. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  171. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  172. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  173. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  174. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +6 -6
  175. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  176. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  177. package/app/.next-cli-build/server/app/index.html +1 -1
  178. package/app/.next-cli-build/server/app/index.rsc +4 -4
  179. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  180. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  181. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  182. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  183. package/app/.next-cli-build/server/app/landing.html +1 -1
  184. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  185. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  186. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  187. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  188. package/app/.next-cli-build/server/app/login/page.js +1 -1
  189. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  190. package/app/.next-cli-build/server/app/login.html +1 -1
  191. package/app/.next-cli-build/server/app/login.rsc +5 -5
  192. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  193. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  194. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
  195. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  196. package/app/.next-cli-build/server/app-paths-manifest.json +10 -10
  197. package/app/.next-cli-build/server/chunks/192.js +9 -0
  198. package/app/.next-cli-build/server/chunks/2365.js +1 -1
  199. package/app/.next-cli-build/server/chunks/2722.js +1 -1
  200. package/app/.next-cli-build/server/chunks/412.js +2 -2
  201. package/app/.next-cli-build/server/chunks/4884.js +2 -2
  202. package/app/.next-cli-build/server/chunks/523.js +1 -0
  203. package/app/.next-cli-build/server/chunks/5718.js +1 -1
  204. package/app/.next-cli-build/server/chunks/6200.js +2 -2
  205. package/app/.next-cli-build/server/chunks/6298.js +1 -1
  206. package/app/.next-cli-build/server/chunks/706.js +4 -3
  207. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  208. package/app/.next-cli-build/server/chunks/7276.js +1 -1
  209. package/app/.next-cli-build/server/chunks/7833.js +9 -0
  210. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  211. package/app/.next-cli-build/server/chunks/8782.js +1 -0
  212. package/app/.next-cli-build/server/chunks/8895.js +1 -1
  213. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  214. package/app/.next-cli-build/server/middleware.js +2 -2
  215. package/app/.next-cli-build/server/pages/404.html +1 -1
  216. package/app/.next-cli-build/server/pages/500.html +1 -1
  217. package/app/.next-cli-build/static/chunks/{1321-6c49a954d60cdf8d.js → 1321-87af378bc3a6718a.js} +1 -1
  218. package/app/.next-cli-build/static/chunks/{3395-ee203e7ee50296be.js → 3395-be2d0ce6411ddbf0.js} +2 -2
  219. package/app/.next-cli-build/static/chunks/5497-d4a2fb8d25696366.js +7 -0
  220. package/app/.next-cli-build/static/chunks/{6069-dd3d88032deffd6b.js → 6069-db27e074bc47d5fe.js} +1 -1
  221. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-783b478197298c31.js → page-1c13f46a5c077d38.js} +1 -1
  222. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-81f0e1ae55f87925.js +1 -0
  223. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/presidio/{page-d99bb3a54c3dbb50.js → page-99353b884e6df533.js} +1 -1
  224. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-f52892e5e4b5f25b.js → page-b92667a32e2aeffa.js} +2 -2
  225. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-69f5c1cd75191fc4.js +1 -0
  226. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-97596f6b0ed5c791.js → page-719a6bedc7b221df.js} +1 -1
  227. package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-625fde09367a7c35.js +1 -0
  228. package/app/.next-cli-build/static/chunks/app/login/page-fd5112b2e7b69783.js +1 -0
  229. package/app/.next-cli-build/static/css/{ec08ba27b16d57e9.css → 8e737cade791a545.css} +1 -1
  230. package/app/cli/package.json +1 -1
  231. package/app/package.json +1 -1
  232. package/app/src/lib/db/backup.js +35 -0
  233. package/cli.js +211 -106
  234. package/package.json +1 -1
  235. package/src/cli/tray/tray.ps1 +38 -14
  236. package/src/cli/utils/input.js +13 -1
  237. package/app/.next-cli-build/server/chunks/4055.js +0 -9
  238. package/app/.next-cli-build/server/chunks/5217.js +0 -9
  239. package/app/.next-cli-build/static/chunks/5497-df084be192db340d.js +0 -7
  240. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-6c89f0a1ddd99c41.js +0 -1
  241. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-b1182e42595e08ba.js +0 -1
  242. package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-045957f92dd4e66b.js +0 -1
  243. package/app/.next-cli-build/static/chunks/app/login/page-aaf3ff5ba99cdda7.js +0 -1
  244. /package/app/.next-cli-build/static/{alT51K3CdFyFBv27IY7wb → 9-AyxnJk9NDhO4WOXHEPp}/_buildManifest.js +0 -0
  245. /package/app/.next-cli-build/static/{alT51K3CdFyFBv27IY7wb → 9-AyxnJk9NDhO4WOXHEPp}/_ssgManifest.js +0 -0
@@ -6,8 +6,8 @@ exports.id=4884,exports.ids=[4884],exports.modules={644:(a,b,c)=>{"use strict";f
6
6
  ON CONFLICT(id) DO UPDATE SET
7
7
  provider=excluded.provider, authType=excluded.authType, name=excluded.name,
8
8
  email=excluded.email, priority=excluded.priority, isActive=excluded.isActive,
9
- data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.provider,c.authType,c.name,c.email,c.priority,c.isActive,c.data,c.createdAt,c.updatedAt])}async function j(a={}){let b=await (0,e.getAdapter)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive));let f=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,d).map(h);return g.sort((a,b)=>(a.priority||999)-(b.priority||999)),g}async function k(a){return h((await (0,e.getAdapter)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}function l(a,b){let c=a.all("SELECT * FROM providerConnections WHERE provider = ?",[b]).map(h);c.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),c.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function m(a){let b,c=await (0,e.getAdapter)(),f=new Date().toISOString();return c.transaction(()=>{let e=c.all("SELECT * FROM providerConnections WHERE provider = ?",[a.provider]).map(h),j=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.chatgptAccountId;j=e.find(c=>{if("oauth"!==c.authType||c.email!==a.email)return!1;let d=c.providerSpecificData?.chatgptAccountId;return!b||!d||b===d})}else"apikey"===a.authType&&a.name&&(j=e.find(b=>"apikey"===b.authType&&b.name===a.name));if(j){let d={...j,...a,updatedAt:f};i(c,d),b=d;return}let k=a.name||null;k||"oauth"!==a.authType&&"access_token"!==a.authType||(k=a.email||`Account ${e.length+1}`);let m=a.priority;m||(m=e.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let n={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:k,priority:m,isActive:void 0===a.isActive||a.isActive,createdAt:f,updatedAt:f};for(let b of g)void 0!==a[b]&&null!==a[b]&&(n[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(n.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(n.email=a.email),i(c,n),l(c,a.provider),b=n}),b}async function n(a,b){let c,d=await (0,e.getAdapter)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=h(e),g={...f,...b,updatedAt:new Date().toISOString()};i(d,g),void 0!==b.priority&&l(d,f.provider),c=g}),c}async function o(a,b){let c,d=await (0,e.getAdapter)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=h(e),g=b(f);if(null==g){c=f;return}let j={...f,...g,updatedAt:new Date().toISOString()};i(d,j),void 0!==g.priority&&l(d,f.provider),c=j}),c}async function p(a){let b=await (0,e.getAdapter)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),l(b,d.provider),c=!0)}),c}async function q(a){let b=await (0,e.getAdapter)(),c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ?",[a]);return b.run("DELETE FROM providerConnections WHERE provider = ?",[a]),c?.n||0}async function r(a){let b=await (0,e.getAdapter)();b.transaction(()=>l(b,a))}async function s(){let a=await (0,e.getAdapter)(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;return a.transaction(()=>{for(let d of a.all("SELECT * FROM providerConnections")){let e=h(d),f=!1;for(let a of b)(null===e[a]||void 0===e[a])&&a in e&&(delete e[a],c++,f=!0);e.providerSpecificData&&0===Object.keys(e.providerSpecificData).length&&(delete e.providerSpecificData,c++,f=!0),f&&i(a,e)}}),c}},9248:(a,b,c)=>{"use strict";c.d(b,{S8:()=>y.S8,E5:()=>W,bI:()=>g.cleanupProviderConnections,Iq:()=>q.createApiKey,jd:()=>v,iE:()=>g.createProviderConnection,i0:()=>h.createProviderNode,ZO:()=>n,Lh:()=>q.deleteApiKey,CG:()=>x,uL:()=>y.uL,fv:()=>y.fv,fK:()=>g.deleteProviderConnection,op:()=>g.deleteProviderConnectionsByProvider,Pc:()=>h.deleteProviderNode,Yd:()=>p,tm:()=>C,oF:()=>D,zP:()=>ah,rg:()=>R,yg:()=>q.getApiKeyById,PX:()=>q.getApiKeys,j$:()=>V,L:()=>t,Dj:()=>u,Uv:()=>s,uv:()=>y.uv,vF:()=>B,c:()=>y.getMitmAlias,OM:()=>y.OM,r4:()=>z.r4,Mc:()=>g.getProviderConnectionById,P:()=>g.getProviderConnections,Qu:()=>h.getProviderNodeById,Fh:()=>h.getProviderNodes,hr:()=>m,ui:()=>l,Zx:()=>X,SL:()=>af,mt:()=>f.getSettings,BY:()=>U,K1:()=>ai,VT:()=>z.VT,yF:()=>z.yF,ox:()=>ae,sZ:()=>S,L9:()=>y.L9,o5:()=>y.o5,_V:()=>L,uw:()=>Q,XW:()=>q.updateApiKey,oG:()=>w,KJ:()=>z.KJ,rj:()=>g.updateProviderConnection,Q9:()=>g.updateProviderConnectionAtomic,ho:()=>h.updateProviderNode,Q_:()=>o,Xx:()=>f.Xx,ek:()=>q.validateApiKey});var d=c(36366),e=c(644),f=c(42655),g=c(5781),h=c(1129),i=c(94755);function j(a){return a?{...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function k(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:f,updatedAt:g,...h}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,e.s)(h),createdAt:f,updatedAt:g}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
9
+ data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.provider,c.authType,c.name,c.email,c.priority,c.isActive,c.data,c.createdAt,c.updatedAt])}async function j(a={}){let b=await (0,e.getAdapter)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive));let f=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,d).map(h);return g.sort((a,b)=>(a.priority||999)-(b.priority||999)),g}async function k(a){return h((await (0,e.getAdapter)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}function l(a,b){let c=a.all("SELECT * FROM providerConnections WHERE provider = ?",[b]).map(h);c.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),c.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function m(a){let b,c=await (0,e.getAdapter)(),f=new Date().toISOString();return c.transaction(()=>{let e=c.all("SELECT * FROM providerConnections WHERE provider = ?",[a.provider]).map(h),j=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.chatgptAccountId;j=e.find(c=>{if("oauth"!==c.authType||c.email!==a.email)return!1;let d=c.providerSpecificData?.chatgptAccountId;return!b||!d||b===d})}else"apikey"===a.authType&&a.name&&(j=e.find(b=>"apikey"===b.authType&&b.name===a.name));if(j){let d={...j,...a,updatedAt:f};i(c,d),b=d;return}let k=a.name||null;k||"oauth"!==a.authType&&"access_token"!==a.authType||(k=a.email||`Account ${e.length+1}`);let m=a.priority;m||(m=e.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let n={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:k,priority:m,isActive:void 0===a.isActive||a.isActive,createdAt:f,updatedAt:f};for(let b of g)void 0!==a[b]&&null!==a[b]&&(n[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(n.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(n.email=a.email),i(c,n),l(c,a.provider),b=n}),b}async function n(a,b){let c,d=await (0,e.getAdapter)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=h(e),g={...f,...b,updatedAt:new Date().toISOString()};i(d,g),void 0!==b.priority&&l(d,f.provider),c=g}),c}async function o(a,b){let c,d=await (0,e.getAdapter)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=h(e),g=b(f);if(null==g){c=f;return}let j={...f,...g,updatedAt:new Date().toISOString()};i(d,j),void 0!==g.priority&&l(d,f.provider),c=j}),c}async function p(a){let b=await (0,e.getAdapter)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),l(b,d.provider),c=!0)}),c}async function q(a){let b=await (0,e.getAdapter)(),c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ?",[a]);return b.run("DELETE FROM providerConnections WHERE provider = ?",[a]),c?.n||0}async function r(a){let b=await (0,e.getAdapter)();b.transaction(()=>l(b,a))}async function s(){let a=await (0,e.getAdapter)(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;return a.transaction(()=>{for(let d of a.all("SELECT * FROM providerConnections")){let e=h(d),f=!1;for(let a of b)(null===e[a]||void 0===e[a])&&a in e&&(delete e[a],c++,f=!0);e.providerSpecificData&&0===Object.keys(e.providerSpecificData).length&&(delete e.providerSpecificData,c++,f=!0),f&&i(a,e)}}),c}},9248:(a,b,c)=>{"use strict";c.d(b,{S8:()=>B.S8,E5:()=>Z,bI:()=>j.cleanupProviderConnections,Iq:()=>t.createApiKey,jd:()=>y,iE:()=>j.createProviderConnection,i0:()=>k.createProviderNode,ZO:()=>q,Lh:()=>t.deleteApiKey,CG:()=>A,uL:()=>B.uL,fv:()=>B.fv,fK:()=>j.deleteProviderConnection,op:()=>j.deleteProviderConnectionsByProvider,Pc:()=>k.deleteProviderNode,Yd:()=>s,tm:()=>F,oF:()=>G,zP:()=>ak,rg:()=>U,yg:()=>t.getApiKeyById,PX:()=>t.getApiKeys,j$:()=>Y,L:()=>w,Dj:()=>x,Uv:()=>v,uv:()=>B.uv,vF:()=>E,c:()=>B.getMitmAlias,OM:()=>B.OM,r4:()=>C.r4,Mc:()=>j.getProviderConnectionById,P:()=>j.getProviderConnections,Qu:()=>k.getProviderNodeById,Fh:()=>k.getProviderNodes,hr:()=>p,ui:()=>o,Zx:()=>$,SL:()=>ai,mt:()=>i.getSettings,BY:()=>X,K1:()=>am,VT:()=>C.VT,yF:()=>C.yF,ox:()=>ah,sZ:()=>V,L9:()=>B.L9,o5:()=>B.o5,_V:()=>O,uw:()=>T,XW:()=>t.updateApiKey,oG:()=>z,KJ:()=>C.KJ,rj:()=>j.updateProviderConnection,Q9:()=>j.updateProviderConnectionAtomic,ho:()=>k.updateProviderNode,Q_:()=>r,Xx:()=>i.Xx,ek:()=>t.validateApiKey});var d=c(73024),e=c.n(d),f=c(36366),g=c(95658),h=c(644),i=c(42655),j=c(5781),k=c(1129),l=c(94755);function m(a){return a?{...(0,h.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function n(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:e,updatedAt:f,...g}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,h.s)(g),createdAt:e,updatedAt:f}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
10
10
  VALUES(?, ?, ?, ?, ?, ?)
11
11
  ON CONFLICT(id) DO UPDATE SET
12
12
  isActive=excluded.isActive, testStatus=excluded.testStatus,
13
- data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.isActive,c.testStatus,c.data,c.createdAt,c.updatedAt])}async function l(a={}){let b=await (0,d.getAdapter)(),c=[],e=[];void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),a.testStatus&&(c.push("testStatus = ?"),e.push(a.testStatus));let f=`SELECT * FROM proxyPools${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,e).map(j);return g.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0)),g}async function m(a){return j((await (0,d.getAdapter)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))}async function n(a){let b=await (0,d.getAdapter)(),c=new Date().toISOString(),e={id:a.id||(0,i.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return k(b,e),e}async function o(a,b){let c=await (0,d.getAdapter)(),e=null;return c.transaction(()=>{let d=c.get("SELECT * FROM proxyPools WHERE id = ?",[a]);if(!d)return;let f={...j(d),...b,updatedAt:new Date().toISOString()};k(c,f),e=f}),e}async function p(a){let b=await (0,d.getAdapter)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM proxyPools WHERE id = ?",[a]);d&&(c=j(d),b.run("DELETE FROM proxyPools WHERE id = ?",[a]))}),c}var q=c(74452);function r(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function s(){return(await (0,d.getAdapter)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(r)}async function t(a){return r((await (0,d.getAdapter)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function u(a){return r((await (0,d.getAdapter)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function v(a){let b=await (0,d.getAdapter)(),c=new Date().toISOString(),f={id:(0,i.A)(),name:a.name,kind:a.kind||null,models:a.models||[],createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[f.id,f.name,f.kind,(0,e.s)(f.models),f.createdAt,f.updatedAt]),f}async function w(a,b){let c=await (0,d.getAdapter)(),f=null;return c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let g={...r(d),...b,updatedAt:new Date().toISOString()};c.run("UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?",[g.name,g.kind,(0,e.s)(g.models||[]),g.updatedAt,a]),f=g}),f}async function x(a){let b=(await (0,d.getAdapter)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var y=c(9460),z=c(97914);let A="disabledModels";async function B(){let a=(await (0,d.getAdapter)()).all("SELECT key, value FROM kv WHERE scope = ?",[A]),b={};for(let c of a)b[c.key]=(0,e.q)(c.value,[]);return b}async function C(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.getAdapter)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[A,a]),f=[...new Set([...d&&(0,e.q)(d.value,[])||[],...b])];c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[A,a,(0,e.s)(f)])})}async function D(a,b){if(!a)return;let c=await (0,d.getAdapter)();c.transaction(()=>{if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[A,a]);let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[A,a]),f=d&&(0,e.q)(d.value,[])||[],g=new Set(b),h=f.filter(a=>!g.has(a));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[A,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[A,a,(0,e.s)(h)])})}var E=c(94735);function F(a){return a&&"string"==typeof a?a.length<=8?a.charAt(0)+"***":a.slice(0,8)+"***":null}c(62674);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new E.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0});let G=global._pendingRequests,H=global._lastErrorProvider,I=global._pendingTimers,J=global._recentRing,K=global._connectionMapCache,L=global._statsEmitter;function M(a,b,c){a[b]||(a[b]={requests:0,promptTokens:0,completionTokens:0,cost:0}),a[b].requests+=c.requests||1,a[b].promptTokens+=c.promptTokens||0,a[b].completionTokens+=c.completionTokens||0,a[b].cost+=c.cost||0,c.meta&&Object.assign(a[b],c.meta)}async function N(){if(Date.now()-K.ts<3e4)return K.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;K.map=d,K.ts=Date.now()}catch{}return K.map}async function O(){if(!J.initialized){J.initialized=!0;try{J.items=(await (0,d.getAdapter)()).all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, cost, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[50]).reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,apiKey:a.apiKey,endpoint:a.endpoint,cost:a.cost,status:a.status,tokens:(0,e.q)(a.tokens,{})}))}catch{}}}async function P(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=d.cached_tokens||d.cache_read_input_tokens||0,j=Math.max(0,h-i);if(g+=j*(f.input/1e6),i>0){let a=f.cached||f.input;g+=a/1e6*i}let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;if(l>0){let a=f.reasoning||f.output;g+=a/1e6*l}let m=d.cache_creation_input_tokens||0;if(m>0){let a=f.cache_creation||f.input;g+=a/1e6*m}return g}catch(a){return console.error("Error calculating cost:",a),0}}function Q(a,b,c,d,e=!1){let f=b?`${a} (${b})`:a,g=`${c}|${f}`;G.byModel[f]||(G.byModel[f]=0),G.byModel[f]=Math.max(0,G.byModel[f]+(d?1:-1)),0===G.byModel[f]&&delete G.byModel[f],c&&(G.byAccount[c]||(G.byAccount[c]={}),G.byAccount[c][f]||(G.byAccount[c][f]=0),G.byAccount[c][f]=Math.max(0,G.byAccount[c][f]+(d?1:-1)),0===G.byAccount[c][f]&&(delete G.byAccount[c][f],0===Object.keys(G.byAccount[c]).length&&delete G.byAccount[c])),d?(clearTimeout(I[g]),I[g]=setTimeout(()=>{delete I[g],G.byModel[f]>0&&(G.byModel[f]=0),c&&G.byAccount[c]?.[f]>0&&(G.byAccount[c][f]=0),L.emit("pending")},6e4)):(clearTimeout(I[g]),delete I[g]),!d&&e&&b&&(H.provider=b.toLowerCase(),H.ts=Date.now());let h=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});console.log(`[${h}] [PENDING] ${d?"START":"END"}${e?" (ERROR)":""} | provider=${b} | model=${a}`),L.emit("pending")}async function R(){let a=[],b=await N();for(let[c,d]of Object.entries(G.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}await O();let c=new Set;return{activeRequests:a,recentRequests:[...J.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",d=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!c.has(d)&&(c.add(d),!0)}).slice(0,20),errorProvider:Date.now()-H.ts<1e4?H.provider:""}}async function S(a){try{let b=await (0,d.getAdapter)();a.timestamp||(a.timestamp=new Date().toISOString()),a.cost=await P(a.provider,a.model,a.tokens);let c=a.tokens||{},f=c.prompt_tokens||c.input_tokens||0,g=c.completion_tokens||c.output_tokens||0;b.transaction(()=>{var d;let h,i,j,k,l,m,n,o,p,q;b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,a.endpoint||null,f,g,a.cost||0,a.status||"ok",(0,e.s)(c),(0,e.s)({})]);let r=(h=(d=a.timestamp)?new Date(d):new Date,`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}`),s=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[r]),t=s?(0,e.q)(s.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{}};i=a.tokens?.prompt_tokens||a.tokens?.input_tokens||0,j=a.tokens?.completion_tokens||a.tokens?.output_tokens||0,k=a.cost||0,l={promptTokens:i,completionTokens:j,cost:k},t.requests=(t.requests||0)+1,t.promptTokens=(t.promptTokens||0)+i,t.completionTokens=(t.completionTokens||0)+j,t.cost=(t.cost||0)+k,t.byProvider||={},t.byModel||={},t.byAccount||={},t.byApiKey||={},t.byEndpoint||={},a.provider&&M(t.byProvider,a.provider,l),m=a.provider?`${a.model}|${a.provider}`:a.model,M(t.byModel,m,{...l,meta:{rawModel:a.model,provider:a.provider}}),a.connectionId&&M(t.byAccount,a.connectionId,{...l,meta:{rawModel:a.model,provider:a.provider}}),n=a.apiKey&&"string"==typeof a.apiKey?a.apiKey:"local-no-key",o=`${n}|${a.model}|${a.provider||"unknown"}`,M(t.byApiKey,o,{...l,meta:{rawModel:a.model,provider:a.provider,apiKey:a.apiKey||null}}),p=a.endpoint||"Unknown",q=`${p}|${a.model}|${a.provider||"unknown"}`,M(t.byEndpoint,q,{...l,meta:{endpoint:p,rawModel:a.model,provider:a.provider}}),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[r,(0,e.s)(t)]);let u=b.get("SELECT value FROM _meta WHERE key = 'totalRequestsLifetime'"),v=(u?parseInt(u.value,10):0)+1;b.run("INSERT INTO _meta(key, value) VALUES('totalRequestsLifetime', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(v)])}),J.items.push(a),J.items.length>50&&(J.items=J.items.slice(-50)),L.emit("update")}catch(a){console.error("Failed to save usage stats:",a)}}function T(a,b){if(null==b)return a.all("SELECT dateKey, data FROM usageDaily");let c=new Date,d=new Date(c.getFullYear(),c.getMonth(),c.getDate()-b+1),e=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`;return a.all("SELECT dateKey, data FROM usageDaily WHERE dateKey >= ?",[e])}async function U(a="all"){let b=await (0,d.getAdapter)(),[{getProviderConnections:f},{getApiKeys:g},{getProviderNodes:h}]=await Promise.all([Promise.resolve().then(c.bind(c,5781)),Promise.resolve().then(c.bind(c,74452)),Promise.resolve().then(c.bind(c,1129))]),i=[];try{i=await f()}catch{}let j={};for(let a of i)j[a.id]=a.name||a.email||a.id;let k={};try{for(let a of(await h()))a.id&&a.name&&(k[a.id]=a.name)}catch{}let l=[];try{l=await g()}catch{}let m={};for(let a of l)m[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let n=b.all("SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100"),o=new Set,p={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:G,activeRequests:[],recentRequests:n.map(a=>{let b=(0,e.q)(a.tokens,{})||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",c=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!o.has(c)&&(o.add(c),!0)}).slice(0,20),errorProvider:Date.now()-H.ts<1e4?H.provider:""};for(let[a,b]of Object.entries(G.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=j[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/);p.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let q=new Date,r=new Date(6e4*Math.floor(q.getTime()/6e4)),s=new Date(r.getTime()-54e4),t={};for(let a=0;a<10;a++){let b=r.getTime()-(9-a)*6e4;t[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},p.last10Minutes.push(t[b])}for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[s.toISOString(),q.toISOString()])){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);t[b]&&(t[b].requests++,t[b].promptTokens+=a.promptTokens||0,t[b].completionTokens+=a.completionTokens||0,t[b].cost+=a.cost||0)}if("24h"!==a&&"today"!==a){let c={"7d":7,"30d":30,"60d":60}[a]||null;for(let a of T(b,c)){let b=a.dateKey,c=(0,e.q)(a.data,{});for(let[a,b]of(p.totalPromptTokens+=c.promptTokens||0,p.totalCompletionTokens+=c.completionTokens||0,p.totalCost+=c.cost||0,Object.entries(c.byProvider||{})))p.byProvider[a]||(p.byProvider[a]={requests:0,promptTokens:0,completionTokens:0,cost:0}),p.byProvider[a].requests+=b.requests||0,p.byProvider[a].promptTokens+=b.promptTokens||0,p.byProvider[a].completionTokens+=b.completionTokens||0,p.byProvider[a].cost+=b.cost||0;for(let[a,d]of Object.entries(c.byModel||{})){let c=d.rawModel||a.split("|")[0],e=d.provider||a.split("|")[1]||"",f=e?`${c} (${e})`:c,g=k[e]||e;p.byModel[f]||(p.byModel[f]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c,provider:g,lastUsed:b}),p.byModel[f].requests+=d.requests||0,p.byModel[f].promptTokens+=d.promptTokens||0,p.byModel[f].completionTokens+=d.completionTokens||0,p.byModel[f].cost+=d.cost||0,b>(p.byModel[f].lastUsed||"")&&(p.byModel[f].lastUsed=b)}for(let[a,d]of Object.entries(c.byAccount||{})){let c=j[a]||`Account ${a.slice(0,8)}...`,e=d.rawModel||"",f=d.provider||"",g=k[f]||f,h=`${e} (${f} - ${c})`;p.byAccount[h]||(p.byAccount[h]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:e,provider:g,connectionId:a,accountName:c,lastUsed:b}),p.byAccount[h].requests+=d.requests||0,p.byAccount[h].promptTokens+=d.promptTokens||0,p.byAccount[h].completionTokens+=d.completionTokens||0,p.byAccount[h].cost+=d.cost||0,b>(p.byAccount[h].lastUsed||"")&&(p.byAccount[h].lastUsed=b)}for(let[a,d]of Object.entries(c.byApiKey||{})){let c=d.rawModel||"",e=d.provider||"",f=k[e]||e,g=d.apiKey,h=g?m[g]:null,i=h?.name||(g?g.slice(0,8)+"...":"Local (No API Key)"),j=F(g),l=j||"local-no-key";p.byApiKey[a]||(p.byApiKey[a]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c,provider:f,apiKeyMasked:j,keyName:i,apiKeyKey:l,lastUsed:b}),p.byApiKey[a].requests+=d.requests||0,p.byApiKey[a].promptTokens+=d.promptTokens||0,p.byApiKey[a].completionTokens+=d.completionTokens||0,p.byApiKey[a].cost+=d.cost||0,b>(p.byApiKey[a].lastUsed||"")&&(p.byApiKey[a].lastUsed=b)}for(let[a,d]of Object.entries(c.byEndpoint||{})){let c=d.endpoint||a.split("|")[0]||"Unknown",e=d.rawModel||"",f=d.provider||"",g=k[f]||f;p.byEndpoint[a]||(p.byEndpoint[a]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:c,rawModel:e,provider:g,lastUsed:b}),p.byEndpoint[a].requests+=d.requests||0,p.byEndpoint[a].promptTokens+=d.promptTokens||0,p.byEndpoint[a].completionTokens+=d.completionTokens||0,p.byEndpoint[a].cost+=d.cost||0,b>(p.byEndpoint[a].lastUsed||"")&&(p.byEndpoint[a].lastUsed=b)}}let d=c?Date.now()-864e5*c:0;for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint FROM usageHistory WHERE timestamp >= ?",[new Date(d).toISOString()])){let b=a.timestamp,c=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[c]&&new Date(b)>new Date(p.byModel[c].lastUsed)&&(p.byModel[c].lastUsed=b),a.connectionId){let c=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,d=`${a.model} (${a.provider} - ${c})`;p.byAccount[d]&&new Date(b)>new Date(p.byAccount[d].lastUsed)&&(p.byAccount[d].lastUsed=b)}let d=a.apiKey&&"string"==typeof a.apiKey?`${a.apiKey}|${a.model}|${a.provider||"unknown"}`:"local-no-key";p.byApiKey[d]&&new Date(b)>new Date(p.byApiKey[d].lastUsed)&&(p.byApiKey[d].lastUsed=b);let e=a.endpoint||"Unknown",f=`${e}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[f]&&new Date(b)>new Date(p.byEndpoint[f].lastUsed)&&(p.byEndpoint[f].lastUsed=b)}}else{let c;if("today"===a){let a=new Date;a.setHours(0,0,0,0),c=a.toISOString()}else c=new Date(Date.now()-864e5).toISOString();for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[c])){let b=(0,e.q)(a.tokens,{})||{},c=b.prompt_tokens||0,d=b.completion_tokens||0,f=a.cost||0,g=k[a.provider]||a.provider;p.totalPromptTokens+=c,p.totalCompletionTokens+=d,p.totalCost+=f,p.byProvider[a.provider]||(p.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),p.byProvider[a.provider].requests++,p.byProvider[a.provider].promptTokens+=c,p.byProvider[a.provider].completionTokens+=d,p.byProvider[a.provider].cost+=f;let h=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[h]||(p.byModel[h]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:g,lastUsed:a.timestamp}),p.byModel[h].requests++,p.byModel[h].promptTokens+=c,p.byModel[h].completionTokens+=d,p.byModel[h].cost+=f,new Date(a.timestamp)>new Date(p.byModel[h].lastUsed)&&(p.byModel[h].lastUsed=a.timestamp),a.connectionId){let b=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,e=`${a.model} (${a.provider} - ${b})`;p.byAccount[e]||(p.byAccount[e]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:g,connectionId:a.connectionId,accountName:b,lastUsed:a.timestamp}),p.byAccount[e].requests++,p.byAccount[e].promptTokens+=c,p.byAccount[e].completionTokens+=d,p.byAccount[e].cost+=f,new Date(a.timestamp)>new Date(p.byAccount[e].lastUsed)&&(p.byAccount[e].lastUsed=a.timestamp)}if(a.apiKey&&"string"==typeof a.apiKey){let b=m[a.apiKey],e=b?.name||a.apiKey.slice(0,8)+"...",h=F(a.apiKey),i=`${h}|${a.model}|${a.provider||"unknown"}`;p.byApiKey[i]||(p.byApiKey[i]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:g,apiKeyMasked:h,keyName:e,apiKeyKey:h,lastUsed:a.timestamp});let j=p.byApiKey[i];j.requests++,j.promptTokens+=c,j.completionTokens+=d,j.cost+=f,new Date(a.timestamp)>new Date(j.lastUsed)&&(j.lastUsed=a.timestamp)}else{p.byApiKey["local-no-key"]||(p.byApiKey["local-no-key"]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:g,apiKeyMasked:null,keyName:"Local (No API Key)",apiKeyKey:"local-no-key",lastUsed:a.timestamp});let b=p.byApiKey["local-no-key"];b.requests++,b.promptTokens+=c,b.completionTokens+=d,b.cost+=f,new Date(a.timestamp)>new Date(b.lastUsed)&&(b.lastUsed=a.timestamp)}let i=a.endpoint||"Unknown",l=`${i}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[l]||(p.byEndpoint[l]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:i,rawModel:a.model,provider:g,lastUsed:a.timestamp});let n=p.byEndpoint[l];n.requests++,n.promptTokens+=c,n.completionTokens+=d,n.cost+=f,new Date(a.timestamp)>new Date(n.lastUsed)&&(n.lastUsed=a.timestamp)}}return p.totalRequests=Object.values(p.byProvider).reduce((a,b)=>a+(b.requests||0),0),p}async function V(a="7d"){let b=await (0,d.getAdapter)(),c=Date.now();if("today"===a){let a=new Date;a.setHours(0,0,0,0);let c=a.getTime(),d=c+864e5,e=Array.from({length:24},(a,b)=>({label:new Date(c+36e5*b).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(c).toISOString()])){let b=new Date(a.timestamp).getTime();if(b<c||b>=d)continue;let f=Math.floor((b-c)/36e5);f>=0&&f<24&&(e[f].tokens+=(a.promptTokens||0)+(a.completionTokens||0),e[f].cost+=a.cost||0)}return e}if("24h"===a){let a=c-864e5,d=Array.from({length:24},(b,c)=>({label:new Date(a+36e5*c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let e of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(a).toISOString()])){let b=new Date(e.timestamp).getTime();if(b<a||b>c)continue;let f=Math.min(Math.floor((b-a)/36e5),23);d[f].tokens+=(e.promptTokens||0)+(e.completionTokens||0),d[f].cost+=e.cost||0}return d}let f="7d"===a?7:"30d"===a?30:60,g=new Date,h=T(b,f),i={};for(let a of h)i[a.dateKey]=(0,e.q)(a.data,{});return Array.from({length:f},(a,b)=>{let c=new Date(g);c.setDate(c.getDate()-(f-1-b));let d=i[`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`];return{label:c.toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:d?(d.promptTokens||0)+(d.completionTokens||0):0,cost:d&&d.cost||0}})}async function W(){}async function X(a=200){try{let b=(await (0,d.getAdapter)()).all("SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[a]);if(!b.length)return[];let f={};try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781));for(let b of(await a()))f[b.id]=b.name||b.email||""}catch{}return b.map(a=>{let b=function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${b(a.getDate())}-${b(a.getMonth()+1)}-${a.getFullYear()} ${b(a.getHours())}:${b(a.getMinutes())}:${b(a.getSeconds())}`}(new Date(a.timestamp)),c=a.provider?.toUpperCase()||"-",d=a.model||"-",g=f[a.connectionId]||(a.connectionId?a.connectionId.slice(0,8):"-"),h=a.tokens?(0,e.q)(a.tokens,{}):{},i=a.promptTokens??h.prompt_tokens??"-",j=a.completionTokens??h.completion_tokens??"-";return`${b} | ${d} | ${c} | ${g} | ${i} | ${j} | ${a.status||"-"}`})}catch(a){return console.error("[usageRepo] getRecentLogs failed:",a.message),[]}}let Y=null,Z=0;async function $(){if(Y&&Date.now()-Z<5e3)return Y;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;Y={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{Y={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return Z=Date.now(),Y}let _=[],aa=null,ab=!1;function ac(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function ad(){if(!ab&&0!==_.length){ab=!0;try{for(;_.length>0;){let a=_.splice(0,_.length),b=await (0,d.getAdapter)(),c=await $();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:ac(d.request,c.maxJsonSize),providerRequest:ac(d.providerRequest,c.maxJsonSize),providerResponse:ac(d.providerResponse,c.maxJsonSize),response:ac(d.response,c.maxJsonSize),warning:d.warning||null,warningDetail:d.warningDetail||null};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,e.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{ab=!1}}}async function ae(a){let b=await $();b.enabled&&(_.push(a),_.length>=b.batchSize?(aa&&(clearTimeout(aa),aa=null),ad().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):aa||(aa=setTimeout(()=>{aa=null,ad().catch(()=>{})},b.flushIntervalMs)))}async function af(a={}){let b=await (0,d.getAdapter)(),c=[],f=[];a.provider&&(c.push("provider = ?"),f.push(a.provider)),a.model&&(c.push("model = ?"),f.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),f.push(a.connectionId)),a.status&&(c.push("status = ?"),f.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),f.push(new Date(a.startDate).toISOString())),a.endDate&&(c.push("timestamp <= ?"),f.push(new Date(a.endDate).toISOString()));let g=c.length?`WHERE ${c.join(" AND ")}`:"",h=b.get(`SELECT COUNT(*) as c FROM requestDetails ${g}`,f),i=h?h.c:0,j=a.page||1,k=a.pageSize||50,l=Math.ceil(i/k);return{details:b.all(`SELECT data FROM requestDetails ${g} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...f,k,(j-1)*k]).map(a=>(0,e.q)(a.data,{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1}}}let ag=async()=>{aa&&(clearTimeout(aa),aa=null),_.length>0&&await ad()};async function ah(){let a=await (0,d.getAdapter)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),f={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,e.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))f.modelAliases[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))f.customModels.push((0,e.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))f.mitmAlias[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))f.pricing[b.key]=(0,e.q)(b.value);return f}async function ai(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.getAdapter)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:f,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,f||"oauth",g||null,h||null,i||null,+(!1!==j),(0,e.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,f||null,(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),f||"unknown",(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,e.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,e.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,e.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,e.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,e.s)(d||{})])}),await ah()}process.off("beforeExit",ag),process.off("SIGINT",ag),process.off("SIGTERM",ag),process.off("exit",ag),process.on("beforeExit",ag),process.on("SIGINT",ag),process.on("SIGTERM",ag),process.on("exit",ag)},9460:(a,b,c)=>{"use strict";c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.getAdapter)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},22846:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.getAdapter)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.getAdapter)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.getAdapter)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.getAdapter)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.getAdapter)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.getAdapter)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},36366:(a,b,c)=>{"use strict";c.d(b,{getAdapter:()=>k});var d=c(95658);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(4739).then(c.bind(c,24739));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(5258).then(c.bind(c,25258));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(8520).then(c.bind(c,88520));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(3593).then(c.bind(c,53593));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(5217).then(c.bind(c,45217));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},42655:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>j,exportSettings:()=>k,getSettings:()=>i});var d=c(36366),e=c(644);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},quotaVisibility:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},capacityAdapter:{vision:{enabled:!0,roundRobin:!1,models:[]},pdf:{enabled:!1,roundRobin:!1,models:[]},audioInput:{enabled:!1,roundRobin:!1,models:[]},videoInput:{enabled:!1,roundRobin:!1,models:[]}},requireLogin:!0,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",headroomEnabled:!1,headroomUrl:"http://localhost:8787",headroomCompressUserMessages:!1,pxpipeEnabled:!1,pxpipeAutoInstall:!0,pxpipeMinChars:25e3,pxpipeTimeoutMs:15e3,pxpipeModels:["claude-fable-5","claude-opus-4","claude-sonnet-4","claude-haiku-4"],responseCacheEnabled:!1,responseCacheTtlSec:300,emergencyFallbackEnabled:!1,emergencyFallbackProvider:"nvidia",emergencyFallbackModel:"openai/gpt-oss-120b",emergencyFallbackSkipForTools:!0,cacheControlMode:"auto"};async function g(){let a=(await (0,d.getAdapter)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function h(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b}async function i(){return h(await g())}async function j(a){let b,c=await (0,d.getAdapter)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h(b)}async function k(){return await g()}},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="krouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return k();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}()},62674:(a,b,c)=>{"use strict";function d(a,b,c=null){let e=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return e?e.value:c}function e(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}c.d(b,{dy:()=>d,np:()=>e}),c(36366)},74452:(a,b,c)=>{"use strict";c.r(b),c.d(b,{createApiKey:()=>i,deleteApiKey:()=>k,getApiKeyById:()=>h,getApiKeys:()=>g,updateApiKey:()=>j,validateApiKey:()=>l});var d=c(94755),e=c(36366);function f(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt}:null}async function g(){return(await (0,e.getAdapter)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(f)}async function h(a){return f((await (0,e.getAdapter)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function i(a,b){if(!b)throw Error("machineId is required");let f=await (0,e.getAdapter)(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,d.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString()};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt]),i}async function j(a,b){let c=await (0,e.getAdapter)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let g={...f(e),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ? WHERE id = ?",[g.key,g.name,g.machineId,+!!g.isActive,a]),d=g}),d}async function k(a){let b=(await (0,e.getAdapter)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function l(a){let b=(await (0,e.getAdapter)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}},78335:()=>{},95658:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(49120);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},96487:()=>{},97914:(a,b,c)=>{"use strict";c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function l(a){let b=await (0,d.getAdapter)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.getAdapter)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}}};
13
+ data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.isActive,c.testStatus,c.data,c.createdAt,c.updatedAt])}async function o(a={}){let b=await (0,f.getAdapter)(),c=[],d=[];void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive)),a.testStatus&&(c.push("testStatus = ?"),d.push(a.testStatus));let e=`SELECT * FROM proxyPools${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(e,d).map(m);return g.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0)),g}async function p(a){return m((await (0,f.getAdapter)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))}async function q(a){let b=await (0,f.getAdapter)(),c=new Date().toISOString(),d={id:a.id||(0,l.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return n(b,d),d}async function r(a,b){let c=await (0,f.getAdapter)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM proxyPools WHERE id = ?",[a]);if(!e)return;let f={...m(e),...b,updatedAt:new Date().toISOString()};n(c,f),d=f}),d}async function s(a){let b=await (0,f.getAdapter)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM proxyPools WHERE id = ?",[a]);d&&(c=m(d),b.run("DELETE FROM proxyPools WHERE id = ?",[a]))}),c}var t=c(74452);function u(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,h.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function v(){return(await (0,f.getAdapter)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(u)}async function w(a){return u((await (0,f.getAdapter)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function x(a){return u((await (0,f.getAdapter)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function y(a){let b=await (0,f.getAdapter)(),c=new Date().toISOString(),d={id:(0,l.A)(),name:a.name,kind:a.kind||null,models:a.models||[],createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[d.id,d.name,d.kind,(0,h.s)(d.models),d.createdAt,d.updatedAt]),d}async function z(a,b){let c=await (0,f.getAdapter)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!e)return;let f={...u(e),...b,updatedAt:new Date().toISOString()};c.run("UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?",[f.name,f.kind,(0,h.s)(f.models||[]),f.updatedAt,a]),d=f}),d}async function A(a){let b=(await (0,f.getAdapter)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var B=c(9460),C=c(97914);let D="disabledModels";async function E(){let a=(await (0,f.getAdapter)()).all("SELECT key, value FROM kv WHERE scope = ?",[D]),b={};for(let c of a)b[c.key]=(0,h.q)(c.value,[]);return b}async function F(a,b){if(!a||!Array.isArray(b))return;let c=await (0,f.getAdapter)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[D,a]),e=[...new Set([...d&&(0,h.q)(d.value,[])||[],...b])];c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[D,a,(0,h.s)(e)])})}async function G(a,b){if(!a)return;let c=await (0,f.getAdapter)();c.transaction(()=>{if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[D,a]);let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[D,a]),e=d&&(0,h.q)(d.value,[])||[],f=new Set(b),g=e.filter(a=>!f.has(a));0===g.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[D,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[D,a,(0,h.s)(g)])})}var H=c(94735);function I(a){return a&&"string"==typeof a?a.length<=8?a.charAt(0)+"***":a.slice(0,8)+"***":null}c(62674);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new H.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0});let J=global._pendingRequests,K=global._lastErrorProvider,L=global._pendingTimers,M=global._recentRing,N=global._connectionMapCache,O=global._statsEmitter;function P(a,b,c){a[b]||(a[b]={requests:0,promptTokens:0,completionTokens:0,cost:0}),a[b].requests+=c.requests||1,a[b].promptTokens+=c.promptTokens||0,a[b].completionTokens+=c.completionTokens||0,a[b].cost+=c.cost||0,c.meta&&Object.assign(a[b],c.meta)}async function Q(){if(Date.now()-N.ts<3e4)return N.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;N.map=d,N.ts=Date.now()}catch{}return N.map}async function R(){if(!M.initialized){M.initialized=!0;try{M.items=(await (0,f.getAdapter)()).all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, cost, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[50]).reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,apiKey:a.apiKey,endpoint:a.endpoint,cost:a.cost,status:a.status,tokens:(0,h.q)(a.tokens,{})}))}catch{}}}async function S(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=d.cached_tokens||d.cache_read_input_tokens||0,j=Math.max(0,h-i);if(g+=j*(f.input/1e6),i>0){let a=f.cached||f.input;g+=a/1e6*i}let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;if(l>0){let a=f.reasoning||f.output;g+=a/1e6*l}let m=d.cache_creation_input_tokens||0;if(m>0){let a=f.cache_creation||f.input;g+=a/1e6*m}return g}catch(a){return console.error("Error calculating cost:",a),0}}function T(a,b,c,d,e=!1){let f=b?`${a} (${b})`:a,g=`${c}|${f}`;J.byModel[f]||(J.byModel[f]=0),J.byModel[f]=Math.max(0,J.byModel[f]+(d?1:-1)),0===J.byModel[f]&&delete J.byModel[f],c&&(J.byAccount[c]||(J.byAccount[c]={}),J.byAccount[c][f]||(J.byAccount[c][f]=0),J.byAccount[c][f]=Math.max(0,J.byAccount[c][f]+(d?1:-1)),0===J.byAccount[c][f]&&(delete J.byAccount[c][f],0===Object.keys(J.byAccount[c]).length&&delete J.byAccount[c])),d?(clearTimeout(L[g]),L[g]=setTimeout(()=>{delete L[g],J.byModel[f]>0&&(J.byModel[f]=0),c&&J.byAccount[c]?.[f]>0&&(J.byAccount[c][f]=0),O.emit("pending")},6e4)):(clearTimeout(L[g]),delete L[g]),!d&&e&&b&&(K.provider=b.toLowerCase(),K.ts=Date.now());let h=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});console.log(`[${h}] [PENDING] ${d?"START":"END"}${e?" (ERROR)":""} | provider=${b} | model=${a}`),O.emit("pending")}async function U(){let a=[],b=await Q();for(let[c,d]of Object.entries(J.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}await R();let c=new Set;return{activeRequests:a,recentRequests:[...M.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",d=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!c.has(d)&&(c.add(d),!0)}).slice(0,20),errorProvider:Date.now()-K.ts<1e4?K.provider:""}}async function V(a){try{let b=await (0,f.getAdapter)();a.timestamp||(a.timestamp=new Date().toISOString()),a.cost=await S(a.provider,a.model,a.tokens);let c=a.tokens||{},d=c.prompt_tokens||c.input_tokens||0,e=c.completion_tokens||c.output_tokens||0;b.transaction(()=>{var f;let g,i,j,k,l,m,n,o,p,q;b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,a.endpoint||null,d,e,a.cost||0,a.status||"ok",(0,h.s)(c),(0,h.s)({})]);let r=(g=(f=a.timestamp)?new Date(f):new Date,`${g.getFullYear()}-${String(g.getMonth()+1).padStart(2,"0")}-${String(g.getDate()).padStart(2,"0")}`),s=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[r]),t=s?(0,h.q)(s.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{}};i=a.tokens?.prompt_tokens||a.tokens?.input_tokens||0,j=a.tokens?.completion_tokens||a.tokens?.output_tokens||0,k=a.cost||0,l={promptTokens:i,completionTokens:j,cost:k},t.requests=(t.requests||0)+1,t.promptTokens=(t.promptTokens||0)+i,t.completionTokens=(t.completionTokens||0)+j,t.cost=(t.cost||0)+k,t.byProvider||={},t.byModel||={},t.byAccount||={},t.byApiKey||={},t.byEndpoint||={},a.provider&&P(t.byProvider,a.provider,l),m=a.provider?`${a.model}|${a.provider}`:a.model,P(t.byModel,m,{...l,meta:{rawModel:a.model,provider:a.provider}}),a.connectionId&&P(t.byAccount,a.connectionId,{...l,meta:{rawModel:a.model,provider:a.provider}}),n=a.apiKey&&"string"==typeof a.apiKey?a.apiKey:"local-no-key",o=`${n}|${a.model}|${a.provider||"unknown"}`,P(t.byApiKey,o,{...l,meta:{rawModel:a.model,provider:a.provider,apiKey:a.apiKey||null}}),p=a.endpoint||"Unknown",q=`${p}|${a.model}|${a.provider||"unknown"}`,P(t.byEndpoint,q,{...l,meta:{endpoint:p,rawModel:a.model,provider:a.provider}}),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[r,(0,h.s)(t)]);let u=b.get("SELECT value FROM _meta WHERE key = 'totalRequestsLifetime'"),v=(u?parseInt(u.value,10):0)+1;b.run("INSERT INTO _meta(key, value) VALUES('totalRequestsLifetime', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(v)])}),M.items.push(a),M.items.length>50&&(M.items=M.items.slice(-50)),O.emit("update")}catch(a){console.error("Failed to save usage stats:",a)}}function W(a,b){if(null==b)return a.all("SELECT dateKey, data FROM usageDaily");let c=new Date,d=new Date(c.getFullYear(),c.getMonth(),c.getDate()-b+1),e=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`;return a.all("SELECT dateKey, data FROM usageDaily WHERE dateKey >= ?",[e])}async function X(a="all"){let b=await (0,f.getAdapter)(),[{getProviderConnections:d},{getApiKeys:e},{getProviderNodes:g}]=await Promise.all([Promise.resolve().then(c.bind(c,5781)),Promise.resolve().then(c.bind(c,74452)),Promise.resolve().then(c.bind(c,1129))]),i=[];try{i=await d()}catch{}let j={};for(let a of i)j[a.id]=a.name||a.email||a.id;let k={};try{for(let a of(await g()))a.id&&a.name&&(k[a.id]=a.name)}catch{}let l=[];try{l=await e()}catch{}let m={};for(let a of l)m[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let n=b.all("SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100"),o=new Set,p={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:J,activeRequests:[],recentRequests:n.map(a=>{let b=(0,h.q)(a.tokens,{})||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",c=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!o.has(c)&&(o.add(c),!0)}).slice(0,20),errorProvider:Date.now()-K.ts<1e4?K.provider:""};for(let[a,b]of Object.entries(J.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=j[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/);p.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let q=new Date,r=new Date(6e4*Math.floor(q.getTime()/6e4)),s=new Date(r.getTime()-54e4),t={};for(let a=0;a<10;a++){let b=r.getTime()-(9-a)*6e4;t[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},p.last10Minutes.push(t[b])}for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[s.toISOString(),q.toISOString()])){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);t[b]&&(t[b].requests++,t[b].promptTokens+=a.promptTokens||0,t[b].completionTokens+=a.completionTokens||0,t[b].cost+=a.cost||0)}if("24h"!==a&&"today"!==a){let c={"7d":7,"30d":30,"60d":60}[a]||null;for(let a of W(b,c)){let b=a.dateKey,c=(0,h.q)(a.data,{});for(let[a,b]of(p.totalPromptTokens+=c.promptTokens||0,p.totalCompletionTokens+=c.completionTokens||0,p.totalCost+=c.cost||0,Object.entries(c.byProvider||{})))p.byProvider[a]||(p.byProvider[a]={requests:0,promptTokens:0,completionTokens:0,cost:0}),p.byProvider[a].requests+=b.requests||0,p.byProvider[a].promptTokens+=b.promptTokens||0,p.byProvider[a].completionTokens+=b.completionTokens||0,p.byProvider[a].cost+=b.cost||0;for(let[a,d]of Object.entries(c.byModel||{})){let c=d.rawModel||a.split("|")[0],e=d.provider||a.split("|")[1]||"",f=e?`${c} (${e})`:c,g=k[e]||e;p.byModel[f]||(p.byModel[f]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c,provider:g,lastUsed:b}),p.byModel[f].requests+=d.requests||0,p.byModel[f].promptTokens+=d.promptTokens||0,p.byModel[f].completionTokens+=d.completionTokens||0,p.byModel[f].cost+=d.cost||0,b>(p.byModel[f].lastUsed||"")&&(p.byModel[f].lastUsed=b)}for(let[a,d]of Object.entries(c.byAccount||{})){let c=j[a]||`Account ${a.slice(0,8)}...`,e=d.rawModel||"",f=d.provider||"",g=k[f]||f,h=`${e} (${f} - ${c})`;p.byAccount[h]||(p.byAccount[h]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:e,provider:g,connectionId:a,accountName:c,lastUsed:b}),p.byAccount[h].requests+=d.requests||0,p.byAccount[h].promptTokens+=d.promptTokens||0,p.byAccount[h].completionTokens+=d.completionTokens||0,p.byAccount[h].cost+=d.cost||0,b>(p.byAccount[h].lastUsed||"")&&(p.byAccount[h].lastUsed=b)}for(let[a,d]of Object.entries(c.byApiKey||{})){let c=d.rawModel||"",e=d.provider||"",f=k[e]||e,g=d.apiKey,h=g?m[g]:null,i=h?.name||(g?g.slice(0,8)+"...":"Local (No API Key)"),j=I(g),l=j||"local-no-key";p.byApiKey[a]||(p.byApiKey[a]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c,provider:f,apiKeyMasked:j,keyName:i,apiKeyKey:l,lastUsed:b}),p.byApiKey[a].requests+=d.requests||0,p.byApiKey[a].promptTokens+=d.promptTokens||0,p.byApiKey[a].completionTokens+=d.completionTokens||0,p.byApiKey[a].cost+=d.cost||0,b>(p.byApiKey[a].lastUsed||"")&&(p.byApiKey[a].lastUsed=b)}for(let[a,d]of Object.entries(c.byEndpoint||{})){let c=d.endpoint||a.split("|")[0]||"Unknown",e=d.rawModel||"",f=d.provider||"",g=k[f]||f;p.byEndpoint[a]||(p.byEndpoint[a]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:c,rawModel:e,provider:g,lastUsed:b}),p.byEndpoint[a].requests+=d.requests||0,p.byEndpoint[a].promptTokens+=d.promptTokens||0,p.byEndpoint[a].completionTokens+=d.completionTokens||0,p.byEndpoint[a].cost+=d.cost||0,b>(p.byEndpoint[a].lastUsed||"")&&(p.byEndpoint[a].lastUsed=b)}}let d=c?Date.now()-864e5*c:0;for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint FROM usageHistory WHERE timestamp >= ?",[new Date(d).toISOString()])){let b=a.timestamp,c=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[c]&&new Date(b)>new Date(p.byModel[c].lastUsed)&&(p.byModel[c].lastUsed=b),a.connectionId){let c=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,d=`${a.model} (${a.provider} - ${c})`;p.byAccount[d]&&new Date(b)>new Date(p.byAccount[d].lastUsed)&&(p.byAccount[d].lastUsed=b)}let d=a.apiKey&&"string"==typeof a.apiKey?`${a.apiKey}|${a.model}|${a.provider||"unknown"}`:"local-no-key";p.byApiKey[d]&&new Date(b)>new Date(p.byApiKey[d].lastUsed)&&(p.byApiKey[d].lastUsed=b);let e=a.endpoint||"Unknown",f=`${e}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[f]&&new Date(b)>new Date(p.byEndpoint[f].lastUsed)&&(p.byEndpoint[f].lastUsed=b)}}else{let c;if("today"===a){let a=new Date;a.setHours(0,0,0,0),c=a.toISOString()}else c=new Date(Date.now()-864e5).toISOString();for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[c])){let b=(0,h.q)(a.tokens,{})||{},c=b.prompt_tokens||0,d=b.completion_tokens||0,e=a.cost||0,f=k[a.provider]||a.provider;p.totalPromptTokens+=c,p.totalCompletionTokens+=d,p.totalCost+=e,p.byProvider[a.provider]||(p.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),p.byProvider[a.provider].requests++,p.byProvider[a.provider].promptTokens+=c,p.byProvider[a.provider].completionTokens+=d,p.byProvider[a.provider].cost+=e;let g=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[g]||(p.byModel[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,lastUsed:a.timestamp}),p.byModel[g].requests++,p.byModel[g].promptTokens+=c,p.byModel[g].completionTokens+=d,p.byModel[g].cost+=e,new Date(a.timestamp)>new Date(p.byModel[g].lastUsed)&&(p.byModel[g].lastUsed=a.timestamp),a.connectionId){let b=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,g=`${a.model} (${a.provider} - ${b})`;p.byAccount[g]||(p.byAccount[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,connectionId:a.connectionId,accountName:b,lastUsed:a.timestamp}),p.byAccount[g].requests++,p.byAccount[g].promptTokens+=c,p.byAccount[g].completionTokens+=d,p.byAccount[g].cost+=e,new Date(a.timestamp)>new Date(p.byAccount[g].lastUsed)&&(p.byAccount[g].lastUsed=a.timestamp)}if(a.apiKey&&"string"==typeof a.apiKey){let b=m[a.apiKey],g=b?.name||a.apiKey.slice(0,8)+"...",h=I(a.apiKey),i=`${h}|${a.model}|${a.provider||"unknown"}`;p.byApiKey[i]||(p.byApiKey[i]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,apiKeyMasked:h,keyName:g,apiKeyKey:h,lastUsed:a.timestamp});let j=p.byApiKey[i];j.requests++,j.promptTokens+=c,j.completionTokens+=d,j.cost+=e,new Date(a.timestamp)>new Date(j.lastUsed)&&(j.lastUsed=a.timestamp)}else{p.byApiKey["local-no-key"]||(p.byApiKey["local-no-key"]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,apiKeyMasked:null,keyName:"Local (No API Key)",apiKeyKey:"local-no-key",lastUsed:a.timestamp});let b=p.byApiKey["local-no-key"];b.requests++,b.promptTokens+=c,b.completionTokens+=d,b.cost+=e,new Date(a.timestamp)>new Date(b.lastUsed)&&(b.lastUsed=a.timestamp)}let i=a.endpoint||"Unknown",l=`${i}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[l]||(p.byEndpoint[l]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:i,rawModel:a.model,provider:f,lastUsed:a.timestamp});let n=p.byEndpoint[l];n.requests++,n.promptTokens+=c,n.completionTokens+=d,n.cost+=e,new Date(a.timestamp)>new Date(n.lastUsed)&&(n.lastUsed=a.timestamp)}}return p.totalRequests=Object.values(p.byProvider).reduce((a,b)=>a+(b.requests||0),0),p}async function Y(a="7d"){let b=await (0,f.getAdapter)(),c=Date.now();if("today"===a){let a=new Date;a.setHours(0,0,0,0);let c=a.getTime(),d=c+864e5,e=Array.from({length:24},(a,b)=>({label:new Date(c+36e5*b).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(c).toISOString()])){let b=new Date(a.timestamp).getTime();if(b<c||b>=d)continue;let f=Math.floor((b-c)/36e5);f>=0&&f<24&&(e[f].tokens+=(a.promptTokens||0)+(a.completionTokens||0),e[f].cost+=a.cost||0)}return e}if("24h"===a){let a=c-864e5,d=Array.from({length:24},(b,c)=>({label:new Date(a+36e5*c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let e of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(a).toISOString()])){let b=new Date(e.timestamp).getTime();if(b<a||b>c)continue;let f=Math.min(Math.floor((b-a)/36e5),23);d[f].tokens+=(e.promptTokens||0)+(e.completionTokens||0),d[f].cost+=e.cost||0}return d}let d="7d"===a?7:"30d"===a?30:60,e=new Date,g=W(b,d),i={};for(let a of g)i[a.dateKey]=(0,h.q)(a.data,{});return Array.from({length:d},(a,b)=>{let c=new Date(e);c.setDate(c.getDate()-(d-1-b));let f=i[`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`];return{label:c.toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:f?(f.promptTokens||0)+(f.completionTokens||0):0,cost:f&&f.cost||0}})}async function Z(){}async function $(a=200){try{let b=(await (0,f.getAdapter)()).all("SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[a]);if(!b.length)return[];let d={};try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781));for(let b of(await a()))d[b.id]=b.name||b.email||""}catch{}return b.map(a=>{let b=function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${b(a.getDate())}-${b(a.getMonth()+1)}-${a.getFullYear()} ${b(a.getHours())}:${b(a.getMinutes())}:${b(a.getSeconds())}`}(new Date(a.timestamp)),c=a.provider?.toUpperCase()||"-",e=a.model||"-",f=d[a.connectionId]||(a.connectionId?a.connectionId.slice(0,8):"-"),g=a.tokens?(0,h.q)(a.tokens,{}):{},i=a.promptTokens??g.prompt_tokens??"-",j=a.completionTokens??g.completion_tokens??"-";return`${b} | ${e} | ${c} | ${f} | ${i} | ${j} | ${a.status||"-"}`})}catch(a){return console.error("[usageRepo] getRecentLogs failed:",a.message),[]}}let _=null,aa=0;async function ab(){if(_&&Date.now()-aa<5e3)return _;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;_={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{_={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return aa=Date.now(),_}let ac=[],ad=null,ae=!1;function af(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function ag(){if(!ae&&0!==ac.length){ae=!0;try{for(;ac.length>0;){let a=ac.splice(0,ac.length),b=await (0,f.getAdapter)(),c=await ab();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:af(d.request,c.maxJsonSize),providerRequest:af(d.providerRequest,c.maxJsonSize),providerResponse:af(d.providerResponse,c.maxJsonSize),response:af(d.response,c.maxJsonSize),warning:d.warning||null,warningDetail:d.warningDetail||null};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,h.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{ae=!1}}}async function ah(a){let b=await ab();b.enabled&&(ac.push(a),ac.length>=b.batchSize?(ad&&(clearTimeout(ad),ad=null),ag().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):ad||(ad=setTimeout(()=>{ad=null,ag().catch(()=>{})},b.flushIntervalMs)))}async function ai(a={}){let b=await (0,f.getAdapter)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),a.model&&(c.push("model = ?"),d.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),d.push(a.connectionId)),a.status&&(c.push("status = ?"),d.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),d.push(new Date(a.startDate).toISOString())),a.endDate&&(c.push("timestamp <= ?"),d.push(new Date(a.endDate).toISOString()));let e=c.length?`WHERE ${c.join(" AND ")}`:"",g=b.get(`SELECT COUNT(*) as c FROM requestDetails ${e}`,d),i=g?g.c:0,j=a.page||1,k=a.pageSize||50,l=Math.ceil(i/k);return{details:b.all(`SELECT data FROM requestDetails ${e} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...d,k,(j-1)*k]).map(a=>(0,h.q)(a.data,{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1}}}let aj=async()=>{ad&&(clearTimeout(ad),ad=null),ac.length>0&&await ag()};async function ak(){let a=await (0,f.getAdapter)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),d={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,h.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,h.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,h.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,h.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))d.modelAliases[b.key]=(0,h.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))d.customModels.push((0,h.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))d.mitmAlias[b.key]=(0,h.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))d.pricing[b.key]=(0,h.q)(b.value);return d}process.off("beforeExit",aj),process.off("SIGINT",aj),process.off("SIGTERM",aj),process.off("exit",aj),process.on("beforeExit",aj),process.on("SIGINT",aj),process.on("SIGTERM",aj),process.on("exit",aj);let al=["settings","providerConnections","providerNodes","proxyPools","apiKeys","combos","modelAliases","customModels","mitmAlias","pricing"];async function am(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");if(0===al.filter(b=>void 0!==a[b]).length)throw Error("This file does not look like a kRouter backup — it contains none of: "+al.join(", ")+". Nothing was changed.");try{let{makeBackupDir:a,backupFile:b,pruneOldBackups:d}=await c.e(8782).then(c.bind(c,18782));if(e().existsSync(g.AL)){let c=a("pre-import");b(g.AL,c),d(),console.log(`[DB] Pre-import snapshot written to ${c}`)}}catch(a){console.warn(`[DB] Could not write pre-import snapshot: ${a.message}`)}let b=await (0,f.getAdapter)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,h.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:e,name:f,email:g,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,e||"oauth",f||null,g||null,i||null,+(!1!==j),(0,h.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:e,createdAt:f,updatedAt:g,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,e||null,(0,h.s)(i),f||new Date().toISOString(),g||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),e||"unknown",(0,h.s)(i),f||new Date().toISOString(),g||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,h.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,h.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,h.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,h.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,h.s)(d||{})])}),await ak()}},9460:(a,b,c)=>{"use strict";c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.getAdapter)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},22846:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.getAdapter)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.getAdapter)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.getAdapter)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.getAdapter)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.getAdapter)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.getAdapter)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},36366:(a,b,c)=>{"use strict";c.d(b,{getAdapter:()=>k});var d=c(95658);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(4739).then(c.bind(c,24739));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(5258).then(c.bind(c,25258));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(8520).then(c.bind(c,88520));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(3593).then(c.bind(c,53593));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(192).then(c.bind(c,80192));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},42655:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>j,exportSettings:()=>k,getSettings:()=>i});var d=c(36366),e=c(644);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},quotaVisibility:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},capacityAdapter:{vision:{enabled:!0,roundRobin:!1,models:[]},pdf:{enabled:!1,roundRobin:!1,models:[]},audioInput:{enabled:!1,roundRobin:!1,models:[]},videoInput:{enabled:!1,roundRobin:!1,models:[]}},requireLogin:!0,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",headroomEnabled:!1,headroomUrl:"http://localhost:8787",headroomCompressUserMessages:!1,pxpipeEnabled:!1,pxpipeAutoInstall:!0,pxpipeMinChars:25e3,pxpipeTimeoutMs:15e3,pxpipeModels:["claude-fable-5","claude-opus-4","claude-sonnet-4","claude-haiku-4"],responseCacheEnabled:!1,responseCacheTtlSec:300,emergencyFallbackEnabled:!1,emergencyFallbackProvider:"nvidia",emergencyFallbackModel:"openai/gpt-oss-120b",emergencyFallbackSkipForTools:!0,cacheControlMode:"auto"};async function g(){let a=(await (0,d.getAdapter)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function h(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b}async function i(){return h(await g())}async function j(a){let b,c=await (0,d.getAdapter)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h(b)}async function k(){return await g()}},49120:(a,b,c)=>{"use strict";c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="krouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return k();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}()},62674:(a,b,c)=>{"use strict";function d(a,b,c=null){let e=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return e?e.value:c}function e(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}c.d(b,{dy:()=>d,np:()=>e}),c(36366)},74452:(a,b,c)=>{"use strict";c.r(b),c.d(b,{createApiKey:()=>i,deleteApiKey:()=>k,getApiKeyById:()=>h,getApiKeys:()=>g,updateApiKey:()=>j,validateApiKey:()=>l});var d=c(94755),e=c(36366);function f(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt}:null}async function g(){return(await (0,e.getAdapter)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(f)}async function h(a){return f((await (0,e.getAdapter)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function i(a,b){if(!b)throw Error("machineId is required");let f=await (0,e.getAdapter)(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,d.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString()};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt]),i}async function j(a,b){let c=await (0,e.getAdapter)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let g={...f(e),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ? WHERE id = ?",[g.key,g.name,g.machineId,+!!g.isActive,a]),d=g}),d}async function k(a){let b=(await (0,e.getAdapter)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function l(a){let b=(await (0,e.getAdapter)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}},78335:()=>{},95658:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(49120);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},96487:()=>{},97914:(a,b,c)=>{"use strict";c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function l(a){let b=await (0,d.getAdapter)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.getAdapter)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=523,exports.ids=[523],exports.modules={10523:(a,b,c)=>{c.d(b,{backupFile:()=>k,makeBackupDir:()=>j,pruneOldBackups:()=>l});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(7841),i=c(93585);function j(a){(0,h.Jh)();let b=(0,i.s)(),c=`${a}-${b}-${(0,i.I)()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function k(a,b,c=null){if(!e().existsSync(a))return null;let d=c||g().basename(a),f=g().join(b,d);return e().copyFileSync(a,f),f}function l(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(5))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}},93585:(a,b,c)=>{c.d(b,{I:()=>j,s:()=>i});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=null;function i(){if(h)return h;try{let a=g().join(process.cwd(),"package.json");h=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{h="0.0.0"}return h}function j(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}}};
@@ -1 +1 @@
1
- "use strict";exports.id=5718,exports.ids=[5718],exports.modules={16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(9248)},18893:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>z,OPTIONS:()=>y,buildModelsList:()=>x,invalidateModelsCache:()=>q});var d=c(81329),e=c(75681),f=c(89718),g=c(16655),h=c(29679),i=c(53225),j=c(15626);async function k(a){let b=!!a?.apiKey,c=b?a.apiKey:a?.accessToken;if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),5e3);try{let a=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:b?{Accept:"application/json",Authorization:`Bearer ${c}`}:(0,j.w$)(c,{Accept:"application/json"}),signal:d.signal});if(!a.ok)return null;let e=await a.json(),f=Array.isArray(e)?e:e?.data;if(!Array.isArray(f))return null;let g=f.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id,name:a.name||a.id}));return g.length?{models:g}:null}catch{return null}finally{clearTimeout(e)}}var l=c(52007),m=c(66306),n=c(77598),o=c.n(n);let p=new Map;function q(){p.clear()}let r={kiro:async a=>{let b=await (0,h.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,i.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,l.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await k({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null}},s=/[-_][0-9a-f]{8,}$/i,t={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};function u(a){return a?.type&&t[a.type]||"llm"}async function v(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function w(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function x(a){let b=[];try{b=(b=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive)}catch(a){console.log("Could not fetch providers, returning all models")}let c=[];try{c=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let h=[];try{h=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let i={};try{i=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let j={};try{j=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let k=(a,b)=>Array.isArray(j[a])&&j[a].includes(b),l=new Map;for(let a of b)l.has(a.provider)||l.set(a.provider,a);let n=[];for(let b of c){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),n.push(c)}if(0===b.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.vq))if(w(b[c]||c,a))for(let b of e)a.includes(u(b))&&(k(c,b.id)||n.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of h){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&n.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of l.entries()){if(!w(b,a))continue;let f=d.Xg[b]||b,g=(c?.providerSpecificData?.prefix||(0,e.wG)(b)||f).trim(),j=d.vq[f]||[],l=c?.providerSpecificData?.enabledModels,o=Array.isArray(l)&&l.length>0,p=(0,e.mq)(b)||(0,e.gb)(b),q=new Map(j.map(a=>[a.id,u(a)])),t=o?Array.from(new Set(l.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id);p&&0===t.length&&!s.test(b)&&(t=await v(c));let x=r[b];if(x&&!o)try{let a=await x(c);a?.models?.length&&(t=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}let y=t.map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),z=new Map;for(let c of Array.from(new Set([...y,...h.filter(c=>{if(!c?.id)return!1;let d=u(c)||"llm";if(!a.includes(d)&&!("imageToText"===d&&a.includes("llm")))return!1;let e=c.providerAlias;return e===f||e===g||e===b}).map(a=>{let b=String(a.id).trim();return b&&z.set(b,u(a)||"llm"),b}).filter(a=>""!==a),...Object.values(i||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${g}/`)||a.startsWith(`${f}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let d=z.get(c),e=q.get(c)||d||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c),h="imageToText"===e&&a.includes("llm");if(!a.includes(e)&&!h||k(g,c)||k(f,c))continue;let i={id:`${g}/${c}`,object:"model",owned_by:g},j=(0,m.a0)(d);if(j&&(i.capabilities=j),"llm"===e||h){let a=(0,m.nl)(b,c);Number.isFinite(a?.contextWindow)&&(i.context_length=a.contextWindow),Number.isFinite(a?.maxOutput)&&(i.max_completion_tokens=a.maxOutput)}n.push(i)}let A=e.AI_PROVIDERS[b],B=[];if(a.includes("tts")&&Array.isArray(A?.ttsConfig?.models))for(let a of A.ttsConfig.models)a?.id&&B.push(a.id);if(a.includes("embedding")&&Array.isArray(A?.embeddingConfig?.models))for(let a of A.embeddingConfig.models)a?.id&&B.push(a.id);for(let a of B)k(g,a)||k(f,a)||n.push({id:`${g}/${a}`,object:"model",owned_by:g});a.includes("webSearch")&&A?.searchConfig&&n.push({id:`${g}/search`,object:"model",kind:"webSearch",owned_by:g}),a.includes("webFetch")&&A?.fetchConfig&&n.push({id:`${g}/fetch`,object:"model",kind:"webFetch",owned_by:g})}let o=[],p=new Set;for(let a of n)!a?.id||p.has(a.id)||(p.add(a.id),o.push(a));return o}async function y(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function z(a){try{var b;let c=(a?.headers?.get("user-agent")||"").toLowerCase(),d=new URL(a.url),e=c.includes("codex")||"codex"===d.searchParams.get("format"),f=["llm"],g=(b=e?"codex":"openai",`${[...f].sort().join(",")}|${b}`),h=Date.now(),i=p.get(g);if(!i||i.expiresAt<=h){let a,b=await x(f),c=e?JSON.stringify({models:b.map(a=>({id:a.id,name:a.id,...a.capabilities?{capabilities:a.capabilities}:{}}))}):JSON.stringify({object:"list",data:b});i={body:c,etag:(a=o().createHash("sha1").update(c).digest("hex").slice(0,16),`W/"${a}"`),expiresAt:h+3e4},p.set(g,i)}let j=a?.headers?.get("if-none-match");if(j&&j===i.etag)return new Response(null,{status:304,headers:{"Access-Control-Allow-Origin":"*","Cache-Control":"public, max-age=30",ETag:i.etag}});return new Response(i.body,{status:200,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","Cache-Control":"public, max-age=30",ETag:i.etag}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},19225:(a,b,c)=>{a.exports=c(44870)},29679:(a,b,c)=>{c.d(b,{cW:()=>l});var d=c(94755),e=c(55511),f=c(8590);let g="1.0.0",h="0.10.32",i="us-east-1",j=new Map;async function k(a,b){let c,f,j,k=a?.providerSpecificData?.profileArn||"",l=function(a){if(!a||"string"!=typeof a)return i;let b=a.split(":");return b.length>=4&&b[3]?b[3]:i}(k),m=new URLSearchParams;m.set("origin","AI_EDITOR"),k&&m.set("profileArn",k);let n=`https://q.${l}.amazonaws.com/ListAvailableModels?${m.toString()}`,o={...(f=a?.providerSpecificData?.clientId||a?.refreshToken||a?.providerSpecificData?.profileArn||a?.accessToken||"kiro-anonymous",j=(0,e.createHash)("sha256").update(String(f)).digest("hex"),{"User-Agent":`aws-sdk-js/${g} ua/2.1 os/windows#10.0.26200 lang/js md/nodejs#22.21.1 api/codewhispererruntime#${g} m/N,E KiroIDE-${h}-${j}`,"x-amz-user-agent":`aws-sdk-js/${g} KiroIDE-${h}-${j}`,"x-amzn-kiro-agent-mode":"vibe","x-amzn-codewhisperer-optout":"true","amz-sdk-request":"attempt=1; max=1","amz-sdk-invocation-id":(0,d.A)(),Accept:"application/json"}),Authorization:`Bearer ${a?.accessToken||""}`},p=new AbortController,q=setTimeout(()=>p.abort("timeout"),3e4);b&&"function"==typeof b.addEventListener&&b.addEventListener("abort",()=>p.abort(b.reason));try{c=await fetch(n,{method:"GET",headers:o,signal:p.signal})}finally{clearTimeout(q)}if(!c.ok){let a=await c.text().catch(()=>""),b=Error(`Kiro ListAvailableModels ${c.status}: ${a||c.statusText}`);throw b.status=c.status,b.body=a,b}let r=await c.json();return Array.isArray(r?.models)?r.models:[]}async function l(a,b={}){let c,d,g;if(!a||!a.accessToken)return b.log?.debug?.("KIRO_MODELS","No accessToken; skipping live fetch"),null;let h=(g=(d=a?.providerSpecificData||{}).profileArn||d.clientId||a?.refreshToken||a?.accessToken||"anonymous",(0,e.createHash)("sha256").update(`kiro:${g}`).digest("hex")),i=Date.now();if(!b.forceRefresh){let a=j.get(h);if(a&&a.expiresAt>i)return{models:a.models,rawModels:a.rawModels}}try{c=await k(a,b.signal)}catch(d){if(!d||401!==d.status||!a.refreshToken)return b.log?.warn?.("KIRO_MODELS",`ListAvailableModels failed: ${d?.message||d}`),null;{b.log?.info?.("KIRO_MODELS","Got 401 from Kiro; refreshing token");let d=await (0,f.Ql)(a.refreshToken,a.providerSpecificData,b.log);if(!d?.accessToken)return b.log?.warn?.("KIRO_MODELS","Token refresh did not return accessToken"),null;{let e={...a,...d};if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed(d)}catch(a){b.log?.warn?.("KIRO_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await k(e,b.signal),a.accessToken=e.accessToken,e.refreshToken&&(a.refreshToken=e.refreshToken)}catch(a){return b.log?.warn?.("KIRO_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}}let m=[];for(let a of c){if(!a||"object"!=typeof a)continue;let b=a.modelId||a.id;if(!b)continue;let c=function(a,b,c){let d=(a||b||"Kiro").trim(),e=Number(c);if(!Number.isFinite(e)||1e-9>Math.abs(e-1)||e<=0)return`Kiro ${d}`;let f=e.toFixed(1).replace(",",".");return`Kiro ${d} (${f}x credit)`}(a.modelName,b,a.rateMultiplier),d=Number(a?.tokenLimits?.maxInputTokens)||2e5;for(let e of function(a,b){let c,d=((c=a).endsWith("-agentic")&&(c=c.slice(0,-8)),c.endsWith("-thinking")&&(c=c.slice(0,-9)),c),e=b||`Kiro ${d}`,f=[{id:d,name:e,capabilities:{thinking:!1,agentic:!1}},{id:`${d}-thinking`,name:`${e} (Thinking)`,capabilities:{thinking:!0,agentic:!1}}];return"auto"!==d&&(f.push({id:`${d}-agentic`,name:`${e} (Agentic)`,capabilities:{thinking:!1,agentic:!0}}),f.push({id:`${d}-thinking-agentic`,name:`${e} (Thinking + Agentic)`,capabilities:{thinking:!0,agentic:!0}})),f}(b,c))m.push({...e,contextLength:d,rateMultiplier:Number.isFinite(Number(a.rateMultiplier))?Number(a.rateMultiplier):1,upstreamModelId:b,description:a.description||""})}return j.set(h,{expiresAt:i+3e5,models:m,rawModels:c}),{models:m,rawModels:c}}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},81329:(a,b,c)=>{c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
1
+ "use strict";exports.id=5718,exports.ids=[5718],exports.modules={16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(9248)},18893:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>z,OPTIONS:()=>y,buildModelsList:()=>x,invalidateModelsCache:()=>q});var d=c(81329),e=c(75681),f=c(89718),g=c(16655),h=c(29679),i=c(53225),j=c(15626);async function k(a){let b=!!a?.apiKey,c=b?a.apiKey:a?.accessToken;if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),5e3);try{let a=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:b?{Accept:"application/json",Authorization:`Bearer ${c}`}:(0,j.w$)(c,{Accept:"application/json"}),signal:d.signal});if(!a.ok)return null;let e=await a.json(),f=Array.isArray(e)?e:e?.data;if(!Array.isArray(f))return null;let g=f.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id,name:a.name||a.id}));return g.length?{models:g}:null}catch{return null}finally{clearTimeout(e)}}var l=c(52007),m=c(66306),n=c(77598),o=c.n(n);let p=new Map;function q(){p.clear()}let r={kiro:async a=>{let b=await (0,h.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,i.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,l.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await k({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null}},s=/[-_][0-9a-f]{8,}$/i,t={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};function u(a){return a?.type&&t[a.type]||"llm"}async function v(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function w(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function x(a){let b=[],c=!1;try{b=(b=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive)}catch(a){c=!0,console.log("Could not fetch providers, returning all models")}let h=[];try{h=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let i=[];try{i=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let j={};try{j=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let k={};try{k=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let l=(a,b)=>Array.isArray(k[a])&&k[a].includes(b),n=new Map;for(let a of b)n.has(a.provider)||n.set(a.provider,a);let o=[];for(let b of h){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),o.push(c)}if(c){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.vq))if(w(b[c]||c,a))for(let b of e)a.includes(u(b))&&(l(c,b.id)||o.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of i){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&o.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of n.entries()){if(!w(b,a))continue;let f=d.Xg[b]||b,g=(c?.providerSpecificData?.prefix||(0,e.wG)(b)||f).trim(),h=d.vq[f]||[],k=c?.providerSpecificData?.enabledModels,n=Array.isArray(k)&&k.length>0,p=(0,e.mq)(b)||(0,e.gb)(b),q=new Map(h.map(a=>[a.id,u(a)])),t=n?Array.from(new Set(k.filter(a=>"string"==typeof a&&""!==a.trim()))):h.map(a=>a.id);p&&0===t.length&&!s.test(b)&&(t=await v(c));let x=r[b];if(x&&!n)try{let a=await x(c);a?.models?.length&&(t=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}let y=t.map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),z=new Map;for(let c of Array.from(new Set([...y,...i.filter(c=>{if(!c?.id)return!1;let d=u(c)||"llm";if(!a.includes(d)&&!("imageToText"===d&&a.includes("llm")))return!1;let e=c.providerAlias;return e===f||e===g||e===b}).map(a=>{let b=String(a.id).trim();return b&&z.set(b,u(a)||"llm"),b}).filter(a=>""!==a),...Object.values(j||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${g}/`)||a.startsWith(`${f}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let d=z.get(c),e=q.get(c)||d||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c),h="imageToText"===e&&a.includes("llm");if(!a.includes(e)&&!h||l(g,c)||l(f,c))continue;let i={id:`${g}/${c}`,object:"model",owned_by:g},j=(0,m.a0)(d);if(j&&(i.capabilities=j),"llm"===e||h){let a=(0,m.nl)(b,c);Number.isFinite(a?.contextWindow)&&(i.context_length=a.contextWindow),Number.isFinite(a?.maxOutput)&&(i.max_completion_tokens=a.maxOutput)}o.push(i)}let A=e.AI_PROVIDERS[b],B=[];if(a.includes("tts")&&Array.isArray(A?.ttsConfig?.models))for(let a of A.ttsConfig.models)a?.id&&B.push(a.id);if(a.includes("embedding")&&Array.isArray(A?.embeddingConfig?.models))for(let a of A.embeddingConfig.models)a?.id&&B.push(a.id);for(let a of B)l(g,a)||l(f,a)||o.push({id:`${g}/${a}`,object:"model",owned_by:g});a.includes("webSearch")&&A?.searchConfig&&o.push({id:`${g}/search`,object:"model",kind:"webSearch",owned_by:g}),a.includes("webFetch")&&A?.fetchConfig&&o.push({id:`${g}/fetch`,object:"model",kind:"webFetch",owned_by:g})}let p=[],q=new Set;for(let a of o)!a?.id||q.has(a.id)||(q.add(a.id),p.push(a));return p}async function y(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function z(a){try{var b;let c=(a?.headers?.get("user-agent")||"").toLowerCase(),d=new URL(a.url),e=c.includes("codex")||"codex"===d.searchParams.get("format"),f=["llm"],g=(b=e?"codex":"openai",`${[...f].sort().join(",")}|${b}`),h=Date.now(),i=p.get(g);if(!i||i.expiresAt<=h){let a,b=await x(f),c=e?JSON.stringify({models:b.map(a=>({id:a.id,name:a.id,...a.capabilities?{capabilities:a.capabilities}:{}}))}):JSON.stringify({object:"list",data:b});i={body:c,etag:(a=o().createHash("sha1").update(c).digest("hex").slice(0,16),`W/"${a}"`),expiresAt:h+3e4},p.set(g,i)}let j=a?.headers?.get("if-none-match");if(j&&j===i.etag)return new Response(null,{status:304,headers:{"Access-Control-Allow-Origin":"*","Cache-Control":"public, max-age=30",ETag:i.etag}});return new Response(i.body,{status:200,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*","Cache-Control":"public, max-age=30",ETag:i.etag}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},19225:(a,b,c)=>{a.exports=c(44870)},29679:(a,b,c)=>{c.d(b,{cW:()=>l});var d=c(94755),e=c(55511),f=c(8590);let g="1.0.0",h="0.10.32",i="us-east-1",j=new Map;async function k(a,b){let c,f,j,k=a?.providerSpecificData?.profileArn||"",l=function(a){if(!a||"string"!=typeof a)return i;let b=a.split(":");return b.length>=4&&b[3]?b[3]:i}(k),m=new URLSearchParams;m.set("origin","AI_EDITOR"),k&&m.set("profileArn",k);let n=`https://q.${l}.amazonaws.com/ListAvailableModels?${m.toString()}`,o={...(f=a?.providerSpecificData?.clientId||a?.refreshToken||a?.providerSpecificData?.profileArn||a?.accessToken||"kiro-anonymous",j=(0,e.createHash)("sha256").update(String(f)).digest("hex"),{"User-Agent":`aws-sdk-js/${g} ua/2.1 os/windows#10.0.26200 lang/js md/nodejs#22.21.1 api/codewhispererruntime#${g} m/N,E KiroIDE-${h}-${j}`,"x-amz-user-agent":`aws-sdk-js/${g} KiroIDE-${h}-${j}`,"x-amzn-kiro-agent-mode":"vibe","x-amzn-codewhisperer-optout":"true","amz-sdk-request":"attempt=1; max=1","amz-sdk-invocation-id":(0,d.A)(),Accept:"application/json"}),Authorization:`Bearer ${a?.accessToken||""}`},p=new AbortController,q=setTimeout(()=>p.abort("timeout"),3e4);b&&"function"==typeof b.addEventListener&&b.addEventListener("abort",()=>p.abort(b.reason));try{c=await fetch(n,{method:"GET",headers:o,signal:p.signal})}finally{clearTimeout(q)}if(!c.ok){let a=await c.text().catch(()=>""),b=Error(`Kiro ListAvailableModels ${c.status}: ${a||c.statusText}`);throw b.status=c.status,b.body=a,b}let r=await c.json();return Array.isArray(r?.models)?r.models:[]}async function l(a,b={}){let c,d,g;if(!a||!a.accessToken)return b.log?.debug?.("KIRO_MODELS","No accessToken; skipping live fetch"),null;let h=(g=(d=a?.providerSpecificData||{}).profileArn||d.clientId||a?.refreshToken||a?.accessToken||"anonymous",(0,e.createHash)("sha256").update(`kiro:${g}`).digest("hex")),i=Date.now();if(!b.forceRefresh){let a=j.get(h);if(a&&a.expiresAt>i)return{models:a.models,rawModels:a.rawModels}}try{c=await k(a,b.signal)}catch(d){if(!d||401!==d.status||!a.refreshToken)return b.log?.warn?.("KIRO_MODELS",`ListAvailableModels failed: ${d?.message||d}`),null;{b.log?.info?.("KIRO_MODELS","Got 401 from Kiro; refreshing token");let d=await (0,f.Ql)(a.refreshToken,a.providerSpecificData,b.log);if(!d?.accessToken)return b.log?.warn?.("KIRO_MODELS","Token refresh did not return accessToken"),null;{let e={...a,...d};if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed(d)}catch(a){b.log?.warn?.("KIRO_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await k(e,b.signal),a.accessToken=e.accessToken,e.refreshToken&&(a.refreshToken=e.refreshToken)}catch(a){return b.log?.warn?.("KIRO_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}}let m=[];for(let a of c){if(!a||"object"!=typeof a)continue;let b=a.modelId||a.id;if(!b)continue;let c=function(a,b,c){let d=(a||b||"Kiro").trim(),e=Number(c);if(!Number.isFinite(e)||1e-9>Math.abs(e-1)||e<=0)return`Kiro ${d}`;let f=e.toFixed(1).replace(",",".");return`Kiro ${d} (${f}x credit)`}(a.modelName,b,a.rateMultiplier),d=Number(a?.tokenLimits?.maxInputTokens)||2e5;for(let e of function(a,b){let c,d=((c=a).endsWith("-agentic")&&(c=c.slice(0,-8)),c.endsWith("-thinking")&&(c=c.slice(0,-9)),c),e=b||`Kiro ${d}`,f=[{id:d,name:e,capabilities:{thinking:!1,agentic:!1}},{id:`${d}-thinking`,name:`${e} (Thinking)`,capabilities:{thinking:!0,agentic:!1}}];return"auto"!==d&&(f.push({id:`${d}-agentic`,name:`${e} (Agentic)`,capabilities:{thinking:!1,agentic:!0}}),f.push({id:`${d}-thinking-agentic`,name:`${e} (Thinking + Agentic)`,capabilities:{thinking:!0,agentic:!0}})),f}(b,c))m.push({...e,contextLength:d,rateMultiplier:Number.isFinite(Number(a.rateMultiplier))?Number(a.rateMultiplier):1,upstreamModelId:b,description:a.description||""})}return j.set(h,{expiresAt:i+3e5,models:m,rawModels:c}),{models:m,rawModels:c}}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},81329:(a,b,c)=>{c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
@@ -1,3 +1,3 @@
1
- "use strict";exports.id=6200,exports.ids=[6200],exports.modules={9999:(a,b,c)=>{c.d(b,{$S:()=>l,$T:()=>m,QS:()=>n,e3:()=>o});var d=c(77598),e=c.n(d);let f=globalThis;f.__krouterResponseCache||(f.__krouterResponseCache=new Map,f.__krouterResponseCacheStats={hits:0,misses:0,skipped:0,bytesSaved:0,tokensSaved:0,lastResetAt:Date.now()});let g=f.__krouterResponseCache,h=f.__krouterResponseCacheStats;function i({model:a,body:b}){let c=JSON.stringify({model:a,system:b?.system??null,instructions:b?.instructions??null,messages:b?.messages??null,input:b?.input??null,contents:b?.contents??null,temperature:b?.temperature??null,max_tokens:b?.max_tokens??b?.max_output_tokens??null,tools:b?.tools??null,tool_choice:b?.tool_choice??null,response_format:b?.response_format??null});return e().createHash("sha256").update(c).digest("hex")}let j=new Set(["antigravity","ag","gemini","gemini-cli","gc"]);function k(a,b=null){if(!a||"object"!=typeof a||!0===a.stream||"number"==typeof a.temperature&&a.temperature>.3||"required"===a.tool_choice)return!1;let c=function(a){if("string"!=typeof a)return null;let b=a.indexOf("/");return b>0?a.slice(0,b):null}(b);if(c&&j.has(c))return!1;let d=a.max_tokens??a.max_output_tokens??null;return"number"!=typeof d||!(d<32)}function l({model:a,body:b}){if(!k(b,a))return h.skipped++,null;let c=i({model:a,body:b}),d=g.get(c);return d?d.expiresAt<Date.now()?(g.delete(c),h.misses++,null):(g.delete(c),g.set(c,d),h.hits++,h.bytesSaved+=d.bodyBytes||0,h.tokensSaved+=d.estimatedTokens||0,d):(h.misses++,null)}function m({model:a,body:b,status:c,contentType:d,responseBody:e,estimatedTokens:f=0,ttlMs:h=3e5,maxEntries:j=500}){if(!k(b,a)||200!==c||!e||"string"==typeof e&&e.length<100)return!1;let l=i({model:a,body:b}),n="string"==typeof e?e:JSON.stringify(e),o={key:l,status:c,contentType:d||"application/json",body:n,bodyBytes:Buffer.byteLength(n,"utf-8"),estimatedTokens:f,expiresAt:Date.now()+h,storedAt:Date.now(),model:a};for(g.set(l,o);g.size>j;){let a=g.keys().next().value;if(void 0===a)break;g.delete(a)}return!0}function n(){let a=h.hits+h.misses;return{enabled:!0,entries:g.size,hits:h.hits,misses:h.misses,skipped:h.skipped,hitRate:a>0?h.hits/a:0,bytesSaved:h.bytesSaved,tokensSaved:h.tokensSaved,lastResetAt:h.lastResetAt}}function o(){g.clear(),h.hits=0,h.misses=0,h.skipped=0,h.bytesSaved=0,h.tokensSaved=0,h.lastResetAt=Date.now()}},17603:(a,b,c)=>{c.d(b,{R8:()=>j,ar:()=>l,vB:()=>h});var d=c(66306);let e=["vision","pdf","audioInput","videoInput"],f=new Set(e);function g(a,b){var c;let d=Array.isArray(c=b?.capacityAdapter?.[a])?{enabled:!0,roundRobin:!1,models:c.map(a=>a?.model||a).filter(Boolean)}:c&&"object"==typeof c?{enabled:!1!==c.enabled,roundRobin:!!c.roundRobin,models:Array.isArray(c.models)?c.models.filter(Boolean):[]}:{enabled:!1,roundRobin:!1,models:[]};return d.enabled&&0===d.models.length?{...d,models:["mmf/mimo-auto"]}:d}function h(a,b){for(let c of[...a||[]].filter(a=>f.has(a))){let{enabled:a,models:d}=g(c,b);if(a&&0!==d.length)return function(a,b){let{enabled:c,roundRobin:d}=g(a,b);return c&&d?"round-robin":"fallback"}(c,b)}return"fallback"}function i(a,b){let c=a.indexOf("/"),e=c>0?a.slice(0,c):"",f=c>0?a.slice(c+1):a,g=(0,d.nl)(e,f);return b.every(a=>!0===g[a])}function j(a,b,c){let d=[...b||[]].filter(a=>f.has(a));if(0===d.length||!Array.isArray(a)||0===a.length||a.some(a=>i(a,d)))return a;let h=(function(a){let b=new Set,c=[];for(let d of e){let{enabled:e,models:f}=g(d,a);if(e)for(let a of f)b.has(a)||(b.add(a),c.push(a))}return c})(c).filter(b=>!a.includes(b)&&i(b,d));return 0===h.length?a:[...h,...a]}function k(a){return"string"==typeof a?a.length:Array.isArray(a)?a.reduce((a,b)=>a+("string"==typeof b?.text?b.text.length:50),0):0}function l(a,b){let c=new Set(b);return 0===c.size?a:(b,e,...f)=>{if(c.has(e)){let a=e.indexOf("/"),c=a>0?e.slice(0,a):"",f=a>0?e.slice(a+1):e,{contextWindow:g}=(0,d.nl)(c,f);b=function(a,b){let c=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":Array.isArray(a.contents)?"contents":null;if(!c)return a;let d=a[c];if(!d||0===d.length)return a;let e=a=>"system"===a||"developer"===a,f=d.filter(a=>e(a?.role)),g=d.filter(a=>!e(a?.role));if(0===g.length)return a;let h=a=>"assistant"===a||"model"===a,i=g.length-1;for(;i>=0&&!h(g[i]?.role);)i--;let j=g.slice(i+1),l=g.slice(0,i+1);if(0===l.length)return a;let m=a=>a.content??a.parts,n=.8*(b||2e5)*4,o=l.slice(0,6),p=f.concat(o,j).reduce((a,b)=>a+k(m(b)),0);for(;p>n&&o.length>0;)p-=k(m(o.pop()));return o.length===l.length?a:{...a,[c]:[...f,...o,...j]}}(b,g)}return a(b,e,...f)}}},24253:(a,b,c)=>{c.d(b,{I6:()=>n,Mo:()=>i,RG:()=>m,V:()=>j,Y8:()=>l,xl:()=>o});var d=c(1932),e=c(87155);let f=null,g=null,h=null;function i(){return g?{loaded:!0,version:g.version,loadedAt:g.loadedAt}:{loaded:!1}}async function j(){return g||h||(h=k().finally(()=>{h=null}))}async function k(){let a=(0,e.S1)();if(!a.installed){let a=Error("PXPIPE is not installed");throw a.code="NOT_INSTALLED",a}let b=`${(0,d.pathToFileURL)((0,e.CG)()).href}?v=${encodeURIComponent(a.version||"0")}`,c=await import(b);if("function"!=typeof c.transformAnthropicMessages)throw Error("installed pxpipe package does not export transformAnthropicMessages");return g={module:c,version:a.version,loadedAt:Date.now()}}function l(){let a=!!g;return g=null,a}async function m({autoLoad:a=!0}={}){try{if(!g&&!a)return null;let{module:b}=await j();return b.transformAnthropicMessages}catch{return null}}async function n(a){let b=Array.isArray(a)?a.map(a=>String(a).trim()).filter(Boolean):[],c=b.slice().sort().join(",");if(c!==f)try{if(!(0,e.S1)().installed)return;let a=await import((0,d.pathToFileURL)((0,e.kC)()).href);"function"==typeof a.setAllowedModelBases&&(a.setAllowedModelBases(b.length?b:null),f=c)}catch{}}async function o(){let a=Date.now(),{module:b}=await j(),c=new TextEncoder().encode(JSON.stringify({model:"claude-fable-5",max_tokens:16,messages:[{role:"user",content:"ping"}]})),d=await b.transformAnthropicMessages({body:c,model:"claude-fable-5"});if(!d||"boolean"!=typeof d.applied||!(d.body instanceof Uint8Array))throw Error("transform returned an unexpected shape");return{ok:!0,reason:d.reason,durationMs:Date.now()-a}}},25772:(a,b,c)=>{c.d(b,{Io:()=>h,WV:()=>f});let d=null,e=0;function f(a={}){let{sidecarUrl:b=process.env.SIDECAR_URL||"http://presidio-sidecar:5001/redact",timeout:h=Number(process.env.REDACTION_TIMEOUT_MS)||15e3,enabled:i="false"!==process.env.REDACTION_ENABLED,failOpen:j="true"===process.env.REDACTION_FAIL_OPEN}=a;return async function(a,f){if(!i)return f(a);if(Date.now()-e>1e4)try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a();d=!!(b.presidioEnabled&&b.presidioPiiRedaction),e=Date.now()}catch(b){if(console.error("[Redaction Middleware] Failed to read settings:",b),!0===d&&!j)return new Response(JSON.stringify({error:{message:"Unable to verify redaction settings",code:"SETTINGS_ERROR",type:"settings_error"}}),{status:500,headers:{"Content-Type":"application/json"}});return f(a)}if(!d||"POST"!==a.method)return f(a);try{let c=await a.clone().json(),d=[],e=[];if(Array.isArray(c.messages))for(let a=0;a<c.messages.length;a++){let b=c.messages[a],f=b?.content;if(f){if("string"==typeof f)d.push(f),e.push({type:"string",index:a});else if(Array.isArray(f))for(let b=0;b<f.length;b++){let c=f[b];c?.type==="text"&&"string"==typeof c?.text&&(d.push(c.text),e.push({type:"array",msgIndex:a,blockIndex:b}))}}}if("string"==typeof c.system)d.push(c.system),e.push({type:"system-string"});else if(Array.isArray(c.system))for(let a=0;a<c.system.length;a++){let b=c.system[a];b?.type==="text"&&"string"==typeof b?.text&&(d.push(b.text),e.push({type:"system-block",blockIndex:a}))}if("string"==typeof c.instructions&&(d.push(c.instructions),e.push({type:"instructions"})),"string"==typeof c.input)d.push(c.input),e.push({type:"input-string"});else if(Array.isArray(c.input))for(let a=0;a<c.input.length;a++){let b=c.input[a],f=b?.content;if("string"==typeof f)d.push(f),e.push({type:"input-item-string",index:a});else if(Array.isArray(f))for(let b=0;b<f.length;b++){let c=f[b];(c?.type==="input_text"||c?.type==="output_text"||c?.type==="text")&&"string"==typeof c?.text&&(d.push(c.text),e.push({type:"input-item-block",itemIndex:a,blockIndex:b}))}}if(Array.isArray(c.messages))for(let a=0;a<c.messages.length;a++){let b=c.messages[a];if(b?.role==="tool"&&"string"==typeof b.content&&(d.push(b.content),e.push({type:"tool-message",index:a})),Array.isArray(b?.tool_calls))for(let c=0;c<b.tool_calls.length;c++){let f=b.tool_calls[c]?.function?.arguments;"string"==typeof f&&f.length>0&&(d.push(f),e.push({type:"tool-call-args",msgIndex:a,callIndex:c}))}if(Array.isArray(b?.content))for(let c=0;c<b.content.length;c++){let f=b.content[c];if(f?.type==="tool_result"){if("string"==typeof f.content)d.push(f.content),e.push({type:"tool-result-string",msgIndex:a,blockIndex:c});else if(Array.isArray(f.content))for(let b=0;b<f.content.length;b++){let g=f.content[b];g?.type==="text"&&"string"==typeof g.text&&(d.push(g.text),e.push({type:"tool-result-block",msgIndex:a,blockIndex:c,innerIndex:b}))}}}}if(Array.isArray(c.tools))for(let a=0;a<c.tools.length;a++){let b=c.tools[a];"string"==typeof b?.description&&b.description.length>0?(d.push(b.description),e.push({type:"tool-desc",index:a})):"string"==typeof b?.function?.description&&b.function.description.length>0&&(d.push(b.function.description),e.push({type:"tool-fn-desc",index:a}))}if(0===d.length)return f(a);let i=await g(b,d,{timeout:h}),j=0;for(let a of e){if("string"===a.type)c.messages[a.index].content=i[j];else if("array"===a.type)c.messages[a.msgIndex].content[a.blockIndex].text=i[j];else if("system-string"===a.type)c.system=i[j];else if("system-block"===a.type)c.system[a.blockIndex].text=i[j];else if("instructions"===a.type)c.instructions=i[j];else if("input-string"===a.type)c.input=i[j];else if("input-item-string"===a.type)c.input[a.index].content=i[j];else if("input-item-block"===a.type)c.input[a.itemIndex].content[a.blockIndex].text=i[j];else if("tool-message"===a.type)c.messages[a.index].content=i[j];else if("tool-call-args"===a.type){let b=i[j],d=!1;try{JSON.parse(b),d=!0}catch{d=!1}d?c.messages[a.msgIndex].tool_calls[a.callIndex].function.arguments=b:console.warn("[Redaction Middleware] Skipped tool_call arguments: redaction produced invalid JSON")}else"tool-result-string"===a.type?c.messages[a.msgIndex].content[a.blockIndex].content=i[j]:"tool-result-block"===a.type?c.messages[a.msgIndex].content[a.blockIndex].content[a.innerIndex].text=i[j]:"tool-desc"===a.type?c.tools[a.index].description=i[j]:"tool-fn-desc"===a.type&&(c.tools[a.index].function.description=i[j]);j++}let k=new Request(a.url,{method:a.method,headers:a.headers,body:JSON.stringify(c)});return f(k)}catch(e){if(console.error(`[Redaction Middleware] Error: ${e.message}`),j)return console.warn("[Redaction Middleware] Fail-open enabled - proceeding with original request"),f(a);let b=500,c="internal_error",d="Request processing failed";return"AbortError"===e.name||e.message.includes("timeout")||e.message.includes("TIMEOUT")?(b=503,c="redaction_timeout",d="PII redaction service unavailable. Please try again later."):e.message.includes("fetch")||e.message.includes("ECONNREFUSED")||e.message.includes("ENOTFOUND")||e.message.includes("ECONNRESET")||"TypeError"===e.name&&e.message.includes("fetch")?(b=503,c="redaction_service_unavailable",d="PII redaction service unavailable. Please try again later."):e.message.includes("redact")||e.message.includes("sidecar")||e.message.includes("HTTP 5")?(b=502,c="redaction_service_error",d="PII redaction service error. Please try again later."):(e.message.includes("Invalid")||e.message.includes("format"))&&(b=400,c="invalid_request",d="Invalid request format."),console.error(JSON.stringify({timestamp:new Date().toISOString(),event:"redaction_failure",errorType:c,errorMessage:e.message,statusCode:b,path:new URL(a.url).pathname,method:a.method})),new Response(JSON.stringify({error:{message:d,code:c.toUpperCase(),type:c,requestId:a.headers.get("x-request-id")||void 0}}),{status:b,headers:{"Content-Type":"application/json","X-Redaction-Failed":"true"}})}}}async function g(a,b,{timeout:c=2e3}={}){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({texts:b}),signal:d.signal});if(!c.ok)throw Error(`Sidecar redaction service error: HTTP ${c.status}`);let e=await c.json();if(!e.redacted_texts||!Array.isArray(e.redacted_texts))throw Error("Sidecar redaction service returned invalid response");if(e.redacted_texts.length!==b.length)throw Error("Sidecar redaction service returned wrong number of redacted texts");return e.redacted_texts}finally{clearTimeout(e)}}function h(a,b={}){let c=f(b);return async function(b,...d){return c(b,b=>a(b,...d))}}},38775:(a,b,c)=>{c.d(b,{d_:()=>k,mA:()=>j});var d=c(89718),e=c(40669),f=c(35024),g=c(44404);let h={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"},i=new Set([...Object.keys(h),...Object.keys(f.xq),...Object.keys(g.Xg),...Object.values(g.Xg)]);async function j(a){let b,c=(b=(0,e.Xh)(a),b?.providerAlias&&h[b.providerAlias]?{...b,provider:h[b.providerAlias]}:b);if(!c.isAlias){if(!i.has(c.providerAlias)){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===c.providerAlias);if(a)return{provider:a.id,model:c.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===c.providerAlias);if(b)return{provider:b.id,model:c.model};let e=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===c.providerAlias);if(e)return{provider:e.id,model:c.model}}return{provider:c.provider,model:c.model}}return await (0,d.Dj)(c.model)?{provider:null,model:c.model}:(0,e.js)(a,d.OM)}async function k(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},54413:(a,b,c)=>{c.d(b,{D:()=>e});let d={"qwen3.6-plus-free":{replacement:"qwen3.6-plus",tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"minimax-m2.5-free":{replacement:"minimax-m2.5",tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"nemotron-3-super-free":{replacement:null,tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"trinity-large-preview-free":{replacement:null,tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"big-pickle":{replacement:null,tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"}};function e(a){if(!a||"string"!=typeof a)return null;let b=a.includes("/")?a.slice(a.lastIndexOf("/")+1):a,c=d[b];if(!c)return null;let e=c.replacement?`Use "${c.replacement}" on the ${c.tier} instead.`:`No direct replacement — pick a live model on the ${c.tier}.`;return`Model "${b}" has been retired (${c.reason}). ${e}`}},74388:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>B});var e=c(48895),f=c(80238),g=c(89718),h=c(38775),i=c(92500),j=c(43659),k=c(54413),l=c(8864),m=c(38962),n=c(17603),o=c(27349),p=c(24253),q=c(74388),r=c(9999),s=c(41004),t=c(53258),u=c(14170),v=c(7803),w=c(67828),x=c(38160),y=c(29385),z=a([e,i]);async function A(a){return a?.pxpipeEnabled?(await (0,p.I6)(a.pxpipeModels),(0,p.RG)()):null}async function B(a,b=null){let d;try{d=await a.json()}catch{return v.warn("CHAT","Invalid JSON body"),(0,j.yj)(s.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:d,headers:Object.fromEntries(a.headers.entries())});let e=new URL(a.url),i=d.model,k=d.messages?.length||d.input?.length||0,l=d.tools?.length||0,p=d.reasoning_effort||d.reasoning?.effort||null;v.request("POST",`${e.pathname} | ${i} | ${k} msgs${l?` | ${l} tools`:""}${p?` | effort=${p}`:""}`);let q=a.headers.get("Authorization"),t=(0,f.Tr)(a);if(q&&t){let a=v.maskKey(t);v.debug("AUTH",`API Key: ${a}`)}else v.debug("AUTH","No API key provided (local mode)");let u=await (0,g.mt)();if(u.requireApiKey){if(!t)return v.warn("AUTH","Missing API key (requireApiKey=true)"),(0,j.yj)(s.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(t))return v.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,j.yj)(s.gx.UNAUTHORIZED,"Invalid API key")}if(!i)return v.warn("CHAT","Missing model"),(0,j.yj)(s.gx.BAD_REQUEST,"Missing model");try{let{classifyPromptIntent:a}=await c.e(9849).then(c.bind(c,49849)),{classifyRequestComplexity:b}=await c.e(3523).then(c.bind(c,23523)),e=(d?.messages||[]).find(a=>a?.role==="user"),f="string"==typeof e?.content?e.content:Array.isArray(e?.content)&&e.content.find(a=>a?.text)?.text||"",g=(d?.messages||[]).find(a=>a?.role==="system"),h="string"==typeof g?.content?g.content:"",i=a(f,h),j=b(d);v.debug("ROUTING",`intent=${i} | complexity=${j.level} score=${j.score} tier=${j.recommendedTier}${j.hasToolUse?" tools=yes":""}`)}catch(a){v.debug("ROUTING",`classify failed: ${a?.message}`)}let w=a?.headers?.get("user-agent")||"",x=(0,o.c)(d,i,w,!!u.ccFilterNaming);if(x)return x.response||x;if(u.responseCacheEnabled){let a=(0,r.$S)({model:i,body:d});if(a)return v.info("CHAT",`[CACHE HIT] ${i} (${a.bodyBytes}B saved)`),new Response(a.body,{status:a.status,headers:{"Content-Type":a.contentType,"X-Cache":"HIT","X-Cache-Age-Ms":String(Date.now()-a.storedAt)}})}let y=(0,m.t8)(d),z=await (0,h.d_)(i);if(z){let c=u.comboStrategies||{},e=c[i]?.fallbackStrategy||u.comboStrategy||"fallback",f=(0,n.R8)(z,y,u),g=f.filter(a=>!z.includes(a));if("fusion"===e)return v.info("CHAT",`Combo "${i}" with ${z.length} models (strategy: fusion)`),(0,m.vt)({body:d,models:z,handleSingleModel:(c,d)=>C(c,d,b,a,t,u,1),log:v,comboName:i,judgeModel:c[i]?.judgeModel,tuning:c[i]?.fusionTuning});let h=u.comboStickyRoundRobinLimit;return v.info("CHAT",`Combo "${i}" with ${f.length} models (strategy: ${e}, sticky: ${h})`),(0,m.Pr)({body:d,models:f,handleSingleModel:(0,n.ar)((c,d)=>C(c,d,b,a,t,u,1),g),log:v,comboName:i,comboStrategy:e,comboStickyLimit:h})}let A=(0,n.R8)([i],y,u);if(A.length>1){let c=A.filter(a=>a!==i);return v.info("CHAT",`Capacity adapter for [${[...y].join(",")}] on "${i}" → trying ${A.join(", ")}`),(0,m.Pr)({body:d,models:A,handleSingleModel:(0,n.ar)((c,d)=>C(c,d,b,a,t,u,1),c),log:v,comboName:i,comboStrategy:(0,n.vB)(y,u)})}return C(d,i,b,a,t,u,0)}async function C(a,b,c=null,d=null,e=null,n=null,o=0){n||(n=await (0,g.mt)());let p=await (0,h.mA)(b);if(!p.provider){let f=await (0,h.d_)(b);if(f){if(o>=3)return v.warn("CHAT",`Combo recursion limit hit for "${b}" at depth ${o} — refusing to dispatch`),(0,j.yj)(s.gx.BAD_REQUEST,`Combo recursion limit (3) exceeded for "${b}"`);let g=n.comboStrategies||{},h=g[b]?.fallbackStrategy||n.comboStrategy||"fallback";if("fusion"===h)return v.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion, depth: ${o})`),(0,m.vt)({body:a,models:f,handleSingleModel:(a,b)=>C(a,b,c,d,e,n,o+1),log:v,comboName:b,judgeModel:g[b]?.judgeModel,tuning:g[b]?.fusionTuning});let i=n.comboStickyRoundRobinLimit;return v.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${h}, sticky: ${i}, depth: ${o})`),(0,m.Pr)({body:a,models:f,handleSingleModel:(a,b)=>C(a,b,c,d,e,n,o+1),log:v,comboName:b,comboStrategy:h,comboStickyLimit:i})}return v.warn("CHAT","Invalid model format",{model:b}),(0,j.yj)(s.gx.BAD_REQUEST,"Invalid model format")}let{provider:z,model:B}=p,D=(0,k.D)(B);if(D)return v.warn("CHAT",`Retired model "${B}" requested → ${D}`),(0,j.yj)(s.gx.BAD_REQUEST,D);b!==`${z}/${B}`?v.info("ROUTING",`${b} → ${z}/${B}`):v.info("ROUTING",`Provider: ${z}, Model: ${B}`);let E=d?.headers?.get("user-agent")||"",F=d?.headers?.get("x-bypass-modellock")==="1",G=new Set,H=null,I=null,J="round-robin"===(0,l.z)(n,z),K=(0,y.bI)(a,{provider:z}),L=!J&&K?(0,y.Wq)(K):null;for(;;){let g=await (0,f.c1)(z,G,B,{bypassModelLock:F,preferredConnectionId:L&&!G.has(L)?L:null});if(!g||g.allRateLimited){if(g?.allRateLimited){let a=H||g.lastError||"Unavailable",b=I||Number(g.lastErrorCode)||s.gx.SERVICE_UNAVAILABLE;return v.warn("CHAT",`[${z}/${B}] ${a} (${g.retryAfterHuman})`),(0,j.wO)(b,`[${z}/${B}] ${a}`,g.retryAfter,g.retryAfterHuman)}if(0===G.size)return v.warn("AUTH",`No active credentials for provider: ${z}`),(0,j.yj)(s.gx.SERVICE_UNAVAILABLE,`No active credentials for provider: ${z}`);return v.warn("CHAT","No more accounts available",{provider:z}),(0,j.yj)(I||s.gx.SERVICE_UNAVAILABLE,H||"All accounts unavailable")}v.info("AUTH",`\x1b[32mUsing ${z} account: ${g.connectionName}\x1b[0m`);let h=await (0,w.eU)(z,g);if(("antigravity"===z||"gemini-cli"===z)&&!h.projectId){let a=await (0,x.eG)(g.connectionId,h.accessToken,z);a&&(h.projectId=a,(0,w.vN)(g.connectionId,{projectId:a}).catch(()=>{}))}let k=(n.providerThinking||{})[z]||null,l=Date.now(),m=await (0,i.wk)({body:{...a,model:`${z}/${B}`},modelInfo:{provider:z,model:B},credentials:h,log:v,clientRawRequest:c,connectionId:g.connectionId,userAgent:E,apiKey:e,ccFilterNaming:!!n.ccFilterNaming,rtkEnabled:!!n.rtkEnabled,headroomEnabled:!!n.headroomEnabled,headroomUrl:n.headroomUrl||"http://localhost:8787",headroomCompressUserMessages:!!n.headroomCompressUserMessages,cavemanEnabled:!!n.cavemanEnabled,cavemanLevel:n.cavemanLevel||"full",ponytailEnabled:!!n.ponytailEnabled,ponytailLevel:n.ponytailLevel||"full",pxpipeEnabled:!!n.pxpipeEnabled,pxpipeMinChars:n.pxpipeMinChars,pxpipeTimeoutMs:n.pxpipeTimeoutMs,pxpipeTransform:await A(n),onPxpipeEvent:q.T0,providerThinking:k,settings:n,sourceFormatOverride:d?.url?(0,u.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,w.vN)(g.connectionId,{...a,existingProviderSpecificData:g.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(g.connectionId,g,B)}});if((0,t.Up)(g.connectionId,!!m.success,Date.now()-l,{provider:z,model:B,strategy:"zenith"}),m.success){if(!J&&K&&g.connectionId&&(0,y.BO)(K,g.connectionId),n.responseCacheEnabled&&!0!==a.stream)try{let c=m.response.clone(),d=c.headers.get("content-type")||"application/json";c.text().then(e=>{(0,r.$T)({model:b,body:a,status:c.status,contentType:d,responseBody:e,estimatedTokens:Math.ceil(e.length/4),ttlMs:1e3*(n.responseCacheTtlSec||300)})}).catch(()=>{})}catch{}return m.response}if(m.emergencyFallback&&!a.__emergencyFallbackUsed){let b=m.emergencyFallback;v.info("EMERGENCY",`${z}/${B} → ${b.provider}/${b.model} (${b.reason})`);try{let g=await (0,f.c1)(b.provider,new Set,b.model);if(g&&!g.allRateLimited){let f={...a,__emergencyFallbackUsed:!0,model:`${b.provider}/${b.model}`};b.maxOutputTokens&&(f.max_tokens=Math.min(f.max_tokens||b.maxOutputTokens,b.maxOutputTokens));let h=await (0,i.wk)({body:f,modelInfo:{provider:b.provider,model:b.model},credentials:g,log:v,clientRawRequest:c,userAgent:E,apiKey:e,connectionId:g.connectionId,ccFilterNaming:!!n.ccFilterNaming,rtkEnabled:!!n.rtkEnabled,headroomEnabled:!!n.headroomEnabled,headroomUrl:n.headroomUrl||"http://localhost:8787",headroomCompressUserMessages:!!n.headroomCompressUserMessages,cavemanEnabled:!!n.cavemanEnabled,cavemanLevel:n.cavemanLevel||"full",ponytailEnabled:!!n.ponytailEnabled,ponytailLevel:n.ponytailLevel||"full",pxpipeEnabled:!!n.pxpipeEnabled,pxpipeMinChars:n.pxpipeMinChars,pxpipeTimeoutMs:n.pxpipeTimeoutMs,pxpipeTransform:await A(n),onPxpipeEvent:q.T0,providerThinking:(n.providerThinking||{})[b.provider]||null,sourceFormatOverride:d?.url?(0,u.t)(new URL(d.url).pathname,a):null,settings:n});if(h.success)return h.response;v.warn("EMERGENCY",`fallback ${b.provider}/${b.model} also failed: ${h.status}`)}else v.warn("EMERGENCY",`no credentials for fallback ${b.provider}, skipping`)}catch(a){v.warn("EMERGENCY",`fallback path threw: ${a.message}`)}}let{shouldFallback:o}=await (0,f.vk)(g.connectionId,m.status,m.error,z,B,m.resetsAtMs);if(o){v.warn("AUTH",`Account ${g.connectionName} unavailable (${m.status}), trying fallback`),G.add(g.connectionId),H=m.error,I=m.status;continue}return m.response}}[e,i]=z.then?(await z)():z,d()}catch(a){d(a)}})},87155:(a,b,c)=>{c.d(b,{CG:()=>q,ED:()=>v,S1:()=>t,XF:()=>j,_g:()=>u,kC:()=>r,no:()=>s,sW:()=>x});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120);let j=g().join(i.n,"pxpipe"),k="pxpipe-proxy",l=g().join(j,"install.log"),m="win32"===process.platform,n=[...m?[`${process.env.ProgramFiles||""}\\nodejs`,`${process.env.APPDATA||""}\\npm`]:["/usr/local/bin","/opt/homebrew/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],process.env.PATH||""].filter(Boolean).join(g().delimiter),o=null;function p(){return g().join(j,"node_modules",k)}function q(){return g().join(p(),"dist","core","library.js")}function r(){return g().join(p(),"dist","core","applicability.js")}function s(){try{let a=(0,h.execSync)(`${m?"where":"which"} npm`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:n}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function t(){try{let a=g().join(p(),"package.json");if(!e().existsSync(a)||!e().existsSync(q()))return{installed:!1,version:null,path:null};let b=JSON.parse(e().readFileSync(a,"utf8"));return{installed:!0,version:b.version||null,path:p()}}catch{return{installed:!1,version:null,path:null}}}function u(){return null!==o}function v(){return o||(o=w().finally(()=>{o=null}))}async function w(){let a=s();if(!a){let a=Error("npm not found on PATH — Node.js/npm is required to install PXPIPE");throw a.code="NPM_NOT_FOUND",a}e().existsSync(j)||e().mkdirSync(j,{recursive:!0});let b=g().join(j,"package.json");e().existsSync(b)||e().writeFileSync(b,JSON.stringify({name:"9router-pxpipe-host",private:!0},null,2));let c=e().openSync(l,"a");e().writeSync(c,`
1
+ "use strict";exports.id=6200,exports.ids=[6200],exports.modules={9999:(a,b,c)=>{c.d(b,{$S:()=>l,$T:()=>m,QS:()=>n,e3:()=>o});var d=c(77598),e=c.n(d);let f=globalThis;f.__krouterResponseCache||(f.__krouterResponseCache=new Map,f.__krouterResponseCacheStats={hits:0,misses:0,skipped:0,bytesSaved:0,tokensSaved:0,lastResetAt:Date.now()});let g=f.__krouterResponseCache,h=f.__krouterResponseCacheStats;function i({model:a,body:b}){let c=JSON.stringify({model:a,system:b?.system??null,instructions:b?.instructions??null,messages:b?.messages??null,input:b?.input??null,contents:b?.contents??null,temperature:b?.temperature??null,max_tokens:b?.max_tokens??b?.max_output_tokens??null,tools:b?.tools??null,tool_choice:b?.tool_choice??null,response_format:b?.response_format??null});return e().createHash("sha256").update(c).digest("hex")}let j=new Set(["antigravity","ag","gemini","gemini-cli","gc"]);function k(a,b=null){if(!a||"object"!=typeof a||!0===a.stream||"number"==typeof a.temperature&&a.temperature>.3||"required"===a.tool_choice)return!1;let c=function(a){if("string"!=typeof a)return null;let b=a.indexOf("/");return b>0?a.slice(0,b):null}(b);if(c&&j.has(c))return!1;let d=a.max_tokens??a.max_output_tokens??null;return"number"!=typeof d||!(d<32)}function l({model:a,body:b}){if(!k(b,a))return h.skipped++,null;let c=i({model:a,body:b}),d=g.get(c);return d?d.expiresAt<Date.now()?(g.delete(c),h.misses++,null):(g.delete(c),g.set(c,d),h.hits++,h.bytesSaved+=d.bodyBytes||0,h.tokensSaved+=d.estimatedTokens||0,d):(h.misses++,null)}function m({model:a,body:b,status:c,contentType:d,responseBody:e,estimatedTokens:f=0,ttlMs:h=3e5,maxEntries:j=500}){if(!k(b,a)||200!==c||!e||"string"==typeof e&&e.length<100)return!1;let l=i({model:a,body:b}),n="string"==typeof e?e:JSON.stringify(e),o={key:l,status:c,contentType:d||"application/json",body:n,bodyBytes:Buffer.byteLength(n,"utf-8"),estimatedTokens:f,expiresAt:Date.now()+h,storedAt:Date.now(),model:a};for(g.set(l,o);g.size>j;){let a=g.keys().next().value;if(void 0===a)break;g.delete(a)}return!0}function n(){let a=h.hits+h.misses;return{enabled:!0,entries:g.size,hits:h.hits,misses:h.misses,skipped:h.skipped,hitRate:a>0?h.hits/a:0,bytesSaved:h.bytesSaved,tokensSaved:h.tokensSaved,lastResetAt:h.lastResetAt}}function o(){g.clear(),h.hits=0,h.misses=0,h.skipped=0,h.bytesSaved=0,h.tokensSaved=0,h.lastResetAt=Date.now()}},17603:(a,b,c)=>{c.d(b,{R8:()=>j,ar:()=>l,vB:()=>h});var d=c(66306);let e=["vision","pdf","audioInput","videoInput"],f=new Set(e);function g(a,b){var c;let d=Array.isArray(c=b?.capacityAdapter?.[a])?{enabled:!0,roundRobin:!1,models:c.map(a=>a?.model||a).filter(Boolean)}:c&&"object"==typeof c?{enabled:!1!==c.enabled,roundRobin:!!c.roundRobin,models:Array.isArray(c.models)?c.models.filter(Boolean):[]}:{enabled:!1,roundRobin:!1,models:[]};return d.enabled&&0===d.models.length?{...d,models:["mmf/mimo-auto"]}:d}function h(a,b){for(let c of[...a||[]].filter(a=>f.has(a))){let{enabled:a,models:d}=g(c,b);if(a&&0!==d.length)return function(a,b){let{enabled:c,roundRobin:d}=g(a,b);return c&&d?"round-robin":"fallback"}(c,b)}return"fallback"}function i(a,b){let c=a.indexOf("/"),e=c>0?a.slice(0,c):"",f=c>0?a.slice(c+1):a,g=(0,d.nl)(e,f);return b.every(a=>!0===g[a])}function j(a,b,c){let d=[...b||[]].filter(a=>f.has(a));if(0===d.length||!Array.isArray(a)||0===a.length||a.some(a=>i(a,d)))return a;let h=(function(a){let b=new Set,c=[];for(let d of e){let{enabled:e,models:f}=g(d,a);if(e)for(let a of f)b.has(a)||(b.add(a),c.push(a))}return c})(c).filter(b=>!a.includes(b)&&i(b,d));return 0===h.length?a:[...h,...a]}function k(a){return"string"==typeof a?a.length:Array.isArray(a)?a.reduce((a,b)=>a+("string"==typeof b?.text?b.text.length:50),0):0}function l(a,b){let c=new Set(b);return 0===c.size?a:(b,e,...f)=>{if(c.has(e)){let a=e.indexOf("/"),c=a>0?e.slice(0,a):"",f=a>0?e.slice(a+1):e,{contextWindow:g}=(0,d.nl)(c,f);b=function(a,b){let c=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":Array.isArray(a.contents)?"contents":null;if(!c)return a;let d=a[c];if(!d||0===d.length)return a;let e=a=>"system"===a||"developer"===a,f=d.filter(a=>e(a?.role)),g=d.filter(a=>!e(a?.role));if(0===g.length)return a;let h=a=>"assistant"===a||"model"===a,i=g.length-1;for(;i>=0&&!h(g[i]?.role);)i--;let j=g.slice(i+1),l=g.slice(0,i+1);if(0===l.length)return a;let m=a=>a.content??a.parts,n=.8*(b||2e5)*4,o=l.slice(0,6),p=f.concat(o,j).reduce((a,b)=>a+k(m(b)),0);for(;p>n&&o.length>0;)p-=k(m(o.pop()));return o.length===l.length?a:{...a,[c]:[...f,...o,...j]}}(b,g)}return a(b,e,...f)}}},24253:(a,b,c)=>{c.d(b,{I6:()=>n,Mo:()=>i,RG:()=>m,V:()=>j,Y8:()=>l,xl:()=>o});var d=c(1932),e=c(87155);let f=null,g=null,h=null;function i(){return g?{loaded:!0,version:g.version,loadedAt:g.loadedAt}:{loaded:!1}}async function j(){return g||h||(h=k().finally(()=>{h=null}))}async function k(){let a=(0,e.S1)();if(!a.installed){let a=Error("PXPIPE is not installed");throw a.code="NOT_INSTALLED",a}let b=`${(0,d.pathToFileURL)((0,e.CG)()).href}?v=${encodeURIComponent(a.version||"0")}`,c=await import(b);if("function"!=typeof c.transformAnthropicMessages)throw Error("installed pxpipe package does not export transformAnthropicMessages");return g={module:c,version:a.version,loadedAt:Date.now()}}function l(){let a=!!g;return g=null,a}async function m({autoLoad:a=!0}={}){try{if(!g&&!a)return null;let{module:b}=await j();return b.transformAnthropicMessages}catch{return null}}async function n(a){let b=Array.isArray(a)?a.map(a=>String(a).trim()).filter(Boolean):[],c=b.slice().sort().join(",");if(c!==f)try{if(!(0,e.S1)().installed)return;let a=await import((0,d.pathToFileURL)((0,e.kC)()).href);"function"==typeof a.setAllowedModelBases&&(a.setAllowedModelBases(b.length?b:null),f=c)}catch{}}async function o(){let a=Date.now(),{module:b}=await j(),c=new TextEncoder().encode(JSON.stringify({model:"claude-fable-5",max_tokens:16,messages:[{role:"user",content:"ping"}]})),d=await b.transformAnthropicMessages({body:c,model:"claude-fable-5"});if(!d||"boolean"!=typeof d.applied||!(d.body instanceof Uint8Array))throw Error("transform returned an unexpected shape");return{ok:!0,reason:d.reason,durationMs:Date.now()-a}}},25772:(a,b,c)=>{c.d(b,{Io:()=>h,WV:()=>f});let d=null,e=0;function f(a={}){let{sidecarUrl:b=process.env.SIDECAR_URL||"http://127.0.0.1:5001/redact",timeout:h=Number(process.env.REDACTION_TIMEOUT_MS)||15e3,enabled:i="false"!==process.env.REDACTION_ENABLED,failOpen:j="true"===process.env.REDACTION_FAIL_OPEN}=a;return async function(a,f){if(!i)return f(a);if(Date.now()-e>1e4)try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a();d=!!(b.presidioEnabled&&b.presidioPiiRedaction),e=Date.now()}catch(b){if(console.error("[Redaction Middleware] Failed to read settings:",b),!0===d&&!j)return new Response(JSON.stringify({error:{message:"Unable to verify redaction settings",code:"SETTINGS_ERROR",type:"settings_error"}}),{status:500,headers:{"Content-Type":"application/json"}});return f(a)}if(!d||"POST"!==a.method)return f(a);try{let c=await a.clone().json(),d=[],e=[];if(Array.isArray(c.messages))for(let a=0;a<c.messages.length;a++){let b=c.messages[a],f=b?.content;if(f){if("string"==typeof f)d.push(f),e.push({type:"string",index:a});else if(Array.isArray(f))for(let b=0;b<f.length;b++){let c=f[b];c?.type==="text"&&"string"==typeof c?.text&&(d.push(c.text),e.push({type:"array",msgIndex:a,blockIndex:b}))}}}if("string"==typeof c.system)d.push(c.system),e.push({type:"system-string"});else if(Array.isArray(c.system))for(let a=0;a<c.system.length;a++){let b=c.system[a];b?.type==="text"&&"string"==typeof b?.text&&(d.push(b.text),e.push({type:"system-block",blockIndex:a}))}if("string"==typeof c.instructions&&(d.push(c.instructions),e.push({type:"instructions"})),"string"==typeof c.input)d.push(c.input),e.push({type:"input-string"});else if(Array.isArray(c.input))for(let a=0;a<c.input.length;a++){let b=c.input[a],f=b?.content;if("string"==typeof f)d.push(f),e.push({type:"input-item-string",index:a});else if(Array.isArray(f))for(let b=0;b<f.length;b++){let c=f[b];(c?.type==="input_text"||c?.type==="output_text"||c?.type==="text")&&"string"==typeof c?.text&&(d.push(c.text),e.push({type:"input-item-block",itemIndex:a,blockIndex:b}))}}if(Array.isArray(c.messages))for(let a=0;a<c.messages.length;a++){let b=c.messages[a];if(b?.role==="tool"&&"string"==typeof b.content&&(d.push(b.content),e.push({type:"tool-message",index:a})),Array.isArray(b?.tool_calls))for(let c=0;c<b.tool_calls.length;c++){let f=b.tool_calls[c]?.function?.arguments;"string"==typeof f&&f.length>0&&(d.push(f),e.push({type:"tool-call-args",msgIndex:a,callIndex:c}))}if(Array.isArray(b?.content))for(let c=0;c<b.content.length;c++){let f=b.content[c];if(f?.type==="tool_result"){if("string"==typeof f.content)d.push(f.content),e.push({type:"tool-result-string",msgIndex:a,blockIndex:c});else if(Array.isArray(f.content))for(let b=0;b<f.content.length;b++){let g=f.content[b];g?.type==="text"&&"string"==typeof g.text&&(d.push(g.text),e.push({type:"tool-result-block",msgIndex:a,blockIndex:c,innerIndex:b}))}}}}if(Array.isArray(c.tools))for(let a=0;a<c.tools.length;a++){let b=c.tools[a];"string"==typeof b?.description&&b.description.length>0?(d.push(b.description),e.push({type:"tool-desc",index:a})):"string"==typeof b?.function?.description&&b.function.description.length>0&&(d.push(b.function.description),e.push({type:"tool-fn-desc",index:a}))}if(0===d.length)return f(a);let i=await g(b,d,{timeout:h}),j=0;for(let a of e){if("string"===a.type)c.messages[a.index].content=i[j];else if("array"===a.type)c.messages[a.msgIndex].content[a.blockIndex].text=i[j];else if("system-string"===a.type)c.system=i[j];else if("system-block"===a.type)c.system[a.blockIndex].text=i[j];else if("instructions"===a.type)c.instructions=i[j];else if("input-string"===a.type)c.input=i[j];else if("input-item-string"===a.type)c.input[a.index].content=i[j];else if("input-item-block"===a.type)c.input[a.itemIndex].content[a.blockIndex].text=i[j];else if("tool-message"===a.type)c.messages[a.index].content=i[j];else if("tool-call-args"===a.type){let b=i[j],d=!1;try{JSON.parse(b),d=!0}catch{d=!1}d?c.messages[a.msgIndex].tool_calls[a.callIndex].function.arguments=b:console.warn("[Redaction Middleware] Skipped tool_call arguments: redaction produced invalid JSON")}else"tool-result-string"===a.type?c.messages[a.msgIndex].content[a.blockIndex].content=i[j]:"tool-result-block"===a.type?c.messages[a.msgIndex].content[a.blockIndex].content[a.innerIndex].text=i[j]:"tool-desc"===a.type?c.tools[a.index].description=i[j]:"tool-fn-desc"===a.type&&(c.tools[a.index].function.description=i[j]);j++}let k=new Request(a.url,{method:a.method,headers:a.headers,body:JSON.stringify(c)});return f(k)}catch(e){if(console.error(`[Redaction Middleware] Error: ${e.message}`),j)return console.warn("[Redaction Middleware] Fail-open enabled - proceeding with original request"),f(a);let b=500,c="internal_error",d="Request processing failed";return"AbortError"===e.name||e.message.includes("timeout")||e.message.includes("TIMEOUT")?(b=503,c="redaction_timeout",d="PII redaction service unavailable. Please try again later."):e.message.includes("fetch")||e.message.includes("ECONNREFUSED")||e.message.includes("ENOTFOUND")||e.message.includes("ECONNRESET")||"TypeError"===e.name&&e.message.includes("fetch")?(b=503,c="redaction_service_unavailable",d="PII redaction service unavailable. Please try again later."):e.message.includes("redact")||e.message.includes("sidecar")||e.message.includes("HTTP 5")?(b=502,c="redaction_service_error",d="PII redaction service error. Please try again later."):(e.message.includes("Invalid")||e.message.includes("format"))&&(b=400,c="invalid_request",d="Invalid request format."),console.error(JSON.stringify({timestamp:new Date().toISOString(),event:"redaction_failure",errorType:c,errorMessage:e.message,statusCode:b,path:new URL(a.url).pathname,method:a.method})),new Response(JSON.stringify({error:{message:d,code:c.toUpperCase(),type:c,requestId:a.headers.get("x-request-id")||void 0}}),{status:b,headers:{"Content-Type":"application/json","X-Redaction-Failed":"true"}})}}}async function g(a,b,{timeout:c=2e3}={}){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({texts:b}),signal:d.signal});if(!c.ok)throw Error(`Sidecar redaction service error: HTTP ${c.status}`);let e=await c.json();if(!e.redacted_texts||!Array.isArray(e.redacted_texts))throw Error("Sidecar redaction service returned invalid response");if(e.redacted_texts.length!==b.length)throw Error("Sidecar redaction service returned wrong number of redacted texts");return e.redacted_texts}finally{clearTimeout(e)}}function h(a,b={}){let c=f(b);return async function(b,...d){return c(b,b=>a(b,...d))}}},38775:(a,b,c)=>{c.d(b,{d_:()=>k,mA:()=>j});var d=c(89718),e=c(40669),f=c(35024),g=c(44404);let h={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"},i=new Set([...Object.keys(h),...Object.keys(f.xq),...Object.keys(g.Xg),...Object.values(g.Xg)]);async function j(a){let b,c=(b=(0,e.Xh)(a),b?.providerAlias&&h[b.providerAlias]?{...b,provider:h[b.providerAlias]}:b);if(!c.isAlias){if(!i.has(c.providerAlias)){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===c.providerAlias);if(a)return{provider:a.id,model:c.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===c.providerAlias);if(b)return{provider:b.id,model:c.model};let e=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===c.providerAlias);if(e)return{provider:e.id,model:c.model}}return{provider:c.provider,model:c.model}}return await (0,d.Dj)(c.model)?{provider:null,model:c.model}:(0,e.js)(a,d.OM)}async function k(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},54413:(a,b,c)=>{c.d(b,{D:()=>e});let d={"qwen3.6-plus-free":{replacement:"qwen3.6-plus",tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"minimax-m2.5-free":{replacement:"minimax-m2.5",tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"nemotron-3-super-free":{replacement:null,tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"trinity-large-preview-free":{replacement:null,tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"},"big-pickle":{replacement:null,tier:"opencode-go (API key)",reason:"OpenCode discontinued its free tier"}};function e(a){if(!a||"string"!=typeof a)return null;let b=a.includes("/")?a.slice(a.lastIndexOf("/")+1):a,c=d[b];if(!c)return null;let e=c.replacement?`Use "${c.replacement}" on the ${c.tier} instead.`:`No direct replacement — pick a live model on the ${c.tier}.`;return`Model "${b}" has been retired (${c.reason}). ${e}`}},74388:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>B});var e=c(48895),f=c(80238),g=c(89718),h=c(38775),i=c(92500),j=c(43659),k=c(54413),l=c(8864),m=c(38962),n=c(17603),o=c(27349),p=c(24253),q=c(74388),r=c(9999),s=c(41004),t=c(53258),u=c(14170),v=c(7803),w=c(67828),x=c(38160),y=c(29385),z=a([e,i]);async function A(a){return a?.pxpipeEnabled?(await (0,p.I6)(a.pxpipeModels),(0,p.RG)()):null}async function B(a,b=null){let d;try{d=await a.json()}catch{return v.warn("CHAT","Invalid JSON body"),(0,j.yj)(s.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:d,headers:Object.fromEntries(a.headers.entries())});let e=new URL(a.url),i=d.model,k=d.messages?.length||d.input?.length||0,l=d.tools?.length||0,p=d.reasoning_effort||d.reasoning?.effort||null;v.request("POST",`${e.pathname} | ${i} | ${k} msgs${l?` | ${l} tools`:""}${p?` | effort=${p}`:""}`);let q=a.headers.get("Authorization"),t=(0,f.Tr)(a);if(q&&t){let a=v.maskKey(t);v.debug("AUTH",`API Key: ${a}`)}else v.debug("AUTH","No API key provided (local mode)");let u=await (0,g.mt)();if(u.requireApiKey){if(!t)return v.warn("AUTH","Missing API key (requireApiKey=true)"),(0,j.yj)(s.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(t))return v.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,j.yj)(s.gx.UNAUTHORIZED,"Invalid API key")}if(!i)return v.warn("CHAT","Missing model"),(0,j.yj)(s.gx.BAD_REQUEST,"Missing model");try{let{classifyPromptIntent:a}=await c.e(9849).then(c.bind(c,49849)),{classifyRequestComplexity:b}=await c.e(3523).then(c.bind(c,23523)),e=(d?.messages||[]).find(a=>a?.role==="user"),f="string"==typeof e?.content?e.content:Array.isArray(e?.content)&&e.content.find(a=>a?.text)?.text||"",g=(d?.messages||[]).find(a=>a?.role==="system"),h="string"==typeof g?.content?g.content:"",i=a(f,h),j=b(d);v.debug("ROUTING",`intent=${i} | complexity=${j.level} score=${j.score} tier=${j.recommendedTier}${j.hasToolUse?" tools=yes":""}`)}catch(a){v.debug("ROUTING",`classify failed: ${a?.message}`)}let w=a?.headers?.get("user-agent")||"",x=(0,o.c)(d,i,w,!!u.ccFilterNaming);if(x)return x.response||x;if(u.responseCacheEnabled){let a=(0,r.$S)({model:i,body:d});if(a)return v.info("CHAT",`[CACHE HIT] ${i} (${a.bodyBytes}B saved)`),new Response(a.body,{status:a.status,headers:{"Content-Type":a.contentType,"X-Cache":"HIT","X-Cache-Age-Ms":String(Date.now()-a.storedAt)}})}let y=(0,m.t8)(d),z=await (0,h.d_)(i);if(z){let c=u.comboStrategies||{},e=c[i]?.fallbackStrategy||u.comboStrategy||"fallback",f=(0,n.R8)(z,y,u),g=f.filter(a=>!z.includes(a));if("fusion"===e)return v.info("CHAT",`Combo "${i}" with ${z.length} models (strategy: fusion)`),(0,m.vt)({body:d,models:z,handleSingleModel:(c,d)=>C(c,d,b,a,t,u,1),log:v,comboName:i,judgeModel:c[i]?.judgeModel,tuning:c[i]?.fusionTuning});let h=u.comboStickyRoundRobinLimit;return v.info("CHAT",`Combo "${i}" with ${f.length} models (strategy: ${e}, sticky: ${h})`),(0,m.Pr)({body:d,models:f,handleSingleModel:(0,n.ar)((c,d)=>C(c,d,b,a,t,u,1),g),log:v,comboName:i,comboStrategy:e,comboStickyLimit:h})}let A=(0,n.R8)([i],y,u);if(A.length>1){let c=A.filter(a=>a!==i);return v.info("CHAT",`Capacity adapter for [${[...y].join(",")}] on "${i}" → trying ${A.join(", ")}`),(0,m.Pr)({body:d,models:A,handleSingleModel:(0,n.ar)((c,d)=>C(c,d,b,a,t,u,1),c),log:v,comboName:i,comboStrategy:(0,n.vB)(y,u)})}return C(d,i,b,a,t,u,0)}async function C(a,b,c=null,d=null,e=null,n=null,o=0){n||(n=await (0,g.mt)());let p=await (0,h.mA)(b);if(!p.provider){let f=await (0,h.d_)(b);if(f){if(o>=3)return v.warn("CHAT",`Combo recursion limit hit for "${b}" at depth ${o} — refusing to dispatch`),(0,j.yj)(s.gx.BAD_REQUEST,`Combo recursion limit (3) exceeded for "${b}"`);let g=n.comboStrategies||{},h=g[b]?.fallbackStrategy||n.comboStrategy||"fallback";if("fusion"===h)return v.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion, depth: ${o})`),(0,m.vt)({body:a,models:f,handleSingleModel:(a,b)=>C(a,b,c,d,e,n,o+1),log:v,comboName:b,judgeModel:g[b]?.judgeModel,tuning:g[b]?.fusionTuning});let i=n.comboStickyRoundRobinLimit;return v.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${h}, sticky: ${i}, depth: ${o})`),(0,m.Pr)({body:a,models:f,handleSingleModel:(a,b)=>C(a,b,c,d,e,n,o+1),log:v,comboName:b,comboStrategy:h,comboStickyLimit:i})}return v.warn("CHAT","Invalid model format",{model:b}),(0,j.yj)(s.gx.BAD_REQUEST,"Invalid model format")}let{provider:z,model:B}=p,D=(0,k.D)(B);if(D)return v.warn("CHAT",`Retired model "${B}" requested → ${D}`),(0,j.yj)(s.gx.BAD_REQUEST,D);b!==`${z}/${B}`?v.info("ROUTING",`${b} → ${z}/${B}`):v.info("ROUTING",`Provider: ${z}, Model: ${B}`);let E=d?.headers?.get("user-agent")||"",F=d?.headers?.get("x-bypass-modellock")==="1",G=new Set,H=null,I=null,J="round-robin"===(0,l.z)(n,z),K=(0,y.bI)(a,{provider:z}),L=!J&&K?(0,y.Wq)(K):null;for(;;){let g=await (0,f.c1)(z,G,B,{bypassModelLock:F,preferredConnectionId:L&&!G.has(L)?L:null});if(!g||g.allRateLimited){if(g?.allRateLimited){let a=H||g.lastError||"Unavailable",b=I||Number(g.lastErrorCode)||s.gx.SERVICE_UNAVAILABLE;return v.warn("CHAT",`[${z}/${B}] ${a} (${g.retryAfterHuman})`),(0,j.wO)(b,`[${z}/${B}] ${a}`,g.retryAfter,g.retryAfterHuman)}if(0===G.size)return v.warn("AUTH",`No active credentials for provider: ${z}`),(0,j.yj)(s.gx.SERVICE_UNAVAILABLE,`No active credentials for provider: ${z}`);return v.warn("CHAT","No more accounts available",{provider:z}),(0,j.yj)(I||s.gx.SERVICE_UNAVAILABLE,H||"All accounts unavailable")}v.info("AUTH",`\x1b[32mUsing ${z} account: ${g.connectionName}\x1b[0m`);let h=await (0,w.eU)(z,g);if(("antigravity"===z||"gemini-cli"===z)&&!h.projectId){let a=await (0,x.eG)(g.connectionId,h.accessToken,z);a&&(h.projectId=a,(0,w.vN)(g.connectionId,{projectId:a}).catch(()=>{}))}let k=(n.providerThinking||{})[z]||null,l=Date.now(),m=await (0,i.wk)({body:{...a,model:`${z}/${B}`},modelInfo:{provider:z,model:B},credentials:h,log:v,clientRawRequest:c,connectionId:g.connectionId,userAgent:E,apiKey:e,ccFilterNaming:!!n.ccFilterNaming,rtkEnabled:!!n.rtkEnabled,headroomEnabled:!!n.headroomEnabled,headroomUrl:n.headroomUrl||"http://localhost:8787",headroomCompressUserMessages:!!n.headroomCompressUserMessages,cavemanEnabled:!!n.cavemanEnabled,cavemanLevel:n.cavemanLevel||"full",ponytailEnabled:!!n.ponytailEnabled,ponytailLevel:n.ponytailLevel||"full",pxpipeEnabled:!!n.pxpipeEnabled,pxpipeMinChars:n.pxpipeMinChars,pxpipeTimeoutMs:n.pxpipeTimeoutMs,pxpipeTransform:await A(n),onPxpipeEvent:q.T0,providerThinking:k,settings:n,sourceFormatOverride:d?.url?(0,u.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,w.vN)(g.connectionId,{...a,existingProviderSpecificData:g.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(g.connectionId,g,B)}});if((0,t.Up)(g.connectionId,!!m.success,Date.now()-l,{provider:z,model:B,strategy:"zenith"}),m.success){if(!J&&K&&g.connectionId&&(0,y.BO)(K,g.connectionId),n.responseCacheEnabled&&!0!==a.stream)try{let c=m.response.clone(),d=c.headers.get("content-type")||"application/json";c.text().then(e=>{(0,r.$T)({model:b,body:a,status:c.status,contentType:d,responseBody:e,estimatedTokens:Math.ceil(e.length/4),ttlMs:1e3*(n.responseCacheTtlSec||300)})}).catch(()=>{})}catch{}return m.response}if(m.emergencyFallback&&!a.__emergencyFallbackUsed){let b=m.emergencyFallback;v.info("EMERGENCY",`${z}/${B} → ${b.provider}/${b.model} (${b.reason})`);try{let g=await (0,f.c1)(b.provider,new Set,b.model);if(g&&!g.allRateLimited){let f={...a,__emergencyFallbackUsed:!0,model:`${b.provider}/${b.model}`};b.maxOutputTokens&&(f.max_tokens=Math.min(f.max_tokens||b.maxOutputTokens,b.maxOutputTokens));let h=await (0,i.wk)({body:f,modelInfo:{provider:b.provider,model:b.model},credentials:g,log:v,clientRawRequest:c,userAgent:E,apiKey:e,connectionId:g.connectionId,ccFilterNaming:!!n.ccFilterNaming,rtkEnabled:!!n.rtkEnabled,headroomEnabled:!!n.headroomEnabled,headroomUrl:n.headroomUrl||"http://localhost:8787",headroomCompressUserMessages:!!n.headroomCompressUserMessages,cavemanEnabled:!!n.cavemanEnabled,cavemanLevel:n.cavemanLevel||"full",ponytailEnabled:!!n.ponytailEnabled,ponytailLevel:n.ponytailLevel||"full",pxpipeEnabled:!!n.pxpipeEnabled,pxpipeMinChars:n.pxpipeMinChars,pxpipeTimeoutMs:n.pxpipeTimeoutMs,pxpipeTransform:await A(n),onPxpipeEvent:q.T0,providerThinking:(n.providerThinking||{})[b.provider]||null,sourceFormatOverride:d?.url?(0,u.t)(new URL(d.url).pathname,a):null,settings:n});if(h.success)return h.response;v.warn("EMERGENCY",`fallback ${b.provider}/${b.model} also failed: ${h.status}`)}else v.warn("EMERGENCY",`no credentials for fallback ${b.provider}, skipping`)}catch(a){v.warn("EMERGENCY",`fallback path threw: ${a.message}`)}}let{shouldFallback:o}=await (0,f.vk)(g.connectionId,m.status,m.error,z,B,m.resetsAtMs);if(o){v.warn("AUTH",`Account ${g.connectionName} unavailable (${m.status}), trying fallback`),G.add(g.connectionId),H=m.error,I=m.status;continue}return m.response}}[e,i]=z.then?(await z)():z,d()}catch(a){d(a)}})},87155:(a,b,c)=>{c.d(b,{CG:()=>r,ED:()=>w,S1:()=>u,XF:()=>j,_g:()=>v,kC:()=>s,no:()=>t,sW:()=>y});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120);let j=g().join(i.n,"pxpipe"),k="pxpipe-proxy",l=g().join(j,"install.log"),m="win32"===process.platform,n=m?"npm.cmd":"npm",o=[...m?[`${process.env.ProgramFiles||""}\\nodejs`,`${process.env.APPDATA||""}\\npm`]:["/usr/local/bin","/opt/homebrew/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],process.env.PATH||""].filter(Boolean).join(g().delimiter),p=null;function q(){return g().join(j,"node_modules",k)}function r(){return g().join(q(),"dist","core","library.js")}function s(){return g().join(q(),"dist","core","applicability.js")}function t(){try{let a=(0,h.execSync)(`${m?"where":"which"} npm`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:o}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function u(){try{let a=g().join(q(),"package.json");if(!e().existsSync(a)||!e().existsSync(r()))return{installed:!1,version:null,path:null};let b=JSON.parse(e().readFileSync(a,"utf8"));return{installed:!0,version:b.version||null,path:q()}}catch{return{installed:!1,version:null,path:null}}}function v(){return null!==p}function w(){return p||(p=x().finally(()=>{p=null}))}async function x(){let a=t();if(!a){let a=Error("npm not found on PATH — Node.js/npm is required to install PXPIPE");throw a.code="NPM_NOT_FOUND",a}e().existsSync(j)||e().mkdirSync(j,{recursive:!0});let b=g().join(j,"package.json");e().existsSync(b)||e().writeFileSync(b,JSON.stringify({name:"9router-pxpipe-host",private:!0},null,2));let c=e().openSync(l,"a");e().writeSync(c,`
2
2
  [${new Date().toISOString()}] npm install ${k}@latest
3
- `),await new Promise((b,d)=>{let e=(0,h.spawn)(a,["install",`${k}@latest`,"--no-audit","--no-fund","--omit=dev"],{cwd:j,stdio:["ignore",c,c],windowsHide:!0,env:{...process.env,PATH:n}}),f=setTimeout(()=>{e.kill("SIGKILL"),d(Error("npm install timed out after 5 minutes — see install.log"))},3e5);e.once("error",a=>{clearTimeout(f),d(a)}),e.once("exit",a=>{clearTimeout(f),0===a?b():d(Error(`npm install exited with code ${a} — see install.log`))})}).finally(()=>e().closeSync(c));let d=t();if(!d.installed)throw Error("install finished but package is missing — see install.log");return d}function x(a=200){try{if(!e().existsSync(l))return"";return e().readFileSync(l,"utf8").split(/\r?\n/).filter(Boolean).slice(-a).join("\n")}catch{return""}}}};
3
+ `),await new Promise((b,d)=>{let e=(0,h.spawn)(m?n:a,["install",`${k}@latest`,"--no-audit","--no-fund","--omit=dev"],{cwd:j,stdio:["ignore",c,c],windowsHide:!0,shell:m,env:{...process.env,PATH:o}}),f=setTimeout(()=>{e.kill("SIGKILL"),d(Error("npm install timed out after 5 minutes — see install.log"))},3e5);e.once("error",a=>{clearTimeout(f),d(a)}),e.once("exit",a=>{clearTimeout(f),0===a?b():d(Error(`npm install exited with code ${a} — see install.log`))})}).finally(()=>e().closeSync(c));let d=u();if(!d.installed)throw Error("install finished but package is missing — see install.log");return d}function y(a=200){try{if(!e().existsSync(l))return"";return e().readFileSync(l,"utf8").split(/\r?\n/).filter(Boolean).slice(-a).join("\n")}catch{return""}}}};