@jheavenknows/bluerouter 2.0.86 → 2.0.88

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 (597) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +5 -5
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  88. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  90. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  92. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  93. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  94. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  95. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  96. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  97. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  98. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  99. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  137. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  139. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +110 -96
  141. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
  143. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +32 -1
  147. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +32 -1
  149. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +32 -1
  151. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  166. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  168. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  298. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/version/restart/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  305. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  307. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  309. package/app/.next-cli-build/server/app/callback.html +1 -1
  310. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  311. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  312. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  314. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  315. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  316. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  317. package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/analytics.rsc +4 -4
  319. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  321. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  323. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
  324. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
  326. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  327. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  328. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +5 -5
  329. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
  330. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  331. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  333. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +5 -5
  334. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +3 -3
  336. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  337. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  339. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  340. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  341. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  343. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  344. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  346. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  347. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  348. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  349. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  350. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  351. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  352. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  353. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  354. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  356. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  357. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  358. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  359. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  360. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  361. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  362. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  363. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  364. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  366. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  367. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  368. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  369. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  370. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  371. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  372. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  373. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  374. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  376. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  377. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  378. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  379. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  380. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  381. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  382. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  383. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  384. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  385. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  386. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  387. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  388. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  390. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  391. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  392. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  393. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  394. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  395. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  396. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  397. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  398. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
  400. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  401. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  402. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  404. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  405. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  407. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  408. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +5 -5
  410. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +2 -2
  411. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  414. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +5 -5
  415. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +3 -3
  417. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +4 -4
  420. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  421. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  422. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  424. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +4 -4
  425. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +3 -3
  427. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  428. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  430. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  431. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  432. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  434. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  435. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  436. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  438. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  439. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  441. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  442. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  445. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  446. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  448. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  451. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  452. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  456. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  458. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  459. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  460. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  461. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  462. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  463. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  466. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  468. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  469. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  470. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  471. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  472. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  473. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  474. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  475. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  476. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  477. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  479. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  481. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  482. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  483. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  484. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  485. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  488. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  489. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  490. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  491. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  492. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  493. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  494. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  495. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  496. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  498. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  499. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  500. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  501. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  502. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  503. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  504. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  505. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  506. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  507. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  508. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  509. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  511. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  512. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  513. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  514. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  515. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  516. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  517. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  518. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  519. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  520. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  521. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  522. package/app/.next-cli-build/server/app/index.html +1 -1
  523. package/app/.next-cli-build/server/app/index.rsc +3 -3
  524. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  525. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  526. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  527. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  528. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  529. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  530. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  531. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  532. package/app/.next-cli-build/server/app/landing.html +1 -1
  533. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  534. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  535. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  536. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  537. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  538. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  539. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  540. package/app/.next-cli-build/server/app/login/page.js +1 -1
  541. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  542. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  543. package/app/.next-cli-build/server/app/login.html +1 -1
  544. package/app/.next-cli-build/server/app/login.rsc +3 -3
  545. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
  546. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  547. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  548. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  549. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  550. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  551. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  552. package/app/.next-cli-build/server/app/page.js +1 -1
  553. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  554. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  555. package/app/.next-cli-build/server/app-paths-manifest.json +5 -5
  556. package/app/.next-cli-build/server/chunks/232.js +1 -45
  557. package/app/.next-cli-build/server/chunks/2338.js +4 -4
  558. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  559. package/app/.next-cli-build/server/chunks/3593.js +1 -1
  560. package/app/.next-cli-build/server/chunks/402.js +14 -58
  561. package/app/.next-cli-build/server/chunks/4684.js +1 -45
  562. package/app/.next-cli-build/server/chunks/4739.js +1 -1
  563. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  564. package/app/.next-cli-build/server/chunks/4780.js +1 -1
  565. package/app/.next-cli-build/server/chunks/4803.js +1 -1
  566. package/app/.next-cli-build/server/chunks/507.js +1 -1
  567. package/app/.next-cli-build/server/chunks/5258.js +1 -1
  568. package/app/.next-cli-build/server/chunks/5901.js +23 -67
  569. package/app/.next-cli-build/server/chunks/6252.js +1 -1
  570. package/app/.next-cli-build/server/chunks/698.js +1 -1
  571. package/app/.next-cli-build/server/chunks/7130.js +1 -1
  572. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  573. package/app/.next-cli-build/server/chunks/7324.js +1 -45
  574. package/app/.next-cli-build/server/chunks/7965.js +1 -1
  575. package/app/.next-cli-build/server/chunks/8062.js +1 -1
  576. package/app/.next-cli-build/server/chunks/8469.js +1 -1
  577. package/app/.next-cli-build/server/chunks/8520.js +1 -1
  578. package/app/.next-cli-build/server/instrumentation.js +1 -1
  579. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  580. package/app/.next-cli-build/server/middleware.js +4 -4
  581. package/app/.next-cli-build/server/pages/404.html +1 -1
  582. package/app/.next-cli-build/server/pages/500.html +1 -1
  583. package/app/.next-cli-build/static/chunks/{1321-f3cc4cb82223ddbc.js → 1321-3fb7f838fb0faf4a.js} +1 -1
  584. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-99f8c146d571e6e7.js +1 -0
  585. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/prompt-logs/page-f5228970334d7b36.js +1 -0
  586. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  587. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  588. package/app/package.json +1 -1
  589. package/app/src/lib/db/migrate.js +3 -36
  590. package/package.json +1 -1
  591. package/app/.next-cli-build/server/chunks/6050.js +0 -81
  592. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-045950c3d0610b2c.js +0 -1
  593. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/prompt-logs/page-a0151da8f40c4ea4.js +0 -1
  594. /package/app/.next-cli-build/static/{nUC1NH0H7SuyJGE-I1rvP → jcsPPQy8Q53sHDlkJhiUp}/_buildManifest.js +0 -0
  595. /package/app/.next-cli-build/static/{nUC1NH0H7SuyJGE-I1rvP → jcsPPQy8Q53sHDlkJhiUp}/_ssgManifest.js +0 -0
  596. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-2.0.83-to-2.0.84-2.0.84-20260616-110714 → upgrade-2.0.86-to-2.0.87-2.0.87-20260616-155538}/data.sqlite +0 -0
  597. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-2.0.84-to-2.0.83-2.0.83-20260616-110903 → upgrade-2.0.87-to-2.0.88-2.0.88-20260616-165249}/data.sqlite +0 -0
@@ -1,48 +1,4 @@
1
- "use strict";exports.id=5901,exports.ids=[5901],exports.modules={35901:(a,b,c)=>{c.d(b,{Wl:()=>C,jk:()=>x});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(45903);let i=Number(process.env.REQUEST_ERROR_BODY_SNIPPET_CHARS||4096);function j(a){return String(a??"").trim()}function k(a){return j(a).toLowerCase()}function l(a,b=null){let c=Number(a);return Number.isFinite(c)?c:b}function m(a,b=1e3){let c=j(a).replace(/\s+/g," ");return c?c.length>b?`${c.slice(0,Math.max(0,b-1))}…`:c:""}function n(){return g().join(process.env.DATA_DIR||"/var/lib/bluerouter","logs","promptLogs.sqlite")}async function o(){let a=(0,h.I6)(await (0,h.L7)());return a.sqlitePath||(a.sqlitePath=n()),a}async function p(a){e().mkdirSync(g().dirname(a),{recursive:!0});try{let b=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new(b.default||b)(a);return d.pragma("journal_mode = WAL"),d.pragma("busy_timeout = 5000"),{type:"sqlite",all:(a,b=[])=>d.prepare(a).all(...b),get:(a,b=[])=>d.prepare(a).get(...b),run:(a,b=[])=>d.prepare(a).run(...b),exec:a=>d.exec(a),close:()=>d.close()}}catch{let b=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(a);return b.exec("PRAGMA journal_mode = WAL"),b.exec("PRAGMA busy_timeout = 5000"),{type:"sqlite",all:(a,c=[])=>b.prepare(a).all(...c),get:(a,c=[])=>b.prepare(a).get(...c),run:(a,c=[])=>b.prepare(a).run(...c),exec:a=>b.exec(a),close:()=>b.close()}}}async function q(a){let b=new(await Promise.resolve().then(c.bind(c,64939))).Client({host:a.host,port:Number(a.port||5432),database:a.database,user:a.username,password:a.password,ssl:!!a.ssl&&{rejectUnauthorized:!1}});return await b.connect(),{type:"postgres",query:async(a,c=[])=>(await b.query(a,c)).rows,queryOne:async(a,c=[])=>(await b.query(a,c)).rows[0]||null,exec:async a=>{await b.query(a)},close:async()=>{await b.end()}}}async function r(a){let b=await c.e(8491).then(c.t.bind(c,38491,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,multipleStatements:!0,dateStrings:!0,connectTimeout:3e3});return{type:"mysql",query:async(a,b=[])=>(await d.query(a,b))[0],queryOne:async(a,b=[])=>((await d.query(a,b))[0]||[])[0]||null,exec:async a=>{await d.query(a)},close:async()=>{await d.end()}}}async function s(a){if("sqlite"===a.type)return p(a.sqlitePath||n());if("postgres"===a.type)return q(a);if("mysql"===a.type)return r(a);throw Error(`Unsupported prompt log database type: ${a.type}`)}async function t(a){"sqlite"===a.type?a.exec(`
2
- CREATE TABLE IF NOT EXISTS request_error_events (
3
- id INTEGER PRIMARY KEY AUTOINCREMENT,
4
- created_at TEXT NOT NULL,
5
- request_id TEXT,
6
- attempt_index INTEGER DEFAULT 0,
7
- provider TEXT,
8
- model TEXT,
9
- connection_id TEXT,
10
- account_name TEXT,
11
- endpoint TEXT,
12
- gateway_status_code INTEGER,
13
- upstream_status_code INTEGER,
14
- status_class TEXT,
15
- error_source TEXT,
16
- error_type TEXT,
17
- error_code TEXT,
18
- error_message_short TEXT,
19
- upstream_error_body_snippet TEXT,
20
- upstream_request_id TEXT,
21
- latency_ms INTEGER DEFAULT 0,
22
- api_key_id TEXT,
23
- api_key_fingerprint TEXT,
24
- client_ip TEXT,
25
- client_ip_normalized TEXT,
26
- source_tool TEXT,
27
- source_tool_label TEXT,
28
- session_id TEXT,
29
- meta_json TEXT
30
- );
31
- CREATE INDEX IF NOT EXISTS idx_ree_created_at ON request_error_events(created_at DESC);
32
- CREATE INDEX IF NOT EXISTS idx_ree_request_id ON request_error_events(request_id);
33
- CREATE INDEX IF NOT EXISTS idx_ree_gateway_status ON request_error_events(gateway_status_code, created_at DESC);
34
- CREATE INDEX IF NOT EXISTS idx_ree_upstream_status ON request_error_events(upstream_status_code, created_at DESC);
35
- CREATE INDEX IF NOT EXISTS idx_ree_error_type ON request_error_events(error_type, created_at DESC);
36
- CREATE INDEX IF NOT EXISTS idx_ree_error_code ON request_error_events(error_code, created_at DESC);
37
- CREATE INDEX IF NOT EXISTS idx_ree_error_source ON request_error_events(error_source, created_at DESC);
38
- CREATE INDEX IF NOT EXISTS idx_ree_provider_model ON request_error_events(provider, model, created_at DESC);
39
- CREATE INDEX IF NOT EXISTS idx_ree_connection ON request_error_events(connection_id, created_at DESC);
40
- CREATE INDEX IF NOT EXISTS idx_ree_api_key ON request_error_events(api_key_id, created_at DESC);
41
- CREATE INDEX IF NOT EXISTS idx_ree_api_fp ON request_error_events(api_key_fingerprint, created_at DESC);
42
- CREATE INDEX IF NOT EXISTS idx_ree_client_ip ON request_error_events(client_ip_normalized, created_at DESC);
43
- CREATE INDEX IF NOT EXISTS idx_ree_source_tool ON request_error_events(source_tool, created_at DESC);
44
- CREATE INDEX IF NOT EXISTS idx_ree_session ON request_error_events(session_id, created_at DESC);
45
- `):"postgres"===a.type?await a.exec(`
1
+ "use strict";exports.id=5901,exports.ids=[5901],exports.modules={35901:(a,b,c)=>{c.d(b,{Wl:()=>w,jk:()=>r});var d=c(45903);let e=Number(process.env.REQUEST_ERROR_BODY_SNIPPET_CHARS||4096);function f(a){return String(a??"").trim()}function g(a){return f(a).toLowerCase()}function h(a,b=null){let c=Number(a);return Number.isFinite(c)?c:b}function i(a,b=1e3){let c=f(a).replace(/\s+/g," ");return c?c.length>b?`${c.slice(0,Math.max(0,b-1))}…`:c:""}async function j(){return(0,d.I6)(await (0,d.L7)())}async function k(a){let b=new(await Promise.resolve().then(c.bind(c,64939))).Client({host:a.host,port:Number(a.port||5432),database:a.database,user:a.username,password:a.password,ssl:!!a.ssl&&{rejectUnauthorized:!1}});return await b.connect(),{type:"postgres",query:async(a,c=[])=>(await b.query(a,c)).rows,queryOne:async(a,c=[])=>(await b.query(a,c)).rows[0]||null,exec:async a=>{await b.query(a)},close:async()=>{await b.end()}}}async function l(a){let b=await c.e(8491).then(c.t.bind(c,38491,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,multipleStatements:!0,dateStrings:!0,connectTimeout:3e3});return{type:"mysql",query:async(a,b=[])=>(await d.query(a,b))[0],queryOne:async(a,b=[])=>((await d.query(a,b))[0]||[])[0]||null,exec:async a=>{await d.query(a)},close:async()=>{await d.end()}}}async function m(a){if("postgres"===a.type)return k(a);if("mysql"===a.type)return l(a);throw Error(`Unsupported prompt log database type: ${a.type}`)}async function n(a){if("postgres"===a.type)await a.exec(`
46
2
  CREATE TABLE IF NOT EXISTS request_error_events (
47
3
  id BIGSERIAL PRIMARY KEY,
48
4
  created_at TIMESTAMPTZ NOT NULL,
@@ -86,7 +42,7 @@
86
42
  CREATE INDEX IF NOT EXISTS idx_ree_client_ip ON request_error_events(client_ip_normalized, created_at DESC);
87
43
  CREATE INDEX IF NOT EXISTS idx_ree_source_tool ON request_error_events(source_tool, created_at DESC);
88
44
  CREATE INDEX IF NOT EXISTS idx_ree_session ON request_error_events(session_id, created_at DESC);
89
- `):"mysql"===a.type&&await a.exec(`
45
+ `);else if("mysql"===a.type)await a.exec(`
90
46
  CREATE TABLE IF NOT EXISTS request_error_events (
91
47
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
92
48
  created_at DATETIME(3) NOT NULL,
@@ -130,19 +86,19 @@
130
86
  INDEX idx_ree_source_tool (source_tool, created_at),
131
87
  INDEX idx_ree_session (session_id, created_at)
132
88
  ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
133
- `)}function u(a){let b=Number(a);return Number.isFinite(b)&&b>=200&&b<300}function v({statusCode:a,errorSource:b,errorCode:c,message:d}){let e=k(`${c} ${d}`),f=k(b),g=Number(a);return e.includes("context")||e.includes("maximum")||e.includes("token")||e.includes("too long")||413===g?"context_length_exceeded":401===g||e.includes("unauthorized")||e.includes("invalid api key")?"auth_error":403===g||e.includes("forbidden")||e.includes("not allowed")?"forbidden":429===g||e.includes("rate limit")?"rate_limit":e.includes("quota")?"quota_exceeded":e.includes("model_not_found")||e.includes("model not found")||e.includes("invalid model")?"model_not_found":e.includes("timeout")||f.includes("timeout")?"timeout":e.includes("abort")||499===g?"client_abort":e.includes("invalid json")?"invalid_json":e.includes("invalid sse")?"invalid_sse":f.includes("network")||e.includes("econnreset")||e.includes("econnrefused")||e.includes("etimedout")||e.includes("socket hang up")||e.includes("fetch failed")?"network_error":g>=500?"provider_unavailable":g>=400?"invalid_request":j(c)||"unknown_error"}function w(a={}){return{disabled:!0,total:0,summary:{total:0,serverImpacting:0,gateway:0,upstream:0,client:0,rateLimit:0,unknown:0,serverImpactingRate:0,clientRate:0,rateLimitRate:0},topErrors:[],topServerErrors:[],topClientErrors:[],topRateLimitErrors:[],byFaultOwner:[],byStatusCode:[],byStatusClass:[],byErrorType:[],byErrorSource:[],byProvider:[],byModel:[],byClientIp:[],bySourceTool:[],recent:[],...a}}async function x(a={}){let b;try{if(!(b=await o()).enabled||!1===b.logErrors)return{skipped:!0,reason:"prompt_log_db_disabled"};let e=await s(b);try{var c,d;let b,f;await t(e);let g=function(a={}){let b,c,d=l(a.gatewayStatusCode??a.statusCode,null),e=l(a.upstreamStatusCode,null),f=m(a.errorMessageShort||a.errorMessage||a.message||a.error?.message||a.error||""),g=j(a.errorCode)||j(a.code)||v({statusCode:e||d,errorSource:a.errorSource,message:f}),h=j(a.errorType)||v({statusCode:e||d,errorSource:a.errorSource,errorCode:g,message:f}),n=j(a.clientIp||a.sourceIp),o=a.meta&&"object"==typeof a.meta?a.meta:{};return{createdAt:a.createdAt||a.timestamp||new Date().toISOString(),requestId:j(a.requestId||o.requestId),attemptIndex:l(a.attemptIndex,0)||0,provider:j(a.provider)||"unknown",model:j(a.model)||"unknown",connectionId:j(a.connectionId),accountName:j(a.accountName||a.connectionName),endpoint:j(a.endpoint),gatewayStatusCode:d,upstreamStatusCode:e,statusClass:j(a.statusClass)||function(a,b,c){let d=l(b,l(a,null)),e=k(c);if(e.includes("timeout"))return"timeout";if(e.includes("network"))return"network";if(Number.isFinite(d)){if(d>=500)return"5xx";if(d>=400)return"4xx";if(d>=300)return"3xx";if(d>=200)return"2xx"}return e||"error"}(d,e,a.errorSource),errorSource:j(a.errorSource)||"unknown_error_source",errorType:h,errorCode:g,errorMessageShort:f,upstreamErrorBodySnippet:function(a,b=i){if(null==a)return"";let c="";if("string"==typeof a)c=a;else try{c=JSON.stringify(a)}catch{c=String(a)}return m(c,b)}(a.upstreamErrorBodySnippet??a.upstreamBody??a.responseBody??a.providerResponseBody),upstreamRequestId:j(a.upstreamRequestId),latencyMs:l(a.latencyMs,0)||0,apiKeyId:j(a.apiKeyId),apiKeyFingerprint:j(a.apiKeyFingerprint)||((b=j(a.apiKey))?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key"),clientIp:n,clientIpNormalized:j(a.clientIpNormalized)||((c=j(n))?c.split(",")[0].trim().replace(/^::ffff:/,""):""),sourceTool:j(a.sourceTool||o.sourceTool),sourceToolLabel:j(a.sourceToolLabel||o.sourceToolLabel),sessionId:j(a.sessionId||o.sessionId),metaJson:JSON.stringify({...o,storedBy:"request_error_events"})}}(a);if(!g||u(g.upstreamStatusCode)||u(g.gatewayStatusCode)||(d=g.statusClass,(f=k(d))&&(["pending","running","in_progress","queued","processing"].includes(k(f))||["2xx","ok","success","succeeded","complete","completed","done","200"].includes(f)||/^(?:2\d\d|ok|success|succeeded|complete|completed|done)(?:\b|[\s_-]|$)/.test(f))))return{skipped:!0,reason:"non_error_or_pending_event"};let h=(c=e.type,b=["created_at","request_id","attempt_index","provider","model","connection_id","account_name","endpoint","gateway_status_code","upstream_status_code","status_class","error_source","error_type","error_code","error_message_short","upstream_error_body_snippet","upstream_request_id","latency_ms","api_key_id","api_key_fingerprint","client_ip","client_ip_normalized","source_tool","source_tool_label","session_id","meta_json"],"postgres"===c?`INSERT INTO request_error_events (${b.join(", ")}) VALUES (${b.map((a,b)=>`$${b+1}`).join(", ")})`:`INSERT INTO request_error_events (${b.join(", ")}) VALUES (${b.map(()=>"?").join(", ")})`),n=[g.createdAt,g.requestId,g.attemptIndex,g.provider,g.model,g.connectionId,g.accountName,g.endpoint,g.gatewayStatusCode,g.upstreamStatusCode,g.statusClass,g.errorSource,g.errorType,g.errorCode,g.errorMessageShort,g.upstreamErrorBodySnippet,g.upstreamRequestId,g.latencyMs,g.apiKeyId,g.apiKeyFingerprint,g.clientIp,g.clientIpNormalized,g.sourceTool,g.sourceToolLabel,g.sessionId,g.metaJson];return"sqlite"===e.type?e.run(h,n):await e.query(h,n),{ok:!0,event:g}}finally{await e.close()}}catch(a){return console.warn(`[RequestErrorEvents] save failed: ${a?.message||a}`),{ok:!1,error:a?.message||String(a)}}}function y(a,b,c){let d=c.map(a=>`'${a.replace(/'/g,"''")}'`).join(", "),e=`${b} IN (${d})`;return a?`${a} AND ${e}`:`WHERE ${e}`}function z(a={},b={}){let c=l(a.requests,0)||0;return{key:j(a.key)||"unknown",label:j(a.label||a.key)||"unknown",requests:c,success:0,errors:c,errorRate:+!!c,promptTokens:0,completionTokens:0,totalTokens:0,cost:0,lastSeen:a.lastSeen||a.last_seen||"",...b}}async function A(a,b,c=[]){return"sqlite"===a.type?a.all(b,c):a.query(b,c)}async function B(a,b,c=[]){return"sqlite"===a.type?a.get(b,c):a.queryOne(b,c)}async function C(a={}){let b=await o();if(!b.enabled)return w({disabled:!0});let c=await s(b);try{var d;let b,e,f,g,h,i;await t(c);let k=function(a={},b="sqlite"){let c=[],d=[],e=a=>(d.push(a),"postgres"===b)?`$${d.length}`:"?",f="postgres"===b?"ILIKE":"LIKE";if(c.push("(COALESCE(upstream_status_code, gateway_status_code) IS NULL OR COALESCE(upstream_status_code, gateway_status_code) < 200 OR COALESCE(upstream_status_code, gateway_status_code) >= 300)"),c.push("(status_class IS NULL OR (lower(status_class) NOT IN ('2xx','ok','success','succeeded','complete','completed','done','200','pending','running','in_progress','queued','processing') AND lower(status_class) NOT LIKE '2__%' AND lower(status_class) NOT LIKE 'ok%' AND lower(status_class) NOT LIKE 'success%' AND lower(status_class) NOT LIKE 'succeeded%' AND lower(status_class) NOT LIKE 'complete%' AND lower(status_class) NOT LIKE 'completed%'))"),a.dateFrom&&c.push(`created_at >= ${e(a.dateFrom)}`),a.dateTo&&c.push(`created_at <= ${e(a.dateTo)}`),a.provider&&c.push(`provider = ${e(a.provider)}`),a.model&&c.push(`model = ${e(a.model)}`),a.connectionId&&c.push(`connection_id = ${e(a.connectionId)}`),a.clientIp&&c.push(`client_ip_normalized ${f} ${e(`%${a.clientIp}%`)}`),a.sourceTool&&c.push(`(source_tool ${f} ${e(`%${a.sourceTool}%`)} OR source_tool_label ${f} ${e(`%${a.sourceTool}%`)})`),a.sessionId&&c.push(`session_id = ${e(a.sessionId)}`),a.endpoint&&c.push(`endpoint ${f} ${e(`%${a.endpoint}%`)}`),a.statusCode&&c.push(`(gateway_status_code = ${e(Number(a.statusCode))} OR upstream_status_code = ${e(Number(a.statusCode))})`),a.status){let b=j(a.status);/^\d+$/.test(b)?c.push(`(gateway_status_code = ${e(Number(b))} OR upstream_status_code = ${e(Number(b))})`):c.push(`(status_class = ${e(b)} OR error_type = ${e(b)} OR error_code = ${e(b)})`)}if(a.errorType&&c.push(`error_type = ${e(a.errorType)}`),a.errorCode&&c.push(`error_code = ${e(a.errorCode)}`),a.errorSource&&c.push(`error_source = ${e(a.errorSource)}`),a.apiKey){let b=`%${a.apiKey}%`;c.push(`(api_key_id ${f} ${e(b)} OR api_key_fingerprint ${f} ${e(b)})`)}if(a.keyword){let b=`%${a.keyword}%`;c.push(`(error_message_short ${f} ${e(b)} OR upstream_error_body_snippet ${f} ${e(b)} OR request_id ${f} ${e(b)} OR error_code ${f} ${e(b)})`)}return{clause:c.length?`WHERE ${c.join(" AND ")}`:"",params:d}}(a,c.type),m=await B(c,`SELECT COUNT(*) AS total FROM request_error_events ${k.clause}`,k.params),n=l(m?.total,0)||0,o="postgres"===c.type?`$${k.params.length+1}`:"?",p=[...k.params,100],q=(d=c.type,b="mysql"===d?"CHAR":"TEXT",`COALESCE(CAST(upstream_status_code AS ${b}), CAST(gateway_status_code AS ${b}), status_class, 'error')`),r=(c.type,e="COALESCE(upstream_status_code, gateway_status_code)",f="lower(COALESCE(error_type, ''))",g="lower(COALESCE(error_code, ''))",h="lower(COALESCE(error_source, ''))",i="lower(COALESCE(error_message_short, ''))",`CASE
134
- WHEN (${e} BETWEEN 200 AND 299 OR lower(COALESCE(status_class, '')) IN ('2xx','ok','success','succeeded','complete','completed','done','200')) THEN 'non_error'
135
- WHEN (${e} = 429 OR ${f} IN ('rate_limit','quota_exceeded') OR ${g} IN ('rate_limit','quota_exceeded') OR ${i} LIKE '%rate limit%' OR ${i} LIKE '%quota%') THEN 'rate_limit'
136
- WHEN (${f} = 'client_abort' OR ${h} = 'client_abort' OR ${e} = 499) THEN 'client'
89
+ `);else throw Error(`Unsupported prompt log database type: ${a.type}`)}function o(a){let b=Number(a);return Number.isFinite(b)&&b>=200&&b<300}function p({statusCode:a,errorSource:b,errorCode:c,message:d}){let e=g(`${c} ${d}`),h=g(b),i=Number(a);return e.includes("context")||e.includes("maximum")||e.includes("token")||e.includes("too long")||413===i?"context_length_exceeded":401===i||e.includes("unauthorized")||e.includes("invalid api key")?"auth_error":403===i||e.includes("forbidden")||e.includes("not allowed")?"forbidden":429===i||e.includes("rate limit")?"rate_limit":e.includes("quota")?"quota_exceeded":e.includes("model_not_found")||e.includes("model not found")||e.includes("invalid model")?"model_not_found":e.includes("timeout")||h.includes("timeout")?"timeout":e.includes("abort")||499===i?"client_abort":e.includes("invalid json")?"invalid_json":e.includes("invalid sse")?"invalid_sse":h.includes("network")||e.includes("econnreset")||e.includes("econnrefused")||e.includes("etimedout")||e.includes("socket hang up")||e.includes("fetch failed")?"network_error":i>=500?"provider_unavailable":i>=400?"invalid_request":f(c)||"unknown_error"}function q(a={}){return{disabled:!0,total:0,summary:{total:0,serverImpacting:0,gateway:0,upstream:0,client:0,rateLimit:0,unknown:0,serverImpactingRate:0,clientRate:0,rateLimitRate:0},topErrors:[],topServerErrors:[],topClientErrors:[],topRateLimitErrors:[],byFaultOwner:[],byStatusCode:[],byStatusClass:[],byErrorType:[],byErrorSource:[],byProvider:[],byModel:[],byClientIp:[],bySourceTool:[],recent:[],...a}}async function r(a={}){let b;try{if(!(b=await j()).enabled||!1===b.logErrors)return{skipped:!0,reason:"prompt_log_db_disabled"};let k=await m(b);try{var c,d;let b,j;await n(k);let l=function(a={}){let b,c,d=h(a.gatewayStatusCode??a.statusCode,null),j=h(a.upstreamStatusCode,null),k=i(a.errorMessageShort||a.errorMessage||a.message||a.error?.message||a.error||""),l=f(a.errorCode)||f(a.code)||p({statusCode:j||d,errorSource:a.errorSource,message:k}),m=f(a.errorType)||p({statusCode:j||d,errorSource:a.errorSource,errorCode:l,message:k}),n=f(a.clientIp||a.sourceIp),o=a.meta&&"object"==typeof a.meta?a.meta:{};return{createdAt:a.createdAt||a.timestamp||new Date().toISOString(),requestId:f(a.requestId||o.requestId),attemptIndex:h(a.attemptIndex,0)||0,provider:f(a.provider)||"unknown",model:f(a.model)||"unknown",connectionId:f(a.connectionId),accountName:f(a.accountName||a.connectionName),endpoint:f(a.endpoint),gatewayStatusCode:d,upstreamStatusCode:j,statusClass:f(a.statusClass)||function(a,b,c){let d=h(b,h(a,null)),e=g(c);if(e.includes("timeout"))return"timeout";if(e.includes("network"))return"network";if(Number.isFinite(d)){if(d>=500)return"5xx";if(d>=400)return"4xx";if(d>=300)return"3xx";if(d>=200)return"2xx"}return e||"error"}(d,j,a.errorSource),errorSource:f(a.errorSource)||"unknown_error_source",errorType:m,errorCode:l,errorMessageShort:k,upstreamErrorBodySnippet:function(a,b=e){if(null==a)return"";let c="";if("string"==typeof a)c=a;else try{c=JSON.stringify(a)}catch{c=String(a)}return i(c,b)}(a.upstreamErrorBodySnippet??a.upstreamBody??a.responseBody??a.providerResponseBody),upstreamRequestId:f(a.upstreamRequestId),latencyMs:h(a.latencyMs,0)||0,apiKeyId:f(a.apiKeyId),apiKeyFingerprint:f(a.apiKeyFingerprint)||((b=f(a.apiKey))?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key"),clientIp:n,clientIpNormalized:f(a.clientIpNormalized)||((c=f(n))?c.split(",")[0].trim().replace(/^::ffff:/,""):""),sourceTool:f(a.sourceTool||o.sourceTool),sourceToolLabel:f(a.sourceToolLabel||o.sourceToolLabel),sessionId:f(a.sessionId||o.sessionId),metaJson:JSON.stringify({...o,storedBy:"request_error_events"})}}(a);if(!l||o(l.upstreamStatusCode)||o(l.gatewayStatusCode)||(d=l.statusClass,(j=g(d))&&(["pending","running","in_progress","queued","processing"].includes(g(j))||["2xx","ok","success","succeeded","complete","completed","done","200"].includes(j)||/^(?:2\d\d|ok|success|succeeded|complete|completed|done)(?:\b|[\s_-]|$)/.test(j))))return{skipped:!0,reason:"non_error_or_pending_event"};let m=(c=k.type,b=["created_at","request_id","attempt_index","provider","model","connection_id","account_name","endpoint","gateway_status_code","upstream_status_code","status_class","error_source","error_type","error_code","error_message_short","upstream_error_body_snippet","upstream_request_id","latency_ms","api_key_id","api_key_fingerprint","client_ip","client_ip_normalized","source_tool","source_tool_label","session_id","meta_json"],"postgres"===c?`INSERT INTO request_error_events (${b.join(", ")}) VALUES (${b.map((a,b)=>`$${b+1}`).join(", ")})`:`INSERT INTO request_error_events (${b.join(", ")}) VALUES (${b.map(()=>"?").join(", ")})`),q=[l.createdAt,l.requestId,l.attemptIndex,l.provider,l.model,l.connectionId,l.accountName,l.endpoint,l.gatewayStatusCode,l.upstreamStatusCode,l.statusClass,l.errorSource,l.errorType,l.errorCode,l.errorMessageShort,l.upstreamErrorBodySnippet,l.upstreamRequestId,l.latencyMs,l.apiKeyId,l.apiKeyFingerprint,l.clientIp,l.clientIpNormalized,l.sourceTool,l.sourceToolLabel,l.sessionId,l.metaJson];return await k.query(m,q),{ok:!0,event:l}}finally{await k.close()}}catch(a){return console.warn(`[RequestErrorEvents] save failed: ${a?.message||a}`),{ok:!1,error:a?.message||String(a)}}}function s(a,b,c){let d=c.map(a=>`'${a.replace(/'/g,"''")}'`).join(", "),e=`${b} IN (${d})`;return a?`${a} AND ${e}`:`WHERE ${e}`}function t(a={},b={}){let c=h(a.requests,0)||0;return{key:f(a.key)||"unknown",label:f(a.label||a.key)||"unknown",requests:c,success:0,errors:c,errorRate:+!!c,promptTokens:0,completionTokens:0,totalTokens:0,cost:0,lastSeen:a.lastSeen||a.last_seen||"",...b}}async function u(a,b,c=[]){return a.query(b,c)}async function v(a,b,c=[]){return a.queryOne(b,c)}async function w(a={}){let b=await j();if(!b.enabled)return q({disabled:!0});let c=null;try{var d;let e,g,i,j,k,l;c=await m(b),await n(c);let o=function(a={},b="mysql"){let c=[],d=[],e=a=>(d.push(a),"postgres"===b)?`$${d.length}`:"?",g="postgres"===b?"ILIKE":"LIKE";if(c.push("(COALESCE(upstream_status_code, gateway_status_code) IS NULL OR COALESCE(upstream_status_code, gateway_status_code) < 200 OR COALESCE(upstream_status_code, gateway_status_code) >= 300)"),c.push("(status_class IS NULL OR (lower(status_class) NOT IN ('2xx','ok','success','succeeded','complete','completed','done','200','pending','running','in_progress','queued','processing') AND lower(status_class) NOT LIKE '2__%' AND lower(status_class) NOT LIKE 'ok%' AND lower(status_class) NOT LIKE 'success%' AND lower(status_class) NOT LIKE 'succeeded%' AND lower(status_class) NOT LIKE 'complete%' AND lower(status_class) NOT LIKE 'completed%'))"),a.dateFrom&&c.push(`created_at >= ${e(a.dateFrom)}`),a.dateTo&&c.push(`created_at <= ${e(a.dateTo)}`),a.provider&&c.push(`provider = ${e(a.provider)}`),a.model&&c.push(`model = ${e(a.model)}`),a.connectionId&&c.push(`connection_id = ${e(a.connectionId)}`),a.clientIp&&c.push(`client_ip_normalized ${g} ${e(`%${a.clientIp}%`)}`),a.sourceTool&&c.push(`(source_tool ${g} ${e(`%${a.sourceTool}%`)} OR source_tool_label ${g} ${e(`%${a.sourceTool}%`)})`),a.sessionId&&c.push(`session_id = ${e(a.sessionId)}`),a.endpoint&&c.push(`endpoint ${g} ${e(`%${a.endpoint}%`)}`),a.statusCode&&c.push(`(gateway_status_code = ${e(Number(a.statusCode))} OR upstream_status_code = ${e(Number(a.statusCode))})`),a.status){let b=f(a.status);/^\d+$/.test(b)?c.push(`(gateway_status_code = ${e(Number(b))} OR upstream_status_code = ${e(Number(b))})`):c.push(`(status_class = ${e(b)} OR error_type = ${e(b)} OR error_code = ${e(b)})`)}if(a.errorType&&c.push(`error_type = ${e(a.errorType)}`),a.errorCode&&c.push(`error_code = ${e(a.errorCode)}`),a.errorSource&&c.push(`error_source = ${e(a.errorSource)}`),a.apiKey){let b=`%${a.apiKey}%`;c.push(`(api_key_id ${g} ${e(b)} OR api_key_fingerprint ${g} ${e(b)})`)}if(a.keyword){let b=`%${a.keyword}%`;c.push(`(error_message_short ${g} ${e(b)} OR upstream_error_body_snippet ${g} ${e(b)} OR request_id ${g} ${e(b)} OR error_code ${g} ${e(b)})`)}return{clause:c.length?`WHERE ${c.join(" AND ")}`:"",params:d}}(a,c.type),p=await v(c,`SELECT COUNT(*) AS total FROM request_error_events ${o.clause}`,o.params),q=h(p?.total,0)||0,r="postgres"===c.type?`$${o.params.length+1}`:"?",w=[...o.params,100],x=(d=c.type,e="mysql"===d?"CHAR":"TEXT",`COALESCE(CAST(upstream_status_code AS ${e}), CAST(gateway_status_code AS ${e}), status_class, 'error')`),y=(c.type,g="COALESCE(upstream_status_code, gateway_status_code)",i="lower(COALESCE(error_type, ''))",j="lower(COALESCE(error_code, ''))",k="lower(COALESCE(error_source, ''))",l="lower(COALESCE(error_message_short, ''))",`CASE
90
+ WHEN (${g} BETWEEN 200 AND 299 OR lower(COALESCE(status_class, '')) IN ('2xx','ok','success','succeeded','complete','completed','done','200')) THEN 'non_error'
91
+ WHEN (${g} = 429 OR ${i} IN ('rate_limit','quota_exceeded') OR ${j} IN ('rate_limit','quota_exceeded') OR ${l} LIKE '%rate limit%' OR ${l} LIKE '%quota%') THEN 'rate_limit'
92
+ WHEN (${i} = 'client_abort' OR ${k} = 'client_abort' OR ${g} = 499) THEN 'client'
137
93
  WHEN (COALESCE(upstream_status_code, 0) >= 500) THEN 'upstream'
138
- WHEN (${f} IN ('provider_unavailable','timeout','network_error','invalid_sse') OR ${h} LIKE '%provider%' OR ${h} LIKE '%upstream%' OR ${h} LIKE '%network%' OR ${h} LIKE '%timeout%' OR ${i} LIKE '%econnreset%' OR ${i} LIKE '%econnrefused%' OR ${i} LIKE '%etimedout%' OR ${i} LIKE '%socket hang up%' OR ${i} LIKE '%fetch failed%') THEN 'upstream'
139
- WHEN (${f} IN ('invalid_request','invalid_json','model_not_found','context_length_exceeded','auth_error','forbidden') OR ${g} IN ('bad_request','invalid_request','invalid_json','model_not_found','context_length_exceeded','auth_error','forbidden','not_found') OR ${e} IN (400,401,403,404,405,406,413,415,422)) THEN 'client'
140
- WHEN (COALESCE(gateway_status_code, 0) >= 500 OR ${f} LIKE 'gateway%' OR (${h} LIKE 'gateway%' AND ${h} <> 'gateway_validation')) THEN 'gateway'
94
+ WHEN (${i} IN ('provider_unavailable','timeout','network_error','invalid_sse') OR ${k} LIKE '%provider%' OR ${k} LIKE '%upstream%' OR ${k} LIKE '%network%' OR ${k} LIKE '%timeout%' OR ${l} LIKE '%econnreset%' OR ${l} LIKE '%econnrefused%' OR ${l} LIKE '%etimedout%' OR ${l} LIKE '%socket hang up%' OR ${l} LIKE '%fetch failed%') THEN 'upstream'
95
+ WHEN (${i} IN ('invalid_request','invalid_json','model_not_found','context_length_exceeded','auth_error','forbidden') OR ${j} IN ('bad_request','invalid_request','invalid_json','model_not_found','context_length_exceeded','auth_error','forbidden','not_found') OR ${g} IN (400,401,403,404,405,406,413,415,422)) THEN 'client'
96
+ WHEN (COALESCE(gateway_status_code, 0) >= 500 OR ${i} LIKE 'gateway%' OR (${k} LIKE 'gateway%' AND ${k} <> 'gateway_validation')) THEN 'gateway'
141
97
  ELSE 'unknown'
142
- END`),s="mysql"===c.type?`CONCAT(${r}, '|', ${q}, '|', COALESCE(NULLIF(error_type, ''), 'unknown_error'), '|', COALESCE(NULLIF(provider, ''), 'unknown'), '|', COALESCE(NULLIF(model, ''), 'unknown'), '|', COALESCE(NULLIF(endpoint, ''), 'unknown'))`:`${r} || '|' || ${q} || '|' || COALESCE(NULLIF(error_type, ''), 'unknown_error') || '|' || COALESCE(NULLIF(provider, ''), 'unknown') || '|' || COALESCE(NULLIF(model, ''), 'unknown') || '|' || COALESCE(NULLIF(endpoint, ''), 'unknown')`,u=a=>`SELECT
143
- ${s} AS key,
144
- ${r} AS faultOwner,
145
- ${q} AS status,
98
+ END`),z="mysql"===c.type?`CONCAT(${y}, '|', ${x}, '|', COALESCE(NULLIF(error_type, ''), 'unknown_error'), '|', COALESCE(NULLIF(provider, ''), 'unknown'), '|', COALESCE(NULLIF(model, ''), 'unknown'), '|', COALESCE(NULLIF(endpoint, ''), 'unknown'))`:`${y} || '|' || ${x} || '|' || COALESCE(NULLIF(error_type, ''), 'unknown_error') || '|' || COALESCE(NULLIF(provider, ''), 'unknown') || '|' || COALESCE(NULLIF(model, ''), 'unknown') || '|' || COALESCE(NULLIF(endpoint, ''), 'unknown')`,A=a=>`SELECT
99
+ ${z} AS key,
100
+ ${y} AS faultOwner,
101
+ ${x} AS status,
146
102
  COALESCE(NULLIF(error_type, ''), 'unknown_error') AS errorType,
147
103
  COALESCE(NULLIF(error_code, ''), 'unknown_error') AS errorCode,
148
104
  COALESCE(NULLIF(error_source, ''), 'unknown') AS errorSource,
@@ -155,25 +111,25 @@
155
111
  MAX(error_message_short) AS sampleMessage
156
112
  FROM request_error_events
157
113
  ${a}
158
- GROUP BY ${r}, ${q}, COALESCE(NULLIF(error_type, ''), 'unknown_error'), COALESCE(NULLIF(error_code, ''), 'unknown_error'), COALESCE(NULLIF(error_source, ''), 'unknown'), COALESCE(NULLIF(provider, ''), 'unknown'), COALESCE(NULLIF(model, ''), 'unknown'), COALESCE(NULLIF(endpoint, ''), 'unknown'), COALESCE(NULLIF(api_key_fingerprint, ''), 'local-no-key')
114
+ GROUP BY ${y}, ${x}, COALESCE(NULLIF(error_type, ''), 'unknown_error'), COALESCE(NULLIF(error_code, ''), 'unknown_error'), COALESCE(NULLIF(error_source, ''), 'unknown'), COALESCE(NULLIF(provider, ''), 'unknown'), COALESCE(NULLIF(model, ''), 'unknown'), COALESCE(NULLIF(endpoint, ''), 'unknown'), COALESCE(NULLIF(api_key_fingerprint, ''), 'local-no-key')
159
115
  ORDER BY requests DESC, lastSeen DESC
160
- LIMIT ${o}`,v=(a=[])=>a.map(a=>z(a,{label:`${a.faultOwner||"unknown"} \xb7 ${a.status||"error"} \xb7 ${a.errorType||a.errorCode||"unknown_error"}`,faultOwner:a.faultOwner||"unknown",status:a.status||"error",errorType:a.errorType||"",errorCode:a.errorCode||"",errorSource:a.errorSource||"",provider:a.provider||"unknown",model:a.model||"unknown",endpoint:a.endpoint||"unknown",apiKey:a.apiKey||"",sampleMessage:a.sampleMessage||"",serverImpacting:["gateway","upstream"].includes(a.faultOwner||"")})),w=await A(c,u(k.clause),p),x=y(k.clause,r,["gateway","upstream"]),C=y(k.clause,r,["client"]),D=y(k.clause,r,["rate_limit"]),[E,F,G,H]=await Promise.all([A(c,u(x),p),A(c,u(C),p),A(c,u(D),p),A(c,`SELECT ${r} AS key, ${r} AS label, COUNT(*) AS requests, MAX(created_at) AS lastSeen
116
+ LIMIT ${r}`,B=(a=[])=>a.map(a=>t(a,{label:`${a.faultOwner||"unknown"} \xb7 ${a.status||"error"} \xb7 ${a.errorType||a.errorCode||"unknown_error"}`,faultOwner:a.faultOwner||"unknown",status:a.status||"error",errorType:a.errorType||"",errorCode:a.errorCode||"",errorSource:a.errorSource||"",provider:a.provider||"unknown",model:a.model||"unknown",endpoint:a.endpoint||"unknown",apiKey:a.apiKey||"",sampleMessage:a.sampleMessage||"",serverImpacting:["gateway","upstream"].includes(a.faultOwner||"")})),C=await u(c,A(o.clause),w),D=s(o.clause,y,["gateway","upstream"]),E=s(o.clause,y,["client"]),F=s(o.clause,y,["rate_limit"]),[G,H,I,J]=await Promise.all([u(c,A(D),w),u(c,A(E),w),u(c,A(F),w),u(c,`SELECT ${y} AS key, ${y} AS label, COUNT(*) AS requests, MAX(created_at) AS lastSeen
161
117
  FROM request_error_events
162
- ${k.clause}
163
- GROUP BY ${r}
118
+ ${o.clause}
119
+ GROUP BY ${y}
164
120
  ORDER BY requests DESC, lastSeen DESC
165
- LIMIT ${o}`,p)]),I=new Map(H.map(a=>[j(a.key)||"unknown",l(a.requests,0)])),J=I.get("gateway")||0,K=I.get("upstream")||0,L=I.get("client")||0,M=I.get("rate_limit")||0,N=I.get("unknown")||0,O=J+K,P=async(a,b=a)=>(await A(c,`SELECT COALESCE(NULLIF(${a}, ''), 'unknown') AS key, COALESCE(NULLIF(${a}, ''), 'unknown') AS label, COUNT(*) AS requests, MAX(created_at) AS lastSeen
121
+ LIMIT ${r}`,w)]),K=new Map(J.map(a=>[f(a.key)||"unknown",h(a.requests,0)])),L=K.get("gateway")||0,M=K.get("upstream")||0,N=K.get("client")||0,O=K.get("rate_limit")||0,P=K.get("unknown")||0,Q=L+M,R=async(a,b=a)=>(await u(c,`SELECT COALESCE(NULLIF(${a}, ''), 'unknown') AS key, COALESCE(NULLIF(${a}, ''), 'unknown') AS label, COUNT(*) AS requests, MAX(created_at) AS lastSeen
166
122
  FROM request_error_events
167
- ${k.clause}
123
+ ${o.clause}
168
124
  GROUP BY COALESCE(NULLIF(${a}, ''), 'unknown')
169
125
  ORDER BY requests DESC, lastSeen DESC
170
- LIMIT ${o}`,p)).map(a=>z(a,{[b]:a.key})),Q="postgres"===c.type?`$${k.params.length+1}`:"?",R=await A(c,`SELECT id, created_at AS createdAt, request_id AS requestId, provider, model, connection_id AS connectionId, endpoint,
126
+ LIMIT ${r}`,w)).map(a=>t(a,{[b]:a.key})),S="postgres"===c.type?`$${o.params.length+1}`:"?",T=await u(c,`SELECT id, created_at AS createdAt, request_id AS requestId, provider, model, connection_id AS connectionId, endpoint,
171
127
  gateway_status_code AS gatewayStatusCode, upstream_status_code AS upstreamStatusCode, status_class AS statusClass,
172
- ${r} AS faultOwner,
128
+ ${y} AS faultOwner,
173
129
  error_source AS errorSource, error_type AS errorType, error_code AS errorCode,
174
130
  error_message_short AS errorMessageShort, api_key_fingerprint AS apiKeyFingerprint,
175
131
  client_ip_normalized AS clientIp, source_tool AS sourceTool, session_id AS sessionId, latency_ms AS latencyMs
176
132
  FROM request_error_events
177
- ${k.clause}
133
+ ${o.clause}
178
134
  ORDER BY created_at DESC
179
- LIMIT ${Q}`,[...k.params,50]);return{disabled:!1,total:n,summary:{total:n,serverImpacting:O,gateway:J,upstream:K,client:L,rateLimit:M,unknown:N,serverImpactingRate:n?O/n:0,clientRate:n?L/n:0,rateLimitRate:n?M/n:0},topErrors:v(w),topServerErrors:v(E),topClientErrors:v(F),topRateLimitErrors:v(G),byFaultOwner:H.map(a=>z(a,{faultOwner:a.key})),byStatusCode:await P(q,"status"),byStatusClass:await P("status_class","statusClass"),byErrorType:await P("error_type","errorType"),byErrorSource:await P("error_source","errorSource"),byProvider:await P("provider","provider"),byModel:await P("model","model"),byClientIp:await P("client_ip_normalized","clientIp"),bySourceTool:await P("source_tool","sourceTool"),recent:R}}catch(a){return w({disabled:!0,error:a?.message||String(a)})}finally{await c.close()}}}};
135
+ LIMIT ${S}`,[...o.params,50]);return{disabled:!1,total:q,summary:{total:q,serverImpacting:Q,gateway:L,upstream:M,client:N,rateLimit:O,unknown:P,serverImpactingRate:q?Q/q:0,clientRate:q?N/q:0,rateLimitRate:q?O/q:0},topErrors:B(C),topServerErrors:B(G),topClientErrors:B(H),topRateLimitErrors:B(I),byFaultOwner:J.map(a=>t(a,{faultOwner:a.key})),byStatusCode:await R(x,"status"),byStatusClass:await R("status_class","statusClass"),byErrorType:await R("error_type","errorType"),byErrorSource:await R("error_source","errorSource"),byProvider:await R("provider","provider"),byModel:await R("model","model"),byClientIp:await R("client_ip_normalized","clientIp"),bySourceTool:await R("source_tool","sourceTool"),recent:T}}catch(a){return q({disabled:!0,error:a?.message||String(a)})}finally{c&&await c.close()}}}};
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",adminDisabled:"INTEGER DEFAULT 0",allowedModels:"TEXT DEFAULT '[]'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)","CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)","CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)","CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyId:"TEXT",apiKeyFingerprint:"TEXT",apiKeyName:"TEXT",apiKeyOwner:"TEXT",endpoint:"TEXT",requestId:"TEXT",sessionId:"TEXT",clientIp:"TEXT",clientIpNormalized:"TEXT",clientHost:"TEXT",clientUserAgent:"TEXT",sourceTool:"TEXT",sourceToolLabel:"TEXT",sourceHost:"TEXT",latencyMs:"INTEGER DEFAULT 0",ttftMs:"INTEGER DEFAULT 0",statusCode:"INTEGER",errorCode:"TEXT",errorType:"TEXT",errorMessageShort:"TEXT",isStreaming:"INTEGER DEFAULT 0",isCombo:"INTEGER DEFAULT 0",comboName:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",totalTokens:"INTEGER DEFAULT 0",cachedTokens:"INTEGER DEFAULT 0",reasoningTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_ts_status ON usageHistory(timestamp DESC, status)","CREATE INDEX IF NOT EXISTS idx_uh_ts_provider ON usageHistory(timestamp DESC, provider)","CREATE INDEX IF NOT EXISTS idx_uh_ts_model ON usageHistory(timestamp DESC, model)","CREATE INDEX IF NOT EXISTS idx_uh_ts_conn ON usageHistory(timestamp DESC, connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_ts_endpoint ON usageHistory(timestamp DESC, endpoint)","CREATE INDEX IF NOT EXISTS idx_uh_ts_apikey ON usageHistory(timestamp DESC, apiKey)","CREATE INDEX IF NOT EXISTS idx_uh_provider_model_ts ON usageHistory(provider, model, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_status_ts ON usageHistory(status, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_endpoint_ts ON usageHistory(endpoint, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_ts ON usageHistory(apiKey, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_conn_ts ON usageHistory(connectionId, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_request_id ON usageHistory(requestId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_id_ts ON usageHistory(apiKeyId, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_fp_ts ON usageHistory(apiKeyFingerprint, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_ip_ts ON usageHistory(clientIpNormalized, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_tool_ts ON usageHistory(sourceTool, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_session_ts ON usageHistory(sessionId, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_status_code_ts ON usageHistory(statusCode, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_error_type_ts ON usageHistory(errorType, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_latency_ts ON usageHistory(timestamp DESC, latencyMs)","CREATE INDEX IF NOT EXISTS idx_uh_combo_ts ON usageHistory(isCombo, comboName, timestamp DESC)"]},usageHourlyRollup:{columns:{bucket:"TEXT NOT NULL",dimension:"TEXT NOT NULL",key:"TEXT NOT NULL",requests:"INTEGER DEFAULT 0",success:"INTEGER DEFAULT 0",errors:"INTEGER DEFAULT 0",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",totalTokens:"INTEGER DEFAULT 0",cachedTokens:"INTEGER DEFAULT 0",reasoningTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",lastSeen:"TEXT"},primaryKey:"PRIMARY KEY (bucket, dimension, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_uhr_dim_bucket ON usageHourlyRollup(dimension, bucket DESC)","CREATE INDEX IF NOT EXISTS idx_uhr_bucket ON usageHourlyRollup(bucket DESC)"]},usageDailyRollup:{columns:{bucket:"TEXT NOT NULL",dimension:"TEXT NOT NULL",key:"TEXT NOT NULL",requests:"INTEGER DEFAULT 0",success:"INTEGER DEFAULT 0",errors:"INTEGER DEFAULT 0",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",totalTokens:"INTEGER DEFAULT 0",cachedTokens:"INTEGER DEFAULT 0",reasoningTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",lastSeen:"TEXT"},primaryKey:"PRIMARY KEY (bucket, dimension, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_udr_dim_bucket ON usageDailyRollup(dimension, bucket DESC)","CREATE INDEX IF NOT EXISTS idx_udr_bucket ON usageDailyRollup(bucket DESC)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},66252:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>k});var d=c(73024),e=c.n(d),f=c(46293),g=c.n(f),h=c(34050);let i=null;async function j(){return i||(i=await g()())}async function k(a){let b=await j(),c=e().existsSync(a)?e().readFileSync(a):null,d=new b.Database(c);d.exec(h.oG);let f=!1,g=null;function i(){let b=d.export();e().writeFileSync(a,Buffer.from(b)),f=!1}function k(){f=!0,g&&clearTimeout(g),g=setTimeout(()=>{if(g=null,f)try{i()}catch(a){console.error("[sqljs] save failed:",a)}},100)}function l(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let m=()=>{if(f)try{i()}catch{}};return process.on("beforeExit",m),process.on("SIGINT",m),process.on("SIGTERM",m),{driver:"sql.js",run:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b)),c.step();let a=d.getRowsModified(),e=d.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return k(),{changes:a,lastInsertRowid:e}}finally{c.free()}},get:function(a,b=[]){let c=d.prepare(a);try{if(c.bind(l(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){d.exec(a),k()},transaction:function(a){let b=`sp_${Math.random().toString(36).slice(2)}`;d.exec(`SAVEPOINT ${b}`);try{let c=a();return d.exec(`RELEASE ${b}`),k(),c}catch(a){try{d.exec(`ROLLBACK TO ${b}`),d.exec(`RELEASE ${b}`)}catch{}throw a}},close:function(){g&&clearTimeout(g),f&&i(),d.close()},raw:d}}}};
9
+ `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",adminDisabled:"INTEGER DEFAULT 0",allowedModels:"TEXT DEFAULT '[]'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)","CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)","CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)","CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},66252:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>k});var d=c(73024),e=c.n(d),f=c(46293),g=c.n(f),h=c(34050);let i=null;async function j(){return i||(i=await g()())}async function k(a){let b=await j(),c=e().existsSync(a)?e().readFileSync(a):null,d=new b.Database(c);d.exec(h.oG);let f=!1,g=null;function i(){let b=d.export();e().writeFileSync(a,Buffer.from(b)),f=!1}function k(){f=!0,g&&clearTimeout(g),g=setTimeout(()=>{if(g=null,f)try{i()}catch(a){console.error("[sqljs] save failed:",a)}},100)}function l(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let m=()=>{if(f)try{i()}catch{}};return process.on("beforeExit",m),process.on("SIGINT",m),process.on("SIGTERM",m),{driver:"sql.js",run:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b)),c.step();let a=d.getRowsModified(),e=d.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return k(),{changes:a,lastInsertRowid:e}}finally{c.free()}},get:function(a,b=[]){let c=d.prepare(a);try{if(c.bind(l(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){d.exec(a),k()},transaction:function(a){let b=`sp_${Math.random().toString(36).slice(2)}`;d.exec(`SAVEPOINT ${b}`);try{let c=a();return d.exec(`RELEASE ${b}`),k(),c}catch(a){try{d.exec(`ROLLBACK TO ${b}`),d.exec(`RELEASE ${b}`)}catch{}throw a}},close:function(){g&&clearTimeout(g),f&&i(),d.close()},raw:d}}}};
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",adminDisabled:"INTEGER DEFAULT 0",allowedModels:"TEXT DEFAULT '[]'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)","CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)","CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)","CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyId:"TEXT",apiKeyFingerprint:"TEXT",apiKeyName:"TEXT",apiKeyOwner:"TEXT",endpoint:"TEXT",requestId:"TEXT",sessionId:"TEXT",clientIp:"TEXT",clientIpNormalized:"TEXT",clientHost:"TEXT",clientUserAgent:"TEXT",sourceTool:"TEXT",sourceToolLabel:"TEXT",sourceHost:"TEXT",latencyMs:"INTEGER DEFAULT 0",ttftMs:"INTEGER DEFAULT 0",statusCode:"INTEGER",errorCode:"TEXT",errorType:"TEXT",errorMessageShort:"TEXT",isStreaming:"INTEGER DEFAULT 0",isCombo:"INTEGER DEFAULT 0",comboName:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",totalTokens:"INTEGER DEFAULT 0",cachedTokens:"INTEGER DEFAULT 0",reasoningTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_ts_status ON usageHistory(timestamp DESC, status)","CREATE INDEX IF NOT EXISTS idx_uh_ts_provider ON usageHistory(timestamp DESC, provider)","CREATE INDEX IF NOT EXISTS idx_uh_ts_model ON usageHistory(timestamp DESC, model)","CREATE INDEX IF NOT EXISTS idx_uh_ts_conn ON usageHistory(timestamp DESC, connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_ts_endpoint ON usageHistory(timestamp DESC, endpoint)","CREATE INDEX IF NOT EXISTS idx_uh_ts_apikey ON usageHistory(timestamp DESC, apiKey)","CREATE INDEX IF NOT EXISTS idx_uh_provider_model_ts ON usageHistory(provider, model, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_status_ts ON usageHistory(status, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_endpoint_ts ON usageHistory(endpoint, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_ts ON usageHistory(apiKey, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_conn_ts ON usageHistory(connectionId, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_request_id ON usageHistory(requestId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_id_ts ON usageHistory(apiKeyId, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_fp_ts ON usageHistory(apiKeyFingerprint, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_ip_ts ON usageHistory(clientIpNormalized, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_tool_ts ON usageHistory(sourceTool, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_session_ts ON usageHistory(sessionId, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_status_code_ts ON usageHistory(statusCode, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_error_type_ts ON usageHistory(errorType, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_latency_ts ON usageHistory(timestamp DESC, latencyMs)","CREATE INDEX IF NOT EXISTS idx_uh_combo_ts ON usageHistory(isCombo, comboName, timestamp DESC)"]},usageHourlyRollup:{columns:{bucket:"TEXT NOT NULL",dimension:"TEXT NOT NULL",key:"TEXT NOT NULL",requests:"INTEGER DEFAULT 0",success:"INTEGER DEFAULT 0",errors:"INTEGER DEFAULT 0",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",totalTokens:"INTEGER DEFAULT 0",cachedTokens:"INTEGER DEFAULT 0",reasoningTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",lastSeen:"TEXT"},primaryKey:"PRIMARY KEY (bucket, dimension, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_uhr_dim_bucket ON usageHourlyRollup(dimension, bucket DESC)","CREATE INDEX IF NOT EXISTS idx_uhr_bucket ON usageHourlyRollup(bucket DESC)"]},usageDailyRollup:{columns:{bucket:"TEXT NOT NULL",dimension:"TEXT NOT NULL",key:"TEXT NOT NULL",requests:"INTEGER DEFAULT 0",success:"INTEGER DEFAULT 0",errors:"INTEGER DEFAULT 0",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",totalTokens:"INTEGER DEFAULT 0",cachedTokens:"INTEGER DEFAULT 0",reasoningTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",lastSeen:"TEXT"},primaryKey:"PRIMARY KEY (bucket, dimension, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_udr_dim_bucket ON usageDailyRollup(dimension, bucket DESC)","CREATE INDEX IF NOT EXISTS idx_udr_bucket ON usageDailyRollup(bucket DESC)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},90698:(a,b,c)=>{c.d(b,{createBunSqliteAdapter:()=>e});var d=c(76040);async function e(a){let{Database:b}=await Promise.resolve().then(c.t.bind(c,81787,23)),e=new b(a,{create:!0});e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function i(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}"function"==typeof h.unref&&h.unref();let j=()=>i();return process.once("beforeExit",j),process.once("SIGINT",()=>{j(),process.exit(0)}),process.once("SIGTERM",()=>{j(),process.exit(0)}),{driver:"bun:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction:a=>e.transaction(a)(),checkpoint(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(h),i()},raw:e}}}};
9
+ `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",adminDisabled:"INTEGER DEFAULT 0",allowedModels:"TEXT DEFAULT '[]'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)","CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)","CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)","CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},90698:(a,b,c)=>{c.d(b,{createBunSqliteAdapter:()=>e});var d=c(76040);async function e(a){let{Database:b}=await Promise.resolve().then(c.t.bind(c,81787,23)),e=new b(a,{create:!0});e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function i(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}"function"==typeof h.unref&&h.unref();let j=()=>i();return process.once("beforeExit",j),process.once("SIGINT",()=>{j(),process.exit(0)}),process.once("SIGTERM",()=>{j(),process.exit(0)}),{driver:"bun:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction:a=>e.transaction(a)(),checkpoint(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(h),i()},raw:e}}}};