@jheavenknows/bluerouter 1.0.133 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +6 -6
  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 +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  142. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +59 -25
  144. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
  148. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -1
  150. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +1 -1
  152. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  160. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  176. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  251. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  291. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  300. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/version/restart/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  335. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  337. package/app/.next-cli-build/server/app/callback.html +1 -1
  338. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  339. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  340. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  341. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  342. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  344. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
  346. package/app/.next-cli-build/server/app/dashboard/analytics.rsc +4 -4
  347. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
  348. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  351. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
  352. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
  354. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +5 -5
  357. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
  358. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  359. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  361. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +5 -5
  362. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +3 -3
  364. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  367. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  368. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  370. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  371. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  372. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  374. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  376. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  377. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  378. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  379. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  381. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  382. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  383. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  384. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  386. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  387. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  388. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  390. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  391. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  392. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  393. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  394. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  396. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  397. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  398. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  401. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  402. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  404. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  407. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  408. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  411. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  412. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  413. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  414. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  415. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  418. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  419. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  421. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  422. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  423. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  424. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  425. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  427. package/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
  428. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  431. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  432. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  433. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  434. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  435. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  436. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +4 -4
  438. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  439. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  441. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  442. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +4 -4
  443. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +3 -3
  445. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  446. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +4 -4
  448. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  451. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  452. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +4 -4
  453. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  454. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +3 -3
  455. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  456. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  458. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  459. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  460. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  461. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  462. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  463. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  464. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  465. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  466. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  468. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  469. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  470. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  471. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  472. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  473. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  474. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  475. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  476. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  477. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  479. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  480. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  481. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  482. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  483. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  484. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  485. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  486. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  488. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  489. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  490. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  491. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  492. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  493. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  494. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  495. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  496. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  498. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  499. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  500. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  501. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  502. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  503. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  504. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  505. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  506. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  507. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  508. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  509. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  511. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  512. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  513. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  514. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  515. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  516. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  517. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  518. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  519. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  520. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  521. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  522. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  523. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  524. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  525. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  526. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  527. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  528. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  529. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  531. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  532. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  533. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  534. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  535. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  536. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  537. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  538. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  539. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  540. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  541. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  542. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  543. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  544. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  545. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  546. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  547. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  548. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  549. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  550. package/app/.next-cli-build/server/app/index.html +1 -1
  551. package/app/.next-cli-build/server/app/index.rsc +3 -3
  552. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  553. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  554. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  555. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  556. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  557. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  558. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  559. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  560. package/app/.next-cli-build/server/app/landing.html +1 -1
  561. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  562. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  563. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  564. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  565. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  566. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  567. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  568. package/app/.next-cli-build/server/app/login/page.js +1 -1
  569. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  570. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  571. package/app/.next-cli-build/server/app/login.html +1 -1
  572. package/app/.next-cli-build/server/app/login.rsc +3 -3
  573. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
  574. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  575. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  576. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  577. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  578. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  579. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  580. package/app/.next-cli-build/server/app/page.js +1 -1
  581. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  582. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  583. package/app/.next-cli-build/server/app-paths-manifest.json +6 -6
  584. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  585. package/app/.next-cli-build/server/chunks/318.js +1 -1
  586. package/app/.next-cli-build/server/chunks/3222.js +53 -0
  587. package/app/.next-cli-build/server/chunks/3593.js +1 -1
  588. package/app/.next-cli-build/server/chunks/3801.js +1 -1
  589. package/app/.next-cli-build/server/chunks/3913.js +2 -2
  590. package/app/.next-cli-build/server/chunks/4657.js +1 -1
  591. package/app/.next-cli-build/server/chunks/4739.js +1 -1
  592. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  593. package/app/.next-cli-build/server/chunks/4780.js +1 -1
  594. package/app/.next-cli-build/server/chunks/4803.js +1 -1
  595. package/app/.next-cli-build/server/chunks/507.js +1 -1
  596. package/app/.next-cli-build/server/chunks/5087.js +49 -0
  597. package/app/.next-cli-build/server/chunks/5258.js +1 -1
  598. package/app/.next-cli-build/server/chunks/5742.js +1 -1
  599. package/app/.next-cli-build/server/chunks/6252.js +1 -1
  600. package/app/.next-cli-build/server/chunks/698.js +1 -1
  601. package/app/.next-cli-build/server/chunks/7130.js +1 -1
  602. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  603. package/app/.next-cli-build/server/chunks/7197.js +1 -1
  604. package/app/.next-cli-build/server/chunks/7795.js +125 -0
  605. package/app/.next-cli-build/server/chunks/7965.js +1 -1
  606. package/app/.next-cli-build/server/chunks/8062.js +1 -1
  607. package/app/.next-cli-build/server/chunks/8255.js +1 -1
  608. package/app/.next-cli-build/server/chunks/8469.js +1 -1
  609. package/app/.next-cli-build/server/chunks/8520.js +1 -1
  610. package/app/.next-cli-build/server/chunks/8895.js +1 -1
  611. package/app/.next-cli-build/server/chunks/9753.js +53 -0
  612. package/app/.next-cli-build/server/chunks/978.js +53 -0
  613. package/app/.next-cli-build/server/instrumentation.js +1 -1
  614. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  615. package/app/.next-cli-build/server/middleware.js +3 -16
  616. package/app/.next-cli-build/server/pages/404.html +1 -1
  617. package/app/.next-cli-build/server/pages/500.html +1 -1
  618. package/app/.next-cli-build/static/chunks/{1321-c1109064c6c3885a.js → 1321-564f99250d5a1d60.js} +1 -1
  619. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.133-to-1.0.134-1.0.134-20260610-122326/data.sqlite +0 -0
  620. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.134-to-1.0.135-1.0.135-20260610-122700/data.sqlite +0 -0
  621. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.135-to-2.0.1-2.0.1-20260610-123810/data.sqlite +0 -0
  622. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  623. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  624. package/app/package.json +1 -1
  625. package/package.json +1 -1
  626. package/app/.next-cli-build/server/chunks/2496.js +0 -133
  627. package/app/.next-cli-build/server/chunks/4115.js +0 -9
  628. package/app/.next-cli-build/server/chunks/4785.js +0 -9
  629. package/app/.next-cli-build/server/chunks/4825.js +0 -9
  630. package/app/.next-cli-build/server/chunks/4884.js +0 -24
  631. /package/app/.next-cli-build/static/{9exAhH2mp-vZY64Wd_P_g → sROuCBBQq9L0b6sYTF2E5}/_buildManifest.js +0 -0
  632. /package/app/.next-cli-build/static/{9exAhH2mp-vZY64Wd_P_g → sROuCBBQq9L0b6sYTF2E5}/_ssgManifest.js +0 -0
@@ -1,73 +1,107 @@
1
- "use strict";(()=>{var a={};a.id=451,a.ids=[451],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},9588:(a,b,c)=>{c.d(b,{I8:()=>i,Tv:()=>o,hH:()=>n,oW:()=>m,ub:()=>k});var d=c(65573),e=c(23211),f=c(89718),g=c(33792);function h(a){return String(a||"").trim().toLowerCase()}function i(a){return h(a)}function j(a={}){return[a.ldapUsername,a.ldapEmail,a.ldapName,a.ldapDn,a.oidcEmail,a.oidcName,a.localUsername,a.username,a.email].map(h).filter(Boolean)}function k(a={},b={}){var c;if(!b||b.local||!b.ldap&&!b.oidc||"admin"===b.role||!0===b.ldapIsAdmin)return!0;let d=Array.isArray(c=a.ldapAllowedUsers)?c.map(h).filter(Boolean):String(c||"").split(/[,\n]/).map(h).filter(Boolean);return 0!==d.length&&j(b).some(a=>d.includes(a))}async function l(){let a=await (0,f.mt)(),b=await (0,d.UL)(),c=await (0,g.dY)(b.get("auth_token")?.value),e=!1!==a.requireLogin;if(e&&!c?.authenticated)return{authenticated:!1,isAdmin:!1,role:"guest",userId:"",displayName:"Guest",loginMethod:"None",settings:a,session:null};if(!e&&!c?.authenticated)return{authenticated:!0,isAdmin:!0,role:"admin",userId:"local",displayName:"Local admin",loginMethod:"Local",settings:a,session:{local:!0,localUsername:"local"}};let h=function(a={}){let b=j(a),c=b[0]||"local",d=a.ldapName||a.ldapEmail||a.oidcName||a.oidcEmail||a.localUsername||c;return{userId:c,displayName:d,loginMethod:a.oidc?"OIDC":a.ldap?"LDAP":"Local",candidates:b}}(c||{}),i=k(a,c||{});return{authenticated:!0,isAdmin:i,role:i?"admin":"user",...h,settings:a,session:c}}async function m(){let a=await l();return a.authenticated?{access:a,response:null}:{access:a,response:e.NextResponse.json({error:"Authentication required"},{status:401})}}async function n(){let{access:a,response:b}=await m();return b?{access:a,response:b}:a.isAdmin?{access:a,response:null}:{access:a,response:e.NextResponse.json({error:"Admin access required"},{status:403})}}function o(a,b){if(!a?.authenticated||!b)return!1;if(a.isAdmin)return!0;let c=h(a.userId),d=h(b.ownerUser),e=h(b.createdByUser);return!!c&&(d===c||e===c)}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},25432:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>ah,patchFetch:()=>ag,routeModule:()=>ac,serverHooks:()=>af,workAsyncStorage:()=>ad,workUnitAsyncStorage:()=>ae});var d={};c.r(d),c.d(d,{GET:()=>ab,dynamic:()=>_});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(36366),x=c(644),y=c(97242);let z=new Set(["today","24h","7d","30d","60d","all","custom"]),A=`(
1
+ "use strict";(()=>{var a={};a.id=451,a.ids=[451],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},9588:(a,b,c)=>{c.d(b,{I8:()=>i,Tv:()=>o,hH:()=>n,oW:()=>m,ub:()=>k});var d=c(65573),e=c(23211),f=c(89718),g=c(33792);function h(a){return String(a||"").trim().toLowerCase()}function i(a){return h(a)}function j(a={}){return[a.ldapUsername,a.ldapEmail,a.ldapName,a.ldapDn,a.oidcEmail,a.oidcName,a.localUsername,a.username,a.email].map(h).filter(Boolean)}function k(a={},b={}){var c;if(!b||b.local||!b.ldap&&!b.oidc||"admin"===b.role||!0===b.ldapIsAdmin)return!0;let d=Array.isArray(c=a.ldapAllowedUsers)?c.map(h).filter(Boolean):String(c||"").split(/[,\n]/).map(h).filter(Boolean);return 0!==d.length&&j(b).some(a=>d.includes(a))}async function l(){let a=await (0,f.mt)(),b=await (0,d.UL)(),c=await (0,g.dY)(b.get("auth_token")?.value),e=!1!==a.requireLogin;if(e&&!c?.authenticated)return{authenticated:!1,isAdmin:!1,role:"guest",userId:"",displayName:"Guest",loginMethod:"None",settings:a,session:null};if(!e&&!c?.authenticated)return{authenticated:!0,isAdmin:!0,role:"admin",userId:"local",displayName:"Local admin",loginMethod:"Local",settings:a,session:{local:!0,localUsername:"local"}};let h=function(a={}){let b=j(a),c=b[0]||"local",d=a.ldapName||a.ldapEmail||a.oidcName||a.oidcEmail||a.localUsername||c;return{userId:c,displayName:d,loginMethod:a.oidc?"OIDC":a.ldap?"LDAP":"Local",candidates:b}}(c||{}),i=k(a,c||{});return{authenticated:!0,isAdmin:i,role:i?"admin":"user",...h,settings:a,session:c}}async function m(){let a=await l();return a.authenticated?{access:a,response:null}:{access:a,response:e.NextResponse.json({error:"Authentication required"},{status:401})}}async function n(){let{access:a,response:b}=await m();return b?{access:a,response:b}:a.isAdmin?{access:a,response:null}:{access:a,response:e.NextResponse.json({error:"Admin access required"},{status:403})}}function o(a,b){if(!a?.authenticated||!b)return!1;if(a.isAdmin)return!0;let c=h(a.userId),d=h(b.ownerUser),e=h(b.createdByUser);return!!c&&(d===c||e===c)}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33792:(a,b,c)=>{c.d(b,{Dc:()=>p,OZ:()=>s,YK:()=>n,dY:()=>q,tm:()=>r});var d=c(86935),e=c(69614),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(77598),k=c.n(j),l=c(49120);let m=new TextEncoder().encode(function(){if(process.env.JWT_SECRET)return process.env.JWT_SECRET;let a=i().join(l.DATA_DIR,"jwt-secret");try{return g().readFileSync(a,"utf8").trim()}catch{}g().mkdirSync(l.DATA_DIR,{recursive:!0});let b=k().randomBytes(32).toString("hex");return g().writeFileSync(a,b,{mode:384}),b}());function n(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=a?.headers?.get?.("x-forwarded-proto");return b||"https"===c}async function o(a={}){return new d.P({authenticated:!0,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("24h").sign(m)}async function p(a){if(!a)return!1;try{return await (0,e.V)(a,m),!0}catch{return!1}}async function q(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,m);return b}catch{return null}}async function r(a,b,c={}){let d=await o(c);a.set("auth_token",d,{httpOnly:!0,secure:n(b),sameSite:"lax",path:"/"})}function s(a){a.delete("auth_token")}},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},41204:a=>{a.exports=require("string_decoder")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},60825:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>az,patchFetch:()=>ay,routeModule:()=>au,serverHooks:()=>ax,workAsyncStorage:()=>av,workUnitAsyncStorage:()=>aw});var d={};c.r(d),c.d(d,{GET:()=>at,dynamic:()=>ar});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(36366),x=c(644),y=c(29021),z=c.n(y),A=c(33873),B=c.n(A),C=c(45903),D=c(97242);let E=new Set;function F(a){return String(a||"").trim()}function G(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}async function H(){let a=(0,C.I6)(await (0,C.L7)());return a.sqlitePath||(a.sqlitePath=B().join(process.env.DATA_DIR||"/var/lib/bluerouter","logs","promptLogs.sqlite")),a}async function I(a){try{let b=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new(b.default||b)(a);return d.pragma("busy_timeout = 5000"),{all:(a,b={})=>d.prepare(a).all(b),get:(a,b={})=>d.prepare(a).get(b),run:(a,b={})=>d.prepare(a).run(b),close:()=>d.close()}}catch{let b=new(await Promise.resolve().then(c.t.bind(c,79868,23))).DatabaseSync(a);return b.exec("PRAGMA busy_timeout = 5000"),{all:(a,c={})=>b.prepare(a).all(c),get:(a,c={})=>b.prepare(a).get(c),run:(a,c={})=>b.prepare(a).run(c),close:()=>b.close()}}}async function J(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(),{query:async(a,c=[])=>(await b.query(a,c)).rows,queryOne:async(a,c=[])=>(await b.query(a,c)).rows[0]||null,async exec(a,c=[]){await b.query(a,c)},async close(){await b.end()}}}async function K(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,dateStrings:!0});return{async query(a,b=[]){let[c]=await d.query(a,b);return c},async queryOne(a,b=[]){let[c]=await d.query(a,b);return c[0]||null},async exec(a,b=[]){await d.query(a,b)},async close(){await d.end()}}}async function L(a){if(!z().existsSync(a.sqlitePath))return;let b=await I(a.sqlitePath);try{if(!b.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'prompt_logs'"))return;for(let a of["CREATE INDEX IF NOT EXISTS idx_prompt_logs_created_id ON prompt_logs(created_at DESC, id)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_stage_created_at ON prompt_logs(stage, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_model_created_at ON prompt_logs(model, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_display_model_created_at ON prompt_logs(display_model, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_session_created_at ON prompt_logs(session_id, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip_created_at ON prompt_logs(client_ip, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool_created_at ON prompt_logs(source_tool, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool_label_created_at ON prompt_logs(source_tool_label, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_connection_created_at ON prompt_logs(connection_id, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_account_created_at ON prompt_logs(account_name, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_provider_created_at ON prompt_logs(provider, created_at DESC)","CREATE INDEX IF NOT EXISTS idx_prompt_logs_status_created_at ON prompt_logs(status_code, created_at DESC)"])b.run(a)}finally{b.close()}}async function M(a){await (0,D.DU)().catch(()=>null)}async function N(a){if(!a.enabled)return;let b="sqlite"===a.type?`sqlite:${a.sqlitePath}`:`${a.type}:${a.host||""}:${a.port||""}:${a.database||""}`;if(!E.has(b))try{"sqlite"===a.type?await L(a):await M(a),E.add(b)}catch(a){console.warn("[prompt-log-analytics] Unable to ensure indexes:",a?.message||a)}}function O(a={}){return{keyword:F(a.keyword),model:F(a.model),stage:F(a.stage),sessionId:F(a.sessionId),clientIp:F(a.clientIp||a.sourceIp),sourceTool:F(a.sourceTool),dateFrom:F(a.dateFrom||a.startIso),dateTo:F(a.dateTo||a.endIso)}}function P(a,b,c,d,e=50){return a.all(`SELECT ${c},
2
+ COUNT(*) AS requests,
3
+ SUM(CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 1
4
+ WHEN status_code IS NOT NULL AND CAST(status_code AS TEXT) NOT LIKE '2%' THEN 1
5
+ ELSE 0 END) AS errors,
6
+ SUM(CASE WHEN (error_text IS NULL OR error_text = '') AND (status_code IS NULL OR CAST(status_code AS TEXT) LIKE '2%') THEN 1 ELSE 0 END) AS success,
7
+ MAX(created_at) AS lastSeen
8
+ FROM prompt_logs
9
+ ${b.clause}
10
+ GROUP BY ${d}
11
+ ORDER BY requests DESC, errors DESC, lastSeen DESC
12
+ LIMIT @limit`,{...b.params,limit:e})||[]}async function Q(a,b,c,d,e=50){let f=Math.max(1,Math.min(500,Number(e)||50));return await a.query(`SELECT ${c},
13
+ COUNT(*) AS requests,
14
+ SUM(CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 1
15
+ WHEN status_code IS NOT NULL AND CONCAT('', status_code) NOT LIKE '2%' THEN 1
16
+ ELSE 0 END) AS errors,
17
+ SUM(CASE WHEN (error_text IS NULL OR error_text = '') AND (status_code IS NULL OR CONCAT('', status_code) LIKE '2%') THEN 1 ELSE 0 END) AS success,
18
+ MAX(created_at) AS lastSeen
19
+ FROM prompt_logs
20
+ ${b.clause}
21
+ GROUP BY ${d}
22
+ ORDER BY requests DESC, errors DESC, lastSeen DESC
23
+ LIMIT ${f}`,b.params)}function R(a,b=null){return(a||[]).map(a=>(function(a={},b={}){let c=G(a.requests,0),d=G(a.errors,0),e=G(a.success,Math.max(0,c-d));return{key:F(a.key??a.metric_key)||"unknown",label:F(a.label||a.key||a.metric_key)||"unknown",requests:c,success:e,errors:d,errorRate:c?d/c:0,promptTokens:0,completionTokens:0,totalTokens:0,cost:0,lastSeen:F(a.lastSeen),topModels:[],topTools:[],topIps:[],...b}})(a,b?b(a):{}))}async function S(a,b){if(!z().existsSync(a.sqlitePath))return{missing:!0,total:0,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}};let c=await I(a.sqlitePath);try{if(!c.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'prompt_logs'"))return{missing:!0,total:0,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath}};let d=function(a={}){let b=O(a),c=[],d={};return b.keyword&&(c.push(`(
24
+ prompt_text LIKE @keyword OR response_text LIKE @keyword OR error_text LIKE @keyword OR
25
+ model LIKE @keyword OR endpoint LIKE @keyword OR provider LIKE @keyword OR account_name LIKE @keyword OR
26
+ connection_id LIKE @keyword OR display_model LIKE @keyword OR session_id LIKE @keyword OR
27
+ client_ip LIKE @keyword OR client_host LIKE @keyword OR client_user_agent LIKE @keyword OR
28
+ source_tool LIKE @keyword OR source_tool_label LIKE @keyword OR source_host LIKE @keyword
29
+ )`),d.keyword=`%${b.keyword}%`),b.model&&(c.push("(model = @model OR display_model = @model)"),d.model=b.model),b.stage&&(c.push("stage = @stage"),d.stage=b.stage),b.sessionId&&(c.push("session_id = @sessionId"),d.sessionId=b.sessionId),b.clientIp&&(c.push("client_ip LIKE @clientIp"),d.clientIp=`%${b.clientIp}%`),b.sourceTool&&(c.push("(source_tool LIKE @sourceTool OR source_tool_label LIKE @sourceTool OR source_host LIKE @sourceTool)"),d.sourceTool=`%${b.sourceTool}%`),b.dateFrom&&(c.push("created_at >= @dateFrom"),d.dateFrom=b.dateFrom),b.dateTo&&(c.push("created_at <= @dateTo"),d.dateTo=b.dateTo),{clause:c.length?`WHERE ${c.join(" AND ")}`:"",params:d}}(b),e=G(c.get(`SELECT COUNT(*) AS count FROM prompt_logs ${d.clause}`,d.params)?.count,0),f=R(P(c,d,"COALESCE(NULLIF(client_ip, ''), 'unknown') AS key, COALESCE(NULLIF(client_ip, ''), 'unknown') AS label","COALESCE(NULLIF(client_ip, ''), 'unknown')")),g=R(P(c,d,"COALESCE(NULLIF(source_tool_label, ''), NULLIF(source_tool, ''), NULLIF(source_host, ''), 'unknown') AS key, COALESCE(NULLIF(source_tool_label, ''), NULLIF(source_tool, ''), NULLIF(source_host, ''), 'unknown') AS label","COALESCE(NULLIF(source_tool_label, ''), NULLIF(source_tool, ''), NULLIF(source_host, ''), 'unknown')")),h=R(P(c,d,"COALESCE(NULLIF(session_id, ''), 'unknown') AS key, COALESCE(NULLIF(session_id, ''), 'unknown') AS label","COALESCE(NULLIF(session_id, ''), 'unknown')")),i=R(P(c,d,"COALESCE(NULLIF(stage, ''), 'unknown') AS key, COALESCE(NULLIF(stage, ''), 'unknown') AS label","COALESCE(NULLIF(stage, ''), 'unknown')")),j=R(P(c,d,"COALESCE(NULLIF(display_model, ''), NULLIF(model, ''), 'unknown') AS key, COALESCE(NULLIF(display_model, ''), NULLIF(model, ''), 'unknown') AS label","COALESCE(NULLIF(display_model, ''), NULLIF(model, ''), 'unknown')")),k=R(P(c,d,"COALESCE(NULLIF(account_name, ''), NULLIF(connection_id, ''), NULLIF(provider, ''), 'unknown') AS key, COALESCE(NULLIF(account_name, ''), NULLIF(connection_id, ''), NULLIF(provider, ''), 'unknown') AS label","COALESCE(NULLIF(account_name, ''), NULLIF(connection_id, ''), NULLIF(provider, ''), 'unknown')")),l=R(P(c,d,"CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 'error' ELSE COALESCE(CAST(status_code AS TEXT), 'ok') END AS key, CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 'error' ELSE COALESCE(CAST(status_code AS TEXT), 'ok') END AS label","CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 'error' ELSE COALESCE(CAST(status_code AS TEXT), 'ok') END")),m=await (0,D.DU)().catch(()=>({models:[],stages:[]}));return{total:e,sampled:e,disabled:!1,missing:!1,dbInfo:{type:"sqlite",sqlitePath:a.sqlitePath},models:m.models||[],stages:m.stages||[],topClientIps:f,topSourceTools:g,topSessions:h,topStages:i,topModels:j,topAccounts:k,topStatuses:l}}finally{c.close()}}async function T(a,b){let c=a.type,d="postgres"===c?await J(a):await K(a);try{let e=function(a={},b){let c=O(a),d=[],e=[],f=a=>(e.push(a),"postgres"===b?`$${e.length}`:"?"),g="postgres"===b?"ILIKE":"LIKE";if(c.keyword){let a=`%${c.keyword}%`;d.push(`(${["prompt_text","response_text","error_text","model","endpoint","provider","account_name","connection_id","display_model","session_id","client_ip","client_host","client_user_agent","source_tool","source_tool_label","source_host"].map(b=>`${b} ${g} ${f(a)}`).join(" OR ")})`)}if(c.model&&d.push(`(model = ${f(c.model)} OR display_model = ${f(c.model)})`),c.stage&&d.push(`stage = ${f(c.stage)}`),c.sessionId&&d.push(`session_id = ${f(c.sessionId)}`),c.clientIp&&d.push(`client_ip ${g} ${f(`%${c.clientIp}%`)}`),c.sourceTool){let a=`%${c.sourceTool}%`;d.push(`(source_tool ${g} ${f(a)} OR source_tool_label ${g} ${f(a)} OR source_host ${g} ${f(a)})`)}return c.dateFrom&&d.push(`created_at >= ${f(c.dateFrom)}`),c.dateTo&&d.push(`created_at <= ${f(c.dateTo)}`),{clause:d.length?`WHERE ${d.join(" AND ")}`:"",params:e,add:f}}(b,c),f=await d.queryOne(`SELECT COUNT(*) AS count FROM prompt_logs ${e.clause}`,e.params),g=G(f?.count,0),h=R(await Q(d,e,"COALESCE(NULLIF(client_ip, ''), 'unknown') AS metric_key, COALESCE(NULLIF(client_ip, ''), 'unknown') AS label","COALESCE(NULLIF(client_ip, ''), 'unknown')")),i=R(await Q(d,e,"COALESCE(NULLIF(source_tool_label, ''), NULLIF(source_tool, ''), NULLIF(source_host, ''), 'unknown') AS metric_key, COALESCE(NULLIF(source_tool_label, ''), NULLIF(source_tool, ''), NULLIF(source_host, ''), 'unknown') AS label","COALESCE(NULLIF(source_tool_label, ''), NULLIF(source_tool, ''), NULLIF(source_host, ''), 'unknown')")),j=R(await Q(d,e,"COALESCE(NULLIF(session_id, ''), 'unknown') AS metric_key, COALESCE(NULLIF(session_id, ''), 'unknown') AS label","COALESCE(NULLIF(session_id, ''), 'unknown')")),k=R(await Q(d,e,"COALESCE(NULLIF(stage, ''), 'unknown') AS metric_key, COALESCE(NULLIF(stage, ''), 'unknown') AS label","COALESCE(NULLIF(stage, ''), 'unknown')")),l=R(await Q(d,e,"COALESCE(NULLIF(display_model, ''), NULLIF(model, ''), 'unknown') AS metric_key, COALESCE(NULLIF(display_model, ''), NULLIF(model, ''), 'unknown') AS label","COALESCE(NULLIF(display_model, ''), NULLIF(model, ''), 'unknown')")),m=R(await Q(d,e,"COALESCE(NULLIF(account_name, ''), NULLIF(connection_id, ''), NULLIF(provider, ''), 'unknown') AS metric_key, COALESCE(NULLIF(account_name, ''), NULLIF(connection_id, ''), NULLIF(provider, ''), 'unknown') AS label","COALESCE(NULLIF(account_name, ''), NULLIF(connection_id, ''), NULLIF(provider, ''), 'unknown')")),n=R(await Q(d,e,"CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 'error' ELSE COALESCE(CONCAT('', status_code), 'ok') END AS metric_key, CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 'error' ELSE COALESCE(CONCAT('', status_code), 'ok') END AS label","CASE WHEN error_text IS NOT NULL AND error_text <> '' THEN 'error' ELSE COALESCE(CONCAT('', status_code), 'ok') END")),o=await (0,D.DU)().catch(()=>({models:[],stages:[]}));return{total:g,sampled:g,disabled:!1,missing:!1,dbInfo:{type:a.type,host:a.host,database:a.database},models:o.models||[],stages:o.stages||[],topClientIps:h,topSourceTools:i,topSessions:j,topStages:k,topModels:l,topAccounts:m,topStatuses:n}}finally{await d.close()}}async function U(a={}){let b=await H();if(!b.enabled)return{disabled:!0,missing:!1,total:0,sampled:0,dbInfo:{type:b.type},models:[],stages:[],topClientIps:[],topSourceTools:[],topSessions:[],topStages:[],topModels:[],topAccounts:[],topStatuses:[]};if(await N(b),"sqlite"===b.type)return S(b,a);if("postgres"===b.type||"mysql"===b.type)return T(b,a);throw Error(`Unsupported prompt log database type: ${b.type}`)}let V=new Set(["today","24h","7d","30d","60d","all","custom"]),W=`(
2
30
  status IS NULL
3
31
  OR status = ''
4
32
  OR lower(status) IN ('ok', 'success', 'succeeded', 'complete', 'completed', 'done', '200')
5
33
  OR CAST(status AS TEXT) GLOB '2[0-9][0-9]'
6
- )`,B=`
34
+ )`,X=`
7
35
  COUNT(*) AS requests,
8
- SUM(CASE WHEN ${A} THEN 1 ELSE 0 END) AS success,
9
- SUM(CASE WHEN ${A} THEN 0 ELSE 1 END) AS errors,
36
+ SUM(CASE WHEN ${W} THEN 1 ELSE 0 END) AS success,
37
+ SUM(CASE WHEN ${W} THEN 0 ELSE 1 END) AS errors,
10
38
  COALESCE(SUM(COALESCE(promptTokens, 0)), 0) AS promptTokens,
11
39
  COALESCE(SUM(COALESCE(completionTokens, 0)), 0) AS completionTokens,
12
40
  COALESCE(SUM(COALESCE(promptTokens, 0) + COALESCE(completionTokens, 0)), 0) AS totalTokens,
13
41
  COALESCE(SUM(COALESCE(cost, 0)), 0) AS cost,
14
42
  MAX(timestamp) AS lastSeen
15
- `;function C(a){return String(a||"").trim()}function D(a){return C(a).toLowerCase()}function E(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function F(a){let b=C(a);if(!b)return"";let c=new Date(b);return Number.isNaN(c.getTime())?"":c.toISOString()}function G(a={}){return{...function(a={}){let b=z.has(a.period)?a.period:"24h",c=new Date,d=null,e=c;if("custom"===b){let b=F(a.dateFrom),f=F(a.dateTo);d=new Date(b||c.getTime()-864e5),e=f?new Date(f):c}else d="today"===b?function(a=new Date){let b=new Date(a);return b.setHours(0,0,0,0),b}(c):"24h"===b?new Date(c.getTime()-864e5):"7d"===b?new Date(c.getTime()-6048e5):"30d"===b?new Date(c.getTime()-2592e6):"60d"===b?new Date(c.getTime()-5184e6):null;if(d&&e&&d>e){let a=d;d=e,e=a}return{period:b,start:d,end:e,startIso:d?d.toISOString():"",endIso:e?e.toISOString():""}}(a),provider:C(a.provider),model:C(a.model),connectionId:C(a.connectionId),status:C(a.status),endpoint:C(a.endpoint),apiKey:C(a.apiKey),clientIp:C(a.clientIp||a.sourceIp),sourceTool:C(a.sourceTool),sessionId:C(a.sessionId),keyword:C(a.keyword),maxPromptLogRows:Math.max(200,Math.min(1500,Math.floor(E(a.maxPromptLogRows,1500))))}}function H(a){let b,c=C(a);return c?(b=C(c))?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key":"local-no-key"}async function I(a){try{let b=a.all("SELECT * FROM apiKeys ORDER BY createdAt DESC")||[],c=new Map,d=new Map,e=[];for(let a of b){let b=function(a={}){let b=C(a.key),c=H(b);return{id:C(a.id),key:b,fingerprint:c,masked:c,name:C(a.name)||c,ownerUser:C(a.ownerUser||a.owner_user),createdByUser:C(a.createdByUser||a.created_by_user),machineId:C(a.machineId||a.machine_id),isActive:void 0===a.isActive||1===a.isActive||!0===a.isActive,createdAt:C(a.createdAt||a.created_at)}}(a);e.push(b),b.key&&c.set(b.key,b),d.set(b.fingerprint,b)}return{rows:b,all:e,byKey:c,byFingerprint:d}}catch{return{rows:[],all:[],byKey:new Map,byFingerprint:new Map}}}async function J(a){let b=new Map;try{for(let c of a.all("SELECT id, provider, name, email, isActive FROM providerConnections")||[])b.set(c.id,{id:c.id,provider:c.provider||"",name:c.name||c.email||c.id,email:c.email||"",isActive:1===c.isActive||!0===c.isActive})}catch{}return b}function K(a){let b=E(a.requests,0),c=E(a.errors,0),d=E(a.success,Math.max(0,b-c)),e=E(a.totalTokens,0);return{...a,requests:b,success:d,errors:c,totalTokens:e,errorRate:b?c/b:0,avgPromptTokens:b?E(a.promptTokens,0)/b:0,avgCompletionTokens:b?E(a.completionTokens,0)/b:0,avgTokens:b?e/b:0}}function L(a,b=null,c={}){let d=[],e=[];if(a.startIso&&(d.push("timestamp >= ?"),e.push(a.startIso)),a.endIso&&(d.push("timestamp <= ?"),e.push(a.endIso)),a.provider&&"provider"!==c.skip&&(d.push("provider = ?"),e.push(a.provider)),a.model&&"model"!==c.skip&&(d.push("model = ?"),e.push(a.model)),a.connectionId&&"connectionId"!==c.skip&&(d.push("connectionId = ?"),e.push(a.connectionId)),a.status&&"status"!==c.skip&&(d.push("status = ?"),e.push(a.status)),a.endpoint&&"endpoint"!==c.skip&&(d.push("endpoint = ?"),e.push(a.endpoint)),b&&"apiKey"!==c.skip)if(b.noMatch)d.push("1 = 0");else{let a=[];b.keys.length>0&&(a.push(`apiKey IN (${b.keys.map(()=>"?").join(", ")})`),e.push(...b.keys)),b.includeLocal&&a.push("(apiKey IS NULL OR apiKey = '')"),a.length&&d.push(`(${a.join(" OR ")})`)}return{clause:d.length?`WHERE ${d.join(" AND ")}`:"",params:e}}function M(a,b){return Math.floor(a/b)*b}function N(a,b={}){return K({key:C(a.key)||"unknown",label:C(a.label||a.key)||"unknown",requests:E(a.requests,0),success:E(a.success,0),errors:E(a.errors,0),promptTokens:E(a.promptTokens,0),completionTokens:E(a.completionTokens,0),totalTokens:E(a.totalTokens,0),cachedTokens:0,reasoningTokens:0,cost:E(a.cost,0),lastSeen:a.lastSeen||"",...b})}function O(a,b,c,d,e,f=[],g=50,h="requests DESC, totalTokens DESC"){let i=L(b,c);return a.all(`SELECT
43
+ `;function Y(a){return String(a||"").trim()}function Z(a){return Y(a).toLowerCase()}function $(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function _(a){let b=Y(a);if(!b)return"";let c=new Date(b);return Number.isNaN(c.getTime())?"":c.toISOString()}function aa(a={}){return{...function(a={}){let b=V.has(a.period)?a.period:"24h",c=new Date,d=null,e=c;if("custom"===b){let b=_(a.dateFrom),f=_(a.dateTo);d=new Date(b||c.getTime()-864e5),e=f?new Date(f):c}else d="today"===b?function(a=new Date){let b=new Date(a);return b.setHours(0,0,0,0),b}(c):"24h"===b?new Date(c.getTime()-864e5):"7d"===b?new Date(c.getTime()-6048e5):"30d"===b?new Date(c.getTime()-2592e6):"60d"===b?new Date(c.getTime()-5184e6):null;if(d&&e&&d>e){let a=d;d=e,e=a}return{period:b,start:d,end:e,startIso:d?d.toISOString():"",endIso:e?e.toISOString():""}}(a),provider:Y(a.provider),model:Y(a.model),connectionId:Y(a.connectionId),status:Y(a.status),endpoint:Y(a.endpoint),apiKey:Y(a.apiKey),clientIp:Y(a.clientIp||a.sourceIp),sourceTool:Y(a.sourceTool),sessionId:Y(a.sessionId),keyword:Y(a.keyword),maxPromptLogRows:Math.max(200,Math.min(1500,Math.floor($(a.maxPromptLogRows,1500))))}}function ab(a){let b,c=Y(a);return c?(b=Y(c))?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key":"local-no-key"}async function ac(a){try{let b=a.all("SELECT * FROM apiKeys ORDER BY createdAt DESC")||[],c=new Map,d=new Map,e=[];for(let a of b){let b=function(a={}){let b=Y(a.key),c=ab(b);return{id:Y(a.id),key:b,fingerprint:c,masked:c,name:Y(a.name)||c,ownerUser:Y(a.ownerUser||a.owner_user),createdByUser:Y(a.createdByUser||a.created_by_user),machineId:Y(a.machineId||a.machine_id),isActive:void 0===a.isActive||1===a.isActive||!0===a.isActive,createdAt:Y(a.createdAt||a.created_at)}}(a);e.push(b),b.key&&c.set(b.key,b),d.set(b.fingerprint,b)}return{rows:b,all:e,byKey:c,byFingerprint:d}}catch{return{rows:[],all:[],byKey:new Map,byFingerprint:new Map}}}async function ad(a){let b=new Map;try{for(let c of a.all("SELECT id, provider, name, email, isActive FROM providerConnections")||[])b.set(c.id,{id:c.id,provider:c.provider||"",name:c.name||c.email||c.id,email:c.email||"",isActive:1===c.isActive||!0===c.isActive})}catch{}return b}function ae(a){let b=$(a.requests,0),c=$(a.errors,0),d=$(a.success,Math.max(0,b-c)),e=$(a.totalTokens,0);return{...a,requests:b,success:d,errors:c,totalTokens:e,errorRate:b?c/b:0,avgPromptTokens:b?$(a.promptTokens,0)/b:0,avgCompletionTokens:b?$(a.completionTokens,0)/b:0,avgTokens:b?e/b:0}}function af(a,b=null,c={}){let d=[],e=[];if(a.startIso&&(d.push("timestamp >= ?"),e.push(a.startIso)),a.endIso&&(d.push("timestamp <= ?"),e.push(a.endIso)),a.provider&&"provider"!==c.skip&&(d.push("provider = ?"),e.push(a.provider)),a.model&&"model"!==c.skip&&(d.push("model = ?"),e.push(a.model)),a.connectionId&&"connectionId"!==c.skip&&(d.push("connectionId = ?"),e.push(a.connectionId)),a.status&&"status"!==c.skip&&(d.push("status = ?"),e.push(a.status)),a.endpoint&&"endpoint"!==c.skip&&(d.push("endpoint = ?"),e.push(a.endpoint)),b&&"apiKey"!==c.skip)if(b.noMatch)d.push("1 = 0");else{let a=[];if(b.keys.length>0){let c=b.keys.map(()=>"?").join(", ");a.push(`(apiKey IN (${c}) OR apiKeyFingerprint IN (${c}) OR apiKeyId IN (${c}))`),e.push(...b.keys,...b.keys,...b.keys)}if(b.filter){a.push("(apiKeyFingerprint LIKE ? OR apiKeyName LIKE ? OR apiKeyOwner LIKE ? OR apiKeyId LIKE ?)");let c=`%${b.filter}%`;e.push(c,c,c,c)}b.includeLocal&&a.push("(apiKey IS NULL OR apiKey = '' OR apiKeyFingerprint = 'local-no-key')"),a.length&&d.push(`(${a.join(" OR ")})`)}if(a.clientIp&&"clientIp"!==c.skip&&(d.push("clientIpNormalized LIKE ?"),e.push(`%${a.clientIp}%`)),a.sourceTool&&"sourceTool"!==c.skip){d.push("(sourceTool LIKE ? OR sourceToolLabel LIKE ? OR sourceHost LIKE ?)");let b=`%${a.sourceTool}%`;e.push(b,b,b)}return a.sessionId&&"sessionId"!==c.skip&&(d.push("sessionId = ?"),e.push(a.sessionId)),{clause:d.length?`WHERE ${d.join(" AND ")}`:"",params:e}}function ag(a,b){return Math.floor(a/b)*b}function ah(a,b={}){return ae({key:Y(a.key)||"unknown",label:Y(a.label||a.key)||"unknown",requests:$(a.requests,0),success:$(a.success,0),errors:$(a.errors,0),promptTokens:$(a.promptTokens,0),completionTokens:$(a.completionTokens,0),totalTokens:$(a.totalTokens,0),cachedTokens:0,reasoningTokens:0,cost:$(a.cost,0),lastSeen:a.lastSeen||"",...b})}function ai(a,b,c,d,e,f=[],g=50,h="requests DESC, totalTokens DESC"){let i=af(b,c);return a.all(`SELECT
16
44
  ${d},
17
- ${B}
45
+ ${X}
18
46
  FROM usageHistory
19
47
  ${i.clause}
20
48
  GROUP BY ${e}
21
49
  ORDER BY ${h}
22
- LIMIT ?`,[...f,...i.params,g])||[]}function P(a,b){if(!a.length)return null;let c=[...a].sort((a,b)=>a-b),d=Math.min(c.length-1,Math.max(0,Math.ceil(b/100*c.length)-1));return c[d]}function Q(a,b,c){let d=function(a={}){let b=(0,x.q)(a.tokens,{})||{},c=E(a.promptTokens,0)||E(b.prompt_tokens,0)||E(b.input_tokens,0),d=E(a.completionTokens,0)||E(b.completion_tokens,0)||E(b.output_tokens,0);return{promptTokens:c,completionTokens:d,totalTokens:c+d,cachedTokens:E(b.cached_tokens,0)||E(b.cache_read_input_tokens,0)||E(b.prompt_tokens_details?.cached_tokens,0),reasoningTokens:E(b.reasoning_tokens,0)||E(b.completion_tokens_details?.reasoning_tokens,0)||E(b.output_tokens_details?.reasoning_tokens,0)}}(a),e=b.get(a.apiKey)||null,f=c.get(a.connectionId)||null;return{id:a.id,timestamp:a.timestamp,provider:a.provider||"",model:a.model||"",connectionId:a.connectionId||"",accountName:f?.name||a.connectionId||"",apiKeyName:e?.name||(a.apiKey?H(a.apiKey):"Local"),apiKeyFingerprint:e?.fingerprint||H(a.apiKey),endpoint:a.endpoint||"",status:a.status||"ok",promptTokens:d.promptTokens,completionTokens:d.completionTokens,totalTokens:d.totalTokens,cachedTokens:d.cachedTokens,reasoningTokens:d.reasoningTokens,cost:E(a.cost,0)}}function R(a,b,c){if(!b)return;let d=a.get(b)||{key:b,label:b,count:0};d.count+=c||1,a.set(b,d)}function S(a,b=3){return[...a.values()].sort((a,b)=>b.count-a.count).slice(0,b)}function T(a,b,c={}){let d=C(b)||"unknown";a.has(d)||a.set(d,{key:d,label:d,requests:0,errors:0,success:0,lastSeen:"",models:new Map,tools:new Map,ips:new Map});let e=a.get(d);return e.requests+=1,e.errors+=+!!c.error,e.success+=+!c.error,c.lastSeen&&(!e.lastSeen||new Date(c.lastSeen)>new Date(e.lastSeen))&&(e.lastSeen=c.lastSeen),R(e.models,c.model,1),R(e.tools,c.tool,1),R(e.ips,c.ip,1),e}async function U(a){let b=[],c=0,d=0,e=!1,f=!1,g=null,h=[],i=[];for(;b.length<a.maxPromptLogRows;){let j=await (0,y.Ws)({keyword:a.keyword,model:a.model,stage:"",sourceTool:a.sourceTool,clientIp:a.clientIp,sessionId:a.sessionId,dateFrom:a.startIso,dateTo:a.endIso,limit:String(200),offset:String(c),includeOptions:0===c});e=!0===j.disabled,f=!0===j.missing,g=j.dbInfo||g,h=j.models||h,i=j.stages||i,d=E(j.total,b.length);let k=j.rows||[];if(b.push(...k),e||f||0===k.length||b.length>=d)break;c+=200}return{rows:b.slice(0,a.maxPromptLogRows),total:d,disabled:e,missing:f,dbInfo:g,models:h,stages:i}}function V(a,b,c=b){let d=function(a,b=a){let c=C(a);return c?{value:c,label:C(b)||c}:null}(b,c);return d&&(a.some(a=>a.value===d.value)||a.unshift(d)),a}function W(a){return{...a,provider:"",model:"",connectionId:"",status:"",endpoint:"",apiKey:""}}function X(a,b,c,d=500){let e=L(W(b),null),f=e.clause?`${e.clause} AND`:"WHERE";return(a.all(`SELECT DISTINCT ${c} AS value
50
+ LIMIT ?`,[...f,...i.params,g])||[]}function aj(a,b){if(!a.length)return null;let c=[...a].sort((a,b)=>a-b),d=Math.min(c.length-1,Math.max(0,Math.ceil(b/100*c.length)-1));return c[d]}function ak(a,b,c){let d=function(a={}){let b=(0,x.q)(a.tokens,{})||{},c=$(a.promptTokens,0)||$(b.prompt_tokens,0)||$(b.input_tokens,0),d=$(a.completionTokens,0)||$(b.completion_tokens,0)||$(b.output_tokens,0);return{promptTokens:c,completionTokens:d,totalTokens:c+d,cachedTokens:$(b.cached_tokens,0)||$(b.cache_read_input_tokens,0)||$(b.prompt_tokens_details?.cached_tokens,0),reasoningTokens:$(b.reasoning_tokens,0)||$(b.completion_tokens_details?.reasoning_tokens,0)||$(b.output_tokens_details?.reasoning_tokens,0)}}(a),e=b.get(a.apiKey)||b.get(a.apiKeyFingerprint)||null,f=c.get(a.connectionId)||null;return{id:a.id,timestamp:a.timestamp,provider:a.provider||"",model:a.model||"",connectionId:a.connectionId||"",accountName:f?.name||a.connectionId||"",apiKeyName:a.apiKeyName||e?.name||(a.apiKeyFingerprint||a.apiKey?ab(a.apiKeyFingerprint||a.apiKey):"Local"),apiKeyFingerprint:a.apiKeyFingerprint||e?.fingerprint||ab(a.apiKey),apiKeyId:a.apiKeyId||e?.id||"",clientIp:a.clientIpNormalized||a.clientIp||"",sourceTool:a.sourceTool||a.sourceToolLabel||"",sessionId:a.sessionId||"",latencyMs:$(a.latencyMs,0),statusCode:a.statusCode||null,errorCode:a.errorCode||"",errorType:a.errorType||"",endpoint:a.endpoint||"",status:a.status||"ok",promptTokens:d.promptTokens,completionTokens:d.completionTokens,totalTokens:d.totalTokens,cachedTokens:d.cachedTokens,reasoningTokens:d.reasoningTokens,cost:$(a.cost,0)}}function al(a,b,c=b){let d=function(a,b=a){let c=Y(a);return c?{value:c,label:Y(b)||c}:null}(b,c);return d&&(a.some(a=>a.value===d.value)||a.unshift(d)),a}function am(a){return{...a,provider:"",model:"",connectionId:"",status:"",endpoint:"",apiKey:""}}function an(a,b,c,d=500){let e=af(am(b),null),f=e.clause?`${e.clause} AND`:"WHERE";return(a.all(`SELECT DISTINCT ${c} AS value
23
51
  FROM usageHistory
24
52
  ${f} ${c} IS NOT NULL AND ${c} <> ''
25
53
  ORDER BY ${c} ASC
26
- LIMIT ?`,[...e.params,d])||[]).map(a=>C(a.value)).filter(Boolean)}function Y(a){let b=String(a??"");return/[",\n\r]/.test(b)?`"${b.replace(/"/g,'""')}"`:b}async function Z(a={}){var b,c;let d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,y,z,F=JSON.stringify(G(a)),R=(global._dashboardAnalyticsV2Cache||(global._dashboardAnalyticsV2Cache=new Map),global._dashboardAnalyticsV2Cache),Y=R.get(F);if(Y&&Date.now()-Y.createdAt<15e3)return Y.data;let $=G(a),_=await (0,w.c)(),[aa,ab]=await Promise.all([I(_),J(_)]),ac=function(a,b){let c=D(a);if(!c)return null;let d=[],e=!1;for(let a of(["local","local-no-key","no-key","khong-key","kh\xf4ng-key","kh\xf4ng d\xf9ng api key"].some(a=>a.includes(c)||c.includes(a))&&(e=!0),b.all||[]))[a.key,a.id,a.name,a.ownerUser,a.createdByUser,a.machineId,a.fingerprint,a.masked].some(a=>D(a).includes(c))&&a.key&&d.push(a.key);return a.length>=16&&!d.includes(a)&&d.push(a),{keys:[...new Set(d)],includeLocal:e,noMatch:0===d.length&&!e}}($.apiKey,aa),ad=(d=L($,ac),_.get(`SELECT MIN(timestamp) AS minTs, MAX(timestamp) AS maxTs FROM usageHistory ${d.clause}`,d.params)||{}),[ae]=await Promise.all([U($)]),af=function(a){let b=new Map,c=new Map,d=new Map,e=new Map,f=new Map,g=new Map,h=new Map;for(let i of a.rows||[]){let a=C(i.display_model||i.model)||"unknown",j=C(i.source_tool_label||i.source_tool||i.source_host)||"unknown",k=C(i.client_ip)||"unknown",l=C(i.session_id)||"unknown",m=C(i.stage)||"unknown",n=C(i.account_name||i.connection_id||i.provider)||"unknown",o=C(i.error_text?"error":i.status_code||"ok")||"ok",p={error:!!(i.error_text||i.status_code&&!String(i.status_code).startsWith("2")),lastSeen:i.created_at,model:a,tool:j,ip:k};T(b,k,p),T(c,j,p),T(d,l,p),T(e,m,p),T(f,a,p),T(g,n,p),T(h,o,p)}let i=(a,b=50)=>[...a.values()].map(a=>{let b=K({...a});return b.topModels=S(a.models),b.topTools=S(a.tools),b.topIps=S(a.ips),delete b.models,delete b.tools,delete b.ips,b}).sort((a,b)=>b.requests-a.requests||b.errors-a.errors).slice(0,b);return{total:E(a.total,a.rows?.length||0),sampled:a.rows?.length||0,disabled:a.disabled,missing:a.missing,dbInfo:a.dbInfo,models:a.models||[],stages:a.stages||[],topClientIps:i(b),topSourceTools:i(c),topSessions:i(d),topStages:i(e),topModels:i(f),topAccounts:i(g),topStatuses:i(h)}}(ae),ag=(e=L($,ac),g=function(a={}){return K({requests:E(a.requests,0),success:E(a.success,0),errors:E(a.errors,0),promptTokens:E(a.promptTokens,0),completionTokens:E(a.completionTokens,0),totalTokens:E(a.totalTokens,0),cachedTokens:E(a.cachedTokens,0),reasoningTokens:E(a.reasoningTokens,0),cost:E(a.cost,0),lastSeen:a.lastSeen||""})}(f=_.get(`SELECT
27
- ${B},
28
- COUNT(DISTINCT NULLIF(apiKey, '')) AS activeApiKeys,
54
+ LIMIT ?`,[...e.params,d])||[]).map(a=>Y(a.value)).filter(Boolean)}function ao(a){let b=String(a??"");return/[",\n\r]/.test(b)?`"${b.replace(/"/g,'""')}"`:b}async function ap(a={}){let b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,y=JSON.stringify(aa(a)),z=(global._dashboardAnalyticsV2Cache||(global._dashboardAnalyticsV2Cache=new Map),global._dashboardAnalyticsV2Cache),A=z.get(y);if(A&&Date.now()-A.createdAt<15e3)return A.data;let B=aa(a),C=await (0,w.c)(),[D,E]=await Promise.all([ac(C),ad(C)]),F=function(a,b){let c=Z(a);if(!c)return null;let d=[],e=!1;for(let a of(["local","local-no-key","no-key","khong-key","kh\xf4ng-key","kh\xf4ng d\xf9ng api key"].some(a=>a.includes(c)||c.includes(a))&&(e=!0),b.all||[]))[a.key,a.id,a.name,a.ownerUser,a.createdByUser,a.machineId,a.fingerprint,a.masked].some(a=>Z(a).includes(c))&&a.key&&d.push(a.key);return a.length>=16&&!d.includes(a)&&d.push(a),{keys:[...new Set(d)],includeLocal:e,noMatch:0===d.length&&!e,filter:c}}(B.apiKey,D),G=(b=af(B,F),C.get(`SELECT MIN(timestamp) AS minTs, MAX(timestamp) AS maxTs FROM usageHistory ${b.clause}`,b.params)||{}),H=await U({keyword:B.keyword,model:B.model,sourceTool:B.sourceTool,clientIp:B.clientIp,sessionId:B.sessionId,dateFrom:B.startIso,dateTo:B.endIso}),I=(c=af(B,F),e=function(a={}){return ae({requests:$(a.requests,0),success:$(a.success,0),errors:$(a.errors,0),promptTokens:$(a.promptTokens,0),completionTokens:$(a.completionTokens,0),totalTokens:$(a.totalTokens,0),cachedTokens:$(a.cachedTokens,0),reasoningTokens:$(a.reasoningTokens,0),cost:$(a.cost,0),lastSeen:a.lastSeen||""})}(d=C.get(`SELECT
55
+ ${X},
56
+ COUNT(DISTINCT COALESCE(NULLIF(apiKeyId, ''), NULLIF(apiKeyFingerprint, ''), NULLIF(apiKey, ''))) AS activeApiKeys,
29
57
  COUNT(DISTINCT NULLIF(provider, '')) AS activeProviders,
30
58
  COUNT(DISTINCT NULLIF(model, '')) AS activeModels,
31
59
  COUNT(DISTINCT NULLIF(endpoint, '')) AS activeEndpoints
32
60
  FROM usageHistory
33
- ${e.clause}`,e.params)||{}),h=$.start&&$.end?Math.max(1,($.end.getTime()-$.start.getTime())/6e4):1,{...g,activeApiKeys:E(f.activeApiKeys,0),activeProviders:E(f.activeProviders,0),activeModels:E(f.activeModels,0),activeEndpoints:E(f.activeEndpoints,0),requestsPerMinute:g.requests/h,tokensPerMinute:g.totalTokens/h,inputOutputRatio:g.completionTokens?g.promptTokens/g.completionTokens:g.promptTokens?null:0}),ah=(i=O(_,$,ac,"COALESCE(NULLIF(provider, ''), 'unknown') AS key, COALESCE(NULLIF(provider, ''), 'unknown') AS label","COALESCE(NULLIF(provider, ''), 'unknown')"),j=O(_,$,ac,`
61
+ ${c.clause}`,c.params)||{}),f=B.start&&B.end?Math.max(1,(B.end.getTime()-B.start.getTime())/6e4):1,{...e,activeApiKeys:$(d.activeApiKeys,0),activeProviders:$(d.activeProviders,0),activeModels:$(d.activeModels,0),activeEndpoints:$(d.activeEndpoints,0),requestsPerMinute:e.requests/f,tokensPerMinute:e.totalTokens/f,inputOutputRatio:e.completionTokens?e.promptTokens/e.completionTokens:e.promptTokens?null:0}),J=(g=ai(C,B,F,"COALESCE(NULLIF(provider, ''), 'unknown') AS key, COALESCE(NULLIF(provider, ''), 'unknown') AS label","COALESCE(NULLIF(provider, ''), 'unknown')"),h=ai(C,B,F,`
34
62
  COALESCE(NULLIF(provider, ''), 'unknown') || '|' || COALESCE(NULLIF(model, ''), 'unknown') AS key,
35
63
  COALESCE(NULLIF(provider, ''), 'unknown') AS provider,
36
64
  COALESCE(NULLIF(model, ''), 'unknown') AS model,
37
65
  COALESCE(NULLIF(model, ''), 'unknown') || ' (' || COALESCE(NULLIF(provider, ''), 'unknown') || ')' AS label
38
- `,"COALESCE(NULLIF(provider, ''), 'unknown'), COALESCE(NULLIF(model, ''), 'unknown')"),k=O(_,$,ac,`
66
+ `,"COALESCE(NULLIF(provider, ''), 'unknown'), COALESCE(NULLIF(model, ''), 'unknown')"),i=ai(C,B,F,`
39
67
  COALESCE(NULLIF(connectionId, ''), 'unknown') AS key,
40
68
  COALESCE(NULLIF(connectionId, ''), 'unknown') AS connectionId,
41
69
  COALESCE(NULLIF(provider, ''), 'unknown') AS provider,
42
70
  COALESCE(NULLIF(connectionId, ''), 'unknown') AS label
43
- `,"COALESCE(NULLIF(connectionId, ''), 'unknown')"),l=O(_,$,ac,"COALESCE(NULLIF(endpoint, ''), 'unknown') AS key, COALESCE(NULLIF(endpoint, ''), 'unknown') AS label","COALESCE(NULLIF(endpoint, ''), 'unknown')"),m=O(_,$,ac,"COALESCE(NULLIF(apiKey, ''), 'local-no-key') AS key, COALESCE(NULLIF(apiKey, ''), 'local-no-key') AS rawApiKey","COALESCE(NULLIF(apiKey, ''), 'local-no-key')"),n=O(_,$,ac,"COALESCE(NULLIF(status, ''), 'ok') AS key, COALESCE(NULLIF(status, ''), 'ok') AS label","COALESCE(NULLIF(status, ''), 'ok')"),o=L($,ac),p=_.all(`SELECT
71
+ `,"COALESCE(NULLIF(connectionId, ''), 'unknown')"),j=ai(C,B,F,"COALESCE(NULLIF(endpoint, ''), 'unknown') AS key, COALESCE(NULLIF(endpoint, ''), 'unknown') AS label","COALESCE(NULLIF(endpoint, ''), 'unknown')"),k=ai(C,B,F,"COALESCE(NULLIF(apiKeyId, ''), NULLIF(apiKeyFingerprint, ''), NULLIF(apiKey, ''), 'local-no-key') AS key, COALESCE(NULLIF(apiKeyFingerprint, ''), NULLIF(apiKey, ''), 'local-no-key') AS rawApiKey, COALESCE(NULLIF(apiKeyName, ''), '') AS apiKeyName, COALESCE(NULLIF(apiKeyOwner, ''), '') AS apiKeyOwner, COALESCE(NULLIF(apiKeyId, ''), '') AS apiKeyId","COALESCE(NULLIF(apiKeyId, ''), NULLIF(apiKeyFingerprint, ''), NULLIF(apiKey, ''), 'local-no-key')"),l=ai(C,B,F,"COALESCE(NULLIF(status, ''), 'ok') AS key, COALESCE(NULLIF(status, ''), 'ok') AS label","COALESCE(NULLIF(status, ''), 'ok')"),m=af(B,F),n=C.all(`SELECT
44
72
  COALESCE(NULLIF(status, ''), 'error') AS status,
45
73
  COALESCE(NULLIF(provider, ''), 'unknown') AS provider,
46
74
  COALESCE(NULLIF(model, ''), 'unknown') AS model,
47
75
  COALESCE(NULLIF(endpoint, ''), 'unknown') AS endpoint,
48
- COALESCE(NULLIF(apiKey, ''), 'local-no-key') AS rawApiKey,
76
+ COALESCE(NULLIF(apiKeyId, ''), NULLIF(apiKeyFingerprint, ''), NULLIF(apiKey, ''), 'local-no-key') AS rawApiKey,
49
77
  COALESCE(NULLIF(status, ''), 'error') || '|' || COALESCE(NULLIF(provider, ''), 'unknown') || '|' || COALESCE(NULLIF(model, ''), 'unknown') || '|' || COALESCE(NULLIF(endpoint, ''), 'unknown') AS key,
50
- ${B}
78
+ ${X}
51
79
  FROM usageHistory
52
- ${o.clause?`${o.clause} AND NOT ${A}`:`WHERE NOT ${A}`}
53
- GROUP BY COALESCE(NULLIF(status, ''), 'error'), COALESCE(NULLIF(provider, ''), 'unknown'), COALESCE(NULLIF(model, ''), 'unknown'), COALESCE(NULLIF(endpoint, ''), 'unknown'), COALESCE(NULLIF(apiKey, ''), 'local-no-key')
80
+ ${m.clause?`${m.clause} AND NOT ${W}`:`WHERE NOT ${W}`}
81
+ GROUP BY COALESCE(NULLIF(status, ''), 'error'), COALESCE(NULLIF(provider, ''), 'unknown'), COALESCE(NULLIF(model, ''), 'unknown'), COALESCE(NULLIF(endpoint, ''), 'unknown'), COALESCE(NULLIF(apiKeyId, ''), NULLIF(apiKeyFingerprint, ''), NULLIF(apiKey, ''), 'local-no-key')
54
82
  ORDER BY errors DESC, requests DESC, lastSeen DESC
55
- LIMIT ?`,[...o.params,100])||[],q=i.map(a=>N(a,{topModels:[],topApiKeys:[]})),r=j.map(a=>N(a,{provider:a.provider||"",model:a.model||"",topApiKeys:[]})),s=k.map(a=>{let b=ab.get(a.connectionId);return N(a,{label:b?.name||a.connectionId||"unknown",provider:b?.provider||a.provider||"",connectionId:a.connectionId||"",topModels:[]})}),t=l.map(a=>N(a)),u=m.map(a=>{let b="local-no-key"===a.rawApiKey?"":a.rawApiKey,c=aa.byKey.get(b),d=c?.fingerprint||H(b);return N(a,{key:d,label:c?.name||(b?d:"Local / kh\xf4ng d\xf9ng API key"),name:c?.name||(b?d:"Local / kh\xf4ng d\xf9ng API key"),fingerprint:d,apiKeyId:c?.id||"",ownerUser:c?.ownerUser||"",createdByUser:c?.createdByUser||"",isActive:c?.isActive??null,topModels:[],topProviders:[],topEndpoints:[]})}),{providers:q,models:r,providerAccounts:s,endpoints:t,apiKeys:u,statuses:n.map(a=>N(a)),errors:p.map(a=>{let b="local-no-key"===a.rawApiKey?"":a.rawApiKey,c=aa.byKey.get(b);return N(a,{label:a.status||"error",status:a.status||"error",provider:a.provider||"unknown",model:a.model||"unknown",endpoint:a.endpoint||"unknown",apiKey:c?.fingerprint||H(b)})})}),ai=function(a,b){let c=[];try{let d,e,f=(d=[],e=[],b.startIso&&(d.push("timestamp >= ?"),e.push(b.startIso)),b.endIso&&(d.push("timestamp <= ?"),e.push(b.endIso)),b.provider&&(d.push("provider = ?"),e.push(b.provider)),b.model&&(d.push("model = ?"),e.push(b.model)),b.connectionId&&(d.push("connectionId = ?"),e.push(b.connectionId)),b.status&&(d.push("status = ?"),e.push(b.status)),{clause:d.length?`WHERE ${d.join(" AND ")}`:"",params:e});c=a.all(`SELECT data FROM requestDetails ${f.clause} ORDER BY timestamp DESC LIMIT ?`,[...f.params,3e3])||[]}catch{c=[]}let d=[];for(let a of c){let b=function(a){let b=a?.latency||{};for(let c of[b.totalMs,b.total_ms,b.durationMs,b.duration_ms,b.elapsedMs,b.elapsed_ms,b.responseMs,b.response_ms,b.ms,b.total,a?.durationMs,a?.latencyMs]){let a=Number(c);if(Number.isFinite(a)&&a>=0)return a}return null}((0,x.q)(a.data,{})||{});Number.isFinite(b)&&d.push(b)}let e=d.reduce((a,b)=>a+b,0);return{samples:d.length,avgMs:d.length?e/d.length:null,p50Ms:P(d,50),p95Ms:P(d,95),p99Ms:P(d,99)}}(_,$),aj=function(a,b,c,d={}){let e=function(a,b,c){let d=a.start?a.start.getTime():NaN,e=a.end?a.end.getTime():Date.now();if(!Number.isFinite(d)){let a=b?new Date(b).getTime():NaN,f=c?new Date(c).getTime():NaN;Number.isFinite(a)&&(d=a),Number.isFinite(f)&&(e=f)}Number.isFinite(d)||(d=e-864e5);let f=Math.max(1,e-d);return f<=216e5?3e5:f<=1296e5?36e5:f<=6912e5?216e5:f<=648e7?864e5:6048e5}(b,d.minTs,d.maxTs),f=Math.max(60,Math.floor(e/1e3)),g=b.start?b.start.getTime():new Date(d.minTs||Date.now()-864e5).getTime(),h=b.end?b.end.getTime():new Date(d.maxTs||Date.now()).getTime();Number.isFinite(g)||(g=Date.now()-864e5),Number.isFinite(h)||(h=Date.now());let i=Math.floor(((h=Math.max(g=M(g,e),h))-g)/e)+1,j=f*(i>240?Math.ceil(i/240):1),k=1e3*j,l=L(b,c),m=a.all(`SELECT
83
+ LIMIT ?`,[...m.params,100])||[],o=g.map(a=>ah(a,{topModels:[],topApiKeys:[]})),p=h.map(a=>ah(a,{provider:a.provider||"",model:a.model||"",topApiKeys:[]})),q=i.map(a=>{let b=E.get(a.connectionId);return ah(a,{label:b?.name||a.connectionId||"unknown",provider:b?.provider||a.provider||"",connectionId:a.connectionId||"",topModels:[]})}),r=j.map(a=>ah(a)),s=k.map(a=>{let b="local-no-key"===a.rawApiKey?"":a.rawApiKey,c=D.byKey.get(b)||D.byFingerprint.get(b)||D.all.find(b=>b.id===a.apiKeyId||b.id===a.key),d=c?.fingerprint||ab(b),e=a.apiKeyName||c?.name||(b?d:"Local / kh\xf4ng d\xf9ng API key");return ah(a,{key:a.apiKeyId||d,label:e,name:e,fingerprint:d,apiKeyId:a.apiKeyId||c?.id||"",ownerUser:a.apiKeyOwner||c?.ownerUser||"",createdByUser:c?.createdByUser||"",isActive:c?.isActive??null,topModels:[],topProviders:[],topEndpoints:[]})}),{providers:o,models:p,providerAccounts:q,endpoints:r,apiKeys:s,statuses:l.map(a=>ah(a)),errors:n.map(a=>{let b="local-no-key"===a.rawApiKey?"":a.rawApiKey,c=D.byKey.get(b)||D.byFingerprint.get(b)||D.all.find(a=>a.id===b);return ah(a,{label:a.status||"error",status:a.status||"error",provider:a.provider||"unknown",model:a.model||"unknown",endpoint:a.endpoint||"unknown",apiKey:c?.fingerprint||ab(b)})})}),K=function(a,b,c){try{let d=af(b,c),e=d.clause?`${d.clause} AND`:"WHERE",f=[...d.params],g=a.get(`SELECT COUNT(*) AS samples, AVG(latencyMs) AS avgMs
84
+ FROM usageHistory
85
+ ${e} latencyMs IS NOT NULL AND latencyMs > 0`,f)||{},h=$(g.samples,0),i=b=>{if(!h)return null;let c=Math.max(0,Math.min(h-1,Math.ceil(b/100*h)-1)),d=a.get(`SELECT latencyMs
86
+ FROM usageHistory
87
+ ${e} latencyMs IS NOT NULL AND latencyMs > 0
88
+ ORDER BY latencyMs ASC
89
+ LIMIT 1 OFFSET ?`,[...f,c]);return d?$(d.latencyMs,null):null};if(h>0)return{samples:h,avgMs:$(g.avgMs,null),p50Ms:i(50),p95Ms:i(95),p99Ms:i(99)}}catch{}let d=[];try{let c,e,f=(c=[],e=[],b.startIso&&(c.push("timestamp >= ?"),e.push(b.startIso)),b.endIso&&(c.push("timestamp <= ?"),e.push(b.endIso)),b.provider&&(c.push("provider = ?"),e.push(b.provider)),b.model&&(c.push("model = ?"),e.push(b.model)),b.connectionId&&(c.push("connectionId = ?"),e.push(b.connectionId)),b.status&&(c.push("status = ?"),e.push(b.status)),{clause:c.length?`WHERE ${c.join(" AND ")}`:"",params:e});d=a.all(`SELECT data FROM requestDetails ${f.clause} ORDER BY timestamp DESC LIMIT ?`,[...f.params,3e3])||[]}catch{d=[]}let e=[];for(let a of d){let b=function(a){let b=a?.latency||{};for(let c of[b.totalMs,b.total_ms,b.durationMs,b.duration_ms,b.elapsedMs,b.elapsed_ms,b.responseMs,b.response_ms,b.ms,b.total,a?.durationMs,a?.latencyMs]){let a=Number(c);if(Number.isFinite(a)&&a>=0)return a}return null}((0,x.q)(a.data,{})||{});Number.isFinite(b)&&e.push(b)}let f=e.reduce((a,b)=>a+b,0);return{samples:e.length,avgMs:e.length?f/e.length:null,p50Ms:aj(e,50),p95Ms:aj(e,95),p99Ms:aj(e,99)}}(C,B,F),L=function(a,b,c,d={}){let e=function(a,b,c){let d=a.start?a.start.getTime():NaN,e=a.end?a.end.getTime():Date.now();if(!Number.isFinite(d)){let a=b?new Date(b).getTime():NaN,f=c?new Date(c).getTime():NaN;Number.isFinite(a)&&(d=a),Number.isFinite(f)&&(e=f)}Number.isFinite(d)||(d=e-864e5);let f=Math.max(1,e-d);return f<=216e5?3e5:f<=1296e5?36e5:f<=6912e5?216e5:f<=648e7?864e5:6048e5}(b,d.minTs,d.maxTs),f=Math.max(60,Math.floor(e/1e3)),g=b.start?b.start.getTime():new Date(d.minTs||Date.now()-864e5).getTime(),h=b.end?b.end.getTime():new Date(d.maxTs||Date.now()).getTime();Number.isFinite(g)||(g=Date.now()-864e5),Number.isFinite(h)||(h=Date.now());let i=Math.floor(((h=Math.max(g=ag(g,e),h))-g)/e)+1,j=f*(i>240?Math.ceil(i/240):1),k=1e3*j,l=af(b,c),m=a.all(`SELECT
56
90
  ((CAST(strftime('%s', timestamp) AS INTEGER) / ?) * ?) AS bucketSec,
57
- ${B}
91
+ ${X}
58
92
  FROM usageHistory
59
93
  ${l.clause}
60
94
  GROUP BY bucketSec
61
95
  HAVING bucketSec IS NOT NULL
62
- ORDER BY bucketSec ASC`,[j,j,...l.params])||[],n=new Map;for(let a=M(g,k);a<=h;a+=k)n.set(a,{ts:a,label:new Date(a).toISOString(),requests:0,success:0,errors:0,promptTokens:0,completionTokens:0,totalTokens:0,cost:0});for(let a of m){let b=1e3*E(a.bucketSec,0);b&&n.set(b,{ts:b,label:new Date(b).toISOString(),requests:E(a.requests,0),success:E(a.success,0),errors:E(a.errors,0),promptTokens:E(a.promptTokens,0),completionTokens:E(a.completionTokens,0),totalTokens:E(a.totalTokens,0),cost:E(a.cost,0)})}return[...n.values()].sort((a,b)=>a.ts-b.ts)}(_,$,ac,ad),ak=(b=aa.byKey,v=L($,ac),(_.all(`SELECT id, timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens
96
+ ORDER BY bucketSec ASC`,[j,j,...l.params])||[],n=new Map;for(let a=ag(g,k);a<=h;a+=k)n.set(a,{ts:a,label:new Date(a).toISOString(),requests:0,success:0,errors:0,promptTokens:0,completionTokens:0,totalTokens:0,cost:0});for(let a of m){let b=1e3*$(a.bucketSec,0);b&&n.set(b,{ts:b,label:new Date(b).toISOString(),requests:$(a.requests,0),success:$(a.success,0),errors:$(a.errors,0),promptTokens:$(a.promptTokens,0),completionTokens:$(a.completionTokens,0),totalTokens:$(a.totalTokens,0),cost:$(a.cost,0)})}return[...n.values()].sort((a,b)=>a.ts-b.ts)}(C,B,F,G),M=new Map([...D.byKey.entries(),...D.byFingerprint.entries()]),N=(t=af(B,F),(C.all(`SELECT id, timestamp, provider, model, connectionId, apiKey, apiKeyId, apiKeyFingerprint, apiKeyName, endpoint, clientIp, clientIpNormalized, sourceTool, sourceToolLabel, sessionId, latencyMs, statusCode, errorCode, errorType, promptTokens, completionTokens, cost, status, tokens
63
97
  FROM usageHistory
64
- ${v.clause}
98
+ ${t.clause}
65
99
  ORDER BY timestamp DESC
66
- LIMIT ?`,[...v.params,50])||[]).map(a=>Q(a,b,ab))),al=(c=aa.byKey,y=L($,ac),(_.all(`SELECT id, timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens
100
+ LIMIT ?`,[...t.params,50])||[]).map(a=>ak(a,M,E))),O=(u=af(B,F),(C.all(`SELECT id, timestamp, provider, model, connectionId, apiKey, apiKeyId, apiKeyFingerprint, apiKeyName, endpoint, clientIp, clientIpNormalized, sourceTool, sourceToolLabel, sessionId, latencyMs, statusCode, errorCode, errorType, promptTokens, completionTokens, cost, status, tokens
67
101
  FROM usageHistory
68
- ${y.clause}
102
+ ${u.clause}
69
103
  ORDER BY (COALESCE(promptTokens, 0) + COALESCE(completionTokens, 0)) DESC, timestamp DESC
70
- LIMIT ?`,[...y.params,20])||[]).map(a=>Q(a,c,ab))),am=function(a,b,c,d,e=new Map){let f=function(a,b,c,d){let e=X(a,b,"provider",500),f=X(a,b,"model",1e3),g=X(a,b,"endpoint",500),h=X(a,b,"status",200),i=X(a,b,"connectionId",1e3).map(a=>{let b=c.get(a),d=b?.name?`${b.name}${b.provider?` \xb7 ${b.provider}`:""}`:a;return{value:a,label:d}}),j=[];for(let c of(function(a,b){let c=L(W(b),null),d=c.clause?`${c.clause} AND`:"WHERE";try{let b=a.get(`SELECT 1 AS hasLocal
104
+ LIMIT ?`,[...u.params,20])||[]).map(a=>ak(a,M,E))),P=function(a,b,c,d,e=new Map){let f=function(a,b,c,d){let e=an(a,b,"provider",500),f=an(a,b,"model",1e3),g=an(a,b,"endpoint",500),h=an(a,b,"status",200),i=an(a,b,"connectionId",1e3).map(a=>{let b=c.get(a),d=b?.name?`${b.name}${b.provider?` \xb7 ${b.provider}`:""}`:a;return{value:a,label:d}}),j=[];for(let c of(function(a,b){let c=af(am(b),null),d=c.clause?`${c.clause} AND`:"WHERE";try{let b=a.get(`SELECT 1 AS hasLocal
71
105
  FROM usageHistory
72
106
  ${d} (apiKey IS NULL OR apiKey = '')
73
- LIMIT 1`,c.params);return!!b?.hasLocal}catch{return!1}}(a,b)&&j.push({value:"local-no-key",label:"Local / kh\xf4ng d\xf9ng API key"}),d.all.slice(0,500)))j.push({value:c.fingerprint,label:`${c.name||c.fingerprint}${c.ownerUser?` \xb7 ${c.ownerUser}`:""}`});V(i,b.connectionId,b.connectionId),V(j,b.apiKey,b.apiKey);let k=e.map(a=>({value:a,label:a})),l=f.map(a=>({value:a,label:a})),m=g.map(a=>({value:a,label:a})),n=h.map(a=>({value:a,label:a}));return V(k,b.provider,b.provider),V(l,b.model,b.model),V(m,b.endpoint,b.endpoint),V(n,b.status,b.status),{providers:k.map(a=>a.value),models:l.map(a=>a.value),endpoints:m.map(a=>a.value),statuses:n.map(a=>a.value),connections:i,apiKeys:j,clientIps:[],sourceTools:[]}}(a,b,e,d);return f.clientIps=(c.topClientIps||[]).map(a=>a.key).filter(Boolean),f.sourceTools=(c.topSourceTools||[]).map(a=>a.key).filter(Boolean),f}(_,$,af,aa,ab),an=function({overview:a,groups:b,promptLogStats:c}){let d=[];a.requests>=10&&a.errorRate>=.2&&d.push({level:"danger",title:"Tỷ lệ lỗi cao",detail:`C\xf3 ${(100*a.errorRate).toFixed(1)}% request lỗi trong khoảng thời gian đang lọc.`});let e=b.apiKeys?.[0];e&&a.totalTokens>0&&e.totalTokens/a.totalTokens>=.5&&d.push({level:"warning",title:"Một API key d\xf9ng phần lớn token",detail:`${e.name||e.fingerprint} đang d\xf9ng ${(e.totalTokens/a.totalTokens*100).toFixed(1)}% tổng token.`});let f=c?.topClientIps?.[0];f&&c.total>0&&f.requests/c.total>=.5&&f.requests>=20&&d.push({level:"warning",title:"Một IP chiếm phần lớn request prompt log",detail:`${f.label} chiếm ${(f.requests/c.total*100).toFixed(1)}% prompt logs trong mẫu đang ph\xe2n t\xedch.`});let g=b.providers?.find(a=>a.requests>=5&&a.errorRate>=.25);return g&&d.push({level:"danger",title:"Provider c\xf3 lỗi cao",detail:`${g.label} c\xf3 tỷ lệ lỗi ${(100*g.errorRate).toFixed(1)}%.`}),d}({overview:ag,groups:ah,promptLogStats:af}),ao=(z=["Analytics v2 đang d\xf9ng SQL aggregate tr\xean usageHistory: KPI, group, time-series, top request chỉ lấy dữ liệu tổng hợp từ DB thay v\xec k\xe9o h\xe0ng chục ngh\xecn raw rows về Node.js."],ac?.noMatch&&z.push("Bộ lọc API key kh\xf4ng khớp API key n\xe0o đang c\xf3, n\xean usage metrics trả về rỗng để tr\xe1nh scan to\xe0n bộ usageHistory bằng LIKE."),af.sampled<af.total&&z.push(`Prompt log analytics đang tổng hợp tr\xean ${af.sampled.toLocaleString("vi-VN")}/${af.total.toLocaleString("vi-VN")} d\xf2ng mới nhất theo bộ lọc.`),($.clientIp||$.sourceTool||$.sessionId||$.keyword)&&z.push("Bộ lọc Source IP / Source tool / Session / Keyword \xe1p dụng ch\xednh x\xe1c cho Prompt Logs. UsageHistory hiện chưa c\xf3 c\xe1c field n\xe0y n\xean token/cost kh\xf4ng thể lọc tuyệt đối theo IP/tool/session nếu chưa bổ sung correlation ID v\xe0o log."),af.disabled&&z.push("Prompt Log Database đang tắt, phần thống k\xea Source IP / tool / session sẽ kh\xf4ng c\xf3 dữ liệu."),z),ap={generatedAt:new Date().toISOString(),analyticsVersion:"v2-db-aggregate",filters:{period:$.period,startIso:$.startIso,endIso:$.endIso,provider:$.provider,model:$.model,connectionId:$.connectionId,status:$.status,endpoint:$.endpoint,apiKey:$.apiKey,clientIp:$.clientIp,sourceTool:$.sourceTool,sessionId:$.sessionId,keyword:$.keyword},overview:ag,latency:ai,timeSeries:aj,groups:ah,promptLogs:af,anomalies:an,recentUsage:ak,heavyRequests:al,options:am,qualityNotes:ao};if(R.set(F,{createdAt:Date.now(),data:ap}),R.size>100){for(let[a,b]of R)if(Date.now()-b.createdAt>15e3&&R.delete(a),R.size<=100)break}return ap}var $=c(9588);let _="force-dynamic",aa=["period","dateFrom","dateTo","provider","model","connectionId","status","endpoint","apiKey","clientIp","sourceIp","sourceTool","sessionId","keyword","maxPromptLogRows"];async function ab(a){try{let{response:b}=await (0,$.hH)();if(b)return b;let{searchParams:c}=new URL(a.url),d=function(a){let b={};for(let c of aa){let d=a.get(c);null!==d&&""!==String(d).trim()&&(b[c]=d)}return b}(c),e=await Z(d);if("csv"===c.get("format")){let a=(function(a){let b=[];for(let[c,d]of(b.push(["section","key","label","requests","success","errors","errorRate","inputTokens","outputTokens","totalTokens","cost","lastSeen"]),[["providers",a.groups.providers],["models",a.groups.models],["providerAccounts",a.groups.providerAccounts],["apiKeys",a.groups.apiKeys],["endpoints",a.groups.endpoints],["clientIps",a.promptLogs.topClientIps],["sourceTools",a.promptLogs.topSourceTools]]))for(let a of d||[])b.push([c,a.key||"",a.label||a.name||"",a.requests||0,a.success||0,a.errors||0,a.errorRate||0,a.promptTokens||0,a.completionTokens||0,a.totalTokens||0,a.cost||0,a.lastSeen||""]);return b})(e).map(a=>a.map(Y).join(",")).join("\n");return new Response(a,{status:200,headers:{"Content-Type":"text/csv; charset=utf-8","Content-Disposition":`attachment; filename="bluerouter-analytics-${new Date().toISOString().slice(0,10)}.csv"`,"Cache-Control":"no-store"}})}return v.NextResponse.json(e,{headers:{"Cache-Control":"no-store"}})}catch(a){return console.error("[analytics] Failed to build dashboard analytics:",a),v.NextResponse.json({error:a?.message||"Failed to build dashboard analytics"},{status:500})}}let ac=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/dashboard/analytics/route",pathname:"/api/dashboard/analytics",filename:"route",bundlePath:"app/api/dashboard/analytics/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"D:\\bluerouter\\src\\app\\api\\dashboard\\analytics\\route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:ad,workUnitAsyncStorage:ae,serverHooks:af}=ac;function ag(){return(0,g.patchFetch)({workAsyncStorage:ad,workUnitAsyncStorage:ae})}async function ah(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),ac.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/dashboard/analytics/route";"/index"===d&&(d="/");let e=await ac.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||ac.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===ac.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await ac.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>ac.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>ac.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await ac.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await ac.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await ac.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33792:(a,b,c)=>{c.d(b,{Dc:()=>p,OZ:()=>s,YK:()=>n,dY:()=>q,tm:()=>r});var d=c(86935),e=c(69614),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(77598),k=c.n(j),l=c(49120);let m=new TextEncoder().encode(function(){if(process.env.JWT_SECRET)return process.env.JWT_SECRET;let a=i().join(l.DATA_DIR,"jwt-secret");try{return g().readFileSync(a,"utf8").trim()}catch{}g().mkdirSync(l.DATA_DIR,{recursive:!0});let b=k().randomBytes(32).toString("hex");return g().writeFileSync(a,b,{mode:384}),b}());function n(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=a?.headers?.get?.("x-forwarded-proto");return b||"https"===c}async function o(a={}){return new d.P({authenticated:!0,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("24h").sign(m)}async function p(a){if(!a)return!1;try{return await (0,e.V)(a,m),!0}catch{return!1}}async function q(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,m);return b}catch{return null}}async function r(a,b,c={}){let d=await o(c);a.set("auth_token",d,{httpOnly:!0,secure:n(b),sameSite:"lax",path:"/"})}function s(a){a.delete("auth_token")}},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},41204:a=>{a.exports=require("string_decoder")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},66136:a=>{a.exports=require("timers")},69614:(a,b,c)=>{c.d(b,{V:()=>p});var d=c(88888),e=c(91356),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(24762),k=c(80308),l=c(11980);async function m(a,b,c){if(!(0,i.Gv)(a))throw new f.Ye("Flattened JWS must be an object");if(void 0===a.protected&&void 0===a.header)throw new f.Ye('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==a.protected&&"string"!=typeof a.protected)throw new f.Ye("JWS Protected Header incorrect type");if(void 0===a.payload)throw new f.Ye("JWS Payload missing");if("string"!=typeof a.signature)throw new f.Ye("JWS Signature missing or incorrect type");if(void 0!==a.header&&!(0,i.Gv)(a.header))throw new f.Ye("JWS Unprotected Header incorrect type");let m={};if(a.protected)try{let b=(0,d.D)(a.protected);m=JSON.parse(g.D0.decode(b))}catch{throw new f.Ye("JWS Protected Header is invalid")}if(!(0,i.fz)(m,a.header))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...m,...a.header},o=(0,k.n)(f.Ye,new Map([["b64",!0]]),c?.crit,m,n),p=!0;if(o.has("b64")&&"boolean"!=typeof(p=m.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:q}=n;if("string"!=typeof q||!q)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');let r=c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms);if(r&&!r.has(q))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(p){if("string"!=typeof a.payload)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof a.payload&&!(a.payload instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let s=!1;"function"==typeof b&&(b=await b(m,a),s=!0),(0,j.y)(q,b,"verify");let t=(0,g.xW)(void 0!==a.protected?(0,g.lF)(a.protected):new Uint8Array,(0,g.lF)("."),"string"==typeof a.payload?p?(0,g.lF)(a.payload):g.Rd.encode(a.payload):a.payload),u=(0,h.h2)(a.signature,"signature",f.Ye),v=await (0,l.l)(b,q);if(!await (0,e.MX)(q,v,u,t))throw new f.h2;let w={payload:p?(0,h.h2)(a.payload,"payload",f.Ye):"string"==typeof a.payload?g.Rd.encode(a.payload):a.payload};return(void 0!==a.protected&&(w.protectedHeader=m),void 0!==a.header&&(w.unprotectedHeader=a.header),s)?{...w,key:v}:w}async function n(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");let j=await m({payload:e,protected:d,signature:h},b,c),k={payload:j.payload,protectedHeader:j.protectedHeader};return"function"==typeof b?{...k,key:j.key}:k}var o=c(17347);async function p(a,b,c){let d=await n(a,b,c);if(d.protectedHeader.crit?.includes("b64")&&!1===d.protectedHeader.b64)throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,o.k6)(d.protectedHeader,d.payload,c),protectedHeader:d.protectedHeader};return"function"==typeof b?{...e,key:d.key}:e}},73024:a=>{a.exports=require("node:fs")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79428:a=>{a.exports=require("buffer")},79868:a=>{a.exports=require("node:sqlite")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,5573,6935,4884,7197,7242],()=>b(b.s=25432));module.exports=c})();
107
+ LIMIT 1`,c.params);return!!b?.hasLocal}catch{return!1}}(a,b)&&j.push({value:"local-no-key",label:"Local / kh\xf4ng d\xf9ng API key"}),d.all.slice(0,500)))j.push({value:c.fingerprint,label:`${c.name||c.fingerprint}${c.ownerUser?` \xb7 ${c.ownerUser}`:""}`});al(i,b.connectionId,b.connectionId),al(j,b.apiKey,b.apiKey);let k=e.map(a=>({value:a,label:a})),l=f.map(a=>({value:a,label:a})),m=g.map(a=>({value:a,label:a})),n=h.map(a=>({value:a,label:a}));return al(k,b.provider,b.provider),al(l,b.model,b.model),al(m,b.endpoint,b.endpoint),al(n,b.status,b.status),{providers:k.map(a=>a.value),models:l.map(a=>a.value),endpoints:m.map(a=>a.value),statuses:n.map(a=>a.value),connections:i,apiKeys:j,clientIps:[],sourceTools:[]}}(a,b,e,d);return f.clientIps=(c.topClientIps||[]).map(a=>a.key).filter(Boolean),f.sourceTools=(c.topSourceTools||[]).map(a=>a.key).filter(Boolean),f}(C,B,H,D,E),Q=function({overview:a,groups:b,promptLogStats:c}){let d=[];a.requests>=10&&a.errorRate>=.2&&d.push({level:"danger",title:"Tỷ lệ lỗi cao",detail:`C\xf3 ${(100*a.errorRate).toFixed(1)}% request lỗi trong khoảng thời gian đang lọc.`});let e=b.apiKeys?.[0];e&&a.totalTokens>0&&e.totalTokens/a.totalTokens>=.5&&d.push({level:"warning",title:"Một API key d\xf9ng phần lớn token",detail:`${e.name||e.fingerprint} đang d\xf9ng ${(e.totalTokens/a.totalTokens*100).toFixed(1)}% tổng token.`});let f=c?.topClientIps?.[0];f&&c.total>0&&f.requests/c.total>=.5&&f.requests>=20&&d.push({level:"warning",title:"Một IP chiếm phần lớn request prompt log",detail:`${f.label} chiếm ${(f.requests/c.total*100).toFixed(1)}% prompt logs trong to\xe0n bộ dữ liệu khớp bộ lọc.`});let g=b.providers?.find(a=>a.requests>=5&&a.errorRate>=.25);return g&&d.push({level:"danger",title:"Provider c\xf3 lỗi cao",detail:`${g.label} c\xf3 tỷ lệ lỗi ${(100*g.errorRate).toFixed(1)}%.`}),d}({overview:I,groups:J,promptLogStats:H}),R=(v=["Analytics v3 đang d\xf9ng SQL aggregate tr\xean usageHistory v\xe0 Prompt Logs: KPI, group, time-series, top request/IP/tool/session được tổng hợp ở DB thay v\xec k\xe9o h\xe0ng chục ngh\xecn raw rows về Node.js."],F?.noMatch&&v.push("Bộ lọc API key kh\xf4ng khớp API key n\xe0o đang c\xf3, n\xean usage metrics trả về rỗng để tr\xe1nh scan to\xe0n bộ usageHistory bằng LIKE."),H.total>0&&v.push(`Prompt log analytics đang d\xf9ng SQL aggregate tr\xean to\xe0n bộ ${H.total.toLocaleString("vi-VN")} d\xf2ng khớp bộ lọc.`),(B.clientIp||B.sourceTool||B.sessionId||B.keyword)&&v.push("Bộ lọc Source IP / Source tool / Session / Keyword \xe1p dụng cho Prompt Logs bằng SQL aggregate. Với request mới sau migration v3, UsageHistory cũng lưu clientIp/sourceTool/session để token/cost c\xf3 thể lọc ch\xednh x\xe1c hơn; dữ liệu cũ trước migration c\xf3 thể chưa c\xf3 c\xe1c field n\xe0y."),H.disabled&&v.push("Prompt Log Database đang tắt, phần thống k\xea Source IP / tool / session sẽ kh\xf4ng c\xf3 dữ liệu."),v),S={generatedAt:new Date().toISOString(),analyticsVersion:"v3-observability-db-aggregate",filters:{period:B.period,startIso:B.startIso,endIso:B.endIso,provider:B.provider,model:B.model,connectionId:B.connectionId,status:B.status,endpoint:B.endpoint,apiKey:B.apiKey,clientIp:B.clientIp,sourceTool:B.sourceTool,sessionId:B.sessionId,keyword:B.keyword},overview:I,latency:K,timeSeries:L,groups:J,promptLogs:H,anomalies:Q,recentUsage:N,heavyRequests:O,options:P,qualityNotes:R};if(z.set(y,{createdAt:Date.now(),data:S}),z.size>100){for(let[a,b]of z)if(Date.now()-b.createdAt>15e3&&z.delete(a),z.size<=100)break}return S}var aq=c(9588);let ar="force-dynamic",as=["period","dateFrom","dateTo","provider","model","connectionId","status","endpoint","apiKey","clientIp","sourceIp","sourceTool","sessionId","keyword","maxPromptLogRows"];async function at(a){try{let{response:b}=await (0,aq.hH)();if(b)return b;let{searchParams:c}=new URL(a.url),d=function(a){let b={};for(let c of as){let d=a.get(c);null!==d&&""!==String(d).trim()&&(b[c]=d)}return b}(c),e=await ap(d);if("csv"===c.get("format")){let a=(function(a){let b=[];for(let[c,d]of(b.push(["section","key","label","requests","success","errors","errorRate","inputTokens","outputTokens","totalTokens","cost","lastSeen"]),[["providers",a.groups.providers],["models",a.groups.models],["providerAccounts",a.groups.providerAccounts],["apiKeys",a.groups.apiKeys],["endpoints",a.groups.endpoints],["clientIps",a.promptLogs.topClientIps],["sourceTools",a.promptLogs.topSourceTools]]))for(let a of d||[])b.push([c,a.key||"",a.label||a.name||"",a.requests||0,a.success||0,a.errors||0,a.errorRate||0,a.promptTokens||0,a.completionTokens||0,a.totalTokens||0,a.cost||0,a.lastSeen||""]);return b})(e).map(a=>a.map(ao).join(",")).join("\n");return new Response(a,{status:200,headers:{"Content-Type":"text/csv; charset=utf-8","Content-Disposition":`attachment; filename="bluerouter-analytics-${new Date().toISOString().slice(0,10)}.csv"`,"Cache-Control":"no-store"}})}return v.NextResponse.json(e,{headers:{"Cache-Control":"no-store"}})}catch(a){return console.error("[analytics] Failed to build dashboard analytics:",a),v.NextResponse.json({error:a?.message||"Failed to build dashboard analytics"},{status:500})}}let au=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/dashboard/analytics/route",pathname:"/api/dashboard/analytics",filename:"route",bundlePath:"app/api/dashboard/analytics/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"D:\\bluerouter\\src\\app\\api\\dashboard\\analytics\\route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:av,workUnitAsyncStorage:aw,serverHooks:ax}=au;function ay(){return(0,g.patchFetch)({workAsyncStorage:av,workUnitAsyncStorage:aw})}async function az(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),au.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/dashboard/analytics/route";"/index"===d&&(d="/");let e=await au.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||au.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===au.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await au.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>au.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>au.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await au.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await au.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await au.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},66136:a=>{a.exports=require("timers")},69614:(a,b,c)=>{c.d(b,{V:()=>p});var d=c(88888),e=c(91356),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(24762),k=c(80308),l=c(11980);async function m(a,b,c){if(!(0,i.Gv)(a))throw new f.Ye("Flattened JWS must be an object");if(void 0===a.protected&&void 0===a.header)throw new f.Ye('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==a.protected&&"string"!=typeof a.protected)throw new f.Ye("JWS Protected Header incorrect type");if(void 0===a.payload)throw new f.Ye("JWS Payload missing");if("string"!=typeof a.signature)throw new f.Ye("JWS Signature missing or incorrect type");if(void 0!==a.header&&!(0,i.Gv)(a.header))throw new f.Ye("JWS Unprotected Header incorrect type");let m={};if(a.protected)try{let b=(0,d.D)(a.protected);m=JSON.parse(g.D0.decode(b))}catch{throw new f.Ye("JWS Protected Header is invalid")}if(!(0,i.fz)(m,a.header))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...m,...a.header},o=(0,k.n)(f.Ye,new Map([["b64",!0]]),c?.crit,m,n),p=!0;if(o.has("b64")&&"boolean"!=typeof(p=m.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:q}=n;if("string"!=typeof q||!q)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');let r=c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms);if(r&&!r.has(q))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(p){if("string"!=typeof a.payload)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof a.payload&&!(a.payload instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let s=!1;"function"==typeof b&&(b=await b(m,a),s=!0),(0,j.y)(q,b,"verify");let t=(0,g.xW)(void 0!==a.protected?(0,g.lF)(a.protected):new Uint8Array,(0,g.lF)("."),"string"==typeof a.payload?p?(0,g.lF)(a.payload):g.Rd.encode(a.payload):a.payload),u=(0,h.h2)(a.signature,"signature",f.Ye),v=await (0,l.l)(b,q);if(!await (0,e.MX)(q,v,u,t))throw new f.h2;let w={payload:p?(0,h.h2)(a.payload,"payload",f.Ye):"string"==typeof a.payload?g.Rd.encode(a.payload):a.payload};return(void 0!==a.protected&&(w.protectedHeader=m),void 0!==a.header&&(w.unprotectedHeader=a.header),s)?{...w,key:v}:w}async function n(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");let j=await m({payload:e,protected:d,signature:h},b,c),k={payload:j.payload,protectedHeader:j.protectedHeader};return"function"==typeof b?{...k,key:j.key}:k}var o=c(17347);async function p(a,b,c){let d=await n(a,b,c);if(d.protectedHeader.crit?.includes("b64")&&!1===d.protectedHeader.b64)throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,o.k6)(d.protectedHeader,d.payload,c),protectedHeader:d.protectedHeader};return"function"==typeof b?{...e,key:d.key}:e}},73024:a=>{a.exports=require("node:fs")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79428:a=>{a.exports=require("buffer")},79868:a=>{a.exports=require("node:sqlite")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,5573,6935,5087,7197,7242],()=>b(b.s=60825));module.exports=c})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/jwt-secret","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/machine-id","../../../../../../cli/.build-home/AppData/Roaming/nextjs-nodejs/Config/config.json","../../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../../node_modules/@swc/helpers/package.json","../../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../../node_modules/better-sqlite3/package.json","../../../../../../node_modules/bindings/bindings.js","../../../../../../node_modules/bindings/package.json","../../../../../../node_modules/file-uri-to-path/index.js","../../../../../../node_modules/file-uri-to-path/package.json","../../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../../node_modules/next/dist/client/lib/console.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../../node_modules/next/dist/server/node-environment.js","../../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../../node_modules/next/dist/server/require-hook.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../../../node_modules/pg-cloudflare/dist/empty.js","../../../../../../node_modules/pg-cloudflare/dist/index.js","../../../../../../node_modules/pg-cloudflare/package.json","../../../../../../node_modules/pg-connection-string/index.js","../../../../../../node_modules/pg-connection-string/package.json","../../../../../../node_modules/pg-int8/index.js","../../../../../../node_modules/pg-int8/package.json","../../../../../../node_modules/pg-pool/index.js","../../../../../../node_modules/pg-pool/package.json","../../../../../../node_modules/pg-protocol/dist/buffer-reader.js","../../../../../../node_modules/pg-protocol/dist/buffer-writer.js","../../../../../../node_modules/pg-protocol/dist/index.js","../../../../../../node_modules/pg-protocol/dist/messages.js","../../../../../../node_modules/pg-protocol/dist/parser.js","../../../../../../node_modules/pg-protocol/dist/serializer.js","../../../../../../node_modules/pg-protocol/package.json","../../../../../../node_modules/pg-types/index.js","../../../../../../node_modules/pg-types/lib/arrayParser.js","../../../../../../node_modules/pg-types/lib/binaryParsers.js","../../../../../../node_modules/pg-types/lib/builtins.js","../../../../../../node_modules/pg-types/lib/textParsers.js","../../../../../../node_modules/pg-types/package.json","../../../../../../node_modules/pg/esm/index.mjs","../../../../../../node_modules/pg/lib/client.js","../../../../../../node_modules/pg/lib/connection-parameters.js","../../../../../../node_modules/pg/lib/connection.js","../../../../../../node_modules/pg/lib/crypto/cert-signatures.js","../../../../../../node_modules/pg/lib/crypto/sasl.js","../../../../../../node_modules/pg/lib/crypto/utils.js","../../../../../../node_modules/pg/lib/defaults.js","../../../../../../node_modules/pg/lib/index.js","../../../../../../node_modules/pg/lib/native/client.js","../../../../../../node_modules/pg/lib/native/index.js","../../../../../../node_modules/pg/lib/native/query.js","../../../../../../node_modules/pg/lib/query.js","../../../../../../node_modules/pg/lib/result.js","../../../../../../node_modules/pg/lib/stream.js","../../../../../../node_modules/pg/lib/type-overrides.js","../../../../../../node_modules/pg/lib/utils.js","../../../../../../node_modules/pg/package.json","../../../../../../node_modules/pgpass/lib/helper.js","../../../../../../node_modules/pgpass/lib/index.js","../../../../../../node_modules/pgpass/package.json","../../../../../../node_modules/postgres-array/index.js","../../../../../../node_modules/postgres-array/package.json","../../../../../../node_modules/postgres-bytea/index.js","../../../../../../node_modules/postgres-bytea/package.json","../../../../../../node_modules/postgres-date/index.js","../../../../../../node_modules/postgres-date/package.json","../../../../../../node_modules/postgres-interval/index.js","../../../../../../node_modules/postgres-interval/package.json","../../../../../../node_modules/react/cjs/react.development.js","../../../../../../node_modules/react/cjs/react.production.js","../../../../../../node_modules/react/index.js","../../../../../../node_modules/react/package.json","../../../../../../node_modules/split2/index.js","../../../../../../node_modules/split2/package.json","../../../../../../node_modules/sql.js/dist/sql-wasm.js","../../../../../../node_modules/sql.js/package.json","../../../../../../node_modules/xtend/mutable.js","../../../../../../node_modules/xtend/package.json","../../../../../../package.json","../../../../../../src/lib/db/adapters/betterSqliteAdapter.js","../../../../../../src/lib/db/adapters/bunSqliteAdapter.js","../../../../../../src/lib/db/adapters/nodeSqliteAdapter.js","../../../../../../src/lib/db/adapters/sqljsAdapter.js","../../../../../../src/lib/db/migrate.js","../../../../../../src/shared/utils/apiKey.js","../../../../../package.json","../../../../chunks/12.js","../../../../chunks/1219.js","../../../../chunks/1220.js","../../../../chunks/1336.js","../../../../chunks/1813.js","../../../../chunks/1998.js","../../../../chunks/2409.js","../../../../chunks/241.js","../../../../chunks/2496.js","../../../../chunks/2506.js","../../../../chunks/2549.js","../../../../chunks/3104.js","../../../../chunks/3110.js","../../../../chunks/318.js","../../../../chunks/319.js","../../../../chunks/3593.js","../../../../chunks/3801.js","../../../../chunks/3813.js","../../../../chunks/3913.js","../../../../chunks/4013.js","../../../../chunks/4115.js","../../../../chunks/4306.js","../../../../chunks/4404.js","../../../../chunks/4632.js","../../../../chunks/4657.js","../../../../chunks/4739.js","../../../../chunks/4741.js","../../../../chunks/4746.js","../../../../chunks/4780.js","../../../../chunks/4785.js","../../../../chunks/4803.js","../../../../chunks/4825.js","../../../../chunks/4867.js","../../../../chunks/4884.js","../../../../chunks/507.js","../../../../chunks/5258.js","../../../../chunks/5296.js","../../../../chunks/533.js","../../../../chunks/5433.js","../../../../chunks/5573.js","../../../../chunks/5681.js","../../../../chunks/5742.js","../../../../chunks/5852.js","../../../../chunks/595.js","../../../../chunks/6064.js","../../../../chunks/6103.js","../../../../chunks/6108.js","../../../../chunks/6182.js","../../../../chunks/6252.js","../../../../chunks/6567.js","../../../../chunks/6604.js","../../../../chunks/6844.js","../../../../chunks/6935.js","../../../../chunks/6936.js","../../../../chunks/698.js","../../../../chunks/7130.js","../../../../chunks/7153.js","../../../../chunks/7197.js","../../../../chunks/7242.js","../../../../chunks/7250.js","../../../../chunks/7341.js","../../../../chunks/7464.js","../../../../chunks/7774.js","../../../../chunks/7965.js","../../../../chunks/8062.js","../../../../chunks/8255.js","../../../../chunks/8376.js","../../../../chunks/8469.js","../../../../chunks/8491.js","../../../../chunks/8520.js","../../../../chunks/8590.js","../../../../chunks/8895.js","../../../../chunks/8971.js","../../../../chunks/918.js","../../../../chunks/9489.js","../../../../chunks/9528.js","../../../../chunks/9609.js","../../../../webpack-runtime.js","route_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.133-to-1.0.134-1.0.134-20260610-122326/data.sqlite","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.134-to-1.0.135-1.0.135-20260610-122700/data.sqlite","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.135-to-2.0.1-2.0.1-20260610-123810/data.sqlite","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/jwt-secret","../../../../../../cli/.build-home/AppData/Roaming/bluerouter/machine-id","../../../../../../cli/.build-home/AppData/Roaming/nextjs-nodejs/Config/config.json","../../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../../node_modules/@swc/helpers/package.json","../../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../../node_modules/better-sqlite3/package.json","../../../../../../node_modules/bindings/bindings.js","../../../../../../node_modules/bindings/package.json","../../../../../../node_modules/file-uri-to-path/index.js","../../../../../../node_modules/file-uri-to-path/package.json","../../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../../node_modules/next/dist/client/lib/console.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../../node_modules/next/dist/server/node-environment.js","../../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../../node_modules/next/dist/server/require-hook.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../../../node_modules/pg-cloudflare/dist/empty.js","../../../../../../node_modules/pg-cloudflare/dist/index.js","../../../../../../node_modules/pg-cloudflare/package.json","../../../../../../node_modules/pg-connection-string/index.js","../../../../../../node_modules/pg-connection-string/package.json","../../../../../../node_modules/pg-int8/index.js","../../../../../../node_modules/pg-int8/package.json","../../../../../../node_modules/pg-pool/index.js","../../../../../../node_modules/pg-pool/package.json","../../../../../../node_modules/pg-protocol/dist/buffer-reader.js","../../../../../../node_modules/pg-protocol/dist/buffer-writer.js","../../../../../../node_modules/pg-protocol/dist/index.js","../../../../../../node_modules/pg-protocol/dist/messages.js","../../../../../../node_modules/pg-protocol/dist/parser.js","../../../../../../node_modules/pg-protocol/dist/serializer.js","../../../../../../node_modules/pg-protocol/package.json","../../../../../../node_modules/pg-types/index.js","../../../../../../node_modules/pg-types/lib/arrayParser.js","../../../../../../node_modules/pg-types/lib/binaryParsers.js","../../../../../../node_modules/pg-types/lib/builtins.js","../../../../../../node_modules/pg-types/lib/textParsers.js","../../../../../../node_modules/pg-types/package.json","../../../../../../node_modules/pg/esm/index.mjs","../../../../../../node_modules/pg/lib/client.js","../../../../../../node_modules/pg/lib/connection-parameters.js","../../../../../../node_modules/pg/lib/connection.js","../../../../../../node_modules/pg/lib/crypto/cert-signatures.js","../../../../../../node_modules/pg/lib/crypto/sasl.js","../../../../../../node_modules/pg/lib/crypto/utils.js","../../../../../../node_modules/pg/lib/defaults.js","../../../../../../node_modules/pg/lib/index.js","../../../../../../node_modules/pg/lib/native/client.js","../../../../../../node_modules/pg/lib/native/index.js","../../../../../../node_modules/pg/lib/native/query.js","../../../../../../node_modules/pg/lib/query.js","../../../../../../node_modules/pg/lib/result.js","../../../../../../node_modules/pg/lib/stream.js","../../../../../../node_modules/pg/lib/type-overrides.js","../../../../../../node_modules/pg/lib/utils.js","../../../../../../node_modules/pg/package.json","../../../../../../node_modules/pgpass/lib/helper.js","../../../../../../node_modules/pgpass/lib/index.js","../../../../../../node_modules/pgpass/package.json","../../../../../../node_modules/postgres-array/index.js","../../../../../../node_modules/postgres-array/package.json","../../../../../../node_modules/postgres-bytea/index.js","../../../../../../node_modules/postgres-bytea/package.json","../../../../../../node_modules/postgres-date/index.js","../../../../../../node_modules/postgres-date/package.json","../../../../../../node_modules/postgres-interval/index.js","../../../../../../node_modules/postgres-interval/package.json","../../../../../../node_modules/react/cjs/react.development.js","../../../../../../node_modules/react/cjs/react.production.js","../../../../../../node_modules/react/index.js","../../../../../../node_modules/react/package.json","../../../../../../node_modules/split2/index.js","../../../../../../node_modules/split2/package.json","../../../../../../node_modules/sql.js/dist/sql-wasm.js","../../../../../../node_modules/sql.js/package.json","../../../../../../node_modules/xtend/mutable.js","../../../../../../node_modules/xtend/package.json","../../../../../../package.json","../../../../../../src/lib/db/adapters/betterSqliteAdapter.js","../../../../../../src/lib/db/adapters/bunSqliteAdapter.js","../../../../../../src/lib/db/adapters/nodeSqliteAdapter.js","../../../../../../src/lib/db/adapters/sqljsAdapter.js","../../../../../../src/lib/db/migrate.js","../../../../../../src/shared/utils/apiKey.js","../../../../../package.json","../../../../chunks/12.js","../../../../chunks/1219.js","../../../../chunks/1220.js","../../../../chunks/1336.js","../../../../chunks/1813.js","../../../../chunks/1998.js","../../../../chunks/2409.js","../../../../chunks/241.js","../../../../chunks/2506.js","../../../../chunks/2549.js","../../../../chunks/3104.js","../../../../chunks/3110.js","../../../../chunks/318.js","../../../../chunks/319.js","../../../../chunks/3222.js","../../../../chunks/3593.js","../../../../chunks/3801.js","../../../../chunks/3813.js","../../../../chunks/3913.js","../../../../chunks/4013.js","../../../../chunks/4306.js","../../../../chunks/4404.js","../../../../chunks/4632.js","../../../../chunks/4657.js","../../../../chunks/4739.js","../../../../chunks/4741.js","../../../../chunks/4746.js","../../../../chunks/4780.js","../../../../chunks/4803.js","../../../../chunks/4867.js","../../../../chunks/507.js","../../../../chunks/5087.js","../../../../chunks/5258.js","../../../../chunks/5296.js","../../../../chunks/533.js","../../../../chunks/5433.js","../../../../chunks/5573.js","../../../../chunks/5681.js","../../../../chunks/5742.js","../../../../chunks/5852.js","../../../../chunks/595.js","../../../../chunks/6064.js","../../../../chunks/6103.js","../../../../chunks/6108.js","../../../../chunks/6182.js","../../../../chunks/6252.js","../../../../chunks/6567.js","../../../../chunks/6604.js","../../../../chunks/6844.js","../../../../chunks/6935.js","../../../../chunks/6936.js","../../../../chunks/698.js","../../../../chunks/7130.js","../../../../chunks/7153.js","../../../../chunks/7197.js","../../../../chunks/7242.js","../../../../chunks/7250.js","../../../../chunks/7341.js","../../../../chunks/7464.js","../../../../chunks/7774.js","../../../../chunks/7795.js","../../../../chunks/7965.js","../../../../chunks/8062.js","../../../../chunks/8255.js","../../../../chunks/8376.js","../../../../chunks/8469.js","../../../../chunks/8491.js","../../../../chunks/8520.js","../../../../chunks/8590.js","../../../../chunks/8895.js","../../../../chunks/8971.js","../../../../chunks/918.js","../../../../chunks/9489.js","../../../../chunks/9528.js","../../../../chunks/9609.js","../../../../chunks/9753.js","../../../../chunks/978.js","../../../../webpack-runtime.js","route_client-reference-manifest.js"]}
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=7960,a.ids=[7960],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},18559:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>G,patchFetch:()=>F,routeModule:()=>B,serverHooks:()=>E,workAsyncStorage:()=>C,workUnitAsyncStorage:()=>D});var d={};c.r(d),c.d(d,{GET:()=>A,dynamic:()=>x,revalidate:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(89718);let x="force-dynamic",y=0,z={"Cache-Control":"no-store"};async function A(){try{let[a,b]=await Promise.all([(0,w.Uv)(),(0,w.mt)()]);return v.NextResponse.json({combos:(a||[]).filter(a=>!a.kind),comboStrategies:b?.comboStrategies||{}},{headers:z})}catch(a){return console.log("Error loading dashboard combos:",a),v.NextResponse.json({error:"Failed to load dashboard combos"},{status:500,headers:z})}}let B=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/dashboard/combos/route",pathname:"/api/dashboard/combos",filename:"route",bundlePath:"app/api/dashboard/combos/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"D:\\bluerouter\\src\\app\\api\\dashboard\\combos\\route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:D,serverHooks:E}=B;function F(){return(0,g.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:D})}async function G(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),B.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/dashboard/combos/route";"/index"===d&&(d="/");let e=await B.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(A.dynamicRoutes[I]||A.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!z){let a=!!A.routes[F],b=A.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||B.isDev||z||(L="/index"===(L=F)?"/":L);let M=!0===B.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await B.getIncrementalCache(a,x,A,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>B.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>B.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await B.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await B.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await B.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},21820:a=>{a.exports=require("os")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79868:a=>{a.exports=require("node:sqlite")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mY:()=>d.mY,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(9248)},94735:a=>{a.exports=require("events")},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,4884],()=>b(b.s=18559));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=7960,a.ids=[7960],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},18559:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>G,patchFetch:()=>F,routeModule:()=>B,serverHooks:()=>E,workAsyncStorage:()=>C,workUnitAsyncStorage:()=>D});var d={};c.r(d),c.d(d,{GET:()=>A,dynamic:()=>x,revalidate:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211),w=c(89718);let x="force-dynamic",y=0,z={"Cache-Control":"no-store"};async function A(){try{let[a,b]=await Promise.all([(0,w.Uv)(),(0,w.mt)()]);return v.NextResponse.json({combos:(a||[]).filter(a=>!a.kind),comboStrategies:b?.comboStrategies||{}},{headers:z})}catch(a){return console.log("Error loading dashboard combos:",a),v.NextResponse.json({error:"Failed to load dashboard combos"},{status:500,headers:z})}}let B=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/dashboard/combos/route",pathname:"/api/dashboard/combos",filename:"route",bundlePath:"app/api/dashboard/combos/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"D:\\bluerouter\\src\\app\\api\\dashboard\\combos\\route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:D,serverHooks:E}=B;function F(){return(0,g.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:D})}async function G(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),B.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/dashboard/combos/route";"/index"===d&&(d="/");let e=await B.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(A.dynamicRoutes[I]||A.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!z){let a=!!A.routes[F],b=A.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||B.isDev||z||(L="/index"===(L=F)?"/":L);let M=!0===B.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await B.getIncrementalCache(a,x,A,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>B.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>B.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await B.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await B.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await B.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},21820:a=>{a.exports=require("os")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79868:a=>{a.exports=require("node:sqlite")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mY:()=>d.mY,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(56403)},94735:a=>{a.exports=require("events")},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,5087],()=>b(b.s=18559));module.exports=c})();