@jheavenknows/bluerouter 5.1.54 → 5.1.55

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 (485) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +7 -7
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  41. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  42. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  45. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  50. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  51. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  52. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  53. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +5 -5
  54. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  55. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  56. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  57. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  138. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  198. package/app/.next-cli-build/server/app/callback.html +1 -1
  199. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  200. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  201. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  202. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +5 -5
  203. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  204. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  206. package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
  207. package/app/.next-cli-build/server/app/dashboard/analytics.rsc +6 -6
  208. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
  209. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  210. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  212. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +6 -6
  213. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +5 -5
  215. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +7 -7
  218. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
  219. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  222. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +7 -7
  223. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +5 -5
  225. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  228. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  229. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  232. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  233. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  234. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  235. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  238. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  239. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  242. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  243. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  244. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  245. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
  247. package/app/.next-cli-build/server/app/dashboard/cluster.rsc +6 -6
  248. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +1 -1
  249. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster.segment.rsc +1 -1
  250. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  252. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +6 -6
  253. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_head.segment.rsc +1 -1
  254. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_index.segment.rsc +5 -5
  255. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +1 -1
  256. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  258. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  259. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  260. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  262. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  263. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  264. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  265. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  266. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  268. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  269. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  270. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  272. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  273. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  274. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  275. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  276. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  278. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  279. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  280. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  281. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  283. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  284. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
  286. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  289. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  290. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  291. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  293. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  294. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  295. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
  296. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  297. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  298. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  299. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  300. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  301. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  303. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  304. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  306. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  307. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +6 -6
  309. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  310. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  311. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  313. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
  314. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  315. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +5 -5
  316. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  317. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +6 -6
  319. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  321. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  323. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
  324. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +5 -5
  326. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  327. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  328. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  329. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  330. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  331. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  334. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  335. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  336. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  337. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  339. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  340. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  341. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  344. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  345. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  346. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  347. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  348. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  350. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  351. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  352. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  354. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  355. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  357. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  358. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  359. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  360. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  361. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  362. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  364. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  365. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  367. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  368. package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
  369. package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +6 -6
  370. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +1 -1
  371. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor.segment.rsc +1 -1
  372. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  374. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +6 -6
  375. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_head.segment.rsc +1 -1
  376. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_index.segment.rsc +5 -5
  377. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +1 -1
  378. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  379. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  380. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  381. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  382. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  383. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  384. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  386. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  387. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  388. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  390. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  391. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  392. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  393. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  395. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  396. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  397. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +5 -5
  398. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  401. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +1 -1
  402. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  404. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  405. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  406. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  407. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +5 -5
  408. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  411. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  412. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  414. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  415. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  416. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  418. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  421. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  422. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  424. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  425. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  426. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  427. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  428. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  430. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  431. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  432. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  433. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  434. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  435. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  436. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +5 -5
  437. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  438. package/app/.next-cli-build/server/app/index.html +1 -1
  439. package/app/.next-cli-build/server/app/index.rsc +5 -5
  440. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  441. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  442. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  443. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +5 -5
  444. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  445. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  446. package/app/.next-cli-build/server/app/landing.html +1 -1
  447. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  448. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  449. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  450. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +5 -5
  451. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  454. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  455. package/app/.next-cli-build/server/app/login.html +1 -1
  456. package/app/.next-cli-build/server/app/login.rsc +6 -6
  457. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  458. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  459. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +5 -5
  460. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  461. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  462. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  463. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  464. package/app/.next-cli-build/server/app-paths-manifest.json +7 -7
  465. package/app/.next-cli-build/server/chunks/2652.js +1 -1
  466. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  467. package/app/.next-cli-build/server/chunks/3640.js +1 -1
  468. package/app/.next-cli-build/server/chunks/402.js +20 -20
  469. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  470. package/app/.next-cli-build/server/chunks/5276.js +2 -2
  471. package/app/.next-cli-build/server/chunks/6328.js +1 -1
  472. package/app/.next-cli-build/server/chunks/8491.js +1 -1
  473. package/app/.next-cli-build/server/chunks/8762.js +1 -1
  474. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  475. package/app/.next-cli-build/server/middleware.js +2 -2
  476. package/app/.next-cli-build/server/pages/404.html +1 -1
  477. package/app/.next-cli-build/server/pages/500.html +1 -1
  478. package/app/.next-cli-build/static/chunks/{5263-638f90fca0be321e.js → 5263-021d9749e4056fb5.js} +1 -1
  479. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.1.51-to-5.1.52-5.1.52-20260719-193720 → upgrade-5.1.53-to-5.1.54-5.1.54-20260721-204241}/data.sqlite +0 -0
  480. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.1.53-to-5.1.54-5.1.54-20260721-204242/data.sqlite +0 -0
  481. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite +0 -0
  482. package/app/package.json +1 -1
  483. package/package.json +1 -1
  484. /package/app/.next-cli-build/static/{xUVZfhcNWd1HNqY1yT2pI → j16HBNzPLLMREagCsRhgW}/_buildManifest.js +0 -0
  485. /package/app/.next-cli-build/static/{xUVZfhcNWd1HNqY1yT2pI → j16HBNzPLLMREagCsRhgW}/_ssgManifest.js +0 -0
@@ -1,21 +1,4 @@
1
- exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d(b,{Bu:()=>m,KS:()=>s,Tr:()=>n,bh:()=>v,eC:()=>u,is:()=>e,iz:()=>r,jQ:()=>l});let d=new Map,e=Object.freeze({enabled:!0,requestsPerMinute:20,promptCharsMax:12e4,maxOutputTokens:0,forceThinkingOff:!0,allowedIpCidrs:[],expiresAt:""}),f=new Set(Object.keys(e));function g(a,b=0){let c=Number(a);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function h(a,b=!0){if(null==a||""===a)return b;if("boolean"==typeof a)return a;if("number"==typeof a)return 0!==a;let c=String(a).trim().toLowerCase();return!["false","0","no","off"].includes(c)&&(!!["true","1","yes","on"].includes(c)||b)}function i(a){return a&&"object"==typeof a&&!Array.isArray(a)}function j(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function k(a){return!!i(a)&&Object.keys(a).some(a=>f.has(a))}function l(a={}){if(!k(a))return{};let b=i(a)?a:{};return{enabled:h(b.enabled,e.enabled),requestsPerMinute:g(b.requestsPerMinute,0),promptCharsMax:g(b.promptCharsMax,0),maxOutputTokens:g(b.maxOutputTokens??b.outputTokensMax??b.maxTokens??b.max_tokens??b.max_completion_tokens,0),forceThinkingOff:h(b.forceThinkingOff,e.forceThinkingOff),allowedIpCidrs:j(b.allowedIpCidrs),expiresAt:String(b.expiresAt||"").trim()}}function m(a){let b=l(a?.limits||{});return k(b)&&!1!==b.enabled?b:null}function n(a){let b=a?.headers?.get?.("Authorization")||"";return b.startsWith("Bearer ")?b.slice(7).trim():a?.headers?.get?.("x-api-key")?.trim()||null}function o(a,b){return a?.headers?.get?.(b)||a?.headers?.get?.(b.toLowerCase())||""}function p(a){let b=String(a||"").trim().split(".");if(4!==b.length)return null;let c=0;for(let a of b){if(!/^\d+$/.test(a))return null;let b=Number(a);if(b<0||b>255)return null;c=(c<<8)+b}return c>>>0}function q(a){if(null==a)return 0;if("string"==typeof a)return a.length;if("number"==typeof a||"boolean"==typeof a)return String(a).length;if(Array.isArray(a))return a.reduce((a,b)=>a+q(b),0);if("object"==typeof a){let b=0;for(let[c,d]of Object.entries(a))b+=String(c).length,b+=q(d);return b}return String(a).length}function r(a={}){return q(a.messages||[])+q(a.prompt||"")+q(a.input||"")}function s({request:a,keyRecord:b,body:c}){let e=m(b);if(!e)return{ok:!0,applied:!1};if(!function(a){let b=String(a||"").trim();if(!b)return!0;let c=Date.parse(b);return!Number.isFinite(c)||Date.now()<=c}(e.expiresAt))return{ok:!1,status:403,message:"API key đ\xe3 hết hạn theo policy."};if(!function(a,b){let c,d=j(b);if(0===d.length)return!0;let e=(c=o(a,"x-forwarded-for"))?c.split(",")[0].trim():(o(a,"x-real-ip")||o(a,"cf-connecting-ip")||o(a,"x-client-ip")||"").trim();return!!e&&d.some(a=>(function(a,b){let c=String(b||"").trim();if(!c)return!1;if(!c.includes("/"))return a===c;let[d,e]=c.split("/"),f=Number(e);if(!Number.isInteger(f)||f<0||f>32)return!1;let g=p(a),h=p(d);if(null===g||null===h)return!1;let i=0===f?0:0xffffffff<<32-f>>>0;return(g&i)==(h&i)})(e,a))}(a,e.allowedIpCidrs))return{ok:!1,status:403,message:"API key kh\xf4ng được ph\xe9p gọi từ IP hiện tại."};let f=g(e.promptCharsMax,0);if(f>0){let a=r(c);if(a>f)return{ok:!1,status:413,message:`Prompt qu\xe1 d\xe0i: ${a} chars, giới hạn của API key l\xe0 ${f} chars.`}}let h=function({keyId:a,policy:b,now:c=Date.now()}){let e=g(b.requestsPerMinute,0);if(e<=0)return{ok:!0};let f=6e4*Math.floor(c/6e4),h=`${a}:minute:${f}`,i=d.get(h)||0;if(i>=e){let a=Math.max(1,Math.ceil((f+6e4-c)/1e3));return{ok:!1,status:429,message:`API key vượt giới hạn ${e} request/ph\xfat. Thử lại sau ${a}s.`,headers:{"Retry-After":String(a)}}}if(d.set(h,i+1),d.size>1e4){let a=c-6e5;for(let b of d.keys()){let c=Number(b.split(":").pop());Number.isFinite(c)&&c<a&&d.delete(b)}}return{ok:!0}}({keyId:b?.id||b?.key||"unknown",policy:e});return h.ok?{ok:!0,applied:!0}:h}function t(a){let b=Number(a);if(Number.isFinite(b)&&!(b<=0))return Math.floor(b)}function u(a={},b){let c=m(b);if(!c)return a;let d=g(c.maxOutputTokens,0);if(d<=0)return a;let e=Math.min(function(a={}){let b=[a.max_tokens,a.max_completion_tokens,a.max_output_tokens].map(t).filter(a=>void 0!==a);if(0!==b.length)return Math.min(...b)}(a)||d,d),f={...a||{}};return f.max_tokens=e,Object.prototype.hasOwnProperty.call(f,"max_completion_tokens")&&delete f.max_completion_tokens,Object.prototype.hasOwnProperty.call(f,"max_output_tokens")&&delete f.max_output_tokens,f}function v(a){let b={"Access-Control-Allow-Origin":"*","Content-Type":"application/json",...a?.headers||{}};return new Response(JSON.stringify({error:{message:a?.message||"API key policy rejected this request.",type:"api_key_policy_error"}}),{status:a?.status||403,headers:b})}},644:(a,b,c)=>{"use strict";function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},5781:(a,b,c)=>{"use strict";c.d(b,{Mc:()=>p,fK:()=>u,getProviderConnections:()=>o,iE:()=>s,nv:()=>q,op:()=>v,rj:()=>t});var d=c(94755),e=c(36366),f=c(644);let g=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","projectId","apiKey","routeApiKeyId","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","schedule","healthCheck","healthStatus","healthConsecutiveFailures","healthConsecutiveSuccesses","healthLastCheckedAt","healthLastOkAt","healthLastError","healthLastLatencyMs","healthLastRecoveredAt"];function h(a){return String(a||"").trim().toLowerCase()}function i(a){return"personal"===a?"personal":"system"}function j(a={}){var b;let c=(b=a.providerSpecificData)&&"object"==typeof b&&!Array.isArray(b)?b:{},d=function(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=c+"=".repeat((4-c.length%4)%4);return JSON.parse(Buffer.from(d,"base64").toString("utf8"))}catch{return null}}(a.accessToken),e=d?.["https://api.openai.com/auth"]||{},f=d?.email||d?.preferred_username||d?.username;for(let[b,g]of[["chatgptAccountId",c.chatgptAccountId||e.chatgpt_account_id],["claudeAccountId",c.claudeAccountId||d?.claude_account_id],["accountId",c.accountId||d?.account_id],["userId",c.userId||d?.user_id||d?.uid],["sub",c.sub||d?.sub],["email",a.email||c.email||c.preferredUsername||f]]){let a=function(a,{lower:b=!0}={}){let c=String(a||"").trim();return c&&"—"!==c&&"-"!==c?b?c.toLowerCase():c:""}(g);if(a)return`${b}:${a}`}return""}function k(a){return"oauth"===a||"access_token"===a}let l=new Set(["claude","codex"]);function m(a){if(!a)return null;let b=(0,f.q)(a.data,{}),c=h(a.ownerUser||b.ownerUser),d=h(a.createdByUser||b.createdByUser),e=a.visibility||b.visibility||(c?"private":"system"),g="personal"===i(a.scope||b.scope)||c||"private"===e?"personal":"system";return{...b,id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,scope:g,ownerUser:c,createdByUser:d,visibility:e||("personal"===g?"private":"system"),createdAt:a.createdAt,updatedAt:a.updatedAt}}function n(a,b){let c=function(a){let{id:b,provider:c,authType:d,name:e,email:g,priority:j,isActive:k,scope:l,ownerUser:m,createdByUser:n,visibility:o,createdAt:p,updatedAt:q,...r}=a,s=h(m),t=o||(s?"private":void 0),u="personal"===i(l)||s||"private"===t?"personal":"system";return{id:b,provider:c,authType:d,name:e??null,email:g??null,priority:j??null,isActive:+(!1!==k),scope:u,ownerUser:s,createdByUser:h(n),visibility:t||("personal"===u?"private":"system"),data:(0,f.s)(r),createdAt:p,updatedAt:q}}(b);a.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, scope, ownerUser, createdByUser, visibility, data, createdAt, updatedAt)
2
- VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3
- ON CONFLICT(id) DO UPDATE SET
4
- provider=excluded.provider, authType=excluded.authType, name=excluded.name,
5
- email=excluded.email, priority=excluded.priority, isActive=excluded.isActive,
6
- scope=excluded.scope, ownerUser=excluded.ownerUser, createdByUser=excluded.createdByUser,
7
- visibility=excluded.visibility, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.provider,c.authType,c.name,c.email,c.priority,c.isActive,c.scope,c.ownerUser,c.createdByUser,c.visibility,c.data,c.createdAt,c.updatedAt])}async function o(a={}){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive)),void 0!==a.scope&&"personal"===i(a.scope)?(c.push("(scope = ? OR visibility = ? OR length(trim(coalesce(ownerUser, ''))) > 0)"),d.push("personal","private")):(void 0!==a.scope||!0!==a.includePersonal)&&(c.push("scope = ?"),d.push("system"),c.push("coalesce(visibility, 'system') <> ?"),d.push("private"),c.push("length(trim(coalesce(ownerUser, ''))) = 0")),void 0!==a.ownerUser&&(c.push("lower(coalesce(ownerUser, '')) = ?"),d.push(h(a.ownerUser)));let f=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,d).map(m);return g.sort((a,b)=>(a.priority||999)-(b.priority||999)),g}async function p(a){return m((await (0,e.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}async function q(){return(await (0,e.c)()).all(`SELECT lower(coalesce(ownerUser, '')) AS ownerUser, provider, COUNT(*) AS total
8
- FROM providerConnections
9
- WHERE (scope = 'personal'
10
- OR visibility = 'private'
11
- OR length(trim(coalesce(ownerUser, ''))) > 0)
12
- AND length(trim(coalesce(ownerUser, ''))) > 0
13
- AND length(trim(coalesce(provider, ''))) > 0
14
- GROUP BY lower(coalesce(ownerUser, '')), provider`).map(a=>({ownerUser:a.ownerUser||"",provider:a.provider||"",total:Number(a.total)||0}))}function r(a,b,c="system",d=""){let e=i(c),f=h(d),g=[b,e],j="SELECT * FROM providerConnections WHERE provider = ? AND scope = ?";"personal"===e?(j+=" AND lower(coalesce(ownerUser, '')) = ?",g.push(f)):j+=" AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0";let k=a.all(j,g).map(m);k.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),k.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function s(a){let b,c=await (0,e.c)(),f=new Date().toISOString();return c.transaction(()=>{var e,o;let p=i(a.scope),q=h(a.ownerUser),s=[a.provider,p],t="SELECT * FROM providerConnections WHERE provider = ? AND scope = ?";"personal"===p?(t+=" AND lower(coalesce(ownerUser, '')) = ?",s.push(q)):t+=" AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0";let u=c.all(t,s).map(m),v=null,w=j(a),x=(e=a.provider,o=a.authType,"personal"===i(p)&&k(o)&&l.has(String(e||"").trim().toLowerCase()));if("personal"===p&&k(a.authType)&&w){let b=(x?c.all(`SELECT * FROM providerConnections
15
- WHERE provider = ?
16
- AND (scope = 'personal'
17
- OR visibility = 'private'
18
- OR length(trim(coalesce(ownerUser, ''))) > 0)`,[a.provider]).map(m):u).find(a=>k(a.authType)&&j(a)===w);if(b)throw function(a,{global:b=!1}={}){let c=a?.email||a?.displayName||a?.name||a?.id||"account n\xe0y",d=function(a={}){let b=h(a.ownerUser||a.createdByUser);return b||"kh\xf4ng x\xe1c định"}(a),e=Error(b?`Account n\xe0y đ\xe3 được li\xean kết trong hệ thống bởi user: ${d}. Vui l\xf2ng d\xf9ng account kh\xe1c hoặc x\xf3a connection cũ trước khi add lại.`:`Account ${c} đ\xe3 được th\xeam trước đ\xf3 bởi user: ${d}. Vui l\xf2ng d\xf9ng account kh\xe1c hoặc x\xf3a connection cũ trước khi add lại.`);return e.code="DUPLICATE_PERSONAL_ACCOUNT",e.status=409,e.connectionId=a?.id,e.ownerUser=d,e}(b,{global:x})}if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.chatgptAccountId;v=u.find(c=>{if("oauth"!==c.authType||c.email!==a.email)return!1;let d=c.providerSpecificData?.chatgptAccountId;return!b||!d||b===d})}else"apikey"===a.authType&&a.name&&(v=u.find(b=>"apikey"===b.authType&&b.name===a.name));if(v){let d={...v,...a,updatedAt:f};n(c,d),b=d;return}let y=a.name||null;y||"oauth"!==a.authType&&"access_token"!==a.authType||(y=a.email||`Account ${u.length+1}`);let z=a.priority;z||(z=u.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let A={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:y,priority:z,isActive:void 0===a.isActive||a.isActive,scope:p,ownerUser:q,createdByUser:h(a.createdByUser||q),visibility:a.visibility||("personal"===p?"private":"system"),createdAt:f,updatedAt:f};for(let b of g)void 0!==a[b]&&null!==a[b]&&(A[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(A.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(A.email=a.email),n(c,A),r(c,a.provider,p,q),b=A}),b}async function t(a,b){let c,d=await (0,e.c)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=m(e),g={...f,...b,updatedAt:new Date().toISOString()};n(d,g),void 0!==b.priority&&r(d,f.provider,g.scope,g.ownerUser),c=g}),c}async function u(a){let b=await (0,e.c)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider, scope, ownerUser FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),r(b,d.provider,d.scope,d.ownerUser),c=!0)}),c}async function v(a){let b=await (0,e.c)(),c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ? AND scope = 'system' AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0",[a]);return b.run("DELETE FROM providerConnections WHERE provider = ? AND scope = 'system' AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0",[a]),c?.n||0}},9460:(a,b,c)=>{"use strict";c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.c)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},22846:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},27513:(a,b,c)=>{"use strict";c.d(b,{Bz:()=>g,Tu:()=>h,ev:()=>e,wX:()=>f});let d=Object.freeze(["inherit","on","off"]),e=Object.freeze(["lite","full","ultra"]);function f(a){let b=String(a||"inherit").trim().toLowerCase();return d.includes(b)?b:"inherit"}function g(a,b="lite"){let c=String(a||b).trim().toLowerCase();return e.includes(c)?c:b}function h({apiKeyMode:a,apiKeyLevel:b,globalEnabled:c,globalLevel:d}){let e=f(a),i="on"===e?g(b,"lite"):g(d,"full");return{mode:e,enabled:"on"===e||"off"!==e&&!0===c,level:i}}},28919:(a,b,c)=>{"use strict";c.d(b,{F3:()=>w,HI:()=>t,Lx:()=>x,Mm:()=>v,QP:()=>u,jT:()=>s,x8:()=>y});var d=c(55511),e=c.n(d),f=c(79748),g=c.n(f),h=c(21820),i=c.n(h),j=c(33873),k=c.n(j);let l=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(i().homedir(),".bluerouter"),m=k().join(l,"resource-monitor-servers.json");async function n(){await g().mkdir(l,{recursive:!0});try{let a=JSON.parse(await g().readFile(m,"utf8"));return{servers:Array.isArray(a?.servers)?a.servers:[]}}catch{return{servers:[]}}}async function o(a){await g().mkdir(l,{recursive:!0});let b=`${m}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify({servers:a.servers||[]},null,2)),await g().rename(b,m)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function p(){return new Date().toISOString()}function q(a,b,c,d=null){return Object.prototype.hasOwnProperty.call(a,c)?a[c]:Object.prototype.hasOwnProperty.call(b,c)?b[c]:d}function r(a={},b={}){let c=String(a.host??b.host??"").trim();return{id:b.id||a.id||e().randomUUID(),name:String(a.name??b.name??c??"Linux server").trim()||c||"Linux server",host:c,sshPort:Math.max(1,Number(a.sshPort??b.sshPort??22)||22),sshUser:String(a.sshUser??b.sshUser??"root").trim()||"root",useSudo:a.useSudo??b.useSudo??!0,agentPort:Math.max(1,Number(a.agentPort??b.agentPort??19998)||19998),agentToken:String(a.agentToken??b.agentToken??e().randomBytes(24).toString("hex")),enabled:a.enabled??b.enabled??!0,notes:String(a.notes??b.notes??"").trim(),lastStatus:q(a,b,"lastStatus"),lastStatusAt:q(a,b,"lastStatusAt"),lastError:q(a,b,"lastError"),lastErrorAt:q(a,b,"lastErrorAt"),lastInstallAt:q(a,b,"lastInstallAt"),lastInstallOk:q(a,b,"lastInstallOk",!1),lastInstallLog:q(a,b,"lastInstallLog",""),createdAt:b.createdAt||p(),updatedAt:p()}}function s(a){if(!a)return null;let{agentToken:b,...c}=a;return c}async function t({includeSecrets:a=!1}={}){let b=(await n()).servers.map(a=>r(a,a));return a?b:b.map(s)}async function u(a){let b=(await n()).servers.find(b=>b.id===a);return b?r(b,b):null}async function v(a){let b=await n(),c=r(a);return b.servers.push(c),await o(b),c}async function w(a,b){let c=await n(),d=c.servers.findIndex(b=>b.id===a);return d<0?null:(c.servers[d]=r(b,c.servers[d]),await o(c),c.servers[d])}async function x(a){let b=await n(),c=b.servers.length;return b.servers=b.servers.filter(b=>b.id!==a),await o(b),b.servers.length!==c}async function y(a){if(!Array.isArray(a))throw Error("Invalid resource monitor servers payload");let b=new Set,c=a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid resource monitor server entry");let c=String(a.id||"").trim();if(!c)throw Error("Resource monitor server ID is required");if(b.has(c))throw Error(`Duplicate resource monitor server ID: ${c}`);return b.add(c),r({...a,id:c},{...a,id:c})});return await o({servers:c}),c}},36366:(a,b,c)=>{"use strict";c.d(b,{c:()=>k});var d=c(95658);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(4739).then(c.bind(c,24739));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(5258).then(c.bind(c,25258));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(8520).then(c.bind(c,88520));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(3593).then(c.bind(c,53593));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(4017).then(c.bind(c,84017));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},39189:(a,b,c)=>{"use strict";c.d(b,{S8:()=>K.S8,E5:()=>Q.E5,Iq:()=>C.Iq,jd:()=>H,iE:()=>h.iE,i0:()=>s,ZO:()=>z,Lh:()=>C.Lh,CG:()=>J,uL:()=>K.uL,fv:()=>K.fv,fK:()=>h.fK,op:()=>h.op,Pc:()=>u,Yd:()=>B,tm:()=>O,oF:()=>P,zP:()=>ae,rg:()=>Q.rg,yg:()=>C.yg,mY:()=>C.getApiKeyByKey,PX:()=>C.PX,j$:()=>Q.j$,L:()=>F,Dj:()=>G,Uv:()=>E,uv:()=>K.uv,vF:()=>N,c:()=>K.getMitmAlias,OM:()=>K.OM,nv:()=>h.nv,r4:()=>L.r4,Mc:()=>h.Mc,P:()=>h.getProviderConnections,Qu:()=>r,Fh:()=>q,hr:()=>y,ui:()=>x,Zx:()=>Q.Zx,SL:()=>ac,mt:()=>g.getSettings,BY:()=>Q.BY,K1:()=>af,VT:()=>L.VT,yF:()=>L.yF,ox:()=>ab,sZ:()=>Q.sZ,L9:()=>K.L9,o5:()=>K.o5,_V:()=>Q._V,uw:()=>Q.uw,XW:()=>C.XW,oG:()=>I,KJ:()=>L.KJ,rj:()=>h.rj,ho:()=>t,Q_:()=>A,Xx:()=>g.Xx,ek:()=>C.ek});var d=c(36366),e=c(644),f=c(28919),g=c(42655),h=c(5781),i=c(94755);let j=["model","modelStr","model_name","rawModel","raw_model","value","id"],k=["label","displayName"],l=["modelTagRules","modelTags","tagRules"];function m(a){return String(a||"").trim().replace(/\/+$/,"")}function n(a,b,c){if("string"!=typeof a)return a;let d=`${b}/`;return a.startsWith(d)?`${c}/${a.slice(d.length)}`:a}function o(a){return a?{...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function p(a,b){let c=function(a){let{id:b,type:c,name:d,createdAt:f,updatedAt:g,...h}=a;return{id:b,type:c??null,name:d??null,data:(0,e.s)(h),createdAt:f,updatedAt:g}}(b);a.run(`INSERT INTO providerNodes(id, type, name, data, createdAt, updatedAt)
1
+ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d(b,{Bu:()=>m,KS:()=>s,Tr:()=>n,bh:()=>v,eC:()=>u,is:()=>e,iz:()=>r,jQ:()=>l});let d=new Map,e=Object.freeze({enabled:!0,requestsPerMinute:20,promptCharsMax:12e4,maxOutputTokens:0,forceThinkingOff:!0,allowedIpCidrs:[],expiresAt:""}),f=new Set(Object.keys(e));function g(a,b=0){let c=Number(a);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function h(a,b=!0){if(null==a||""===a)return b;if("boolean"==typeof a)return a;if("number"==typeof a)return 0!==a;let c=String(a).trim().toLowerCase();return!["false","0","no","off"].includes(c)&&(!!["true","1","yes","on"].includes(c)||b)}function i(a){return a&&"object"==typeof a&&!Array.isArray(a)}function j(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function k(a){return!!i(a)&&Object.keys(a).some(a=>f.has(a))}function l(a={}){if(!k(a))return{};let b=i(a)?a:{};return{enabled:h(b.enabled,e.enabled),requestsPerMinute:g(b.requestsPerMinute,0),promptCharsMax:g(b.promptCharsMax,0),maxOutputTokens:g(b.maxOutputTokens??b.outputTokensMax??b.maxTokens??b.max_tokens??b.max_completion_tokens,0),forceThinkingOff:h(b.forceThinkingOff,e.forceThinkingOff),allowedIpCidrs:j(b.allowedIpCidrs),expiresAt:String(b.expiresAt||"").trim()}}function m(a){let b=l(a?.limits||{});return k(b)&&!1!==b.enabled?b:null}function n(a){let b=a?.headers?.get?.("Authorization")||"";return b.startsWith("Bearer ")?b.slice(7).trim():a?.headers?.get?.("x-api-key")?.trim()||null}function o(a,b){return a?.headers?.get?.(b)||a?.headers?.get?.(b.toLowerCase())||""}function p(a){let b=String(a||"").trim().split(".");if(4!==b.length)return null;let c=0;for(let a of b){if(!/^\d+$/.test(a))return null;let b=Number(a);if(b<0||b>255)return null;c=(c<<8)+b}return c>>>0}function q(a){if(null==a)return 0;if("string"==typeof a)return a.length;if("number"==typeof a||"boolean"==typeof a)return String(a).length;if(Array.isArray(a))return a.reduce((a,b)=>a+q(b),0);if("object"==typeof a){let b=0;for(let[c,d]of Object.entries(a))b+=String(c).length,b+=q(d);return b}return String(a).length}function r(a={}){return q(a.messages||[])+q(a.prompt||"")+q(a.input||"")}function s({request:a,keyRecord:b,body:c}){let e=m(b);if(!e)return{ok:!0,applied:!1};if(!function(a){let b=String(a||"").trim();if(!b)return!0;let c=Date.parse(b);return!Number.isFinite(c)||Date.now()<=c}(e.expiresAt))return{ok:!1,status:403,message:"API key đ\xe3 hết hạn theo policy."};if(!function(a,b){let c,d=j(b);if(0===d.length)return!0;let e=(c=o(a,"x-forwarded-for"))?c.split(",")[0].trim():(o(a,"x-real-ip")||o(a,"cf-connecting-ip")||o(a,"x-client-ip")||"").trim();return!!e&&d.some(a=>(function(a,b){let c=String(b||"").trim();if(!c)return!1;if(!c.includes("/"))return a===c;let[d,e]=c.split("/"),f=Number(e);if(!Number.isInteger(f)||f<0||f>32)return!1;let g=p(a),h=p(d);if(null===g||null===h)return!1;let i=0===f?0:0xffffffff<<32-f>>>0;return(g&i)==(h&i)})(e,a))}(a,e.allowedIpCidrs))return{ok:!1,status:403,message:"API key kh\xf4ng được ph\xe9p gọi từ IP hiện tại."};let f=g(e.promptCharsMax,0);if(f>0){let a=r(c);if(a>f)return{ok:!1,status:413,message:`Prompt qu\xe1 d\xe0i: ${a} chars, giới hạn của API key l\xe0 ${f} chars.`}}let h=function({keyId:a,policy:b,now:c=Date.now()}){let e=g(b.requestsPerMinute,0);if(e<=0)return{ok:!0};let f=6e4*Math.floor(c/6e4),h=`${a}:minute:${f}`,i=d.get(h)||0;if(i>=e){let a=Math.max(1,Math.ceil((f+6e4-c)/1e3));return{ok:!1,status:429,message:`API key vượt giới hạn ${e} request/ph\xfat. Thử lại sau ${a}s.`,headers:{"Retry-After":String(a)}}}if(d.set(h,i+1),d.size>1e4){let a=c-6e5;for(let b of d.keys()){let c=Number(b.split(":").pop());Number.isFinite(c)&&c<a&&d.delete(b)}}return{ok:!0}}({keyId:b?.id||b?.key||"unknown",policy:e});return h.ok?{ok:!0,applied:!0}:h}function t(a){let b=Number(a);if(Number.isFinite(b)&&!(b<=0))return Math.floor(b)}function u(a={},b){let c=m(b);if(!c)return a;let d=g(c.maxOutputTokens,0);if(d<=0)return a;let e=Math.min(function(a={}){let b=[a.max_tokens,a.max_completion_tokens,a.max_output_tokens].map(t).filter(a=>void 0!==a);if(0!==b.length)return Math.min(...b)}(a)||d,d),f={...a||{}};return f.max_tokens=e,Object.prototype.hasOwnProperty.call(f,"max_completion_tokens")&&delete f.max_completion_tokens,Object.prototype.hasOwnProperty.call(f,"max_output_tokens")&&delete f.max_output_tokens,f}function v(a){let b={"Access-Control-Allow-Origin":"*","Content-Type":"application/json",...a?.headers||{}};return new Response(JSON.stringify({error:{message:a?.message||"API key policy rejected this request.",type:"api_key_policy_error"}}),{status:a?.status||403,headers:b})}},644:(a,b,c)=>{"use strict";function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},9460:(a,b,c)=>{"use strict";c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.c)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},22846:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},27513:(a,b,c)=>{"use strict";c.d(b,{Bz:()=>g,Tu:()=>h,ev:()=>e,wX:()=>f});let d=Object.freeze(["inherit","on","off"]),e=Object.freeze(["lite","full","ultra"]);function f(a){let b=String(a||"inherit").trim().toLowerCase();return d.includes(b)?b:"inherit"}function g(a,b="lite"){let c=String(a||b).trim().toLowerCase();return e.includes(c)?c:b}function h({apiKeyMode:a,apiKeyLevel:b,globalEnabled:c,globalLevel:d}){let e=f(a),i="on"===e?g(b,"lite"):g(d,"full");return{mode:e,enabled:"on"===e||"off"!==e&&!0===c,level:i}}},28919:(a,b,c)=>{"use strict";c.d(b,{F3:()=>w,HI:()=>t,Lx:()=>x,Mm:()=>v,QP:()=>u,jT:()=>s,x8:()=>y});var d=c(55511),e=c.n(d),f=c(79748),g=c.n(f),h=c(21820),i=c.n(h),j=c(33873),k=c.n(j);let l=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(i().homedir(),".bluerouter"),m=k().join(l,"resource-monitor-servers.json");async function n(){await g().mkdir(l,{recursive:!0});try{let a=JSON.parse(await g().readFile(m,"utf8"));return{servers:Array.isArray(a?.servers)?a.servers:[]}}catch{return{servers:[]}}}async function o(a){await g().mkdir(l,{recursive:!0});let b=`${m}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify({servers:a.servers||[]},null,2)),await g().rename(b,m)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function p(){return new Date().toISOString()}function q(a,b,c,d=null){return Object.prototype.hasOwnProperty.call(a,c)?a[c]:Object.prototype.hasOwnProperty.call(b,c)?b[c]:d}function r(a={},b={}){let c=String(a.host??b.host??"").trim();return{id:b.id||a.id||e().randomUUID(),name:String(a.name??b.name??c??"Linux server").trim()||c||"Linux server",host:c,sshPort:Math.max(1,Number(a.sshPort??b.sshPort??22)||22),sshUser:String(a.sshUser??b.sshUser??"root").trim()||"root",useSudo:a.useSudo??b.useSudo??!0,agentPort:Math.max(1,Number(a.agentPort??b.agentPort??19998)||19998),agentToken:String(a.agentToken??b.agentToken??e().randomBytes(24).toString("hex")),enabled:a.enabled??b.enabled??!0,notes:String(a.notes??b.notes??"").trim(),lastStatus:q(a,b,"lastStatus"),lastStatusAt:q(a,b,"lastStatusAt"),lastError:q(a,b,"lastError"),lastErrorAt:q(a,b,"lastErrorAt"),lastInstallAt:q(a,b,"lastInstallAt"),lastInstallOk:q(a,b,"lastInstallOk",!1),lastInstallLog:q(a,b,"lastInstallLog",""),createdAt:b.createdAt||p(),updatedAt:p()}}function s(a){if(!a)return null;let{agentToken:b,...c}=a;return c}async function t({includeSecrets:a=!1}={}){let b=(await n()).servers.map(a=>r(a,a));return a?b:b.map(s)}async function u(a){let b=(await n()).servers.find(b=>b.id===a);return b?r(b,b):null}async function v(a){let b=await n(),c=r(a);return b.servers.push(c),await o(b),c}async function w(a,b){let c=await n(),d=c.servers.findIndex(b=>b.id===a);return d<0?null:(c.servers[d]=r(b,c.servers[d]),await o(c),c.servers[d])}async function x(a){let b=await n(),c=b.servers.length;return b.servers=b.servers.filter(b=>b.id!==a),await o(b),b.servers.length!==c}async function y(a){if(!Array.isArray(a))throw Error("Invalid resource monitor servers payload");let b=new Set,c=a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid resource monitor server entry");let c=String(a.id||"").trim();if(!c)throw Error("Resource monitor server ID is required");if(b.has(c))throw Error(`Duplicate resource monitor server ID: ${c}`);return b.add(c),r({...a,id:c},{...a,id:c})});return await o({servers:c}),c}},36366:(a,b,c)=>{"use strict";c.d(b,{c:()=>k});var d=c(95658);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(4739).then(c.bind(c,24739));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(5258).then(c.bind(c,25258));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(8520).then(c.bind(c,88520));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(3593).then(c.bind(c,53593));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(4017).then(c.bind(c,84017));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},39189:(a,b,c)=>{"use strict";c.d(b,{S8:()=>K.S8,E5:()=>Q.E5,Iq:()=>C.Iq,jd:()=>H,iE:()=>h.iE,i0:()=>s,ZO:()=>z,Lh:()=>C.Lh,CG:()=>J,uL:()=>K.uL,fv:()=>K.fv,fK:()=>h.fK,op:()=>h.op,Pc:()=>u,Yd:()=>B,tm:()=>O,oF:()=>P,zP:()=>ae,rg:()=>Q.rg,yg:()=>C.yg,mY:()=>C.getApiKeyByKey,PX:()=>C.PX,j$:()=>Q.j$,L:()=>F,Dj:()=>G,Uv:()=>E,uv:()=>K.uv,vF:()=>N,c:()=>K.getMitmAlias,OM:()=>K.OM,nv:()=>h.nv,r4:()=>L.r4,Mc:()=>h.Mc,P:()=>h.getProviderConnections,Qu:()=>r,Fh:()=>q,hr:()=>y,ui:()=>x,Zx:()=>Q.Zx,SL:()=>ac,mt:()=>g.getSettings,BY:()=>Q.BY,K1:()=>af,VT:()=>L.VT,yF:()=>L.yF,ox:()=>ab,sZ:()=>Q.sZ,L9:()=>K.L9,o5:()=>K.o5,_V:()=>Q._V,uw:()=>Q.uw,XW:()=>C.XW,oG:()=>I,KJ:()=>L.KJ,rj:()=>h.rj,ho:()=>t,Q_:()=>A,Xx:()=>g.Xx,ek:()=>C.ek});var d=c(36366),e=c(644),f=c(28919),g=c(42655),h=c(46709),i=c(94755);let j=["model","modelStr","model_name","rawModel","raw_model","value","id"],k=["label","displayName"],l=["modelTagRules","modelTags","tagRules"];function m(a){return String(a||"").trim().replace(/\/+$/,"")}function n(a,b,c){if("string"!=typeof a)return a;let d=`${b}/`;return a.startsWith(d)?`${c}/${a.slice(d.length)}`:a}function o(a){return a?{...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function p(a,b){let c=function(a){let{id:b,type:c,name:d,createdAt:f,updatedAt:g,...h}=a;return{id:b,type:c??null,name:d??null,data:(0,e.s)(h),createdAt:f,updatedAt:g}}(b);a.run(`INSERT INTO providerNodes(id, type, name, data, createdAt, updatedAt)
19
2
  VALUES(?, ?, ?, ?, ?, ?)
20
3
  ON CONFLICT(id) DO UPDATE SET
21
4
  type=excluded.type, name=excluded.name, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.type,c.name,c.data,c.createdAt,c.updatedAt])}async function q(a={}){let b=await (0,d.c)(),c=[],e=[];a.type&&(c.push("type = ?"),e.push(a.type));let f=`SELECT * FROM providerNodes${c.length?` WHERE ${c.join(" AND ")}`:""}`;return b.all(f,e).map(o)}async function r(a){return o((await (0,d.c)()).get("SELECT * FROM providerNodes WHERE id = ?",[a]))}async function s(a){let b=await (0,d.c)(),c=new Date().toISOString(),{id:e,type:f,name:g,prefix:h,apiType:j,baseUrl:k,openAICompatibleRuntime:l,...m}=a,n={...m,id:e||(0,i.A)(),type:f,name:g,prefix:h,apiType:j,baseUrl:k,openAICompatibleRuntime:l,createdAt:c,updatedAt:c};return p(b,n),n}async function t(a,b){let c=await (0,d.c)(),f=null;return c.transaction(()=>{let d=c.get("SELECT * FROM providerNodes WHERE id = ?",[a]);if(!d)return;let g=o(d),h={...g,...b,updatedAt:new Date().toISOString()};"openai-compatible"===g.type&&"string"==typeof b.prefix&&g.prefix!==h.prefix&&function(a,b,c,d){let f=m(b),g=m(c);if(!f||!g||f===g)return;for(let b of a.all("SELECT id, models FROM combos")){let c=function(a,b,c){let d=m(b),e=m(c);if(!Array.isArray(a)||!d||!e||d===e)return{value:a,changed:!1};let f=!1,g=a.map(a=>{let b=function(a,b,c){if("string"==typeof a){let d=n(a,b,c);return{value:d,changed:d!==a}}if(!a||"object"!=typeof a||Array.isArray(a))return{value:a,changed:!1};let d=!1,e={...a};for(let f of[...j,...k]){if(!Object.prototype.hasOwnProperty.call(a,f))continue;let g=n(a[f],b,c);g!==a[f]&&(e[f]=g,d=!0)}return a.provider===b&&(e.provider=c,d=!0),{value:d?e:a,changed:d}}(a,d,e);return f||=b.changed,b.value});return{value:f?g:a,changed:f}}((0,e.q)(b.models,[]),f,g);c.changed&&a.run("UPDATE combos SET models = ?, updatedAt = ? WHERE id = ?",[(0,e.s)(c.value),d,b.id])}let h=a.get("SELECT data FROM settings WHERE id = 1");if(!h)return;let i=(0,e.q)(h.data,{}),o=function(a,b,c){let d=m(b),e=m(c);if(!a||"object"!=typeof a||Array.isArray(a)||!d||!e||d===e)return{value:a,changed:!1};let f=!1,g={};for(let[b,c]of Object.entries(a)){let a=function(a,b,c){if(!a||"object"!=typeof a||Array.isArray(a))return{value:a,changed:!1};let d=!1,e={...a};if(Array.isArray(a.disabledModels)){let f=[...new Set(a.disabledModels.map(a=>n(a,b,c)))];(f.some((b,c)=>b!==a.disabledModels[c])||f.length!==a.disabledModels.length)&&(e.disabledModels=f,d=!0)}for(let f of l){if(!Object.prototype.hasOwnProperty.call(a,f))continue;let g=function(a,b,c){if(!a||"object"!=typeof a||Array.isArray(a))return{value:a,changed:!1};let d=!1,e={};for(let[g,h]of Object.entries(a)){var f;let a=n(g,b,c);d||=a!==g,e[a]=(f=e[a],void 0===f?h:Array.isArray(f)&&Array.isArray(h)?[...new Set([...f,...h])]:f)}return{value:d?e:a,changed:d}}(a[f],b,c);g.changed&&(e[f]=g.value,d=!0)}return{value:d?e:a,changed:d}}(c,d,e);g[b]=a.value,f||=a.changed}return{value:f?g:a,changed:f}}(i.comboStrategies,f,g);o.changed&&a.run("UPDATE settings SET data = ? WHERE id = 1",[(0,e.s)({...i,comboStrategies:o.value})])}(c,g.prefix,h.prefix,h.updatedAt),p(c,h),f=h}),f}async function u(a){let b=await (0,d.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM providerNodes WHERE id = ?",[a]);d&&(c=o(d),b.run("DELETE FROM providerNodes WHERE id = ?",[a]))}),c}function v(a){return a?{...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function w(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:f,updatedAt:g,...h}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,e.s)(h),createdAt:f,updatedAt:g}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
@@ -208,7 +191,24 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
208
191
  INDEX idx_prompt_log_payloads_created_at (created_at),
209
192
  INDEX idx_prompt_log_payloads_last_seen_at (last_seen_at)
210
193
  ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
211
- `),await w(a,b),{ok:!0,type:"mysql",message:"MySQL prompt log schema is ready"}}finally{await a.close()}}throw Error(`Unsupported prompt log database type: ${b.type}`)}async function z(a=null){let b=n(a||await o());if(x(b),"postgres"===b.type){let a=await r(b);try{return await a.exec("SELECT 1;"),{ok:!0,type:"postgres",message:"PostgreSQL connection OK"}}finally{await a.close()}}if("mysql"===b.type){let a=await s(b,!0);try{return await a.exec("SELECT 1;"),{ok:!0,type:"mysql",message:"MySQL connection OK"}}finally{await a.close()}}throw Error(`Unsupported prompt log database type: ${b.type}`)}},49120:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DATA_DIR:()=>m,getDataDir:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="bluerouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}function l(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable fallback ~/.${j}`),k();throw b}}let m=l()},74452:(a,b,c)=>{"use strict";c.d(b,{Iq:()=>s,Lh:()=>v,PX:()=>o,Pb:()=>u,XW:()=>t,ek:()=>w,getApiKeyByKey:()=>r,mI:()=>p,yg:()=>q});var d=c(94755),e=c(36366),f=c(644),g=c(490),h=c(27513);let i=!1;function j(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function k(a){return String(a||"").trim().toLowerCase()}async function l(a){if(!i)try{let b=a.all("PRAGMA table_info(apiKeys)"),c=new Set(b.map(a=>a.name));c.has("allowedModels")||a.run("ALTER TABLE apiKeys ADD COLUMN allowedModels TEXT DEFAULT '[]'"),c.has("limits")||a.run("ALTER TABLE apiKeys ADD COLUMN limits TEXT DEFAULT '{}'"),c.has("ownerUser")||a.run("ALTER TABLE apiKeys ADD COLUMN ownerUser TEXT DEFAULT ''"),c.has("createdByUser")||a.run("ALTER TABLE apiKeys ADD COLUMN createdByUser TEXT DEFAULT ''"),c.has("adminDisabled")||a.run("ALTER TABLE apiKeys ADD COLUMN adminDisabled INTEGER DEFAULT 0"),c.has("cavemanMode")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanMode TEXT DEFAULT 'inherit'"),c.has("cavemanLevel")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanLevel TEXT DEFAULT 'lite'");try{a.run("CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_active ON apiKeys(isActive)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_at ON apiKeys(createdAt)")}catch{}i=!0}catch(a){console.log("Could not ensure apiKeys columns:",a?.message||a)}}function m(a={}){let b=[],c=[],d=k(a.ownerUser),e=String(a.search||"").trim().toLowerCase();if(d&&(b.push("(lower(coalesce(ownerUser, '')) = ? OR lower(coalesce(createdByUser, '')) = ?)"),c.push(d,d)),!0===a.isActive?b.push("isActive = 1"):!1===a.isActive&&b.push("(isActive = 0 OR isActive IS NULL)"),e){let a=`%${e}%`;b.push(`(
194
+ `),await w(a,b),{ok:!0,type:"mysql",message:"MySQL prompt log schema is ready"}}finally{await a.close()}}throw Error(`Unsupported prompt log database type: ${b.type}`)}async function z(a=null){let b=n(a||await o());if(x(b),"postgres"===b.type){let a=await r(b);try{return await a.exec("SELECT 1;"),{ok:!0,type:"postgres",message:"PostgreSQL connection OK"}}finally{await a.close()}}if("mysql"===b.type){let a=await s(b,!0);try{return await a.exec("SELECT 1;"),{ok:!0,type:"mysql",message:"MySQL connection OK"}}finally{await a.close()}}throw Error(`Unsupported prompt log database type: ${b.type}`)}},46709:(a,b,c)=>{"use strict";c.d(b,{iE:()=>I,fK:()=>K,op:()=>L,nv:()=>G,Mc:()=>F,getProviderConnections:()=>E,rj:()=>J});var d=c(94755),e=c(36366),f=c(644),g=c(77598),h=c.n(g),i=c(73024),j=c.n(i),k=c(76760),l=c.n(k),m=c(49120);let n="enc:v1:",o=l().join(m.DATA_DIR,"credential-encryption-key"),p=null;function q(a){let b=String(a||"").trim();if(!b)return null;if(/^[a-f0-9]{64}$/i.test(b))return Buffer.from(b,"hex");let c=b.replace(/-/g,"+").replace(/_/g,"/"),d=c+"=".repeat((4-c.length%4)%4),e=Buffer.from(d,"base64");return 32===e.length?e:null}function r(a){let b=String(process.env.BLUEROUTER_CREDENTIAL_ENCRYPTION_KEY_ID||"").trim();return b||h().createHash("sha256").update(a).digest("hex").slice(0,12)}function s(a=null){if(a?.key){let b=Buffer.isBuffer(a.key)?a.key:q(a.key);if(!b||32!==b.length)throw Error("Credential encryption key must be exactly 32 bytes");return{key:b,keyId:a.keyId||r(b)}}if(p)return p;let b=process.env.BLUEROUTER_CREDENTIAL_ENCRYPTION_KEY,c=b?q(b):function(){try{let a=q(j().readFileSync(o,"utf8"));if(!a)throw Error("Credential encryption key file is invalid");return a}catch(a){if(a?.code!=="ENOENT")throw a}j().mkdirSync(m.DATA_DIR,{recursive:!0});let a=h().randomBytes(32);try{return j().writeFileSync(o,a.toString("base64"),{flag:"wx",mode:384}),a}catch(b){if(b?.code!=="EEXIST")throw b;let a=q(j().readFileSync(o,"utf8"));if(!a)throw Error("Credential encryption key file is invalid");return a}}();if(!c||32!==c.length)throw Error("BLUEROUTER_CREDENTIAL_ENCRYPTION_KEY must be a 32-byte base64 or 64-character hex value");return p={key:c,keyId:r(c)}}function t(a){return Buffer.from(`bluerouter:credential:v1:${a}`,"utf8")}function u(a){return"string"==typeof a&&a.startsWith(n)}let v=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","idToken","expiresAt","tokenType","projectId","apiKey","routeApiKeyId","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","schedule","healthCheck","healthStatus","healthConsecutiveFailures","healthConsecutiveSuccesses","healthLastCheckedAt","healthLastOkAt","healthLastError","healthLastLatencyMs","healthLastRecoveredAt"],w=["accessToken","refreshToken","idToken","apiKey"];function x(a){return String(a||"").trim().toLowerCase()}function y(a){return"personal"===a?"personal":"system"}function z(a={}){var b;let c=(b=a.providerSpecificData)&&"object"==typeof b&&!Array.isArray(b)?b:{},d=function(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=c+"=".repeat((4-c.length%4)%4);return JSON.parse(Buffer.from(d,"base64").toString("utf8"))}catch{return null}}(a.accessToken),e=d?.["https://api.openai.com/auth"]||{},f=d?.email||d?.preferred_username||d?.username;for(let[b,g]of[["chatgptAccountId",c.chatgptAccountId||e.chatgpt_account_id],["claudeAccountId",c.claudeAccountId||d?.claude_account_id],["accountId",c.accountId||d?.account_id],["userId",c.userId||d?.user_id||d?.uid],["sub",c.sub||d?.sub],["email",a.email||c.email||c.preferredUsername||f]]){let a=function(a,{lower:b=!0}={}){let c=String(a||"").trim();return c&&"—"!==c&&"-"!==c?b?c.toLowerCase():c:""}(g);if(a)return`${b}:${a}`}return""}function A(a){return"oauth"===a||"access_token"===a}let B=new Set(["claude","codex"]);function C(a){if(!a)return null;let b=(0,f.q)(a.data,{});for(let a of w)Object.prototype.hasOwnProperty.call(b,a)&&(b[a]=function(a,b=null){if(!u(a))return a;let c=a.split(":");if(6!==c.length||"enc"!==c[0]||"v1"!==c[1])throw Error("Unsupported encrypted credential format");let d=Buffer.from(c[2],"base64url").toString("utf8"),e=Buffer.from(c[3],"base64url"),f=Buffer.from(c[4],"base64url"),g=Buffer.from(c[5],"base64url");if(12!==e.length||16!==f.length)throw Error("Encrypted credential payload is invalid");let{key:i}=s(b);try{let a=h().createDecipheriv("aes-256-gcm",i,e,{authTagLength:16});return a.setAAD(t(d)),a.setAuthTag(f),Buffer.concat([a.update(g),a.final()]).toString("utf8")}catch{throw Error(`Unable to decrypt credential with key ${d}`)}}(b[a]));let c=x(a.ownerUser||b.ownerUser),d=x(a.createdByUser||b.createdByUser),e=a.visibility||b.visibility||(c?"private":"system"),g="personal"===y(a.scope||b.scope)||c||"private"===e?"personal":"system";return{...b,id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,scope:g,ownerUser:c,createdByUser:d,visibility:e||("personal"===g?"private":"system"),createdAt:a.createdAt,updatedAt:a.updatedAt}}function D(a,b,c={}){let d=function(a,b={}){let{id:c,provider:d,authType:e,name:g,email:i,priority:j,isActive:k,scope:l,ownerUser:m,createdByUser:o,visibility:p,createdAt:q,updatedAt:r,...v}=a,z=b.storedData&&"object"==typeof b.storedData?b.storedData:null,A=b.encryptFields instanceof Set?b.encryptFields:null;for(let a of w)z&&A&&!A.has(a)&&Object.prototype.hasOwnProperty.call(z,a)?v[a]=z[a]:Object.prototype.hasOwnProperty.call(v,a)&&(v[a]=function(a,b=null){if(null==a||""===a||u(a)||"string"!=typeof a)return a;let{key:c,keyId:d}=s(b),e=Buffer.from(d,"utf8").toString("base64url"),f=h().randomBytes(12),g=h().createCipheriv("aes-256-gcm",c,f,{authTagLength:16});g.setAAD(t(d));let i=Buffer.concat([g.update(a,"utf8"),g.final()]),j=g.getAuthTag();return`${n}${e}:${f.toString("base64url")}:${j.toString("base64url")}:${i.toString("base64url")}`}(v[a]));let B=x(m),C=p||(B?"private":void 0),D="personal"===y(l)||B||"private"===C?"personal":"system";return{id:c,provider:d,authType:e,name:g??null,email:i??null,priority:j??null,isActive:+(!1!==k),scope:D,ownerUser:B,createdByUser:x(o),visibility:C||("personal"===D?"private":"system"),data:(0,f.s)(v),createdAt:q,updatedAt:r}}(b,c);a.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, scope, ownerUser, createdByUser, visibility, data, createdAt, updatedAt)
195
+ VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
196
+ ON CONFLICT(id) DO UPDATE SET
197
+ provider=excluded.provider, authType=excluded.authType, name=excluded.name,
198
+ email=excluded.email, priority=excluded.priority, isActive=excluded.isActive,
199
+ scope=excluded.scope, ownerUser=excluded.ownerUser, createdByUser=excluded.createdByUser,
200
+ visibility=excluded.visibility, data=excluded.data, updatedAt=excluded.updatedAt`,[d.id,d.provider,d.authType,d.name,d.email,d.priority,d.isActive,d.scope,d.ownerUser,d.createdByUser,d.visibility,d.data,d.createdAt,d.updatedAt])}async function E(a={}){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive)),void 0!==a.scope&&"personal"===y(a.scope)?(c.push("(scope = ? OR visibility = ? OR length(trim(coalesce(ownerUser, ''))) > 0)"),d.push("personal","private")):(void 0!==a.scope||!0!==a.includePersonal)&&(c.push("scope = ?"),d.push("system"),c.push("coalesce(visibility, 'system') <> ?"),d.push("private"),c.push("length(trim(coalesce(ownerUser, ''))) = 0")),void 0!==a.ownerUser&&(c.push("lower(coalesce(ownerUser, '')) = ?"),d.push(x(a.ownerUser)));let f=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,d).map(C);return g.sort((a,b)=>(a.priority||999)-(b.priority||999)),g}async function F(a){return C((await (0,e.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}async function G(){return(await (0,e.c)()).all(`SELECT lower(coalesce(ownerUser, '')) AS ownerUser, provider, COUNT(*) AS total
201
+ FROM providerConnections
202
+ WHERE (scope = 'personal'
203
+ OR visibility = 'private'
204
+ OR length(trim(coalesce(ownerUser, ''))) > 0)
205
+ AND length(trim(coalesce(ownerUser, ''))) > 0
206
+ AND length(trim(coalesce(provider, ''))) > 0
207
+ GROUP BY lower(coalesce(ownerUser, '')), provider`).map(a=>({ownerUser:a.ownerUser||"",provider:a.provider||"",total:Number(a.total)||0}))}function H(a,b,c="system",d=""){let e=y(c),f=x(d),g=[b,e],h="SELECT * FROM providerConnections WHERE provider = ? AND scope = ?";"personal"===e?(h+=" AND lower(coalesce(ownerUser, '')) = ?",g.push(f)):h+=" AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0";let i=a.all(h,g).map(C);i.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),i.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function I(a){let b,c=await (0,e.c)(),f=new Date().toISOString();return c.transaction(()=>{var e,g;let h=y(a.scope),i=x(a.ownerUser),j=[a.provider,h],k="SELECT * FROM providerConnections WHERE provider = ? AND scope = ?";"personal"===h?(k+=" AND lower(coalesce(ownerUser, '')) = ?",j.push(i)):k+=" AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0";let l=c.all(k,j).map(C),m=null,n=z(a),o=(e=a.provider,g=a.authType,"personal"===y(h)&&A(g)&&B.has(String(e||"").trim().toLowerCase()));if("personal"===h&&A(a.authType)&&n){let b=(o?c.all(`SELECT * FROM providerConnections
208
+ WHERE provider = ?
209
+ AND (scope = 'personal'
210
+ OR visibility = 'private'
211
+ OR length(trim(coalesce(ownerUser, ''))) > 0)`,[a.provider]).map(C):l).find(a=>A(a.authType)&&z(a)===n);if(b)throw function(a,{global:b=!1}={}){let c=a?.email||a?.displayName||a?.name||a?.id||"account n\xe0y",d=function(a={}){let b=x(a.ownerUser||a.createdByUser);return b||"kh\xf4ng x\xe1c định"}(a),e=Error(b?`Account n\xe0y đ\xe3 được li\xean kết trong hệ thống bởi user: ${d}. Vui l\xf2ng d\xf9ng account kh\xe1c hoặc x\xf3a connection cũ trước khi add lại.`:`Account ${c} đ\xe3 được th\xeam trước đ\xf3 bởi user: ${d}. Vui l\xf2ng d\xf9ng account kh\xe1c hoặc x\xf3a connection cũ trước khi add lại.`);return e.code="DUPLICATE_PERSONAL_ACCOUNT",e.status=409,e.connectionId=a?.id,e.ownerUser=d,e}(b,{global:o})}if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.chatgptAccountId;m=l.find(c=>{if("oauth"!==c.authType||c.email!==a.email)return!1;let d=c.providerSpecificData?.chatgptAccountId;return!b||!d||b===d})}else"apikey"===a.authType&&a.name&&(m=l.find(b=>"apikey"===b.authType&&b.name===a.name));if(m){let d={...m,...a,updatedAt:f};D(c,d),b=d;return}let p=a.name||null;p||"oauth"!==a.authType&&"access_token"!==a.authType||(p=a.email||`Account ${l.length+1}`);let q=a.priority;q||(q=l.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let r={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:p,priority:q,isActive:void 0===a.isActive||a.isActive,scope:h,ownerUser:i,createdByUser:x(a.createdByUser||i),visibility:a.visibility||("personal"===h?"private":"system"),createdAt:f,updatedAt:f};for(let b of v)void 0!==a[b]&&null!==a[b]&&(r[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(r.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(r.email=a.email),D(c,r),H(c,a.provider,h,i),b=r}),b}async function J(a,b){let c,d=await (0,e.c)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let g=C(e),h={...g,...b,updatedAt:new Date().toISOString()},i=new Set(w.filter(a=>Object.prototype.hasOwnProperty.call(b,a)));D(d,h,{storedData:(0,f.q)(e.data,{}),encryptFields:i}),void 0!==b.priority&&H(d,g.provider,h.scope,h.ownerUser),c=h}),c}async function K(a){let b=await (0,e.c)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider, scope, ownerUser FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),H(b,d.provider,d.scope,d.ownerUser),c=!0)}),c}async function L(a){let b=await (0,e.c)(),c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ? AND scope = 'system' AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0",[a]);return b.run("DELETE FROM providerConnections WHERE provider = ? AND scope = 'system' AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0",[a]),c?.n||0}},49120:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DATA_DIR:()=>m,getDataDir:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="bluerouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}function l(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}let m=l()},74452:(a,b,c)=>{"use strict";c.d(b,{Iq:()=>s,Lh:()=>v,PX:()=>o,Pb:()=>u,XW:()=>t,ek:()=>w,getApiKeyByKey:()=>r,mI:()=>p,yg:()=>q});var d=c(94755),e=c(36366),f=c(644),g=c(490),h=c(27513);let i=!1;function j(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function k(a){return String(a||"").trim().toLowerCase()}async function l(a){if(!i)try{let b=a.all("PRAGMA table_info(apiKeys)"),c=new Set(b.map(a=>a.name));c.has("allowedModels")||a.run("ALTER TABLE apiKeys ADD COLUMN allowedModels TEXT DEFAULT '[]'"),c.has("limits")||a.run("ALTER TABLE apiKeys ADD COLUMN limits TEXT DEFAULT '{}'"),c.has("ownerUser")||a.run("ALTER TABLE apiKeys ADD COLUMN ownerUser TEXT DEFAULT ''"),c.has("createdByUser")||a.run("ALTER TABLE apiKeys ADD COLUMN createdByUser TEXT DEFAULT ''"),c.has("adminDisabled")||a.run("ALTER TABLE apiKeys ADD COLUMN adminDisabled INTEGER DEFAULT 0"),c.has("cavemanMode")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanMode TEXT DEFAULT 'inherit'"),c.has("cavemanLevel")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanLevel TEXT DEFAULT 'lite'");try{a.run("CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_active ON apiKeys(isActive)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_at ON apiKeys(createdAt)")}catch{}i=!0}catch(a){console.log("Could not ensure apiKeys columns:",a?.message||a)}}function m(a={}){let b=[],c=[],d=k(a.ownerUser),e=String(a.search||"").trim().toLowerCase();if(d&&(b.push("(lower(coalesce(ownerUser, '')) = ? OR lower(coalesce(createdByUser, '')) = ?)"),c.push(d,d)),!0===a.isActive?b.push("isActive = 1"):!1===a.isActive&&b.push("(isActive = 0 OR isActive IS NULL)"),e){let a=`%${e}%`;b.push(`(
212
212
  lower(coalesce(name, '')) LIKE ?
213
213
  OR lower(coalesce(key, '')) LIKE ?
214
214
  OR lower(coalesce(id, '')) LIKE ?
@@ -439,7 +439,7 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
439
439
  ) AS visibility,
440
440
  endpoint, status, statusCode, errorMessageShort,
441
441
  promptTokens, completionTokens, totalTokens, cachedTokens, reasoningTokens, cost
442
- FROM usageHistory ORDER BY timestamp DESC, id DESC LIMIT ?`,[Number(a)||100])}finally{await b.close()}}},78335:()=>{},89718:(a,b,c)=>{"use strict";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,nv:()=>d.nv,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(39189)},95658:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(49120);let i=e().join(h.DATA_DIR,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.DATA_DIR,"db.json"),usage:e().join(h.DATA_DIR,"usage.json"),disabled:e().join(h.DATA_DIR,"disabledModels.json"),details:e().join(h.DATA_DIR,"request-details.json")};function m(){for(let a of[h.DATA_DIR,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},96487:()=>{},97914:(a,b,c)=>{"use strict";c.d(b,{KJ:()=>m,VT:()=>o,getPricingForModel:()=>l,r4:()=>j,yF:()=>n});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}function k(a,b){if(!a||!b)return null;if(a[b])return a[b];let c=String(b).toLowerCase();for(let b of Object.keys(a))if(b.toLowerCase()===c)return a[b];return null}async function l(a,b){if(!b)return null;let d=await i();if(a){let c=k(d,a);if(c){let a=k(c,b);if(a)return a}}let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function m(a){let b=await (0,d.c)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function n(a,b){if(!a)return await i();let c=await (0,d.c)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function o(){return await f.clear(),h(),{}}},99703:(a,b,c)=>{"use strict";c.d(b,{BY:()=>F,E5:()=>J,Py:()=>D,Zx:()=>K,_V:()=>l,aX:()=>z,j$:()=>I,rg:()=>C,sZ:()=>E,uw:()=>B});var d=c(94735),e=c(77638);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new d.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._usageStatsCache||(global._usageStatsCache=new Map),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0});let f=global._pendingRequests,g=global._usageStatsCache,h=global._lastErrorProvider,i=global._pendingTimers,j=global._recentRing,k=global._connectionMapCache,l=global._statsEmitter;function m(a){return String(a||"").trim()}function n(a){return m(a).toLowerCase()}function o(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function p(a){if(!0===a||1===a||"1"===a)return!0;if(!1===a||0===a||"0"===a)return!1;if("string"==typeof a){let b=a.trim().toLowerCase();if(["true","yes","on","enabled"].includes(b))return!0;if(["false","no","off","disabled"].includes(b))return!1}return null}function q(a){let b=m(a);return b?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key"}function r(a,b){let c=n(a),d=Number(b);return Number.isFinite(d)&&d>=400?c||"error":c||(Number.isFinite(d),"ok")}function s(a){return["pending","running","in_progress","queued","processing"].includes(n(a))}function t(a,b){let c,d=n(a);if(c=n(d),/^(?:error|fail|failed|timeout|network|aborted|abort|rate_limited|provider_error|gateway_error|parse_error|model_error)(?:\b|[\s_-]|$)/.test(c))return!1;let e=Number(b);if(Number.isFinite(e))return e>=200&&e<300;let f=r(a);return!!["ok","success","succeeded","complete","completed","done","200"].includes(f)||/^(?:2\d\d|ok|success|succeeded|complete|completed|done)(?:\b|[\s_-]|$)/.test(f)}function u(a,b,c){if(b&&(a[b]||(a[b]={requests:0,promptTokens:0,completionTokens:0,cost:0}),a[b].requests+=c.requests||1,a[b].promptTokens+=c.promptTokens||0,a[b].completionTokens+=c.completionTokens||0,a[b].cost+=c.cost||0,c.meta)){let d=a[b].lastUsed;Object.assign(a[b],c.meta),d&&c.meta.lastUsed&&new Date(d).getTime()>new Date(c.meta.lastUsed).getTime()&&(a[b].lastUsed=d)}}async function v(){if(Date.now()-k.ts<3e4)return k.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a({includePersonal:!0}),d={};for(let a of b)d[a.id]={name:a.displayName||a.name||a.email||a.id,displayName:a.displayName||a.name||"",email:a.email||"",provider:a.provider||"",ownerUser:a.ownerUser||"",isPersonal:"personal"===a.scope||"private"===a.visibility||!!a.ownerUser};k.map=d,k.ts=Date.now()}catch{}return k.map}let w=0;async function x(){if((!j.initialized||!(j.items.length>=50))&&!(Date.now()-w<3e4)){w=Date.now();try{let a=await (0,e.Kc)(50);if(!Array.isArray(a)||0===a.length)return;let b=a.reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,apiKey:a.apiKeyFingerprint||a.apiKey,apiKeyOwner:a.apiKeyOwner,accountName:a.accountName,accountEmail:a.accountEmail,accountDisplayName:a.accountDisplayName,ownerUser:a.ownerUser,connectionScope:a.connectionScope,visibility:a.visibility,endpoint:a.endpoint,cost:o(a.cost,0),status:a.status,statusCode:a.statusCode,tokens:{prompt_tokens:o(a.promptTokens,0),completion_tokens:o(a.completionTokens,0)}})),c=new Set(j.items.map(a=>`${a.timestamp}|${a.model}|${a.provider}|${a.connectionId||""}`)),d=b.filter(a=>!c.has(`${a.timestamp}|${a.model}|${a.provider}|${a.connectionId||""}`)),f=[...j.items,...d].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).slice(0,50);j.items=f,j.initialized=!0}catch(a){console.error(`[usageRepo] Failed to backfill recent requests from MySQL: ${a?.message||a||"unknown error"}`)}}}async function y(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;return function(a,b){if(!a||!b)return 0;let c=0,d=b.prompt_tokens||b.input_tokens||0,e=b.cached_tokens||b.cache_read_input_tokens||0;c+=Math.max(0,d-e)*(a.input/1e6),e>0&&(c+=e*((a.cached||a.input)/1e6)),c+=(b.completion_tokens||b.output_tokens||0)*(a.output/1e6);let f=b.reasoning_tokens||0;f>0&&(c+=f*((a.reasoning||a.output)/1e6));let g=b.cache_creation_input_tokens||0;return g>0&&(c+=g*((a.cache_creation||a.input)/1e6)),c}(f,d)}catch(a){return console.error("Error calculating cost:",a),0}}async function z({provider:a=null,model:b=null}={}){let d=await (0,e.d9)();if(!d)return console.error("[usageRepo] MySQL adapter unavailable for recalculateUsageCost"),{groupsUpdated:0,rowsUpdated:0,skippedNoPricing:0};try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=[],g=[];a&&(f.push("provider = ?"),g.push(a)),b&&(f.push("model = ?"),g.push(b));let h=f.length?`WHERE ${f.join(" AND ")}`:"",i=await d.all(`SELECT provider, model,
442
+ FROM usageHistory ORDER BY timestamp DESC, id DESC LIMIT ?`,[Number(a)||100])}finally{await b.close()}}},78335:()=>{},89718:(a,b,c)=>{"use strict";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,nv:()=>d.nv,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(39189)},95658:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(49120);let i=e().join(h.DATA_DIR,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.DATA_DIR,"db.json"),usage:e().join(h.DATA_DIR,"usage.json"),disabled:e().join(h.DATA_DIR,"disabledModels.json"),details:e().join(h.DATA_DIR,"request-details.json")};function m(){for(let a of[h.DATA_DIR,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},96487:()=>{},97914:(a,b,c)=>{"use strict";c.d(b,{KJ:()=>m,VT:()=>o,getPricingForModel:()=>l,r4:()=>j,yF:()=>n});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}function k(a,b){if(!a||!b)return null;if(a[b])return a[b];let c=String(b).toLowerCase();for(let b of Object.keys(a))if(b.toLowerCase()===c)return a[b];return null}async function l(a,b){if(!b)return null;let d=await i();if(a){let c=k(d,a);if(c){let a=k(c,b);if(a)return a}}let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function m(a){let b=await (0,d.c)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function n(a,b){if(!a)return await i();let c=await (0,d.c)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function o(){return await f.clear(),h(),{}}},99703:(a,b,c)=>{"use strict";c.d(b,{BY:()=>F,E5:()=>J,Py:()=>D,Zx:()=>K,_V:()=>l,aX:()=>z,j$:()=>I,rg:()=>C,sZ:()=>E,uw:()=>B});var d=c(94735),e=c(77638);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new d.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._usageStatsCache||(global._usageStatsCache=new Map),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0});let f=global._pendingRequests,g=global._usageStatsCache,h=global._lastErrorProvider,i=global._pendingTimers,j=global._recentRing,k=global._connectionMapCache,l=global._statsEmitter;function m(a){return String(a||"").trim()}function n(a){return m(a).toLowerCase()}function o(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function p(a){if(!0===a||1===a||"1"===a)return!0;if(!1===a||0===a||"0"===a)return!1;if("string"==typeof a){let b=a.trim().toLowerCase();if(["true","yes","on","enabled"].includes(b))return!0;if(["false","no","off","disabled"].includes(b))return!1}return null}function q(a){let b=m(a);return b?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key"}function r(a,b){let c=n(a),d=Number(b);return Number.isFinite(d)&&d>=400?c||"error":c||(Number.isFinite(d),"ok")}function s(a){return["pending","running","in_progress","queued","processing"].includes(n(a))}function t(a,b){let c,d=n(a);if(c=n(d),/^(?:error|fail|failed|timeout|network|aborted|abort|rate_limited|provider_error|gateway_error|parse_error|model_error)(?:\b|[\s_-]|$)/.test(c))return!1;let e=Number(b);if(Number.isFinite(e))return e>=200&&e<300;let f=r(a);return!!["ok","success","succeeded","complete","completed","done","200"].includes(f)||/^(?:2\d\d|ok|success|succeeded|complete|completed|done)(?:\b|[\s_-]|$)/.test(f)}function u(a,b,c){if(b&&(a[b]||(a[b]={requests:0,promptTokens:0,completionTokens:0,cost:0}),a[b].requests+=c.requests||1,a[b].promptTokens+=c.promptTokens||0,a[b].completionTokens+=c.completionTokens||0,a[b].cost+=c.cost||0,c.meta)){let d=a[b].lastUsed;Object.assign(a[b],c.meta),d&&c.meta.lastUsed&&new Date(d).getTime()>new Date(c.meta.lastUsed).getTime()&&(a[b].lastUsed=d)}}async function v(){if(Date.now()-k.ts<3e4)return k.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,46709)),b=await a({includePersonal:!0}),d={};for(let a of b)d[a.id]={name:a.displayName||a.name||a.email||a.id,displayName:a.displayName||a.name||"",email:a.email||"",provider:a.provider||"",ownerUser:a.ownerUser||"",isPersonal:"personal"===a.scope||"private"===a.visibility||!!a.ownerUser};k.map=d,k.ts=Date.now()}catch{}return k.map}let w=0;async function x(){if((!j.initialized||!(j.items.length>=50))&&!(Date.now()-w<3e4)){w=Date.now();try{let a=await (0,e.Kc)(50);if(!Array.isArray(a)||0===a.length)return;let b=a.reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,apiKey:a.apiKeyFingerprint||a.apiKey,apiKeyOwner:a.apiKeyOwner,accountName:a.accountName,accountEmail:a.accountEmail,accountDisplayName:a.accountDisplayName,ownerUser:a.ownerUser,connectionScope:a.connectionScope,visibility:a.visibility,endpoint:a.endpoint,cost:o(a.cost,0),status:a.status,statusCode:a.statusCode,tokens:{prompt_tokens:o(a.promptTokens,0),completion_tokens:o(a.completionTokens,0)}})),c=new Set(j.items.map(a=>`${a.timestamp}|${a.model}|${a.provider}|${a.connectionId||""}`)),d=b.filter(a=>!c.has(`${a.timestamp}|${a.model}|${a.provider}|${a.connectionId||""}`)),f=[...j.items,...d].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).slice(0,50);j.items=f,j.initialized=!0}catch(a){console.error(`[usageRepo] Failed to backfill recent requests from MySQL: ${a?.message||a||"unknown error"}`)}}}async function y(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;return function(a,b){if(!a||!b)return 0;let c=0,d=b.prompt_tokens||b.input_tokens||0,e=b.cached_tokens||b.cache_read_input_tokens||0;c+=Math.max(0,d-e)*(a.input/1e6),e>0&&(c+=e*((a.cached||a.input)/1e6)),c+=(b.completion_tokens||b.output_tokens||0)*(a.output/1e6);let f=b.reasoning_tokens||0;f>0&&(c+=f*((a.reasoning||a.output)/1e6));let g=b.cache_creation_input_tokens||0;return g>0&&(c+=g*((a.cache_creation||a.input)/1e6)),c}(f,d)}catch(a){return console.error("Error calculating cost:",a),0}}async function z({provider:a=null,model:b=null}={}){let d=await (0,e.d9)();if(!d)return console.error("[usageRepo] MySQL adapter unavailable for recalculateUsageCost"),{groupsUpdated:0,rowsUpdated:0,skippedNoPricing:0};try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=[],g=[];a&&(f.push("provider = ?"),g.push(a)),b&&(f.push("model = ?"),g.push(b));let h=f.length?`WHERE ${f.join(" AND ")}`:"",i=await d.all(`SELECT provider, model,
443
443
  SUM(prompt_tokens) AS promptTokens,
444
444
  SUM(completion_tokens) AS completionTokens,
445
445
  SUM(cached_tokens) AS cachedTokens,
@@ -4,4 +4,4 @@ exports.id=4746,exports.ids=[4746],exports.modules={17113:(a,b,c)=>{"use strict"
4
4
  data: ${d}
5
5
 
6
6
  `)}catch{}}}),f.stderr.on("data",b=>console.log(`[mcp:${a}]`,b.toString().trim())),f.on("exit",c=>{console.log(`[mcp:${a}] exited`,c),b.delete(a)}),c}a.exports={getOrSpawn:q,registerSession:function(a,b){let c=q(a),d=g.randomUUID();return c.sessions.set(d,b),d},unregisterSession:function(a,b){let c=m().get(a);c&&c.sessions.delete(b)},sendToChild:function(a,b){let c=m().get(a);if(!c?.proc?.stdin?.writable)throw Error(`Bridge not running: ${a}`);c.proc.stdin.write(`${JSON.stringify(b)}
7
- `)},isRunning:function(a){let b=m().get(a);return!!(b?.proc&&!b.proc.killed&&null===b.proc.exitCode)},findPlugin:p,registerCustomPlugin:function(a){if(!o(a?.command))throw Error(`Blocked: command '${a?.command}' not in MCP allowlist`);n().set(a.name,a)}}},19713:function(a,b,c){a.exports=function(a,b){var d=[function(a,b,c){a.exports=c(34)},function(a,b,c){var d=c(29)("wks"),e=c(33),f=c(2).Symbol,g="function"==typeof f;(a.exports=function(a){return d[a]||(d[a]=g&&f[a]||(g?f:e)("Symbol."+a))}).store=d},function(a,b){var c=a.exports="u">typeof window&&window.Math==Math?window:"u">typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b,c){var d=c(9);a.exports=function(a){if(!d(a))throw TypeError(a+" is not an object!");return a}},function(a,b,c){a.exports=!c(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b,c){var d=c(12),e=c(17);a.exports=c(4)?function(a,b,c){return d.f(a,b,e(1,c))}:function(a,b,c){return a[b]=c,a}},function(a,b){var c=a.exports={version:"2.4.0"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(14);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){var c={}.hasOwnProperty;a.exports=function(a,b){return c.call(a,b)}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){a.exports={}},function(a,b){var c={}.toString;a.exports=function(a){return c.call(a).slice(8,-1)}},function(a,b,c){var d=c(3),e=c(26),f=c(32),g=Object.defineProperty;b.f=c(4)?Object.defineProperty:function(a,b,c){if(d(a),b=f(b,!0),d(c),e)try{return g(a,b,c)}catch(a){}if("get"in c||"set"in c)throw TypeError("Accessors not supported!");return"value"in c&&(a[b]=c.value),a}},function(a,b,c){var d=c(42),e=c(15);a.exports=function(a){return d(e(a))}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(9),e=c(2).document,f=d(e)&&d(e.createElement);a.exports=function(a){return f?e.createElement(a):{}}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(a,b,c){var d=c(12).f,e=c(8),f=c(1)("toStringTag");a.exports=function(a,b,c){a&&!e(a=c?a:a.prototype,f)&&d(a,f,{configurable:!0,value:b})}},function(a,b,c){var d=c(29)("keys"),e=c(33);a.exports=function(a){return d[a]||(d[a]=e(a))}},function(a,b){var c=Math.ceil,d=Math.floor;a.exports=function(a){return isNaN(a*=1)?0:(a>0?d:c)(a)}},function(a,b,c){var d=c(11),e=c(1)("toStringTag"),f="Arguments"==d(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(a){}};a.exports=function(a){var b,c,h;return void 0===a?"Undefined":null===a?"Null":"string"==typeof(c=g(b=Object(a),e))?c:f?d(b):"Object"==(h=d(b))&&"function"==typeof b.callee?"Arguments":h}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,b,c){var d=c(2),e=c(6),f=c(7),g=c(5),h="prototype",i=function(a,b,c){var j,k,l,m=a&i.F,n=a&i.G,o=a&i.S,p=a&i.P,q=a&i.B,r=a&i.W,s=n?e:e[b]||(e[b]={}),t=s[h],u=n?d:o?d[b]:(d[b]||{})[h];for(j in n&&(c=b),c)(k=!m&&u&&void 0!==u[j])&&j in s||(l=k?u[j]:c[j],s[j]=n&&"function"!=typeof u[j]?c[j]:q&&k?f(l,d):r&&u[j]==l?function(a){var b=function(b,c,d){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(b);case 2:return new a(b,c)}return new a(b,c,d)}return a.apply(this,arguments)};return b[h]=a[h],b}(l):p&&"function"==typeof l?f(Function.call,l):l,p&&((s.virtual||(s.virtual={}))[j]=l,a&i.R&&t&&!t[j]&&g(t,j,l)))};i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,i.U=64,i.R=128,a.exports=i},function(a,b){a.exports=function(a){try{return!!a()}catch(a){return!0}}},function(a,b,c){a.exports=c(2).document&&document.documentElement},function(a,b,c){a.exports=!c(4)&&!c(24)(function(){return 7!=Object.defineProperty(c(16)("div"),"a",{get:function(){return 7}}).a})},function(a,b,c){"use strict";var d=c(28),e=c(23),f=c(57),g=c(5),h=c(8),i=c(10),j=c(45),k=c(18),l=c(52),m=c(1)("iterator"),n=!([].keys&&"next"in[].keys()),o="keys",p="values",q=function(){return this};a.exports=function(a,b,c,r,s,t,u){j(c,b,r);var v,w,x,y=function(a){if(!n&&a in C)return C[a];switch(a){case o:case p:return function(){return new c(this,a)}}return function(){return new c(this,a)}},z=b+" Iterator",A=s==p,B=!1,C=a.prototype,D=C[m]||C["@@iterator"]||s&&C[s],E=D||y(s),F=s?A?y("entries"):E:void 0,G="Array"==b&&C.entries||D;if(G&&(x=l(G.call(new a)))!==Object.prototype&&(k(x,z,!0),d||h(x,m)||g(x,m,q)),A&&D&&D.name!==p&&(B=!0,E=function(){return D.call(this)}),(!d||u)&&(n||B||!C[m])&&g(C,m,E),i[b]=E,i[z]=q,s)if(v={values:A?E:y(p),keys:t?E:y(o),entries:F},u)for(w in v)w in C||f(C,w,v[w]);else e(e.P+e.F*(n||B),b,v);return v}},function(a,b){a.exports=!0},function(a,b,c){var d=c(2),e="__core-js_shared__",f=d[e]||(d[e]={});a.exports=function(a){return f[a]||(f[a]={})}},function(a,b,c){var d,e,f,g=c(7),h=c(41),i=c(25),j=c(16),k=c(2),l=k.process,m=k.setImmediate,n=k.clearImmediate,o=k.MessageChannel,p=0,q={},r="onreadystatechange",s=function(){var a=+this;if(q.hasOwnProperty(a)){var b=q[a];delete q[a],b()}},t=function(a){s.call(a.data)};m&&n||(m=function(a){for(var b=[],c=1;arguments.length>c;)b.push(arguments[c++]);return q[++p]=function(){h("function"==typeof a?a:Function(a),b)},d(p),p},n=function(a){delete q[a]},"process"==c(11)(l)?d=function(a){l.nextTick(g(s,a,1))}:o?(f=(e=new o).port2,e.port1.onmessage=t,d=g(f.postMessage,f,1)):k.addEventListener&&"function"==typeof postMessage&&!k.importScripts?(d=function(a){k.postMessage(a+"","*")},k.addEventListener("message",t,!1)):d=r in j("script")?function(a){i.appendChild(j("script"))[r]=function(){i.removeChild(this),s.call(a)}}:function(a){setTimeout(g(s,a,1),0)}),a.exports={set:m,clear:n}},function(a,b,c){var d=c(20),e=Math.min;a.exports=function(a){return a>0?e(d(a),0x1fffffffffffff):0}},function(a,b,c){var d=c(9);a.exports=function(a,b){var c,e;if(!d(a))return a;if(b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a))||"function"==typeof(c=a.valueOf)&&!d(e=c.call(a))||!b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a)))return e;throw TypeError("Can't convert object to primitive value")}},function(a,b){var c=0,d=Math.random();a.exports=function(a){return"Symbol(".concat(void 0===a?"":a,")_",(++c+d).toString(36))}},function(a,b,c){"use strict";function d(a){return(0,i.createHash)("sha256").update(a).digest("hex")}function e(a){switch(j){case"darwin":return a.split("IOPlatformUUID")[1].split("\n")[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return a.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":case"freebsd":return a.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw Error("Unsupported platform: "+process.platform)}}Object.defineProperty(b,"__esModule",{value:!0});var f,g=(f=c(35))&&f.__esModule?f:{default:f};b.machineIdSync=function(a){var b=e((0,h.execSync)(k[j]).toString());return a?b:d(b)},b.machineId=function(a){return new g.default(function(b,c){return(0,h.exec)(k[j],{},function(f,g,h){if(f)return c(Error("Error while obtaining machine id: "+f.stack));var i=e(g.toString());return b(a?i:d(i))})})};var h=c(70),i=c(71),j=process.platform,k={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:{native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"}["win32"!==process.platform?"":"ia32"===process.arch&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(a,b,c){a.exports={default:c(36),__esModule:!0}},function(a,b,c){c(66),c(68),c(69),c(67),a.exports=c(6).Promise},function(a,b){a.exports=function(){}},function(a,b){a.exports=function(a,b,c,d){if(!(a instanceof b)||void 0!==d&&d in a)throw TypeError(c+": incorrect invocation!");return a}},function(a,b,c){var d=c(13),e=c(31),f=c(62);a.exports=function(a){return function(b,c,g){var h,i=d(b),j=e(i.length),k=f(g,j);if(a&&c!=c){for(;j>k;)if((h=i[k++])!=h)return!0}else for(;j>k;k++)if((a||k in i)&&i[k]===c)return a||k||0;return!a&&-1}}},function(a,b,c){var d=c(7),e=c(44),f=c(43),g=c(3),h=c(31),i=c(64),j={},k={},b=a.exports=function(a,b,c,l,m){var n,o,p,q,r=m?function(){return a}:i(a),s=d(c,l,b?2:1),t=0;if("function"!=typeof r)throw TypeError(a+" is not iterable!");if(f(r)){for(n=h(a.length);n>t;t++)if((q=b?s(g(o=a[t])[0],o[1]):s(a[t]))===j||q===k)return q}else for(p=r.call(a);!(o=p.next()).done;)if((q=e(p,s,o.value,b))===j||q===k)return q};b.BREAK=j,b.RETURN=k},function(a,b){a.exports=function(a,b,c){var d=void 0===c;switch(b.length){case 0:return d?a():a.call(c);case 1:return d?a(b[0]):a.call(c,b[0]);case 2:return d?a(b[0],b[1]):a.call(c,b[0],b[1]);case 3:return d?a(b[0],b[1],b[2]):a.call(c,b[0],b[1],b[2]);case 4:return d?a(b[0],b[1],b[2],b[3]):a.call(c,b[0],b[1],b[2],b[3])}return a.apply(c,b)}},function(a,b,c){var d=c(11);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==d(a)?a.split(""):Object(a)}},function(a,b,c){var d=c(10),e=c(1)("iterator"),f=Array.prototype;a.exports=function(a){return void 0!==a&&(d.Array===a||f[e]===a)}},function(a,b,c){var d=c(3);a.exports=function(a,b,c,e){try{return e?b(d(c)[0],c[1]):b(c)}catch(b){var f=a.return;throw void 0!==f&&d(f.call(a)),b}}},function(a,b,c){"use strict";var d=c(49),e=c(17),f=c(18),g={};c(5)(g,c(1)("iterator"),function(){return this}),a.exports=function(a,b,c){a.prototype=d(g,{next:e(1,c)}),f(a,b+" Iterator")}},function(a,b,c){var d=c(1)("iterator"),e=!1;try{var f=[7][d]();f.return=function(){e=!0},Array.from(f,function(){throw 2})}catch(a){}a.exports=function(a,b){if(!b&&!e)return!1;var c=!1;try{var f=[7],g=f[d]();g.next=function(){return{done:c=!0}},f[d]=function(){return g},a(f)}catch(a){}return c}},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(a,b,c){var d=c(2),e=c(30).set,f=d.MutationObserver||d.WebKitMutationObserver,g=d.process,h=d.Promise,i="process"==c(11)(g);a.exports=function(){var a,b,c,j=function(){var d,e;for(i&&(d=g.domain)&&d.exit();a;){e=a.fn,a=a.next;try{e()}catch(d){throw a?c():b=void 0,d}}b=void 0,d&&d.enter()};if(i)c=function(){g.nextTick(j)};else if(f){var k=!0,l=document.createTextNode("");new f(j).observe(l,{characterData:!0}),c=function(){l.data=k=!k}}else if(h&&h.resolve){var m=h.resolve();c=function(){m.then(j)}}else c=function(){e.call(d,j)};return function(d){var e={fn:d,next:void 0};b&&(b.next=e),a||(a=e,c()),b=e}}},function(a,b,c){var d=c(3),e=c(50),f=c(22),g=c(19)("IE_PROTO"),h=function(){},i="prototype",j=function(){var a,b=c(16)("iframe"),d=f.length;for(b.style.display="none",c(25).appendChild(b),b.src="javascript:",(a=b.contentWindow.document).open(),a.write("<script>document.F=Object<\/script>"),a.close(),j=a.F;d--;)delete j[i][f[d]];return j()};a.exports=Object.create||function(a,b){var c;return null!==a?(h[i]=d(a),c=new h,h[i]=null,c[g]=a):c=j(),void 0===b?c:e(c,b)}},function(a,b,c){var d=c(12),e=c(3),f=c(54);a.exports=c(4)?Object.defineProperties:function(a,b){e(a);for(var c,g=f(b),h=g.length,i=0;h>i;)d.f(a,c=g[i++],b[c]);return a}},function(a,b,c){var d=c(55),e=c(17),f=c(13),g=c(32),h=c(8),i=c(26),j=Object.getOwnPropertyDescriptor;b.f=c(4)?j:function(a,b){if(a=f(a),b=g(b,!0),i)try{return j(a,b)}catch(a){}if(h(a,b))return e(!d.f.call(a,b),a[b])}},function(a,b,c){var d=c(8),e=c(63),f=c(19)("IE_PROTO"),g=Object.prototype;a.exports=Object.getPrototypeOf||function(a){return d(a=e(a),f)?a[f]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?g:null}},function(a,b,c){var d=c(8),e=c(13),f=c(39)(!1),g=c(19)("IE_PROTO");a.exports=function(a,b){var c,h=e(a),i=0,j=[];for(c in h)c!=g&&d(h,c)&&j.push(c);for(;b.length>i;)d(h,c=b[i++])&&(~f(j,c)||j.push(c));return j}},function(a,b,c){var d=c(53),e=c(22);a.exports=Object.keys||function(a){return d(a,e)}},function(a,b){b.f=({}).propertyIsEnumerable},function(a,b,c){var d=c(5);a.exports=function(a,b,c){for(var e in b)c&&a[e]?a[e]=b[e]:d(a,e,b[e]);return a}},function(a,b,c){a.exports=c(5)},function(a,b,c){var d=c(9),e=c(3),f=function(a,b){if(e(a),!d(b)&&null!==b)throw TypeError(b+": can't set as prototype!")};a.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(a,b,d){try{(d=c(7)(Function.call,c(51).f(Object.prototype,"__proto__").set,2))(a,[]),b=!(a instanceof Array)}catch(a){b=!0}return function(a,c){return f(a,c),b?a.__proto__=c:d(a,c),a}}({},!1):void 0),check:f}},function(a,b,c){"use strict";var d=c(2),e=c(6),f=c(12),g=c(4),h=c(1)("species");a.exports=function(a){var b="function"==typeof e[a]?e[a]:d[a];g&&b&&!b[h]&&f.f(b,h,{configurable:!0,get:function(){return this}})}},function(a,b,c){var d=c(3),e=c(14),f=c(1)("species");a.exports=function(a,b){var c,g=d(a).constructor;return void 0===g||void 0==(c=d(g)[f])?b:e(c)}},function(a,b,c){var d=c(20),e=c(15);a.exports=function(a){return function(b,c){var f,g,h=String(e(b)),i=d(c),j=h.length;return i<0||i>=j?a?"":void 0:(f=h.charCodeAt(i))<55296||f>56319||i+1===j||(g=h.charCodeAt(i+1))<56320||g>57343?a?h.charAt(i):f:a?h.slice(i,i+2):(f-55296<<10)+(g-56320)+65536}}},function(a,b,c){var d=c(20),e=Math.max,f=Math.min;a.exports=function(a,b){return(a=d(a))<0?e(a+b,0):f(a,b)}},function(a,b,c){var d=c(15);a.exports=function(a){return Object(d(a))}},function(a,b,c){var d=c(21),e=c(1)("iterator"),f=c(10);a.exports=c(6).getIteratorMethod=function(a){if(void 0!=a)return a[e]||a["@@iterator"]||f[d(a)]}},function(a,b,c){"use strict";var d=c(37),e=c(47),f=c(10),g=c(13);a.exports=c(27)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var a=this._t,b=this._k,c=this._i++;return!a||c>=a.length?(this._t=void 0,e(1)):"keys"==b?e(0,c):"values"==b?e(0,a[c]):e(0,[c,a[c]])},"values"),f.Arguments=f.Array,d("keys"),d("values"),d("entries")},function(a,b){},function(a,b,c){"use strict";var d,e,f,g=c(28),h=c(2),i=c(7),j=c(21),k=c(23),l=c(9),m=(c(3),c(14)),n=c(38),o=c(40),p=(c(58).set,c(60)),q=c(30).set,r=c(48)(),s="Promise",t=h.TypeError,u=h.process,v=h[s],u=h.process,w="process"==j(u),x=function(){},y=!!function(){try{var a=v.resolve(1),b=(a.constructor={})[c(1)("species")]=function(a){a(x,x)};return(w||"function"==typeof PromiseRejectionEvent)&&a.then(x)instanceof b}catch(a){}}(),z=function(a,b){return a===b||a===v&&b===f},A=function(a){var b;return!(!l(a)||"function"!=typeof(b=a.then))&&b},B=function(a){return z(v,a)?new C(a):new e(a)},C=e=function(a){var b,c;this.promise=new a(function(a,d){if(void 0!==b||void 0!==c)throw t("Bad Promise constructor");b=a,c=d}),this.resolve=m(b),this.reject=m(c)},D=function(a){try{a()}catch(a){return{error:a}}},E=function(a,b){if(!a._n){a._n=!0;var c=a._c;r(function(){for(var d=a._v,e=1==a._s,f=0;c.length>f;)!function(b){var c,f,g=e?b.ok:b.fail,h=b.resolve,i=b.reject,j=b.domain;try{g?(e||(2==a._h&&H(a),a._h=1),!0===g?c=d:(j&&j.enter(),c=g(d),j&&j.exit()),c===b.promise?i(t("Promise-chain cycle")):(f=A(c))?f.call(c,h,i):h(c)):i(d)}catch(a){i(a)}}(c[f++]);a._c=[],a._n=!1,b&&!a._h&&F(a)})}},F=function(a){q.call(h,function(){var b,c,d,e=a._v;if(G(a)&&(b=D(function(){w?u.emit("unhandledRejection",e,a):(c=h.onunhandledrejection)?c({promise:a,reason:e}):(d=h.console)&&d.error&&d.error("Unhandled promise rejection",e)}),a._h=w||G(a)?2:1),a._a=void 0,b)throw b.error})},G=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if((b=c[d++]).fail||!G(b.promise))return!1;return!0},H=function(a){q.call(h,function(){var b;w?u.emit("rejectionHandled",a):(b=h.onrejectionhandled)&&b({promise:a,reason:a._v})})},I=function(a){var b=this;b._d||(b._d=!0,(b=b._w||b)._v=a,b._s=2,b._a||(b._a=b._c.slice()),E(b,!0))},J=function(a){var b,c=this;if(!c._d){c._d=!0,c=c._w||c;try{if(c===a)throw t("Promise can't be resolved itself");(b=A(a))?r(function(){var d={_w:c,_d:!1};try{b.call(a,i(J,d,1),i(I,d,1))}catch(a){I.call(d,a)}}):(c._v=a,c._s=1,E(c,!1))}catch(a){I.call({_w:c,_d:!1},a)}}};y||(v=function(a){n(this,v,s,"_h"),m(a),d.call(this);try{a(i(J,this,1),i(I,this,1))}catch(a){I.call(this,a)}},(d=function(a){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=c(56)(v.prototype,{then:function(a,b){var c=B(p(this,v));return c.ok="function"!=typeof a||a,c.fail="function"==typeof b&&b,c.domain=w?u.domain:void 0,this._c.push(c),this._a&&this._a.push(c),this._s&&E(this,!1),c.promise},catch:function(a){return this.then(void 0,a)}}),C=function(){var a=new d;this.promise=a,this.resolve=i(J,a,1),this.reject=i(I,a,1)}),k(k.G+k.W+!y*k.F,{Promise:v}),c(18)(v,s),c(59)(s),f=c(6)[s],k(k.S+!y*k.F,s,{reject:function(a){var b=B(this);return(0,b.reject)(a),b.promise}}),k(k.S+k.F*(g||!y),s,{resolve:function(a){if(a instanceof v&&z(a.constructor,this))return a;var b=B(this);return(0,b.resolve)(a),b.promise}}),k(k.S+!(y&&c(46)(function(a){v.all(a).catch(x)}))*k.F,s,{all:function(a){var b=this,c=B(b),d=c.resolve,e=c.reject,f=D(function(){var c=[],f=0,g=1;o(a,!1,function(a){var h=f++,i=!1;c.push(void 0),g++,b.resolve(a).then(function(a){i||(i=!0,c[h]=a,--g||d(c))},e)}),--g||d(c)});return f&&e(f.error),c.promise},race:function(a){var b=this,c=B(b),d=c.reject,e=D(function(){o(a,!1,function(a){b.resolve(a).then(c.resolve,d)})});return e&&d(e.error),c.promise}})},function(a,b,c){"use strict";var d=c(61)(!0);c(27)(String,"String",function(a){this._t=String(a),this._i=0},function(){var a,b=this._t,c=this._i;return c>=b.length?{value:void 0,done:!0}:(a=d(b,c),this._i+=a.length,{value:a,done:!1})})},function(a,b,c){c(65);for(var d=c(2),e=c(5),f=c(10),g=c(1)("toStringTag"),h=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],i=0;i<5;i++){var j=h[i],k=d[j],l=k&&k.prototype;l&&!l[g]&&e(l,g,j),f[j]=f.Array}},function(a,b){a.exports=c(79646)},function(a,b){a.exports=c(55511)}];function e(a){if(f[a])return f[a].exports;var b=f[a]={exports:{},id:a,loaded:!1};return d[a].call(b.exports,b,b.exports,e),b.loaded=!0,b.exports}var f={};return e.m=d,e.c=f,e.p="",e(0)}(c(79646),c(55511))},21350:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>Q,POST:()=>R});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(49120),q=c(54603),r=c(50308),s=c(24424);let t=o.h0.appPort,u=`http://localhost:${t}/api/mcp/`,v=null,w=async()=>(v||(v=await (0,q.Xj)("9r-cli-auth")),v),x=async a=>{let b=await w();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(u)&&(c.headers={...c.headers||{},"x-9r-cli-token":b});return a},y="gateway",z={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},A=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},B=async()=>{let a=A();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},C=()=>A()[0],D=async()=>i().join(await B(),"configLibrary"),E=()=>i().join(C(),"configLibrary"),F=async()=>i().join(await D(),"_meta.json"),G=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},H=()=>i().join(G(),"claude_desktop_config.json"),I=async()=>{try{return(0,r.pX)(await g().readFile(H(),"utf-8"))||{}}catch(a){if("ENOENT"===a.code)return{};throw a}},J=async a=>{await g().mkdir(G(),{recursive:!0}),await g().writeFile(H(),JSON.stringify(a,null,2))},K=async()=>{let a=await I();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await J(a),!0)},L=async()=>{let a=await I();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await J(a)},M=async()=>{for(let a of[...A(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},N=async a=>{try{return(0,r.pX)(await g().readFile(a,"utf-8"))}catch(a){if("ENOENT"===a.code)return null;throw a}},O=async()=>{let a=i().join(E(),"_meta.json"),b=await N(a);if(!b||!b.appliedId){let c=await N(await F());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(E(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function P(a){let b=i().join(C(),"config.json"),c={};try{c=(0,r.pX)(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(C(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function Q(){try{if(!await M())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await N(await F()),b=a?.appliedId||null,c=await D(),d=b?i().join(c,`${b}.json`):null,f=d?await N(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===y&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasBluerouter:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function R(a){try{let{baseUrl:b,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=await a.json();if(!b||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],q=Array.isArray(k)?k:[];if(q.length>0){let{registerCustomPlugin:a}=c(17113),b=q.filter(a=>a&&"string"==typeof a.command&&a.command.trim()).filter(a=>n.ALLOWED_MCP_COMMANDS.has(i().basename(a.command))).map(a=>({name:String(a.name||"").replace(/[^a-zA-Z0-9_-]/g,"").slice(0,64),command:a.command,args:Array.isArray(a.args)?a.args.map(String):[]})).filter(a=>a.name);for(let c of b)try{a(c)}catch{}try{let a=i().join(p.DATA_DIR,"mcp");await g().mkdir(a,{recursive:!0}),await g().writeFile(i().join(a,"customPlugins.json"),JSON.stringify(b,null,2))}catch{}}let r=await x((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${t}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await x((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&(c.url?b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0}):c.command&&b.push({name:c.name,url:`http://localhost:${t}/api/mcp/${encodeURIComponent(c.name)}/sse`,transport:"sse",custom:!0}));return b})(q)),u=[...(0,n.buildManagedMcpServers)(m),...r,...s],v=await K(),w=await O(),A=i().join(E(),`${w.appliedId}.json`),B={...z,inferenceProvider:y,inferenceGatewayBaseUrl:b,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};u.length>0&&(B.managedMcpServers=u),await g().writeFile(A,JSON.stringify(B,null,2));let C=null;try{C=await P(u)}catch(a){C={error:a.message}}try{await L()}catch{}return e.NextResponse.json({success:!0,bootstrapped:v,message:v?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:A,skipApprovals:C,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function S(){try{let a=await N(await F());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await D(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await P([])}catch{}try{await L()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,s.D)([Q,R,S]),(0,d.A)(Q,"00455503c5d88b978f7f5b0aae315fcd8183013002",null),(0,d.A)(R,"40b389e667aff8f0d214dc8a5a2be5530fbadc2a94",null),(0,d.A)(S,"002eec063781191ffd2de04ab4060460a028b87bf1",null)},28286:a=>{"use strict";a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],ALLOWED_MCP_COMMANDS:new Set(["npx","node","uvx","python","python3","bunx","bun"]),buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(75681),f=c(81329);d.rE;let g={npmPackageName:"@jheavenknows/bluerouter",installCmd:"npm i -g @jheavenknows/bluerouter",installCmdLatest:"npm install -g @jheavenknows/bluerouter@latest",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},39006:a=>{"use strict";a.exports={rE:"5.1.54"}},49120:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DATA_DIR:()=>m,getDataDir:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="bluerouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}function l(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}let m=l()},50308:(a,b,c)=>{"use strict";function d(a){return JSON.parse(function(a){let b=String(a??""),c="",d=!1,e="",f=!1;for(let a=0;a<b.length;a++){let g=b[a];if(d){c+=g,f?f=!1:"\\"===g?f=!0:g===e&&(d=!1,e="");continue}if('"'===g||"'"===g){d=!0,e=g,c+=g;continue}if(","===g){let c=a+1;for(;c<b.length&&/\s/.test(b[c]);)c++;if("}"===b[c]||"]"===b[c])continue}c+=g}return c}(function(a){let b=String(a??""),c="",d=!1,e="",f=!1;for(let a=0;a<b.length;a++){let g=b[a],h=b[a+1];if(d){c+=g,f?f=!1:"\\"===g?f=!0:g===e&&(d=!1,e="");continue}if('"'===g||"'"===g){d=!0,e=g,c+=g;continue}if("/"===g&&"/"===h){for(;a<b.length&&"\n"!==b[a]&&"\r"!==b[a];)a++;a<b.length&&(c+=b[a]);continue}if("/"===g&&"*"===h){for(a+=2;a<b.length&&("*"!==b[a]||"/"!==b[a+1]);)("\n"===b[a]||"\r"===b[a])&&(c+=b[a]),a++;a++;continue}c+=g}return c}(a)))}c.d(b,{pX:()=>d})},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="9r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},96487:()=>{}};
7
+ `)},isRunning:function(a){let b=m().get(a);return!!(b?.proc&&!b.proc.killed&&null===b.proc.exitCode)},findPlugin:p,registerCustomPlugin:function(a){if(!o(a?.command))throw Error(`Blocked: command '${a?.command}' not in MCP allowlist`);n().set(a.name,a)}}},19713:function(a,b,c){a.exports=function(a,b){var d=[function(a,b,c){a.exports=c(34)},function(a,b,c){var d=c(29)("wks"),e=c(33),f=c(2).Symbol,g="function"==typeof f;(a.exports=function(a){return d[a]||(d[a]=g&&f[a]||(g?f:e)("Symbol."+a))}).store=d},function(a,b){var c=a.exports="u">typeof window&&window.Math==Math?window:"u">typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b,c){var d=c(9);a.exports=function(a){if(!d(a))throw TypeError(a+" is not an object!");return a}},function(a,b,c){a.exports=!c(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b,c){var d=c(12),e=c(17);a.exports=c(4)?function(a,b,c){return d.f(a,b,e(1,c))}:function(a,b,c){return a[b]=c,a}},function(a,b){var c=a.exports={version:"2.4.0"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(14);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){var c={}.hasOwnProperty;a.exports=function(a,b){return c.call(a,b)}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){a.exports={}},function(a,b){var c={}.toString;a.exports=function(a){return c.call(a).slice(8,-1)}},function(a,b,c){var d=c(3),e=c(26),f=c(32),g=Object.defineProperty;b.f=c(4)?Object.defineProperty:function(a,b,c){if(d(a),b=f(b,!0),d(c),e)try{return g(a,b,c)}catch(a){}if("get"in c||"set"in c)throw TypeError("Accessors not supported!");return"value"in c&&(a[b]=c.value),a}},function(a,b,c){var d=c(42),e=c(15);a.exports=function(a){return d(e(a))}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(9),e=c(2).document,f=d(e)&&d(e.createElement);a.exports=function(a){return f?e.createElement(a):{}}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(a,b,c){var d=c(12).f,e=c(8),f=c(1)("toStringTag");a.exports=function(a,b,c){a&&!e(a=c?a:a.prototype,f)&&d(a,f,{configurable:!0,value:b})}},function(a,b,c){var d=c(29)("keys"),e=c(33);a.exports=function(a){return d[a]||(d[a]=e(a))}},function(a,b){var c=Math.ceil,d=Math.floor;a.exports=function(a){return isNaN(a*=1)?0:(a>0?d:c)(a)}},function(a,b,c){var d=c(11),e=c(1)("toStringTag"),f="Arguments"==d(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(a){}};a.exports=function(a){var b,c,h;return void 0===a?"Undefined":null===a?"Null":"string"==typeof(c=g(b=Object(a),e))?c:f?d(b):"Object"==(h=d(b))&&"function"==typeof b.callee?"Arguments":h}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,b,c){var d=c(2),e=c(6),f=c(7),g=c(5),h="prototype",i=function(a,b,c){var j,k,l,m=a&i.F,n=a&i.G,o=a&i.S,p=a&i.P,q=a&i.B,r=a&i.W,s=n?e:e[b]||(e[b]={}),t=s[h],u=n?d:o?d[b]:(d[b]||{})[h];for(j in n&&(c=b),c)(k=!m&&u&&void 0!==u[j])&&j in s||(l=k?u[j]:c[j],s[j]=n&&"function"!=typeof u[j]?c[j]:q&&k?f(l,d):r&&u[j]==l?function(a){var b=function(b,c,d){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(b);case 2:return new a(b,c)}return new a(b,c,d)}return a.apply(this,arguments)};return b[h]=a[h],b}(l):p&&"function"==typeof l?f(Function.call,l):l,p&&((s.virtual||(s.virtual={}))[j]=l,a&i.R&&t&&!t[j]&&g(t,j,l)))};i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,i.U=64,i.R=128,a.exports=i},function(a,b){a.exports=function(a){try{return!!a()}catch(a){return!0}}},function(a,b,c){a.exports=c(2).document&&document.documentElement},function(a,b,c){a.exports=!c(4)&&!c(24)(function(){return 7!=Object.defineProperty(c(16)("div"),"a",{get:function(){return 7}}).a})},function(a,b,c){"use strict";var d=c(28),e=c(23),f=c(57),g=c(5),h=c(8),i=c(10),j=c(45),k=c(18),l=c(52),m=c(1)("iterator"),n=!([].keys&&"next"in[].keys()),o="keys",p="values",q=function(){return this};a.exports=function(a,b,c,r,s,t,u){j(c,b,r);var v,w,x,y=function(a){if(!n&&a in C)return C[a];switch(a){case o:case p:return function(){return new c(this,a)}}return function(){return new c(this,a)}},z=b+" Iterator",A=s==p,B=!1,C=a.prototype,D=C[m]||C["@@iterator"]||s&&C[s],E=D||y(s),F=s?A?y("entries"):E:void 0,G="Array"==b&&C.entries||D;if(G&&(x=l(G.call(new a)))!==Object.prototype&&(k(x,z,!0),d||h(x,m)||g(x,m,q)),A&&D&&D.name!==p&&(B=!0,E=function(){return D.call(this)}),(!d||u)&&(n||B||!C[m])&&g(C,m,E),i[b]=E,i[z]=q,s)if(v={values:A?E:y(p),keys:t?E:y(o),entries:F},u)for(w in v)w in C||f(C,w,v[w]);else e(e.P+e.F*(n||B),b,v);return v}},function(a,b){a.exports=!0},function(a,b,c){var d=c(2),e="__core-js_shared__",f=d[e]||(d[e]={});a.exports=function(a){return f[a]||(f[a]={})}},function(a,b,c){var d,e,f,g=c(7),h=c(41),i=c(25),j=c(16),k=c(2),l=k.process,m=k.setImmediate,n=k.clearImmediate,o=k.MessageChannel,p=0,q={},r="onreadystatechange",s=function(){var a=+this;if(q.hasOwnProperty(a)){var b=q[a];delete q[a],b()}},t=function(a){s.call(a.data)};m&&n||(m=function(a){for(var b=[],c=1;arguments.length>c;)b.push(arguments[c++]);return q[++p]=function(){h("function"==typeof a?a:Function(a),b)},d(p),p},n=function(a){delete q[a]},"process"==c(11)(l)?d=function(a){l.nextTick(g(s,a,1))}:o?(f=(e=new o).port2,e.port1.onmessage=t,d=g(f.postMessage,f,1)):k.addEventListener&&"function"==typeof postMessage&&!k.importScripts?(d=function(a){k.postMessage(a+"","*")},k.addEventListener("message",t,!1)):d=r in j("script")?function(a){i.appendChild(j("script"))[r]=function(){i.removeChild(this),s.call(a)}}:function(a){setTimeout(g(s,a,1),0)}),a.exports={set:m,clear:n}},function(a,b,c){var d=c(20),e=Math.min;a.exports=function(a){return a>0?e(d(a),0x1fffffffffffff):0}},function(a,b,c){var d=c(9);a.exports=function(a,b){var c,e;if(!d(a))return a;if(b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a))||"function"==typeof(c=a.valueOf)&&!d(e=c.call(a))||!b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a)))return e;throw TypeError("Can't convert object to primitive value")}},function(a,b){var c=0,d=Math.random();a.exports=function(a){return"Symbol(".concat(void 0===a?"":a,")_",(++c+d).toString(36))}},function(a,b,c){"use strict";function d(a){return(0,i.createHash)("sha256").update(a).digest("hex")}function e(a){switch(j){case"darwin":return a.split("IOPlatformUUID")[1].split("\n")[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return a.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":case"freebsd":return a.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw Error("Unsupported platform: "+process.platform)}}Object.defineProperty(b,"__esModule",{value:!0});var f,g=(f=c(35))&&f.__esModule?f:{default:f};b.machineIdSync=function(a){var b=e((0,h.execSync)(k[j]).toString());return a?b:d(b)},b.machineId=function(a){return new g.default(function(b,c){return(0,h.exec)(k[j],{},function(f,g,h){if(f)return c(Error("Error while obtaining machine id: "+f.stack));var i=e(g.toString());return b(a?i:d(i))})})};var h=c(70),i=c(71),j=process.platform,k={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:{native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"}["win32"!==process.platform?"":"ia32"===process.arch&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(a,b,c){a.exports={default:c(36),__esModule:!0}},function(a,b,c){c(66),c(68),c(69),c(67),a.exports=c(6).Promise},function(a,b){a.exports=function(){}},function(a,b){a.exports=function(a,b,c,d){if(!(a instanceof b)||void 0!==d&&d in a)throw TypeError(c+": incorrect invocation!");return a}},function(a,b,c){var d=c(13),e=c(31),f=c(62);a.exports=function(a){return function(b,c,g){var h,i=d(b),j=e(i.length),k=f(g,j);if(a&&c!=c){for(;j>k;)if((h=i[k++])!=h)return!0}else for(;j>k;k++)if((a||k in i)&&i[k]===c)return a||k||0;return!a&&-1}}},function(a,b,c){var d=c(7),e=c(44),f=c(43),g=c(3),h=c(31),i=c(64),j={},k={},b=a.exports=function(a,b,c,l,m){var n,o,p,q,r=m?function(){return a}:i(a),s=d(c,l,b?2:1),t=0;if("function"!=typeof r)throw TypeError(a+" is not iterable!");if(f(r)){for(n=h(a.length);n>t;t++)if((q=b?s(g(o=a[t])[0],o[1]):s(a[t]))===j||q===k)return q}else for(p=r.call(a);!(o=p.next()).done;)if((q=e(p,s,o.value,b))===j||q===k)return q};b.BREAK=j,b.RETURN=k},function(a,b){a.exports=function(a,b,c){var d=void 0===c;switch(b.length){case 0:return d?a():a.call(c);case 1:return d?a(b[0]):a.call(c,b[0]);case 2:return d?a(b[0],b[1]):a.call(c,b[0],b[1]);case 3:return d?a(b[0],b[1],b[2]):a.call(c,b[0],b[1],b[2]);case 4:return d?a(b[0],b[1],b[2],b[3]):a.call(c,b[0],b[1],b[2],b[3])}return a.apply(c,b)}},function(a,b,c){var d=c(11);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==d(a)?a.split(""):Object(a)}},function(a,b,c){var d=c(10),e=c(1)("iterator"),f=Array.prototype;a.exports=function(a){return void 0!==a&&(d.Array===a||f[e]===a)}},function(a,b,c){var d=c(3);a.exports=function(a,b,c,e){try{return e?b(d(c)[0],c[1]):b(c)}catch(b){var f=a.return;throw void 0!==f&&d(f.call(a)),b}}},function(a,b,c){"use strict";var d=c(49),e=c(17),f=c(18),g={};c(5)(g,c(1)("iterator"),function(){return this}),a.exports=function(a,b,c){a.prototype=d(g,{next:e(1,c)}),f(a,b+" Iterator")}},function(a,b,c){var d=c(1)("iterator"),e=!1;try{var f=[7][d]();f.return=function(){e=!0},Array.from(f,function(){throw 2})}catch(a){}a.exports=function(a,b){if(!b&&!e)return!1;var c=!1;try{var f=[7],g=f[d]();g.next=function(){return{done:c=!0}},f[d]=function(){return g},a(f)}catch(a){}return c}},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(a,b,c){var d=c(2),e=c(30).set,f=d.MutationObserver||d.WebKitMutationObserver,g=d.process,h=d.Promise,i="process"==c(11)(g);a.exports=function(){var a,b,c,j=function(){var d,e;for(i&&(d=g.domain)&&d.exit();a;){e=a.fn,a=a.next;try{e()}catch(d){throw a?c():b=void 0,d}}b=void 0,d&&d.enter()};if(i)c=function(){g.nextTick(j)};else if(f){var k=!0,l=document.createTextNode("");new f(j).observe(l,{characterData:!0}),c=function(){l.data=k=!k}}else if(h&&h.resolve){var m=h.resolve();c=function(){m.then(j)}}else c=function(){e.call(d,j)};return function(d){var e={fn:d,next:void 0};b&&(b.next=e),a||(a=e,c()),b=e}}},function(a,b,c){var d=c(3),e=c(50),f=c(22),g=c(19)("IE_PROTO"),h=function(){},i="prototype",j=function(){var a,b=c(16)("iframe"),d=f.length;for(b.style.display="none",c(25).appendChild(b),b.src="javascript:",(a=b.contentWindow.document).open(),a.write("<script>document.F=Object<\/script>"),a.close(),j=a.F;d--;)delete j[i][f[d]];return j()};a.exports=Object.create||function(a,b){var c;return null!==a?(h[i]=d(a),c=new h,h[i]=null,c[g]=a):c=j(),void 0===b?c:e(c,b)}},function(a,b,c){var d=c(12),e=c(3),f=c(54);a.exports=c(4)?Object.defineProperties:function(a,b){e(a);for(var c,g=f(b),h=g.length,i=0;h>i;)d.f(a,c=g[i++],b[c]);return a}},function(a,b,c){var d=c(55),e=c(17),f=c(13),g=c(32),h=c(8),i=c(26),j=Object.getOwnPropertyDescriptor;b.f=c(4)?j:function(a,b){if(a=f(a),b=g(b,!0),i)try{return j(a,b)}catch(a){}if(h(a,b))return e(!d.f.call(a,b),a[b])}},function(a,b,c){var d=c(8),e=c(63),f=c(19)("IE_PROTO"),g=Object.prototype;a.exports=Object.getPrototypeOf||function(a){return d(a=e(a),f)?a[f]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?g:null}},function(a,b,c){var d=c(8),e=c(13),f=c(39)(!1),g=c(19)("IE_PROTO");a.exports=function(a,b){var c,h=e(a),i=0,j=[];for(c in h)c!=g&&d(h,c)&&j.push(c);for(;b.length>i;)d(h,c=b[i++])&&(~f(j,c)||j.push(c));return j}},function(a,b,c){var d=c(53),e=c(22);a.exports=Object.keys||function(a){return d(a,e)}},function(a,b){b.f=({}).propertyIsEnumerable},function(a,b,c){var d=c(5);a.exports=function(a,b,c){for(var e in b)c&&a[e]?a[e]=b[e]:d(a,e,b[e]);return a}},function(a,b,c){a.exports=c(5)},function(a,b,c){var d=c(9),e=c(3),f=function(a,b){if(e(a),!d(b)&&null!==b)throw TypeError(b+": can't set as prototype!")};a.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(a,b,d){try{(d=c(7)(Function.call,c(51).f(Object.prototype,"__proto__").set,2))(a,[]),b=!(a instanceof Array)}catch(a){b=!0}return function(a,c){return f(a,c),b?a.__proto__=c:d(a,c),a}}({},!1):void 0),check:f}},function(a,b,c){"use strict";var d=c(2),e=c(6),f=c(12),g=c(4),h=c(1)("species");a.exports=function(a){var b="function"==typeof e[a]?e[a]:d[a];g&&b&&!b[h]&&f.f(b,h,{configurable:!0,get:function(){return this}})}},function(a,b,c){var d=c(3),e=c(14),f=c(1)("species");a.exports=function(a,b){var c,g=d(a).constructor;return void 0===g||void 0==(c=d(g)[f])?b:e(c)}},function(a,b,c){var d=c(20),e=c(15);a.exports=function(a){return function(b,c){var f,g,h=String(e(b)),i=d(c),j=h.length;return i<0||i>=j?a?"":void 0:(f=h.charCodeAt(i))<55296||f>56319||i+1===j||(g=h.charCodeAt(i+1))<56320||g>57343?a?h.charAt(i):f:a?h.slice(i,i+2):(f-55296<<10)+(g-56320)+65536}}},function(a,b,c){var d=c(20),e=Math.max,f=Math.min;a.exports=function(a,b){return(a=d(a))<0?e(a+b,0):f(a,b)}},function(a,b,c){var d=c(15);a.exports=function(a){return Object(d(a))}},function(a,b,c){var d=c(21),e=c(1)("iterator"),f=c(10);a.exports=c(6).getIteratorMethod=function(a){if(void 0!=a)return a[e]||a["@@iterator"]||f[d(a)]}},function(a,b,c){"use strict";var d=c(37),e=c(47),f=c(10),g=c(13);a.exports=c(27)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var a=this._t,b=this._k,c=this._i++;return!a||c>=a.length?(this._t=void 0,e(1)):"keys"==b?e(0,c):"values"==b?e(0,a[c]):e(0,[c,a[c]])},"values"),f.Arguments=f.Array,d("keys"),d("values"),d("entries")},function(a,b){},function(a,b,c){"use strict";var d,e,f,g=c(28),h=c(2),i=c(7),j=c(21),k=c(23),l=c(9),m=(c(3),c(14)),n=c(38),o=c(40),p=(c(58).set,c(60)),q=c(30).set,r=c(48)(),s="Promise",t=h.TypeError,u=h.process,v=h[s],u=h.process,w="process"==j(u),x=function(){},y=!!function(){try{var a=v.resolve(1),b=(a.constructor={})[c(1)("species")]=function(a){a(x,x)};return(w||"function"==typeof PromiseRejectionEvent)&&a.then(x)instanceof b}catch(a){}}(),z=function(a,b){return a===b||a===v&&b===f},A=function(a){var b;return!(!l(a)||"function"!=typeof(b=a.then))&&b},B=function(a){return z(v,a)?new C(a):new e(a)},C=e=function(a){var b,c;this.promise=new a(function(a,d){if(void 0!==b||void 0!==c)throw t("Bad Promise constructor");b=a,c=d}),this.resolve=m(b),this.reject=m(c)},D=function(a){try{a()}catch(a){return{error:a}}},E=function(a,b){if(!a._n){a._n=!0;var c=a._c;r(function(){for(var d=a._v,e=1==a._s,f=0;c.length>f;)!function(b){var c,f,g=e?b.ok:b.fail,h=b.resolve,i=b.reject,j=b.domain;try{g?(e||(2==a._h&&H(a),a._h=1),!0===g?c=d:(j&&j.enter(),c=g(d),j&&j.exit()),c===b.promise?i(t("Promise-chain cycle")):(f=A(c))?f.call(c,h,i):h(c)):i(d)}catch(a){i(a)}}(c[f++]);a._c=[],a._n=!1,b&&!a._h&&F(a)})}},F=function(a){q.call(h,function(){var b,c,d,e=a._v;if(G(a)&&(b=D(function(){w?u.emit("unhandledRejection",e,a):(c=h.onunhandledrejection)?c({promise:a,reason:e}):(d=h.console)&&d.error&&d.error("Unhandled promise rejection",e)}),a._h=w||G(a)?2:1),a._a=void 0,b)throw b.error})},G=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if((b=c[d++]).fail||!G(b.promise))return!1;return!0},H=function(a){q.call(h,function(){var b;w?u.emit("rejectionHandled",a):(b=h.onrejectionhandled)&&b({promise:a,reason:a._v})})},I=function(a){var b=this;b._d||(b._d=!0,(b=b._w||b)._v=a,b._s=2,b._a||(b._a=b._c.slice()),E(b,!0))},J=function(a){var b,c=this;if(!c._d){c._d=!0,c=c._w||c;try{if(c===a)throw t("Promise can't be resolved itself");(b=A(a))?r(function(){var d={_w:c,_d:!1};try{b.call(a,i(J,d,1),i(I,d,1))}catch(a){I.call(d,a)}}):(c._v=a,c._s=1,E(c,!1))}catch(a){I.call({_w:c,_d:!1},a)}}};y||(v=function(a){n(this,v,s,"_h"),m(a),d.call(this);try{a(i(J,this,1),i(I,this,1))}catch(a){I.call(this,a)}},(d=function(a){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=c(56)(v.prototype,{then:function(a,b){var c=B(p(this,v));return c.ok="function"!=typeof a||a,c.fail="function"==typeof b&&b,c.domain=w?u.domain:void 0,this._c.push(c),this._a&&this._a.push(c),this._s&&E(this,!1),c.promise},catch:function(a){return this.then(void 0,a)}}),C=function(){var a=new d;this.promise=a,this.resolve=i(J,a,1),this.reject=i(I,a,1)}),k(k.G+k.W+!y*k.F,{Promise:v}),c(18)(v,s),c(59)(s),f=c(6)[s],k(k.S+!y*k.F,s,{reject:function(a){var b=B(this);return(0,b.reject)(a),b.promise}}),k(k.S+k.F*(g||!y),s,{resolve:function(a){if(a instanceof v&&z(a.constructor,this))return a;var b=B(this);return(0,b.resolve)(a),b.promise}}),k(k.S+!(y&&c(46)(function(a){v.all(a).catch(x)}))*k.F,s,{all:function(a){var b=this,c=B(b),d=c.resolve,e=c.reject,f=D(function(){var c=[],f=0,g=1;o(a,!1,function(a){var h=f++,i=!1;c.push(void 0),g++,b.resolve(a).then(function(a){i||(i=!0,c[h]=a,--g||d(c))},e)}),--g||d(c)});return f&&e(f.error),c.promise},race:function(a){var b=this,c=B(b),d=c.reject,e=D(function(){o(a,!1,function(a){b.resolve(a).then(c.resolve,d)})});return e&&d(e.error),c.promise}})},function(a,b,c){"use strict";var d=c(61)(!0);c(27)(String,"String",function(a){this._t=String(a),this._i=0},function(){var a,b=this._t,c=this._i;return c>=b.length?{value:void 0,done:!0}:(a=d(b,c),this._i+=a.length,{value:a,done:!1})})},function(a,b,c){c(65);for(var d=c(2),e=c(5),f=c(10),g=c(1)("toStringTag"),h=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],i=0;i<5;i++){var j=h[i],k=d[j],l=k&&k.prototype;l&&!l[g]&&e(l,g,j),f[j]=f.Array}},function(a,b){a.exports=c(79646)},function(a,b){a.exports=c(55511)}];function e(a){if(f[a])return f[a].exports;var b=f[a]={exports:{},id:a,loaded:!1};return d[a].call(b.exports,b,b.exports,e),b.loaded=!0,b.exports}var f={};return e.m=d,e.c=f,e.p="",e(0)}(c(79646),c(55511))},21350:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>Q,POST:()=>R});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(49120),q=c(54603),r=c(50308),s=c(24424);let t=o.h0.appPort,u=`http://localhost:${t}/api/mcp/`,v=null,w=async()=>(v||(v=await (0,q.Xj)("9r-cli-auth")),v),x=async a=>{let b=await w();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(u)&&(c.headers={...c.headers||{},"x-9r-cli-token":b});return a},y="gateway",z={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},A=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},B=async()=>{let a=A();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},C=()=>A()[0],D=async()=>i().join(await B(),"configLibrary"),E=()=>i().join(C(),"configLibrary"),F=async()=>i().join(await D(),"_meta.json"),G=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},H=()=>i().join(G(),"claude_desktop_config.json"),I=async()=>{try{return(0,r.pX)(await g().readFile(H(),"utf-8"))||{}}catch(a){if("ENOENT"===a.code)return{};throw a}},J=async a=>{await g().mkdir(G(),{recursive:!0}),await g().writeFile(H(),JSON.stringify(a,null,2))},K=async()=>{let a=await I();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await J(a),!0)},L=async()=>{let a=await I();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await J(a)},M=async()=>{for(let a of[...A(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},N=async a=>{try{return(0,r.pX)(await g().readFile(a,"utf-8"))}catch(a){if("ENOENT"===a.code)return null;throw a}},O=async()=>{let a=i().join(E(),"_meta.json"),b=await N(a);if(!b||!b.appliedId){let c=await N(await F());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(E(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function P(a){let b=i().join(C(),"config.json"),c={};try{c=(0,r.pX)(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(C(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function Q(){try{if(!await M())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await N(await F()),b=a?.appliedId||null,c=await D(),d=b?i().join(c,`${b}.json`):null,f=d?await N(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===y&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasBluerouter:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function R(a){try{let{baseUrl:b,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=await a.json();if(!b||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],q=Array.isArray(k)?k:[];if(q.length>0){let{registerCustomPlugin:a}=c(17113),b=q.filter(a=>a&&"string"==typeof a.command&&a.command.trim()).filter(a=>n.ALLOWED_MCP_COMMANDS.has(i().basename(a.command))).map(a=>({name:String(a.name||"").replace(/[^a-zA-Z0-9_-]/g,"").slice(0,64),command:a.command,args:Array.isArray(a.args)?a.args.map(String):[]})).filter(a=>a.name);for(let c of b)try{a(c)}catch{}try{let a=i().join(p.DATA_DIR,"mcp");await g().mkdir(a,{recursive:!0}),await g().writeFile(i().join(a,"customPlugins.json"),JSON.stringify(b,null,2))}catch{}}let r=await x((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${t}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await x((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&(c.url?b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0}):c.command&&b.push({name:c.name,url:`http://localhost:${t}/api/mcp/${encodeURIComponent(c.name)}/sse`,transport:"sse",custom:!0}));return b})(q)),u=[...(0,n.buildManagedMcpServers)(m),...r,...s],v=await K(),w=await O(),A=i().join(E(),`${w.appliedId}.json`),B={...z,inferenceProvider:y,inferenceGatewayBaseUrl:b,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};u.length>0&&(B.managedMcpServers=u),await g().writeFile(A,JSON.stringify(B,null,2));let C=null;try{C=await P(u)}catch(a){C={error:a.message}}try{await L()}catch{}return e.NextResponse.json({success:!0,bootstrapped:v,message:v?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:A,skipApprovals:C,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function S(){try{let a=await N(await F());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await D(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await P([])}catch{}try{await L()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,s.D)([Q,R,S]),(0,d.A)(Q,"00455503c5d88b978f7f5b0aae315fcd8183013002",null),(0,d.A)(R,"40b389e667aff8f0d214dc8a5a2be5530fbadc2a94",null),(0,d.A)(S,"002eec063781191ffd2de04ab4060460a028b87bf1",null)},28286:a=>{"use strict";a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],ALLOWED_MCP_COMMANDS:new Set(["npx","node","uvx","python","python3","bunx","bun"]),buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(75681),f=c(81329);d.rE;let g={npmPackageName:"@jheavenknows/bluerouter",installCmd:"npm i -g @jheavenknows/bluerouter",installCmdLatest:"npm install -g @jheavenknows/bluerouter@latest",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},39006:a=>{"use strict";a.exports={rE:"5.1.55"}},49120:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DATA_DIR:()=>m,getDataDir:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="bluerouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}function l(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}let m=l()},50308:(a,b,c)=>{"use strict";function d(a){return JSON.parse(function(a){let b=String(a??""),c="",d=!1,e="",f=!1;for(let a=0;a<b.length;a++){let g=b[a];if(d){c+=g,f?f=!1:"\\"===g?f=!0:g===e&&(d=!1,e="");continue}if('"'===g||"'"===g){d=!0,e=g,c+=g;continue}if(","===g){let c=a+1;for(;c<b.length&&/\s/.test(b[c]);)c++;if("}"===b[c]||"]"===b[c])continue}c+=g}return c}(function(a){let b=String(a??""),c="",d=!1,e="",f=!1;for(let a=0;a<b.length;a++){let g=b[a],h=b[a+1];if(d){c+=g,f?f=!1:"\\"===g?f=!0:g===e&&(d=!1,e="");continue}if('"'===g||"'"===g){d=!0,e=g,c+=g;continue}if("/"===g&&"/"===h){for(;a<b.length&&"\n"!==b[a]&&"\r"!==b[a];)a++;a<b.length&&(c+=b[a]);continue}if("/"===g&&"*"===h){for(a+=2;a<b.length&&("*"!==b[a]||"/"!==b[a+1]);)("\n"===b[a]||"\r"===b[a])&&(c+=b[a]),a++;a++;continue}c+=g}return c}(a)))}c.d(b,{pX:()=>d})},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="9r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},96487:()=>{}};
@@ -1,10 +1,10 @@
1
- "use strict";exports.id=5276,exports.ids=[5276],exports.modules={14938:(a,b,c)=>{c.d(b,{HI:()=>t,x8:()=>u});var d=c(55511),e=c.n(d),f=c(79748),g=c.n(f),h=c(21820),i=c.n(h),j=c(33873),k=c.n(j);let l=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(i().homedir(),".bluerouter"),m=k().join(l,"resource-monitor-servers.json");async function n(){await g().mkdir(l,{recursive:!0});try{let a=JSON.parse(await g().readFile(m,"utf8"));return{servers:Array.isArray(a?.servers)?a.servers:[]}}catch{return{servers:[]}}}async function o(a){await g().mkdir(l,{recursive:!0});let b=`${m}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify({servers:a.servers||[]},null,2)),await g().rename(b,m)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function p(){return new Date().toISOString()}function q(a,b,c,d=null){return Object.prototype.hasOwnProperty.call(a,c)?a[c]:Object.prototype.hasOwnProperty.call(b,c)?b[c]:d}function r(a={},b={}){let c=String(a.host??b.host??"").trim();return{id:b.id||a.id||e().randomUUID(),name:String(a.name??b.name??c??"Linux server").trim()||c||"Linux server",host:c,sshPort:Math.max(1,Number(a.sshPort??b.sshPort??22)||22),sshUser:String(a.sshUser??b.sshUser??"root").trim()||"root",useSudo:a.useSudo??b.useSudo??!0,agentPort:Math.max(1,Number(a.agentPort??b.agentPort??19998)||19998),agentToken:String(a.agentToken??b.agentToken??e().randomBytes(24).toString("hex")),enabled:a.enabled??b.enabled??!0,notes:String(a.notes??b.notes??"").trim(),lastStatus:q(a,b,"lastStatus"),lastStatusAt:q(a,b,"lastStatusAt"),lastError:q(a,b,"lastError"),lastErrorAt:q(a,b,"lastErrorAt"),lastInstallAt:q(a,b,"lastInstallAt"),lastInstallOk:q(a,b,"lastInstallOk",!1),lastInstallLog:q(a,b,"lastInstallLog",""),createdAt:b.createdAt||p(),updatedAt:p()}}function s(a){if(!a)return null;let{agentToken:b,...c}=a;return c}async function t({includeSecrets:a=!1}={}){let b=(await n()).servers.map(a=>r(a,a));return a?b:b.map(s)}async function u(a){if(!Array.isArray(a))throw Error("Invalid resource monitor servers payload");let b=new Set,c=a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid resource monitor server entry");let c=String(a.id||"").trim();if(!c)throw Error("Resource monitor server ID is required");if(b.has(c))throw Error(`Duplicate resource monitor server ID: ${c}`);return b.add(c),r({...a,id:c},{...a,id:c})});return await o({servers:c}),c}},20437:(a,b,c)=>{c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(53859);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},24081:(a,b,c)=>{c.d(b,{c:()=>k});var d=c(20437);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(8062).then(c.bind(c,38062));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(8469).then(c.bind(c,88469));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(4803).then(c.bind(c,54803));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(6252).then(c.bind(c,66252));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(3824).then(c.bind(c,83824));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},45874:(a,b,c)=>{c.d(b,{Xx:()=>j,exportSettings:()=>k,getSettings:()=>i});var d=c(24081),e=c(50743);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},providerSchedules:{},providerHealthChecks:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireApiKey:!0,requireLogin:!0,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",ldapMonitorAdminGroupDn:"",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full",sidebarAdvancedToolsVisible:!0,personalOAuthProviderPermissions:{},siteTitle:"",siteShortName:"",siteDescription:"",brandingLogo:null,brandingFavicon:null};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function h(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b.requireApiKey=!0,b.requireLogin=!0,b}async function i(){return h(await g())}async function j(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a,requireApiKey:!0,requireLogin:!0},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h(b)}async function k(){return await g()}},50743:(a,b,c)=>{function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},53859:(a,b,c)=>{c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="bluerouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}()},58609:(a,b,c)=>{c.d(b,{U:()=>f});var d=c(24081),e=c(50743);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},87517:(a,b,c)=>{c.d(b,{getApiKeyByKey:()=>p});var d=c(24081),e=c(50743);let f=Object.freeze({enabled:!0,requestsPerMinute:20,promptCharsMax:12e4,maxOutputTokens:0,forceThinkingOff:!0,allowedIpCidrs:[],expiresAt:""}),g=new Set(Object.keys(f));function h(a,b=0){let c=Number(a);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function i(a,b=!0){if(null==a||""===a)return b;if("boolean"==typeof a)return a;if("number"==typeof a)return 0!==a;let c=String(a).trim().toLowerCase();return!["false","0","no","off"].includes(c)&&(!!["true","1","yes","on"].includes(c)||b)}function j(a){return a&&"object"==typeof a&&!Array.isArray(a)}let k=Object.freeze(["inherit","on","off"]),l=Object.freeze(["lite","full","ultra"]),m=!1;function n(a){return String(a||"").trim().toLowerCase()}async function o(a){if(!m)try{let b=a.all("PRAGMA table_info(apiKeys)"),c=new Set(b.map(a=>a.name));c.has("allowedModels")||a.run("ALTER TABLE apiKeys ADD COLUMN allowedModels TEXT DEFAULT '[]'"),c.has("limits")||a.run("ALTER TABLE apiKeys ADD COLUMN limits TEXT DEFAULT '{}'"),c.has("ownerUser")||a.run("ALTER TABLE apiKeys ADD COLUMN ownerUser TEXT DEFAULT ''"),c.has("createdByUser")||a.run("ALTER TABLE apiKeys ADD COLUMN createdByUser TEXT DEFAULT ''"),c.has("adminDisabled")||a.run("ALTER TABLE apiKeys ADD COLUMN adminDisabled INTEGER DEFAULT 0"),c.has("cavemanMode")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanMode TEXT DEFAULT 'inherit'"),c.has("cavemanLevel")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanLevel TEXT DEFAULT 'lite'");try{a.run("CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_active ON apiKeys(isActive)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_at ON apiKeys(createdAt)")}catch{}m=!0}catch(a){console.log("Could not ensure apiKeys columns:",a?.message||a)}}async function p(a){let b;if(!a)return null;let c=await (0,d.c)();await o(c);var m,p=c.get("SELECT * FROM apiKeys WHERE key = ?",[a]);return p?{id:p.id,key:p.key,name:p.name,machineId:p.machineId,isActive:1===p.isActive||!0===p.isActive,adminDisabled:1===p.adminDisabled||!0===p.adminDisabled,allowedModels:Array.isArray(m=(0,e.q)(p.allowedModels,[]))?[...new Set(m.map(a=>String(a||"").trim()).filter(Boolean))]:[],limits:function(a={}){var b;if(!(j(a)&&Object.keys(a).some(a=>g.has(a))))return{};let c=j(a)?a:{};return{enabled:i(c.enabled,f.enabled),requestsPerMinute:h(c.requestsPerMinute,0),promptCharsMax:h(c.promptCharsMax,0),maxOutputTokens:h(c.maxOutputTokens??c.outputTokensMax??c.maxTokens??c.max_tokens??c.max_completion_tokens,0),forceThinkingOff:i(c.forceThinkingOff,f.forceThinkingOff),allowedIpCidrs:Array.isArray(b=c.allowedIpCidrs)?[...new Set(b.map(a=>String(a||"").trim()).filter(Boolean))]:[],expiresAt:String(c.expiresAt||"").trim()}}((0,e.q)(p.limits,{})),ownerUser:n(p.ownerUser),createdByUser:n(p.createdByUser),cavemanMode:(b=String(p.cavemanMode||"inherit").trim().toLowerCase(),k.includes(b)?b:"inherit"),cavemanLevel:function(a,b="lite"){let c=String(a||b).trim().toLowerCase();return l.includes(c)?c:b}(p.cavemanLevel,"lite"),createdAt:p.createdAt}:null}},90181:(a,b,c)=>{c.d(b,{getPricingForModel:()=>g}),c(24081);let d=(0,c(58609).U)("pricing");async function e(){return await d.getAll()}function f(a,b){if(!a||!b)return null;if(a[b])return a[b];let c=String(b).toLowerCase();for(let b of Object.keys(a))if(b.toLowerCase()===c)return a[b];return null}async function g(a,b){if(!b)return null;let d=await e();if(a){let c=f(d,a);if(c){let a=f(c,b);if(a)return a}}let{getPricingForModel:g}=await c.e(7464).then(c.bind(c,87464));return g(a,b)}},92216:(a,b,c)=>{c.d(b,{Mc:()=>j,getProviderConnections:()=>i,rj:()=>k});var d=c(24081),e=c(50743);function f(a){return String(a||"").trim().toLowerCase()}function g(a){return"personal"===a?"personal":"system"}function h(a){if(!a)return null;let b=(0,e.q)(a.data,{}),c=f(a.ownerUser||b.ownerUser),d=f(a.createdByUser||b.createdByUser),h=a.visibility||b.visibility||(c?"private":"system"),i="personal"===g(a.scope||b.scope)||c||"private"===h?"personal":"system";return{...b,id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,scope:i,ownerUser:c,createdByUser:d,visibility:h||("personal"===i?"private":"system"),createdAt:a.createdAt,updatedAt:a.updatedAt}}async function i(a={}){let b=await (0,d.c)(),c=[],e=[];a.provider&&(c.push("provider = ?"),e.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),void 0!==a.scope&&"personal"===g(a.scope)?(c.push("(scope = ? OR visibility = ? OR length(trim(coalesce(ownerUser, ''))) > 0)"),e.push("personal","private")):(void 0!==a.scope||!0!==a.includePersonal)&&(c.push("scope = ?"),e.push("system"),c.push("coalesce(visibility, 'system') <> ?"),e.push("private"),c.push("length(trim(coalesce(ownerUser, ''))) = 0")),void 0!==a.ownerUser&&(c.push("lower(coalesce(ownerUser, '')) = ?"),e.push(f(a.ownerUser)));let j=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,k=b.all(j,e).map(h);return k.sort((a,b)=>(a.priority||999)-(b.priority||999)),k}async function j(a){return h((await (0,d.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}async function k(a,b){let c,i=await (0,d.c)();return i.transaction(()=>{let d,j=i.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!j){c=null;return}let k=h(j),l={...k,...b,updatedAt:new Date().toISOString()};d=function(a){let{id:b,provider:c,authType:d,name:h,email:i,priority:j,isActive:k,scope:l,ownerUser:m,createdByUser:n,visibility:o,createdAt:p,updatedAt:q,...r}=a,s=f(m),t=o||(s?"private":void 0),u="personal"===g(l)||s||"private"===t?"personal":"system";return{id:b,provider:c,authType:d,name:h??null,email:i??null,priority:j??null,isActive:+(!1!==k),scope:u,ownerUser:s,createdByUser:f(n),visibility:t||("personal"===u?"private":"system"),data:(0,e.s)(r),createdAt:p,updatedAt:q}}(l),i.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, scope, ownerUser, createdByUser, visibility, data, createdAt, updatedAt)
1
+ "use strict";exports.id=5276,exports.ids=[5276],exports.modules={14938:(a,b,c)=>{c.d(b,{HI:()=>t,x8:()=>u});var d=c(55511),e=c.n(d),f=c(79748),g=c.n(f),h=c(21820),i=c.n(h),j=c(33873),k=c.n(j);let l=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(i().homedir(),".bluerouter"),m=k().join(l,"resource-monitor-servers.json");async function n(){await g().mkdir(l,{recursive:!0});try{let a=JSON.parse(await g().readFile(m,"utf8"));return{servers:Array.isArray(a?.servers)?a.servers:[]}}catch{return{servers:[]}}}async function o(a){await g().mkdir(l,{recursive:!0});let b=`${m}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify({servers:a.servers||[]},null,2)),await g().rename(b,m)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function p(){return new Date().toISOString()}function q(a,b,c,d=null){return Object.prototype.hasOwnProperty.call(a,c)?a[c]:Object.prototype.hasOwnProperty.call(b,c)?b[c]:d}function r(a={},b={}){let c=String(a.host??b.host??"").trim();return{id:b.id||a.id||e().randomUUID(),name:String(a.name??b.name??c??"Linux server").trim()||c||"Linux server",host:c,sshPort:Math.max(1,Number(a.sshPort??b.sshPort??22)||22),sshUser:String(a.sshUser??b.sshUser??"root").trim()||"root",useSudo:a.useSudo??b.useSudo??!0,agentPort:Math.max(1,Number(a.agentPort??b.agentPort??19998)||19998),agentToken:String(a.agentToken??b.agentToken??e().randomBytes(24).toString("hex")),enabled:a.enabled??b.enabled??!0,notes:String(a.notes??b.notes??"").trim(),lastStatus:q(a,b,"lastStatus"),lastStatusAt:q(a,b,"lastStatusAt"),lastError:q(a,b,"lastError"),lastErrorAt:q(a,b,"lastErrorAt"),lastInstallAt:q(a,b,"lastInstallAt"),lastInstallOk:q(a,b,"lastInstallOk",!1),lastInstallLog:q(a,b,"lastInstallLog",""),createdAt:b.createdAt||p(),updatedAt:p()}}function s(a){if(!a)return null;let{agentToken:b,...c}=a;return c}async function t({includeSecrets:a=!1}={}){let b=(await n()).servers.map(a=>r(a,a));return a?b:b.map(s)}async function u(a){if(!Array.isArray(a))throw Error("Invalid resource monitor servers payload");let b=new Set,c=a.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid resource monitor server entry");let c=String(a.id||"").trim();if(!c)throw Error("Resource monitor server ID is required");if(b.has(c))throw Error(`Duplicate resource monitor server ID: ${c}`);return b.add(c),r({...a,id:c},{...a,id:c})});return await o({servers:c}),c}},20437:(a,b,c)=>{c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(53859);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},24081:(a,b,c)=>{c.d(b,{c:()=>k});var d=c(20437);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(8062).then(c.bind(c,38062));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(8469).then(c.bind(c,88469));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(4803).then(c.bind(c,54803));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(6252).then(c.bind(c,66252));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(3824).then(c.bind(c,83824));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},45874:(a,b,c)=>{c.d(b,{Xx:()=>j,exportSettings:()=>k,getSettings:()=>i});var d=c(24081),e=c(50743);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},providerSchedules:{},providerHealthChecks:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireApiKey:!0,requireLogin:!0,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",ldapMonitorAdminGroupDn:"",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full",sidebarAdvancedToolsVisible:!0,personalOAuthProviderPermissions:{},siteTitle:"",siteShortName:"",siteDescription:"",brandingLogo:null,brandingFavicon:null};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function h(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b.requireApiKey=!0,b.requireLogin=!0,b}async function i(){return h(await g())}async function j(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a,requireApiKey:!0,requireLogin:!0},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h(b)}async function k(){return await g()}},50743:(a,b,c)=>{function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},53859:(a,b,c)=>{c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="bluerouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}()},58609:(a,b,c)=>{c.d(b,{U:()=>f});var d=c(24081),e=c(50743);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},76087:(a,b,c)=>{c.d(b,{Mc:()=>z,getProviderConnections:()=>y,rj:()=>A});var d=c(24081),e=c(50743),f=c(77598),g=c.n(f),h=c(73024),i=c.n(h),j=c(76760),k=c.n(j),l=c(53859);let m="enc:v1:",n=k().join(l.n,"credential-encryption-key"),o=null;function p(a){let b=String(a||"").trim();if(!b)return null;if(/^[a-f0-9]{64}$/i.test(b))return Buffer.from(b,"hex");let c=b.replace(/-/g,"+").replace(/_/g,"/"),d=c+"=".repeat((4-c.length%4)%4),e=Buffer.from(d,"base64");return 32===e.length?e:null}function q(a){let b=String(process.env.BLUEROUTER_CREDENTIAL_ENCRYPTION_KEY_ID||"").trim();return b||g().createHash("sha256").update(a).digest("hex").slice(0,12)}function r(a=null){if(a?.key){let b=Buffer.isBuffer(a.key)?a.key:p(a.key);if(!b||32!==b.length)throw Error("Credential encryption key must be exactly 32 bytes");return{key:b,keyId:a.keyId||q(b)}}if(o)return o;let b=process.env.BLUEROUTER_CREDENTIAL_ENCRYPTION_KEY,c=b?p(b):function(){try{let a=p(i().readFileSync(n,"utf8"));if(!a)throw Error("Credential encryption key file is invalid");return a}catch(a){if(a?.code!=="ENOENT")throw a}i().mkdirSync(l.n,{recursive:!0});let a=g().randomBytes(32);try{return i().writeFileSync(n,a.toString("base64"),{flag:"wx",mode:384}),a}catch(b){if(b?.code!=="EEXIST")throw b;let a=p(i().readFileSync(n,"utf8"));if(!a)throw Error("Credential encryption key file is invalid");return a}}();if(!c||32!==c.length)throw Error("BLUEROUTER_CREDENTIAL_ENCRYPTION_KEY must be a 32-byte base64 or 64-character hex value");return o={key:c,keyId:q(c)}}function s(a){return Buffer.from(`bluerouter:credential:v1:${a}`,"utf8")}function t(a){return"string"==typeof a&&a.startsWith(m)}let u=["accessToken","refreshToken","idToken","apiKey"];function v(a){return String(a||"").trim().toLowerCase()}function w(a){return"personal"===a?"personal":"system"}function x(a){if(!a)return null;let b=(0,e.q)(a.data,{});for(let a of u)Object.prototype.hasOwnProperty.call(b,a)&&(b[a]=function(a,b=null){if(!t(a))return a;let c=a.split(":");if(6!==c.length||"enc"!==c[0]||"v1"!==c[1])throw Error("Unsupported encrypted credential format");let d=Buffer.from(c[2],"base64url").toString("utf8"),e=Buffer.from(c[3],"base64url"),f=Buffer.from(c[4],"base64url"),h=Buffer.from(c[5],"base64url");if(12!==e.length||16!==f.length)throw Error("Encrypted credential payload is invalid");let{key:i}=r(b);try{let a=g().createDecipheriv("aes-256-gcm",i,e,{authTagLength:16});return a.setAAD(s(d)),a.setAuthTag(f),Buffer.concat([a.update(h),a.final()]).toString("utf8")}catch{throw Error(`Unable to decrypt credential with key ${d}`)}}(b[a]));let c=v(a.ownerUser||b.ownerUser),d=v(a.createdByUser||b.createdByUser),f=a.visibility||b.visibility||(c?"private":"system"),h="personal"===w(a.scope||b.scope)||c||"private"===f?"personal":"system";return{...b,id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,scope:h,ownerUser:c,createdByUser:d,visibility:f||("personal"===h?"private":"system"),createdAt:a.createdAt,updatedAt:a.updatedAt}}async function y(a={}){let b=await (0,d.c)(),c=[],e=[];a.provider&&(c.push("provider = ?"),e.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),void 0!==a.scope&&"personal"===w(a.scope)?(c.push("(scope = ? OR visibility = ? OR length(trim(coalesce(ownerUser, ''))) > 0)"),e.push("personal","private")):(void 0!==a.scope||!0!==a.includePersonal)&&(c.push("scope = ?"),e.push("system"),c.push("coalesce(visibility, 'system') <> ?"),e.push("private"),c.push("length(trim(coalesce(ownerUser, ''))) = 0")),void 0!==a.ownerUser&&(c.push("lower(coalesce(ownerUser, '')) = ?"),e.push(v(a.ownerUser)));let f=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,e).map(x);return g.sort((a,b)=>(a.priority||999)-(b.priority||999)),g}async function z(a){return x((await (0,d.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}async function A(a,b){let c,f=await (0,d.c)();return f.transaction(()=>{let d=f.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!d){c=null;return}let h=x(d),i={...h,...b,updatedAt:new Date().toISOString()},j=new Set(u.filter(a=>Object.prototype.hasOwnProperty.call(b,a)));!function(a,b,c={}){let d=function(a,b={}){let{id:c,provider:d,authType:f,name:h,email:i,priority:j,isActive:k,scope:l,ownerUser:n,createdByUser:o,visibility:p,createdAt:q,updatedAt:x,...y}=a,z=b.storedData&&"object"==typeof b.storedData?b.storedData:null,A=b.encryptFields instanceof Set?b.encryptFields:null;for(let a of u)z&&A&&!A.has(a)&&Object.prototype.hasOwnProperty.call(z,a)?y[a]=z[a]:Object.prototype.hasOwnProperty.call(y,a)&&(y[a]=function(a,b=null){if(null==a||""===a||t(a)||"string"!=typeof a)return a;let{key:c,keyId:d}=r(b),e=Buffer.from(d,"utf8").toString("base64url"),f=g().randomBytes(12),h=g().createCipheriv("aes-256-gcm",c,f,{authTagLength:16});h.setAAD(s(d));let i=Buffer.concat([h.update(a,"utf8"),h.final()]),j=h.getAuthTag();return`${m}${e}:${f.toString("base64url")}:${j.toString("base64url")}:${i.toString("base64url")}`}(y[a]));let B=v(n),C=p||(B?"private":void 0),D="personal"===w(l)||B||"private"===C?"personal":"system";return{id:c,provider:d,authType:f,name:h??null,email:i??null,priority:j??null,isActive:+(!1!==k),scope:D,ownerUser:B,createdByUser:v(o),visibility:C||("personal"===D?"private":"system"),data:(0,e.s)(y),createdAt:q,updatedAt:x}}(b,c);a.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, scope, ownerUser, createdByUser, visibility, data, createdAt, updatedAt)
2
2
  VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3
3
  ON CONFLICT(id) DO UPDATE SET
4
4
  provider=excluded.provider, authType=excluded.authType, name=excluded.name,
5
5
  email=excluded.email, priority=excluded.priority, isActive=excluded.isActive,
6
6
  scope=excluded.scope, ownerUser=excluded.ownerUser, createdByUser=excluded.createdByUser,
7
- visibility=excluded.visibility, data=excluded.data, updatedAt=excluded.updatedAt`,[d.id,d.provider,d.authType,d.name,d.email,d.priority,d.isActive,d.scope,d.ownerUser,d.createdByUser,d.visibility,d.data,d.createdAt,d.updatedAt]),void 0!==b.priority&&function(a,b,c="system",d=""){let e=g(c),i=f(d),j=[b,e],k="SELECT * FROM providerConnections WHERE provider = ? AND scope = ?";"personal"===e?(k+=" AND lower(coalesce(ownerUser, '')) = ?",j.push(i)):k+=" AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0";let l=a.all(k,j).map(h);l.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),l.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}(i,k.provider,l.scope,l.ownerUser),c=l}),c}},95276:(a,b,c)=>{c.d(b,{Mc:()=>h.Mc,P:()=>h.getProviderConnections,hr:()=>i,mt:()=>g.getSettings,K1:()=>W,rj:()=>h.rj,Xx:()=>g.Xx});var d=c(24081),e=c(50743),f=c(14938),g=c(45874),h=c(92216);async function i(a){var b;return(b=(await (0,d.c)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))?{...(0,e.q)(b.data,{}),id:b.id,isActive:1===b.isActive||!0===b.isActive,testStatus:b.testStatus,createdAt:b.createdAt,updatedAt:b.updatedAt}:null}c(87517);var j=c(58609);(0,j.U)("modelAliases"),(0,j.U)("customModels"),(0,j.U)("mitmAlias"),c(90181);var k=c(94735);c(55511),c(51455),c(76760),c(53859);let l=new Set(["mysql","postgres"]),m={enabled:!1,fileLoggingEnabled:!1,type:"mysql",host:"",port:"",database:"",username:"",password:"",ssl:!1,createDatabase:!1,logClientRequest:!0,logSourceRequest:!0,logTargetRequest:!0,logProviderResponse:!1,logErrors:!0,retentionDays:30};function n(a={},b={}){let c=String(a?.type||b?.type||m.type).trim().toLowerCase(),d=!!c&&!l.has(c),e=d?m.type:c,f={...m,...b||{},...a||{},type:e};f.enabled=!!f.enabled,f.fileLoggingEnabled=!0===f.fileLoggingEnabled,f.ssl=!!f.ssl,f.createDatabase=!!f.createDatabase,f.logClientRequest=!1!==f.logClientRequest,f.logSourceRequest=!1!==f.logSourceRequest,f.logTargetRequest=!1!==f.logTargetRequest,f.logProviderResponse=!0===f.logProviderResponse,f.logErrors=!1!==f.logErrors;let g=Number(f.retentionDays);return f.retentionDays=Number.isFinite(g)&&g>0?Math.floor(g):30,"********"===f.password&&(f.password=b?.password||""),f.host=String(f.host||"").trim(),f.port=String(f.port||("postgres"===f.type?"5432":"3306")).trim(),f.database=String(f.database||"").trim(),f.username=String(f.username||"").trim(),f.password=String(f.password||""),!d||f.host||f.database||f.username||(f.enabled=!1),delete f.sqlitePath,f}async function o(){let a=await (0,g.getSettings)();return n(a?.promptLogDb||{})}let p=Number(process.env.OBSERVABILITY_MYSQL_MAX_JSON_BYTES||262144),q={expiresAt:0,value:null},r=!1,s=new Set;function t(a,b){s.has(a)||(s.add(a),console.warn(b))}function u(a){if(!a)return"";let b=[];return a.code&&b.push(`code=${a.code}`),a.errno&&b.push(`errno=${a.errno}`),a.sqlState&&b.push(`sqlState=${a.sqlState}`),a.sqlMessage?b.push(a.sqlMessage):a.message&&b.push(a.message),b.filter(Boolean).join(" | ")||String(a)}async function v(a,b){let[c]=await a.query("SELECT COLUMN_NAME AS name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[b]);return new Set((c||[]).map(a=>String(a.name||a.COLUMN_NAME||"")))}async function w(a,b){let[c]=await a.query("SELECT INDEX_NAME AS name FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[b]);return new Set((c||[]).map(a=>String(a.name||a.INDEX_NAME||"")))}async function x(a,b,c){let d=await v(a,b);for(let[e,f]of c)d.has(e)||(await a.query(`ALTER TABLE ${b} ADD COLUMN ${f}`),d.add(e))}async function y(a,b,c){let d=await w(a,b);for(let[e,f]of c)d.has(e)||(await a.query(`ALTER TABLE ${b} ADD ${f}`),d.add(e))}async function z(a){await x(a,"usage_events",[["dedupe_key","dedupe_key VARCHAR(96) NULL"],["created_at","created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["timestamp","timestamp DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["provider","provider VARCHAR(120) NULL"],["model","model VARCHAR(255) NULL"],["connection_id","connection_id VARCHAR(120) NULL"],["api_key_fingerprint","api_key_fingerprint VARCHAR(120) NULL"],["api_key_id","api_key_id VARCHAR(120) NULL"],["api_key_name","api_key_name VARCHAR(255) NULL"],["api_key_owner","api_key_owner VARCHAR(255) NULL"],["endpoint","endpoint TEXT NULL"],["request_id","request_id VARCHAR(120) NULL"],["session_id","session_id VARCHAR(255) NULL"],["client_ip","client_ip VARCHAR(64) NULL"],["client_ip_normalized","client_ip_normalized VARCHAR(64) NULL"],["client_host","client_host TEXT NULL"],["client_user_agent","client_user_agent TEXT NULL"],["source_tool","source_tool VARCHAR(80) NULL"],["source_tool_label","source_tool_label VARCHAR(120) NULL"],["source_host","source_host VARCHAR(255) NULL"],["latency_ms","latency_ms INT DEFAULT 0"],["ttft_ms","ttft_ms INT DEFAULT 0"],["status_code","status_code INT NULL"],["error_code","error_code VARCHAR(160) NULL"],["error_type","error_type VARCHAR(120) NULL"],["error_message_short","error_message_short TEXT NULL"],["is_streaming","is_streaming TINYINT DEFAULT 0"],["is_combo","is_combo TINYINT DEFAULT 0"],["combo_name","combo_name VARCHAR(255) NULL"],["prompt_tokens","prompt_tokens BIGINT DEFAULT 0"],["completion_tokens","completion_tokens BIGINT DEFAULT 0"],["total_tokens","total_tokens BIGINT DEFAULT 0"],["cached_tokens","cached_tokens BIGINT DEFAULT 0"],["reasoning_tokens","reasoning_tokens BIGINT DEFAULT 0"],["thinking_enabled","thinking_enabled TINYINT NULL"],["thinking_auto_off","thinking_auto_off TINYINT DEFAULT 0"],["thinking_auto_off_reason","thinking_auto_off_reason VARCHAR(120) NULL"],["prompt_chars","prompt_chars BIGINT DEFAULT 0"],["force_thinking_off_above_chars","force_thinking_off_above_chars BIGINT DEFAULT 0"],["cost","cost DECIMAL(18,8) DEFAULT 0"],["status","status VARCHAR(80) NULL"],["tokens_json","tokens_json JSON NULL"],["meta_json","meta_json JSON NULL"]]),await a.query("UPDATE usage_events SET dedupe_key = CONCAT('legacy:', id) WHERE dedupe_key IS NULL OR dedupe_key = ''").catch(()=>{}),await a.query("ALTER TABLE usage_events MODIFY COLUMN dedupe_key VARCHAR(96) NOT NULL").catch(()=>{}),await y(a,"usage_events",[["uq_usage_events_dedupe","UNIQUE KEY uq_usage_events_dedupe (dedupe_key)"],["idx_usage_events_ts","INDEX idx_usage_events_ts (timestamp)"],["idx_usage_events_provider_model","INDEX idx_usage_events_provider_model (provider, model, timestamp)"],["idx_usage_events_status","INDEX idx_usage_events_status (status, status_code, timestamp)"],["idx_usage_events_api_key","INDEX idx_usage_events_api_key (api_key_id, api_key_fingerprint, timestamp)"],["idx_usage_events_client_ip","INDEX idx_usage_events_client_ip (client_ip_normalized, timestamp)"],["idx_usage_events_source_tool","INDEX idx_usage_events_source_tool (source_tool, timestamp)"],["idx_usage_events_session","INDEX idx_usage_events_session (session_id, timestamp)"],["idx_usage_events_thinking_auto_off","INDEX idx_usage_events_thinking_auto_off (thinking_auto_off, timestamp)"],["idx_usage_events_prompt_chars","INDEX idx_usage_events_prompt_chars (prompt_chars, timestamp)"]]),await x(a,"request_details",[["created_at","created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["timestamp","timestamp DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["provider","provider VARCHAR(120) NULL"],["model","model VARCHAR(255) NULL"],["connection_id","connection_id VARCHAR(120) NULL"],["status","status VARCHAR(80) NULL"],["data_json","data_json JSON NULL"],["data_size_bytes","data_size_bytes BIGINT DEFAULT 0"]]),await y(a,"request_details",[["idx_request_details_ts","INDEX idx_request_details_ts (timestamp)"],["idx_request_details_provider","INDEX idx_request_details_provider (provider, timestamp)"],["idx_request_details_model","INDEX idx_request_details_model (model, timestamp)"],["idx_request_details_connection","INDEX idx_request_details_connection (connection_id, timestamp)"],["idx_request_details_status","INDEX idx_request_details_status (status, timestamp)"]])}function A(a){return String(a??"").trim()}function B(a){if(null==a)return null;if("string"==typeof a)try{return JSON.parse(a),a}catch{return JSON.stringify(a)}return(0,e.s)(a)}function C(a){if(null==a)return{};let b=B(a)||"{}";return Buffer.byteLength(b,"utf8")<=p?a:{_truncated:!0,_originalSizeBytes:Buffer.byteLength(b,"utf8"),_preview:b.slice(0,1e3)}}async function D(){let a=Date.now();if(q.value&&q.expiresAt>a)return q.value;try{let b=n(await o());q={value:!0===b.enabled&&"mysql"===b.type&&"false"!==process.env.OBSERVABILITY_MYSQL_ENABLED?b:null,expiresAt:a+5e3}}catch(b){t("config",`[observability-mysql] Unable to read MySQL log config: ${b?.message||b}`),q={value:null,expiresAt:a+5e3}}return q.value}async function E(a){let b=await c.e(4790).then(c.t.bind(c,94790,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,multipleStatements:!0,dateStrings:!0,connectTimeout:3e3,timezone:"Z"});return await d.query("SET time_zone = '+00:00'"),d}async function F(a){r||(await a.query(`
7
+ visibility=excluded.visibility, data=excluded.data, updatedAt=excluded.updatedAt`,[d.id,d.provider,d.authType,d.name,d.email,d.priority,d.isActive,d.scope,d.ownerUser,d.createdByUser,d.visibility,d.data,d.createdAt,d.updatedAt])}(f,i,{storedData:(0,e.q)(d.data,{}),encryptFields:j}),void 0!==b.priority&&function(a,b,c="system",d=""){let e=w(c),f=v(d),g=[b,e],h="SELECT * FROM providerConnections WHERE provider = ? AND scope = ?";"personal"===e?(h+=" AND lower(coalesce(ownerUser, '')) = ?",g.push(f)):h+=" AND coalesce(visibility, 'system') <> 'private' AND length(trim(coalesce(ownerUser, ''))) = 0";let i=a.all(h,g).map(x);i.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),i.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}(f,h.provider,i.scope,i.ownerUser),c=i}),c}},87517:(a,b,c)=>{c.d(b,{getApiKeyByKey:()=>p});var d=c(24081),e=c(50743);let f=Object.freeze({enabled:!0,requestsPerMinute:20,promptCharsMax:12e4,maxOutputTokens:0,forceThinkingOff:!0,allowedIpCidrs:[],expiresAt:""}),g=new Set(Object.keys(f));function h(a,b=0){let c=Number(a);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function i(a,b=!0){if(null==a||""===a)return b;if("boolean"==typeof a)return a;if("number"==typeof a)return 0!==a;let c=String(a).trim().toLowerCase();return!["false","0","no","off"].includes(c)&&(!!["true","1","yes","on"].includes(c)||b)}function j(a){return a&&"object"==typeof a&&!Array.isArray(a)}let k=Object.freeze(["inherit","on","off"]),l=Object.freeze(["lite","full","ultra"]),m=!1;function n(a){return String(a||"").trim().toLowerCase()}async function o(a){if(!m)try{let b=a.all("PRAGMA table_info(apiKeys)"),c=new Set(b.map(a=>a.name));c.has("allowedModels")||a.run("ALTER TABLE apiKeys ADD COLUMN allowedModels TEXT DEFAULT '[]'"),c.has("limits")||a.run("ALTER TABLE apiKeys ADD COLUMN limits TEXT DEFAULT '{}'"),c.has("ownerUser")||a.run("ALTER TABLE apiKeys ADD COLUMN ownerUser TEXT DEFAULT ''"),c.has("createdByUser")||a.run("ALTER TABLE apiKeys ADD COLUMN createdByUser TEXT DEFAULT ''"),c.has("adminDisabled")||a.run("ALTER TABLE apiKeys ADD COLUMN adminDisabled INTEGER DEFAULT 0"),c.has("cavemanMode")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanMode TEXT DEFAULT 'inherit'"),c.has("cavemanLevel")||a.run("ALTER TABLE apiKeys ADD COLUMN cavemanLevel TEXT DEFAULT 'lite'");try{a.run("CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_active ON apiKeys(isActive)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"),a.run("CREATE INDEX IF NOT EXISTS idx_ak_created_at ON apiKeys(createdAt)")}catch{}m=!0}catch(a){console.log("Could not ensure apiKeys columns:",a?.message||a)}}async function p(a){let b;if(!a)return null;let c=await (0,d.c)();await o(c);var m,p=c.get("SELECT * FROM apiKeys WHERE key = ?",[a]);return p?{id:p.id,key:p.key,name:p.name,machineId:p.machineId,isActive:1===p.isActive||!0===p.isActive,adminDisabled:1===p.adminDisabled||!0===p.adminDisabled,allowedModels:Array.isArray(m=(0,e.q)(p.allowedModels,[]))?[...new Set(m.map(a=>String(a||"").trim()).filter(Boolean))]:[],limits:function(a={}){var b;if(!(j(a)&&Object.keys(a).some(a=>g.has(a))))return{};let c=j(a)?a:{};return{enabled:i(c.enabled,f.enabled),requestsPerMinute:h(c.requestsPerMinute,0),promptCharsMax:h(c.promptCharsMax,0),maxOutputTokens:h(c.maxOutputTokens??c.outputTokensMax??c.maxTokens??c.max_tokens??c.max_completion_tokens,0),forceThinkingOff:i(c.forceThinkingOff,f.forceThinkingOff),allowedIpCidrs:Array.isArray(b=c.allowedIpCidrs)?[...new Set(b.map(a=>String(a||"").trim()).filter(Boolean))]:[],expiresAt:String(c.expiresAt||"").trim()}}((0,e.q)(p.limits,{})),ownerUser:n(p.ownerUser),createdByUser:n(p.createdByUser),cavemanMode:(b=String(p.cavemanMode||"inherit").trim().toLowerCase(),k.includes(b)?b:"inherit"),cavemanLevel:function(a,b="lite"){let c=String(a||b).trim().toLowerCase();return l.includes(c)?c:b}(p.cavemanLevel,"lite"),createdAt:p.createdAt}:null}},90181:(a,b,c)=>{c.d(b,{getPricingForModel:()=>g}),c(24081);let d=(0,c(58609).U)("pricing");async function e(){return await d.getAll()}function f(a,b){if(!a||!b)return null;if(a[b])return a[b];let c=String(b).toLowerCase();for(let b of Object.keys(a))if(b.toLowerCase()===c)return a[b];return null}async function g(a,b){if(!b)return null;let d=await e();if(a){let c=f(d,a);if(c){let a=f(c,b);if(a)return a}}let{getPricingForModel:g}=await c.e(7464).then(c.bind(c,87464));return g(a,b)}},95276:(a,b,c)=>{c.d(b,{Mc:()=>h.Mc,P:()=>h.getProviderConnections,hr:()=>i,mt:()=>g.getSettings,K1:()=>W,rj:()=>h.rj,Xx:()=>g.Xx});var d=c(24081),e=c(50743),f=c(14938),g=c(45874),h=c(76087);async function i(a){var b;return(b=(await (0,d.c)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))?{...(0,e.q)(b.data,{}),id:b.id,isActive:1===b.isActive||!0===b.isActive,testStatus:b.testStatus,createdAt:b.createdAt,updatedAt:b.updatedAt}:null}c(87517);var j=c(58609);(0,j.U)("modelAliases"),(0,j.U)("customModels"),(0,j.U)("mitmAlias"),c(90181);var k=c(94735);c(55511),c(51455),c(76760),c(53859);let l=new Set(["mysql","postgres"]),m={enabled:!1,fileLoggingEnabled:!1,type:"mysql",host:"",port:"",database:"",username:"",password:"",ssl:!1,createDatabase:!1,logClientRequest:!0,logSourceRequest:!0,logTargetRequest:!0,logProviderResponse:!1,logErrors:!0,retentionDays:30};function n(a={},b={}){let c=String(a?.type||b?.type||m.type).trim().toLowerCase(),d=!!c&&!l.has(c),e=d?m.type:c,f={...m,...b||{},...a||{},type:e};f.enabled=!!f.enabled,f.fileLoggingEnabled=!0===f.fileLoggingEnabled,f.ssl=!!f.ssl,f.createDatabase=!!f.createDatabase,f.logClientRequest=!1!==f.logClientRequest,f.logSourceRequest=!1!==f.logSourceRequest,f.logTargetRequest=!1!==f.logTargetRequest,f.logProviderResponse=!0===f.logProviderResponse,f.logErrors=!1!==f.logErrors;let g=Number(f.retentionDays);return f.retentionDays=Number.isFinite(g)&&g>0?Math.floor(g):30,"********"===f.password&&(f.password=b?.password||""),f.host=String(f.host||"").trim(),f.port=String(f.port||("postgres"===f.type?"5432":"3306")).trim(),f.database=String(f.database||"").trim(),f.username=String(f.username||"").trim(),f.password=String(f.password||""),!d||f.host||f.database||f.username||(f.enabled=!1),delete f.sqlitePath,f}async function o(){let a=await (0,g.getSettings)();return n(a?.promptLogDb||{})}let p=Number(process.env.OBSERVABILITY_MYSQL_MAX_JSON_BYTES||262144),q={expiresAt:0,value:null},r=!1,s=new Set;function t(a,b){s.has(a)||(s.add(a),console.warn(b))}function u(a){if(!a)return"";let b=[];return a.code&&b.push(`code=${a.code}`),a.errno&&b.push(`errno=${a.errno}`),a.sqlState&&b.push(`sqlState=${a.sqlState}`),a.sqlMessage?b.push(a.sqlMessage):a.message&&b.push(a.message),b.filter(Boolean).join(" | ")||String(a)}async function v(a,b){let[c]=await a.query("SELECT COLUMN_NAME AS name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[b]);return new Set((c||[]).map(a=>String(a.name||a.COLUMN_NAME||"")))}async function w(a,b){let[c]=await a.query("SELECT INDEX_NAME AS name FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[b]);return new Set((c||[]).map(a=>String(a.name||a.INDEX_NAME||"")))}async function x(a,b,c){let d=await v(a,b);for(let[e,f]of c)d.has(e)||(await a.query(`ALTER TABLE ${b} ADD COLUMN ${f}`),d.add(e))}async function y(a,b,c){let d=await w(a,b);for(let[e,f]of c)d.has(e)||(await a.query(`ALTER TABLE ${b} ADD ${f}`),d.add(e))}async function z(a){await x(a,"usage_events",[["dedupe_key","dedupe_key VARCHAR(96) NULL"],["created_at","created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["timestamp","timestamp DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["provider","provider VARCHAR(120) NULL"],["model","model VARCHAR(255) NULL"],["connection_id","connection_id VARCHAR(120) NULL"],["api_key_fingerprint","api_key_fingerprint VARCHAR(120) NULL"],["api_key_id","api_key_id VARCHAR(120) NULL"],["api_key_name","api_key_name VARCHAR(255) NULL"],["api_key_owner","api_key_owner VARCHAR(255) NULL"],["endpoint","endpoint TEXT NULL"],["request_id","request_id VARCHAR(120) NULL"],["session_id","session_id VARCHAR(255) NULL"],["client_ip","client_ip VARCHAR(64) NULL"],["client_ip_normalized","client_ip_normalized VARCHAR(64) NULL"],["client_host","client_host TEXT NULL"],["client_user_agent","client_user_agent TEXT NULL"],["source_tool","source_tool VARCHAR(80) NULL"],["source_tool_label","source_tool_label VARCHAR(120) NULL"],["source_host","source_host VARCHAR(255) NULL"],["latency_ms","latency_ms INT DEFAULT 0"],["ttft_ms","ttft_ms INT DEFAULT 0"],["status_code","status_code INT NULL"],["error_code","error_code VARCHAR(160) NULL"],["error_type","error_type VARCHAR(120) NULL"],["error_message_short","error_message_short TEXT NULL"],["is_streaming","is_streaming TINYINT DEFAULT 0"],["is_combo","is_combo TINYINT DEFAULT 0"],["combo_name","combo_name VARCHAR(255) NULL"],["prompt_tokens","prompt_tokens BIGINT DEFAULT 0"],["completion_tokens","completion_tokens BIGINT DEFAULT 0"],["total_tokens","total_tokens BIGINT DEFAULT 0"],["cached_tokens","cached_tokens BIGINT DEFAULT 0"],["reasoning_tokens","reasoning_tokens BIGINT DEFAULT 0"],["thinking_enabled","thinking_enabled TINYINT NULL"],["thinking_auto_off","thinking_auto_off TINYINT DEFAULT 0"],["thinking_auto_off_reason","thinking_auto_off_reason VARCHAR(120) NULL"],["prompt_chars","prompt_chars BIGINT DEFAULT 0"],["force_thinking_off_above_chars","force_thinking_off_above_chars BIGINT DEFAULT 0"],["cost","cost DECIMAL(18,8) DEFAULT 0"],["status","status VARCHAR(80) NULL"],["tokens_json","tokens_json JSON NULL"],["meta_json","meta_json JSON NULL"]]),await a.query("UPDATE usage_events SET dedupe_key = CONCAT('legacy:', id) WHERE dedupe_key IS NULL OR dedupe_key = ''").catch(()=>{}),await a.query("ALTER TABLE usage_events MODIFY COLUMN dedupe_key VARCHAR(96) NOT NULL").catch(()=>{}),await y(a,"usage_events",[["uq_usage_events_dedupe","UNIQUE KEY uq_usage_events_dedupe (dedupe_key)"],["idx_usage_events_ts","INDEX idx_usage_events_ts (timestamp)"],["idx_usage_events_provider_model","INDEX idx_usage_events_provider_model (provider, model, timestamp)"],["idx_usage_events_status","INDEX idx_usage_events_status (status, status_code, timestamp)"],["idx_usage_events_api_key","INDEX idx_usage_events_api_key (api_key_id, api_key_fingerprint, timestamp)"],["idx_usage_events_client_ip","INDEX idx_usage_events_client_ip (client_ip_normalized, timestamp)"],["idx_usage_events_source_tool","INDEX idx_usage_events_source_tool (source_tool, timestamp)"],["idx_usage_events_session","INDEX idx_usage_events_session (session_id, timestamp)"],["idx_usage_events_thinking_auto_off","INDEX idx_usage_events_thinking_auto_off (thinking_auto_off, timestamp)"],["idx_usage_events_prompt_chars","INDEX idx_usage_events_prompt_chars (prompt_chars, timestamp)"]]),await x(a,"request_details",[["created_at","created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["timestamp","timestamp DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)"],["provider","provider VARCHAR(120) NULL"],["model","model VARCHAR(255) NULL"],["connection_id","connection_id VARCHAR(120) NULL"],["status","status VARCHAR(80) NULL"],["data_json","data_json JSON NULL"],["data_size_bytes","data_size_bytes BIGINT DEFAULT 0"]]),await y(a,"request_details",[["idx_request_details_ts","INDEX idx_request_details_ts (timestamp)"],["idx_request_details_provider","INDEX idx_request_details_provider (provider, timestamp)"],["idx_request_details_model","INDEX idx_request_details_model (model, timestamp)"],["idx_request_details_connection","INDEX idx_request_details_connection (connection_id, timestamp)"],["idx_request_details_status","INDEX idx_request_details_status (status, timestamp)"]])}function A(a){return String(a??"").trim()}function B(a){if(null==a)return null;if("string"==typeof a)try{return JSON.parse(a),a}catch{return JSON.stringify(a)}return(0,e.s)(a)}function C(a){if(null==a)return{};let b=B(a)||"{}";return Buffer.byteLength(b,"utf8")<=p?a:{_truncated:!0,_originalSizeBytes:Buffer.byteLength(b,"utf8"),_preview:b.slice(0,1e3)}}async function D(){let a=Date.now();if(q.value&&q.expiresAt>a)return q.value;try{let b=n(await o());q={value:!0===b.enabled&&"mysql"===b.type&&"false"!==process.env.OBSERVABILITY_MYSQL_ENABLED?b:null,expiresAt:a+5e3}}catch(b){t("config",`[observability-mysql] Unable to read MySQL log config: ${b?.message||b}`),q={value:null,expiresAt:a+5e3}}return q.value}async function E(a){let b=await c.e(4790).then(c.t.bind(c,94790,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,multipleStatements:!0,dateStrings:!0,connectTimeout:3e3,timezone:"Z"});return await d.query("SET time_zone = '+00:00'"),d}async function F(a){r||(await a.query(`
8
8
  CREATE TABLE IF NOT EXISTS usage_events (
9
9
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
10
10
  dedupe_key VARCHAR(96) NOT NULL,