@jheavenknows/bluerouter 4.0.49 → 4.0.50

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 (425) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +3 -3
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/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/profile/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  40. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  41. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  42. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  43. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  45. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  46. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  47. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  49. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  50. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  51. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  52. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +80 -2
  71. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  91. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  113. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  127. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  166. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  168. package/app/.next-cli-build/server/app/callback.html +1 -1
  169. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  170. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  171. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  172. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  173. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  174. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  175. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  176. package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
  177. package/app/.next-cli-build/server/app/dashboard/analytics.rsc +5 -5
  178. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
  179. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  180. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  181. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  182. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +5 -5
  183. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  184. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
  185. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  186. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  187. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +5 -5
  188. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
  189. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  190. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  191. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  192. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +5 -5
  193. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +3 -3
  195. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  196. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  197. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  198. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  199. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  200. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  202. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  203. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  204. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  205. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  206. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  207. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  208. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  209. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  210. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  212. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  213. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  215. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  218. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  219. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  222. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  223. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  225. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  228. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  229. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  232. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  233. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  234. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  235. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  238. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  239. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  243. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  244. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  246. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  247. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  249. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  250. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  253. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  254. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  256. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  258. package/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
  259. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  260. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  263. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  264. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  265. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  266. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  268. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +4 -4
  269. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  270. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  273. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +4 -4
  274. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  275. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +3 -3
  276. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  278. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +4 -4
  279. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  280. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  281. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  283. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +4 -4
  284. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +3 -3
  286. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  289. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  290. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  291. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  294. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  295. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  296. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  297. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  298. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  300. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  301. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  304. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  305. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  306. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  307. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  310. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  311. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  314. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  315. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  316. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  317. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  320. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  321. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  324. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  325. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  326. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  327. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  329. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  330. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  331. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  332. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  334. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  336. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  337. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  339. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  340. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  341. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  342. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  344. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  345. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  346. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  347. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  348. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  351. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  352. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  354. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  355. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  356. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  357. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  358. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  359. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  361. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  362. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  364. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  365. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  366. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  367. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  368. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  370. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  371. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  372. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  374. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  375. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  376. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  377. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  378. package/app/.next-cli-build/server/app/index.html +1 -1
  379. package/app/.next-cli-build/server/app/index.rsc +3 -3
  380. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  381. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  382. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  383. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  384. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  386. package/app/.next-cli-build/server/app/landing.html +1 -1
  387. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  388. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  389. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  390. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  391. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  392. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  393. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  395. package/app/.next-cli-build/server/app/login.html +1 -1
  396. package/app/.next-cli-build/server/app/login.rsc +4 -4
  397. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  398. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  400. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  401. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  402. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  404. package/app/.next-cli-build/server/app-paths-manifest.json +3 -3
  405. package/app/.next-cli-build/server/chunks/2338.js +13 -15
  406. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  407. package/app/.next-cli-build/server/chunks/402.js +23 -26
  408. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  409. package/app/.next-cli-build/server/chunks/7130.js +1 -1
  410. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  411. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  412. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  413. package/app/.next-cli-build/server/middleware.js +12 -14
  414. package/app/.next-cli-build/server/pages/404.html +1 -1
  415. package/app/.next-cli-build/server/pages/500.html +1 -1
  416. package/app/.next-cli-build/static/chunks/{620-a9a37692d86d9480.js → 620-a904183a5ebc0378.js} +1 -1
  417. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/analytics/page-3a0a6ebaa031c050.js +1 -0
  418. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  419. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  420. package/app/package.json +1 -1
  421. package/package.json +1 -1
  422. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/analytics/page-7b9d95f2f3a400ea.js +0 -1
  423. /package/app/.next-cli-build/static/{dkOHX6ziewBblvJBJgfsE → l-bNoKfMWoWceZMVVQm_I}/_buildManifest.js +0 -0
  424. /package/app/.next-cli-build/static/{dkOHX6ziewBblvJBJgfsE → l-bNoKfMWoWceZMVVQm_I}/_ssgManifest.js +0 -0
  425. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-4.0.44-to-4.0.45-4.0.45-20260622-114056 → upgrade-4.0.48-to-4.0.49-4.0.49-20260622-131805}/data.sqlite +0 -0
@@ -191,7 +191,7 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
191
191
  OR lower(coalesce(ownerUser, '')) LIKE ?
192
192
  OR lower(coalesce(createdByUser, '')) LIKE ?
193
193
  OR lower(coalesce(allowedModels, '')) LIKE ?
194
- )`),c.push(a,a,a,a,a,a,a)}return{where:b.length?`WHERE ${b.join(" AND ")}`:"",params:c}}function m(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,adminDisabled:1===a.adminDisabled||!0===a.adminDisabled,allowedModels:i((0,f.q)(a.allowedModels,[])),limits:(0,g.jQ)((0,f.q)(a.limits,{})),ownerUser:j(a.ownerUser),createdByUser:j(a.createdByUser),createdAt:a.createdAt}:null}async function n(a={}){let b,c,d=await (0,e.c)();await k(d);let{where:f,params:g}=l(a),h="desc"===String(a.order||"asc").toLowerCase()?"DESC":"ASC",i=!Number.isFinite(b=Number(a.limit))||b<=0?null:Math.min(500,Math.max(1,Math.floor(b))),j=!Number.isFinite(c=Number(a.offset))||c<=0?0:Math.max(0,Math.floor(c)),o=`SELECT * FROM apiKeys ${f} ORDER BY createdAt ${h}`,p=[...g];return i&&(o+=" LIMIT ? OFFSET ?",p.push(i,j)),(p.length?d.all(o,p):d.all(o)).map(m)}async function o(a={}){let b=await (0,e.c)();await k(b);let{where:c,params:d}=l(a),f=`SELECT COUNT(*) AS count FROM apiKeys ${c}`,g=d.length?b.get(f,d):b.get(f);return Number(g?.count||0)}async function p(a){let b=await (0,e.c)();return await k(b),m(b.get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function q(a){if(!a)return null;let b=await (0,e.c)();return await k(b),m(b.get("SELECT * FROM apiKeys WHERE key = ?",[a]))}async function r(a,b,h={}){if(!b)throw Error("machineId is required");let l=await (0,e.c)();await k(l);let{generateApiKeyWithMachine:m}=await c.e(6844).then(c.bind(c,86844)),n=m(b),o=j(h.ownerUser||h.createdByUser),p=j(h.createdByUser||o),q={id:(0,d.A)(),name:a,key:n.key,machineId:b,isActive:!0,adminDisabled:!1,allowedModels:i(h.allowedModels),limits:(0,g.jQ)(h.limits||{}),ownerUser:o,createdByUser:p,createdAt:new Date().toISOString()};return l.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, adminDisabled, allowedModels, limits, ownerUser, createdByUser, createdAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[q.id,q.key,q.name,q.machineId,1,0,(0,f.s)(q.allowedModels),(0,f.s)(q.limits),q.ownerUser,q.createdByUser,q.createdAt]),q}async function s(a,b={}){let c=await (0,e.c)();await k(c);let d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let h={...m(e),...b};Object.prototype.hasOwnProperty.call(b,"allowedModels")&&(h.allowedModels=i(b.allowedModels)),Object.prototype.hasOwnProperty.call(b,"limits")&&(h.limits=(0,g.jQ)(b.limits||{})),Object.prototype.hasOwnProperty.call(b,"ownerUser")&&(h.ownerUser=j(b.ownerUser)),Object.prototype.hasOwnProperty.call(b,"createdByUser")&&(h.createdByUser=j(b.createdByUser)),c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, adminDisabled = ?, allowedModels = ?, limits = ?, ownerUser = ?, createdByUser = ? WHERE id = ?",[h.key,h.name,h.machineId,+!!h.isActive,+!!h.adminDisabled,(0,f.s)(h.allowedModels||[]),(0,f.s)(h.limits||{}),h.ownerUser||"",h.createdByUser||"",a]),d=h}),d}async function t(a,b){if(!a)return null;if(!b)throw Error("machineId is required");let d=await (0,e.c)();if(await k(d),!d.get("SELECT * FROM apiKeys WHERE id = ?",[a]))return null;let{generateApiKeyWithMachine:f}=await c.e(6844).then(c.bind(c,86844));for(let c=0;c<5;c+=1){let e=f(b);try{return d.run("UPDATE apiKeys SET key = ?, machineId = ? WHERE id = ?",[e.key,b,a]),m(d.get("SELECT * FROM apiKeys WHERE id = ?",[a]))}catch(a){if(String(a?.message||a||"").toLowerCase().includes("unique")&&c<4)continue;throw a}}throw Error("Failed to generate a unique API key")}async function u(a){let b=await (0,e.c)();await k(b);let c=b.run("DELETE FROM apiKeys WHERE id = ?",[a]);return(c?.changes??0)>0}async function v(a){let b=await (0,e.c)();await k(b);let c=b.get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!c&&(1===c.isActive||!0===c.isActive)}},77638:(a,b,c)=>{"use strict";c.d(b,{Kc:()=>M,Nn:()=>E,RT:()=>C,Y4:()=>F,d9:()=>L,zW:()=>B});var d=c(55511),e=c.n(d),f=c(45903),g=c(644);let h=Number(process.env.OBSERVABILITY_MYSQL_MAX_JSON_BYTES||262144),i={expiresAt:0,value:null},j=!1,k=new Set;function l(a,b){k.has(a)||(k.add(a),console.warn(b))}function m(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)}let n=new Set(["ER_NO_SUCH_TABLE","ER_BAD_FIELD_ERROR","ER_BAD_TABLE_ERROR","ER_CANT_DROP_FIELD_OR_KEY"]);async function o(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 p(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 q(a,b,c){let d=await o(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 r(a,b,c){let d=await p(a,b);for(let[e,f]of c)d.has(e)||(await a.query(`ALTER TABLE ${b} ADD ${f}`),d.add(e))}async function s(a){await q(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"],["thinking_enabled","thinking_enabled TINYINT NULL"],["thinking_auto_off","thinking_auto_off TINYINT DEFAULT 0"],["thinking_auto_off_reason","thinking_auto_off_reason VARCHAR(160) NULL"],["prompt_chars","prompt_chars BIGINT DEFAULT 0"],["force_thinking_off_above_chars","force_thinking_off_above_chars BIGINT DEFAULT 0"],["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"],["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 r(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","INDEX idx_usage_events_thinking (thinking_enabled, thinking_auto_off, timestamp)"],["idx_usage_events_prompt_chars","INDEX idx_usage_events_prompt_chars (prompt_chars, timestamp)"]]),await q(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 r(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 t(a){return String(a??"").trim()}function u(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function v(a){let b=a?new Date(a):new Date;return(Number.isNaN(b.getTime())?new Date().toISOString():b.toISOString()).replace("T"," ").replace("Z","")}function w(a){if(null==a)return null;if("string"==typeof a)try{return JSON.parse(a),a}catch{return JSON.stringify(a)}return(0,g.s)(a)}function x(a){if(null==a)return{};let b=w(a)||"{}";return Buffer.byteLength(b,"utf8")<=h?a:{_truncated:!0,_originalSizeBytes:Buffer.byteLength(b,"utf8"),_preview:b.slice(0,1e3)}}async function y(){let a=Date.now();if(i.value&&i.expiresAt>a)return i.value;try{let b=(0,f.I6)(await (0,f.L7)());i={value:!0===b.enabled&&"mysql"===b.type&&"false"!==process.env.OBSERVABILITY_MYSQL_ENABLED?b:null,expiresAt:a+5e3}}catch(b){l("config",`[observability-mysql] Unable to read MySQL log config: ${b?.message||b}`),i={value:null,expiresAt:a+5e3}}return i.value}async function z(a){let b=await c.e(8491).then(c.t.bind(c,38491,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,multipleStatements:!0,dateStrings:!0,connectTimeout:3e3,timezone:"Z"});return await d.query("SET time_zone = '+00:00'"),d}async function A(a){j||(await a.query(`
194
+ )`),c.push(a,a,a,a,a,a,a)}return{where:b.length?`WHERE ${b.join(" AND ")}`:"",params:c}}function m(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,adminDisabled:1===a.adminDisabled||!0===a.adminDisabled,allowedModels:i((0,f.q)(a.allowedModels,[])),limits:(0,g.jQ)((0,f.q)(a.limits,{})),ownerUser:j(a.ownerUser),createdByUser:j(a.createdByUser),createdAt:a.createdAt}:null}async function n(a={}){let b,c,d=await (0,e.c)();await k(d);let{where:f,params:g}=l(a),h="desc"===String(a.order||"asc").toLowerCase()?"DESC":"ASC",i=!Number.isFinite(b=Number(a.limit))||b<=0?null:Math.min(500,Math.max(1,Math.floor(b))),j=!Number.isFinite(c=Number(a.offset))||c<=0?0:Math.max(0,Math.floor(c)),o=`SELECT * FROM apiKeys ${f} ORDER BY createdAt ${h}`,p=[...g];return i&&(o+=" LIMIT ? OFFSET ?",p.push(i,j)),(p.length?d.all(o,p):d.all(o)).map(m)}async function o(a={}){let b=await (0,e.c)();await k(b);let{where:c,params:d}=l(a),f=`SELECT COUNT(*) AS count FROM apiKeys ${c}`,g=d.length?b.get(f,d):b.get(f);return Number(g?.count||0)}async function p(a){let b=await (0,e.c)();return await k(b),m(b.get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function q(a){if(!a)return null;let b=await (0,e.c)();return await k(b),m(b.get("SELECT * FROM apiKeys WHERE key = ?",[a]))}async function r(a,b,h={}){if(!b)throw Error("machineId is required");let l=await (0,e.c)();await k(l);let{generateApiKeyWithMachine:m}=await c.e(6844).then(c.bind(c,86844)),n=m(b),o=j(h.ownerUser||h.createdByUser),p=j(h.createdByUser||o),q={id:(0,d.A)(),name:a,key:n.key,machineId:b,isActive:!0,adminDisabled:!1,allowedModels:i(h.allowedModels),limits:(0,g.jQ)(h.limits||{}),ownerUser:o,createdByUser:p,createdAt:new Date().toISOString()};return l.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, adminDisabled, allowedModels, limits, ownerUser, createdByUser, createdAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[q.id,q.key,q.name,q.machineId,1,0,(0,f.s)(q.allowedModels),(0,f.s)(q.limits),q.ownerUser,q.createdByUser,q.createdAt]),q}async function s(a,b={}){let c=await (0,e.c)();await k(c);let d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let h={...m(e),...b};Object.prototype.hasOwnProperty.call(b,"allowedModels")&&(h.allowedModels=i(b.allowedModels)),Object.prototype.hasOwnProperty.call(b,"limits")&&(h.limits=(0,g.jQ)(b.limits||{})),Object.prototype.hasOwnProperty.call(b,"ownerUser")&&(h.ownerUser=j(b.ownerUser)),Object.prototype.hasOwnProperty.call(b,"createdByUser")&&(h.createdByUser=j(b.createdByUser)),c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, adminDisabled = ?, allowedModels = ?, limits = ?, ownerUser = ?, createdByUser = ? WHERE id = ?",[h.key,h.name,h.machineId,+!!h.isActive,+!!h.adminDisabled,(0,f.s)(h.allowedModels||[]),(0,f.s)(h.limits||{}),h.ownerUser||"",h.createdByUser||"",a]),d=h}),d}async function t(a,b){if(!a)return null;if(!b)throw Error("machineId is required");let d=await (0,e.c)();if(await k(d),!d.get("SELECT * FROM apiKeys WHERE id = ?",[a]))return null;let{generateApiKeyWithMachine:f}=await c.e(6844).then(c.bind(c,86844));for(let c=0;c<5;c+=1){let e=f(b);try{return d.run("UPDATE apiKeys SET key = ?, machineId = ? WHERE id = ?",[e.key,b,a]),m(d.get("SELECT * FROM apiKeys WHERE id = ?",[a]))}catch(a){if(String(a?.message||a||"").toLowerCase().includes("unique")&&c<4)continue;throw a}}throw Error("Failed to generate a unique API key")}async function u(a){let b=await (0,e.c)();await k(b);let c=b.run("DELETE FROM apiKeys WHERE id = ?",[a]);return(c?.changes??0)>0}async function v(a){let b=await (0,e.c)();await k(b);let c=b.get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!c&&(1===c.isActive||!0===c.isActive)}},77638:(a,b,c)=>{"use strict";c.d(b,{Kc:()=>M,Nn:()=>E,RT:()=>C,Y4:()=>F,d9:()=>L,zW:()=>B});var d=c(55511),e=c.n(d),f=c(45903),g=c(644);let h=Number(process.env.OBSERVABILITY_MYSQL_MAX_JSON_BYTES||262144),i={expiresAt:0,value:null},j=!1,k=new Set;function l(a,b){k.has(a)||(k.add(a),console.warn(b))}function m(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)}let n=new Set(["ER_NO_SUCH_TABLE","ER_BAD_FIELD_ERROR","ER_BAD_TABLE_ERROR","ER_CANT_DROP_FIELD_OR_KEY"]);async function o(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 p(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 q(a,b,c){let d=await o(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 r(a,b,c){let d=await p(a,b);for(let[e,f]of c)d.has(e)||(await a.query(`ALTER TABLE ${b} ADD ${f}`),d.add(e))}async function s(a){await q(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 r(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 q(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 r(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 t(a){return String(a??"").trim()}function u(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function v(a){let b=a?new Date(a):new Date;return(Number.isNaN(b.getTime())?new Date().toISOString():b.toISOString()).replace("T"," ").replace("Z","")}function w(a){if(null==a)return null;if("string"==typeof a)try{return JSON.parse(a),a}catch{return JSON.stringify(a)}return(0,g.s)(a)}function x(a){if(null==a)return{};let b=w(a)||"{}";return Buffer.byteLength(b,"utf8")<=h?a:{_truncated:!0,_originalSizeBytes:Buffer.byteLength(b,"utf8"),_preview:b.slice(0,1e3)}}async function y(){let a=Date.now();if(i.value&&i.expiresAt>a)return i.value;try{let b=(0,f.I6)(await (0,f.L7)());i={value:!0===b.enabled&&"mysql"===b.type&&"false"!==process.env.OBSERVABILITY_MYSQL_ENABLED?b:null,expiresAt:a+5e3}}catch(b){l("config",`[observability-mysql] Unable to read MySQL log config: ${b?.message||b}`),i={value:null,expiresAt:a+5e3}}return i.value}async function z(a){let b=await c.e(8491).then(c.t.bind(c,38491,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,multipleStatements:!0,dateStrings:!0,connectTimeout:3e3,timezone:"Z"});return await d.query("SET time_zone = '+00:00'"),d}async function A(a){j||(await a.query(`
195
195
  CREATE TABLE IF NOT EXISTS usage_events (
196
196
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
197
197
  dedupe_key VARCHAR(96) NOT NULL,
@@ -223,16 +223,16 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
223
223
  is_streaming TINYINT DEFAULT 0,
224
224
  is_combo TINYINT DEFAULT 0,
225
225
  combo_name VARCHAR(255),
226
- thinking_enabled TINYINT NULL,
227
- thinking_auto_off TINYINT DEFAULT 0,
228
- thinking_auto_off_reason VARCHAR(160),
229
- prompt_chars BIGINT DEFAULT 0,
230
- force_thinking_off_above_chars BIGINT DEFAULT 0,
231
226
  prompt_tokens BIGINT DEFAULT 0,
232
227
  completion_tokens BIGINT DEFAULT 0,
233
228
  total_tokens BIGINT DEFAULT 0,
234
229
  cached_tokens BIGINT DEFAULT 0,
235
230
  reasoning_tokens BIGINT DEFAULT 0,
231
+ thinking_enabled TINYINT NULL,
232
+ thinking_auto_off TINYINT DEFAULT 0,
233
+ thinking_auto_off_reason VARCHAR(120),
234
+ prompt_chars BIGINT DEFAULT 0,
235
+ force_thinking_off_above_chars BIGINT DEFAULT 0,
236
236
  cost DECIMAL(18,8) DEFAULT 0,
237
237
  status VARCHAR(80),
238
238
  tokens_json JSON,
@@ -244,9 +244,7 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
244
244
  INDEX idx_usage_events_api_key (api_key_id, api_key_fingerprint, timestamp),
245
245
  INDEX idx_usage_events_client_ip (client_ip_normalized, timestamp),
246
246
  INDEX idx_usage_events_source_tool (source_tool, timestamp),
247
- INDEX idx_usage_events_session (session_id, timestamp),
248
- INDEX idx_usage_events_thinking (thinking_enabled, thinking_auto_off, timestamp),
249
- INDEX idx_usage_events_prompt_chars (prompt_chars, timestamp)
247
+ INDEX idx_usage_events_session (session_id, timestamp)
250
248
  ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
251
249
 
252
250
  CREATE TABLE IF NOT EXISTS request_details (
@@ -297,16 +295,16 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
297
295
  is_streaming AS isStreaming,
298
296
  is_combo AS isCombo,
299
297
  combo_name AS comboName,
300
- thinking_enabled AS thinkingEnabled,
301
- thinking_auto_off AS thinkingAutoOff,
302
- thinking_auto_off_reason AS thinkingAutoOffReason,
303
- prompt_chars AS promptChars,
304
- force_thinking_off_above_chars AS forceThinkingOffAboveChars,
305
298
  prompt_tokens AS promptTokens,
306
299
  completion_tokens AS completionTokens,
307
300
  total_tokens AS totalTokens,
308
301
  cached_tokens AS cachedTokens,
309
302
  reasoning_tokens AS reasoningTokens,
303
+ thinking_enabled AS thinkingEnabled,
304
+ thinking_auto_off AS thinkingAutoOff,
305
+ thinking_auto_off_reason AS thinkingAutoOffReason,
306
+ prompt_chars AS promptChars,
307
+ force_thinking_off_above_chars AS forceThinkingOffAboveChars,
310
308
  cost,
311
309
  status,
312
310
  JSON_SET(
@@ -338,9 +336,9 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
338
336
  endpoint, request_id, session_id, client_ip, client_ip_normalized, client_host, client_user_agent,
339
337
  source_tool, source_tool_label, source_host, latency_ms, ttft_ms, status_code,
340
338
  error_code, error_type, error_message_short, is_streaming, is_combo, combo_name,
339
+ prompt_tokens, completion_tokens, total_tokens, cached_tokens, reasoning_tokens,
341
340
  thinking_enabled, thinking_auto_off, thinking_auto_off_reason, prompt_chars, force_thinking_off_above_chars,
342
- prompt_tokens, completion_tokens, total_tokens, cached_tokens, reasoning_tokens, cost,
343
- status, tokens_json, meta_json
341
+ cost, status, tokens_json, meta_json
344
342
  ) VALUES (
345
343
  ?, UTC_TIMESTAMP(3), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
346
344
  ) ON DUPLICATE KEY UPDATE
@@ -365,20 +363,20 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
365
363
  error_code = VALUES(error_code),
366
364
  error_type = VALUES(error_type),
367
365
  error_message_short = VALUES(error_message_short),
368
- thinking_enabled = VALUES(thinking_enabled),
369
- thinking_auto_off = VALUES(thinking_auto_off),
370
- thinking_auto_off_reason = VALUES(thinking_auto_off_reason),
371
- prompt_chars = VALUES(prompt_chars),
372
- force_thinking_off_above_chars = VALUES(force_thinking_off_above_chars),
373
366
  prompt_tokens = VALUES(prompt_tokens),
374
367
  completion_tokens = VALUES(completion_tokens),
375
368
  total_tokens = VALUES(total_tokens),
376
369
  cached_tokens = VALUES(cached_tokens),
377
370
  reasoning_tokens = VALUES(reasoning_tokens),
371
+ thinking_enabled = VALUES(thinking_enabled),
372
+ thinking_auto_off = VALUES(thinking_auto_off),
373
+ thinking_auto_off_reason = VALUES(thinking_auto_off_reason),
374
+ prompt_chars = VALUES(prompt_chars),
375
+ force_thinking_off_above_chars = VALUES(force_thinking_off_above_chars),
378
376
  cost = VALUES(cost),
379
377
  status = VALUES(status),
380
378
  tokens_json = VALUES(tokens_json),
381
- meta_json = VALUES(meta_json)`,[i,v(a.timestamp),t(a.provider)||null,t(a.model)||null,t(a.connectionId)||null,t(a.apiKeyFingerprint||a.apiKey)||null,t(a.apiKeyId)||null,t(a.apiKeyName)||null,t(a.apiKeyOwner)||null,t(a.endpoint)||null,t(a.requestId)||null,t(a.sessionId)||null,t(a.clientIp)||null,t(a.clientIpNormalized)||null,t(a.clientHost)||null,t(a.clientUserAgent)||null,t(a.sourceTool)||null,t(a.sourceToolLabel)||null,t(a.sourceHost)||null,u(a.latencyMs,0),u(a.ttftMs,0),null==a.statusCode?null:u(a.statusCode,null),t(a.errorCode)||null,t(a.errorType)||null,t(a.errorMessageShort)||null,+!!a.isStreaming,+!!a.isCombo,t(a.comboName)||null,null===a.thinkingEnabled||void 0===a.thinkingEnabled?null:+!!a.thinkingEnabled,+!!a.thinkingAutoOff,t(a.thinkingAutoOffReason)||null,u(a.promptChars,0),u(a.forceThinkingOffAboveChars,0),h.promptTokens,h.completionTokens,h.totalTokens,h.cachedTokens,h.reasoningTokens,u(a.cost,0),t(a.status)||null,w(h.tokens),w(a.meta||{})]),!0}catch(b){let a=m(b);return l("usage-write",`[observability-mysql] Failed to write usage_events: ${a}`),n.has(b?.code)&&(j=!1),!1}finally{c&&await c.end().catch(()=>{})}}async function C(a=[]){let b,c=await y();if(!c||!Array.isArray(a)||0===a.length)return!1;try{for(let d of(b=await z(c),await A(b),a)){let a={...d,request:x(d.request),providerRequest:x(d.providerRequest),providerResponse:x(d.providerResponse),response:x(d.response)},c=w(a)||"{}";await b.query(`INSERT INTO request_details (
379
+ meta_json = VALUES(meta_json)`,[i,v(a.timestamp),t(a.provider)||null,t(a.model)||null,t(a.connectionId)||null,t(a.apiKeyFingerprint||a.apiKey)||null,t(a.apiKeyId)||null,t(a.apiKeyName)||null,t(a.apiKeyOwner)||null,t(a.endpoint)||null,t(a.requestId)||null,t(a.sessionId)||null,t(a.clientIp)||null,t(a.clientIpNormalized)||null,t(a.clientHost)||null,t(a.clientUserAgent)||null,t(a.sourceTool)||null,t(a.sourceToolLabel)||null,t(a.sourceHost)||null,u(a.latencyMs,0),u(a.ttftMs,0),null==a.statusCode?null:u(a.statusCode,null),t(a.errorCode)||null,t(a.errorType)||null,t(a.errorMessageShort)||null,+!!a.isStreaming,+!!a.isCombo,t(a.comboName)||null,h.promptTokens,h.completionTokens,h.totalTokens,h.cachedTokens,h.reasoningTokens,null===a.thinkingEnabled||void 0===a.thinkingEnabled?null:+!!a.thinkingEnabled,+!!a.thinkingAutoOff,t(a.thinkingAutoOffReason)||null,u(a.promptChars,0),u(a.forceThinkingOffAboveChars,0),u(a.cost,0),t(a.status)||null,w(h.tokens),w(a.meta||{})]),!0}catch(b){let a=m(b);return l("usage-write",`[observability-mysql] Failed to write usage_events: ${a}`),n.has(b?.code)&&(j=!1),!1}finally{c&&await c.end().catch(()=>{})}}async function C(a=[]){let b,c=await y();if(!c||!Array.isArray(a)||0===a.length)return!1;try{for(let d of(b=await z(c),await A(b),a)){let a={...d,request:x(d.request),providerRequest:x(d.providerRequest),providerResponse:x(d.providerResponse),response:x(d.response)},c=w(a)||"{}";await b.query(`INSERT INTO request_details (
382
380
  id, created_at, timestamp, provider, model, connection_id, status, data_json, data_size_bytes
383
381
  ) VALUES (?, UTC_TIMESTAMP(3), ?, ?, ?, ?, ?, ?, ?)
384
382
  ON DUPLICATE KEY UPDATE
@@ -388,10 +386,9 @@ exports.id=402,exports.ids=[402],exports.modules={490:(a,b,c)=>{"use strict";c.d
388
386
  connection_id = VALUES(connection_id),
389
387
  status = VALUES(status),
390
388
  data_json = VALUES(data_json),
391
- data_size_bytes = VALUES(data_size_bytes)`,[t(a.id),v(a.timestamp),t(a.provider)||null,t(a.model)||null,t(a.connectionId)||null,t(a.status)||null,c,Buffer.byteLength(c,"utf8")])}return!0}catch(a){return l("request-details-write",`[observability-mysql] Failed to write request_details: ${m(a)}`),!1}finally{b&&await b.end().catch(()=>{})}}let D=0;async function E(a=1e3){let b;if(Date.now()-D<6e4)return;D=Date.now();let c=await y();if(c)try{b=await z(c);let[[d]]=await b.query("SELECT COUNT(*) AS c FROM request_details"),e=Number(d?.c||0)-a;if(e<=0)return;await b.query("DELETE FROM request_details ORDER BY created_at ASC LIMIT ?",[e])}catch(a){l("request-details-purge",`[observability-mysql] Failed to purge request_details: ${m(a)}`)}finally{b&&await b.end().catch(()=>{})}}async function F(a={}){let b,c=await y();if(!c)return null;try{b=await z(c),await A(b);let d=[],e=[];a.provider&&(d.push("provider = ?"),e.push(a.provider)),a.model&&(d.push("model = ?"),e.push(a.model)),a.connectionId&&(d.push("connection_id = ?"),e.push(a.connectionId)),a.status&&(d.push("status = ?"),e.push(a.status)),a.startDate&&(d.push("timestamp >= ?"),e.push(v(a.startDate))),a.endDate&&(d.push("timestamp <= ?"),e.push(v(a.endDate)));let f=d.length?`WHERE ${d.join(" AND ")}`:"",[[h]]=await b.query(`SELECT COUNT(*) AS c FROM request_details ${f}`,e),i=Number(h?.c||0),j=Math.max(1,Number(a.page)||1),k=Math.max(1,Math.min(100,Number(a.pageSize)||50)),l=Math.ceil(i/k),[m]=await b.query(`SELECT data_json FROM request_details ${f} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...e,k,(j-1)*k]);return{details:m.map(a=>(0,g.q)("string"==typeof a.data_json?a.data_json:(0,g.s)(a.data_json),{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1},dbInfo:{type:"mysql",host:c.host,database:c.database}}}catch(a){return l("request-details-read",`[observability-mysql] Failed to read request_details: ${a?.message||a}`),null}finally{b&&await b.end().catch(()=>{})}}let G=new Set(["requests","requestCount","totalRequests","successRequests","errorRequests","pendingRequests","promptTokens","completionTokens","totalTokens","cachedTokens","reasoningTokens","inputTokens","outputTokens","thinkingEnabled","thinkingAutoOff","promptChars","forceThinkingOffAboveChars","cost","totalCost","inputCost","outputCost","avgCost","latencyMs","ttftMs","avgLatencyMs","p50LatencyMs","p95LatencyMs","p99LatencyMs","statusCode","httpStatus","count","total","totalItems","totalPages","page","pageSize","errors","success","failures","errorRate","successRate","slowRequestRate","longInputRate","payloadSizeBytes","dataSizeBytes","sizeBytes"]),H=new Set(["timestamp","created_at","createdAt","created","updated_at","updatedAt","updated"]);function I(a){return"string"!=typeof a?a:/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(a)?v(a):a}function J(a){let b=String(a||"");return(b=(b=(b=(b=b.replace(/CAST\(status AS TEXT\)/g,"CAST(status AS CHAR)")).replace(/CAST\(strftime\('%s',\s*timestamp\) AS INTEGER\)/g,"UNIX_TIMESTAMP(timestamp)")).replace(/GLOB\s+'2\[0-9\]\[0-9\]\*'/g,"REGEXP '^2[0-9][0-9].*'")).replace(/GLOB\s+'([^']*)\*'/g,(a,b)=>`LIKE '${String(b).replace(/'/g,"''")}%'`)).replace(/\bAS\s+key\b/gi,"AS `key`")}async function K(a){let b=await z(a);return await A(b),await b.query("SET SESSION sql_mode = CONCAT_WS(',', REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''), 'PIPES_AS_CONCAT')").catch(()=>{}),b}async function L(){let a=await y();if(!a)return null;let b=await K(a);try{await b.query("SELECT 1 FROM usage_events LIMIT 1")}catch(a){return l("usage-events-read",`[observability-mysql] MySQL usage_events table is not readable: ${a?.message||a}`),await b.end().catch(()=>{}),null}let c=async(a,c=[])=>{let[d]=await b.query(J(a),(c||[]).map(I));return Array.isArray(d)?d.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a))return a;let b={...a};for(let a of Object.keys(b))b[a]=function(a,b){let c;if(null==b)return b;let d=function(a,b){if(!H.has(String(a||""))||"string"!=typeof b)return b;let c=b.trim();return/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d{1,6})?$/.test(c)?`${c.replace(" ","T")}Z`:b}(a,b);if(d!==b)return d;if("number"==typeof b)return Number.isFinite(b)?b:0;if("bigint"==typeof b)return Number(b);if("string"==typeof b&&(c=String(a||""),G.has(c)||/(?:Requests|Tokens|Cost|LatencyMs|Rate|Count|Bytes|SizeBytes|Items|Pages|Ms)$/i.test(c)||/^(?:p50|p95|p99|avg|min|max|sum|total|count)$/i.test(c))){let a=b.trim();if(/^-?\d+(?:\.\d+)?$/.test(a)){let b=Number(a);return Number.isFinite(b)?b:0}}return b}(a,b[a]);return b}):d};return{type:"mysql",all:async(a,b=[])=>await c(a,b),async get(a,b=[]){let d=await c(a,b);return d?.[0]||null},async run(a,c=[]){let[d]=await b.query(J(a),(c||[]).map(I));return d},async close(){await b.end().catch(()=>{})}}}async function M(a=100){let b=await L();if(!b)return null;try{return await b.all(`SELECT timestamp, provider, model, connectionId, apiKeyFingerprint, endpoint, status, statusCode, errorMessageShort,
392
- thinkingEnabled, thinkingAutoOff, thinkingAutoOffReason, promptChars, forceThinkingOffAboveChars,
389
+ data_size_bytes = VALUES(data_size_bytes)`,[t(a.id),v(a.timestamp),t(a.provider)||null,t(a.model)||null,t(a.connectionId)||null,t(a.status)||null,c,Buffer.byteLength(c,"utf8")])}return!0}catch(a){return l("request-details-write",`[observability-mysql] Failed to write request_details: ${m(a)}`),!1}finally{b&&await b.end().catch(()=>{})}}let D=0;async function E(a=1e3){let b;if(Date.now()-D<6e4)return;D=Date.now();let c=await y();if(c)try{b=await z(c);let[[d]]=await b.query("SELECT COUNT(*) AS c FROM request_details"),e=Number(d?.c||0)-a;if(e<=0)return;await b.query("DELETE FROM request_details ORDER BY created_at ASC LIMIT ?",[e])}catch(a){l("request-details-purge",`[observability-mysql] Failed to purge request_details: ${m(a)}`)}finally{b&&await b.end().catch(()=>{})}}async function F(a={}){let b,c=await y();if(!c)return null;try{b=await z(c),await A(b);let d=[],e=[];a.provider&&(d.push("provider = ?"),e.push(a.provider)),a.model&&(d.push("model = ?"),e.push(a.model)),a.connectionId&&(d.push("connection_id = ?"),e.push(a.connectionId)),a.status&&(d.push("status = ?"),e.push(a.status)),a.startDate&&(d.push("timestamp >= ?"),e.push(v(a.startDate))),a.endDate&&(d.push("timestamp <= ?"),e.push(v(a.endDate)));let f=d.length?`WHERE ${d.join(" AND ")}`:"",[[h]]=await b.query(`SELECT COUNT(*) AS c FROM request_details ${f}`,e),i=Number(h?.c||0),j=Math.max(1,Number(a.page)||1),k=Math.max(1,Math.min(100,Number(a.pageSize)||50)),l=Math.ceil(i/k),[m]=await b.query(`SELECT data_json FROM request_details ${f} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...e,k,(j-1)*k]);return{details:m.map(a=>(0,g.q)("string"==typeof a.data_json?a.data_json:(0,g.s)(a.data_json),{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1},dbInfo:{type:"mysql",host:c.host,database:c.database}}}catch(a){return l("request-details-read",`[observability-mysql] Failed to read request_details: ${a?.message||a}`),null}finally{b&&await b.end().catch(()=>{})}}let G=new Set(["requests","requestCount","totalRequests","successRequests","errorRequests","pendingRequests","promptTokens","completionTokens","totalTokens","cachedTokens","reasoningTokens","inputTokens","outputTokens","cost","totalCost","inputCost","outputCost","avgCost","latencyMs","ttftMs","avgLatencyMs","p50LatencyMs","p95LatencyMs","p99LatencyMs","statusCode","httpStatus","count","total","totalItems","totalPages","page","pageSize","errors","success","failures","errorRate","successRate","slowRequestRate","longInputRate","payloadSizeBytes","dataSizeBytes","sizeBytes"]),H=new Set(["timestamp","created_at","createdAt","created","updated_at","updatedAt","updated"]);function I(a){return"string"!=typeof a?a:/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(a)?v(a):a}function J(a){let b=String(a||"");return(b=(b=(b=(b=b.replace(/CAST\(status AS TEXT\)/g,"CAST(status AS CHAR)")).replace(/CAST\(strftime\('%s',\s*timestamp\) AS INTEGER\)/g,"UNIX_TIMESTAMP(timestamp)")).replace(/GLOB\s+'2\[0-9\]\[0-9\]\*'/g,"REGEXP '^2[0-9][0-9].*'")).replace(/GLOB\s+'([^']*)\*'/g,(a,b)=>`LIKE '${String(b).replace(/'/g,"''")}%'`)).replace(/\bAS\s+key\b/gi,"AS `key`")}async function K(a){let b=await z(a);return await A(b),await b.query("SET SESSION sql_mode = CONCAT_WS(',', REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''), 'PIPES_AS_CONCAT')").catch(()=>{}),b}async function L(){let a=await y();if(!a)return null;let b=await K(a);try{await b.query("SELECT 1 FROM usage_events LIMIT 1")}catch(a){return l("usage-events-read",`[observability-mysql] MySQL usage_events table is not readable: ${a?.message||a}`),await b.end().catch(()=>{}),null}let c=async(a,c=[])=>{let[d]=await b.query(J(a),(c||[]).map(I));return Array.isArray(d)?d.map(a=>{if(!a||"object"!=typeof a||Array.isArray(a))return a;let b={...a};for(let a of Object.keys(b))b[a]=function(a,b){let c;if(null==b)return b;let d=function(a,b){if(!H.has(String(a||""))||"string"!=typeof b)return b;let c=b.trim();return/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d{1,6})?$/.test(c)?`${c.replace(" ","T")}Z`:b}(a,b);if(d!==b)return d;if("number"==typeof b)return Number.isFinite(b)?b:0;if("bigint"==typeof b)return Number(b);if("string"==typeof b&&(c=String(a||""),G.has(c)||/(?:Requests|Tokens|Cost|LatencyMs|Rate|Count|Bytes|SizeBytes|Items|Pages|Ms)$/i.test(c)||/^(?:p50|p95|p99|avg|min|max|sum|total|count)$/i.test(c))){let a=b.trim();if(/^-?\d+(?:\.\d+)?$/.test(a)){let b=Number(a);return Number.isFinite(b)?b:0}}return b}(a,b[a]);return b}):d};return{type:"mysql",all:async(a,b=[])=>await c(a,b),async get(a,b=[]){let d=await c(a,b);return d?.[0]||null},async run(a,c=[]){let[d]=await b.query(J(a),(c||[]).map(I));return d},async close(){await b.end().catch(()=>{})}}}async function M(a=100){let b=await L();if(!b)return null;try{return await b.all(`SELECT timestamp, provider, model, connectionId, apiKeyFingerprint, endpoint, status, statusCode, errorMessageShort,
393
390
  promptTokens, completionTokens, totalTokens, cachedTokens, reasoningTokens, cost
394
- 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,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(56403)},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:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function l(a){let b=await (0,d.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 m(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 n(){return await f.clear(),h(),{}}},99703:(a,b,c)=>{"use strict";c.d(b,{BY:()=>D,E5:()=>F,Py:()=>B,Zx:()=>G,_V:()=>k,j$:()=>E,rg:()=>A,sZ:()=>C,uw:()=>z});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._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0});let f=global._pendingRequests,g=global._lastErrorProvider,h=global._pendingTimers,i=global._recentRing,j=global._connectionMapCache,k=global._statsEmitter;function l(a){return String(a||"").trim()}function m(a){return l(a).toLowerCase()}function n(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function o(a){let b=l(a);return b?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key"}function p(a,b){let c=m(a),d=Number(b);return Number.isFinite(d)&&d>=400?c||"error":c||(Number.isFinite(d),"ok")}function q(a){return["pending","running","in_progress","queued","processing"].includes(m(a))}function r(a,b){let c,d=m(a);if(c=m(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=p(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 s(a,b,c){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&&Object.assign(a[b],c.meta))}async function t(){if(Date.now()-j.ts<3e4)return j.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;j.map=d,j.ts=Date.now()}catch{}return j.map}let u=0;async function v(){if((!i.initialized||!(i.items.length>=50))&&!(Date.now()-u<3e4)){u=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,endpoint:a.endpoint,cost:n(a.cost,0),status:a.status,statusCode:a.statusCode,tokens:{prompt_tokens:n(a.promptTokens,0),completion_tokens:n(a.completionTokens,0)}})),c=new Set(i.items.map(a=>`${a.timestamp}|${a.model}|${a.provider}`)),d=b.filter(a=>!c.has(`${a.timestamp}|${a.model}|${a.provider}`)),f=[...i.items,...d].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).slice(0,50);i.items=f,i.initialized=!0}catch(a){console.error(`[usageRepo] Failed to backfill recent requests from MySQL: ${a?.message||a||"unknown error"}`)}}}async function w(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=d.cached_tokens||d.cache_read_input_tokens||0,j=Math.max(0,h-i);g+=j*(f.input/1e6),i>0&&(g+=i*((f.cached||f.input)/1e6));let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;l>0&&(g+=l*((f.reasoning||f.output)/1e6));let m=d.cache_creation_input_tokens||0;return m>0&&(g+=m*((f.cache_creation||f.input)/1e6)),g}catch(a){return console.error("Error calculating cost:",a),0}}async function x(a){let b=l(a);if(!b)return{apiKeyId:"",apiKeyFingerprint:"local-no-key",apiKeyName:"Local / kh\xf4ng d\xf9ng API key",apiKeyOwner:""};let d=o(b);try{let{getApiKeyByKey:a}=await Promise.resolve().then(c.bind(c,74452)),e=await a(b);if(e)return{apiKeyId:e.id||"",apiKeyFingerprint:d,apiKeyName:e.name||d,apiKeyOwner:e.ownerUser||e.createdByUser||""}}catch{}return{apiKeyId:"",apiKeyFingerprint:d,apiKeyName:d,apiKeyOwner:""}}function y(a){if(!0===a||1===a)return 1;if(!1===a||0===a)return 0;let b=l(a).toLowerCase();return["true","1","yes","on","enabled"].includes(b)?1:["false","0","no","off","disabled"].includes(b)?0:null}function z(a,b,c,d,e=!1){let i=b?`${a} (${b})`:a,j=`${c}|${i}`;f.byModel[i]||(f.byModel[i]=0),f.byModel[i]=Math.max(0,f.byModel[i]+(d?1:-1)),0===f.byModel[i]&&delete f.byModel[i],c&&(f.byAccount[c]||(f.byAccount[c]={}),f.byAccount[c][i]||(f.byAccount[c][i]=0),f.byAccount[c][i]=Math.max(0,f.byAccount[c][i]+(d?1:-1)),0===f.byAccount[c][i]&&(delete f.byAccount[c][i],0===Object.keys(f.byAccount[c]).length&&delete f.byAccount[c])),d?(clearTimeout(h[j]),h[j]=setTimeout(()=>{delete h[j],f.byModel[i]>0&&(f.byModel[i]=0),c&&f.byAccount[c]?.[i]>0&&(f.byAccount[c][i]=0),k.emit("pending")},6e4)):(clearTimeout(h[j]),delete h[j]),!d&&e&&b&&(g.provider=b.toLowerCase(),g.ts=Date.now()),k.emit("pending")}async function A(){let a=[],b=await t();for(let[c,d]of Object.entries(f.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}return await v(),{activeRequests:a,recentRequests:[...i.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).slice(0,20),errorProvider:Date.now()-g.ts<1e4?g.provider:""}}async function B(a={}){try{if(q(a?.status))return null;let b=await x(a.apiKey),c=function(a={},b={}){let c,d=a.timestamp||new Date().toISOString(),e=a.tokens&&"object"==typeof a.tokens?a.tokens:{},f=n(a.promptTokens,e.prompt_tokens??e.input_tokens??0),g=n(a.completionTokens,e.completion_tokens??e.output_tokens??0),h=n(a.cachedTokens,e.cached_tokens??e.cache_read_input_tokens??e.prompt_tokens_details?.cached_tokens??0),i=n(a.reasoningTokens,e.reasoning_tokens??e.completion_tokens_details?.reasoning_tokens??0),j=n(a.totalTokens,f+g),k=null==a.statusCode?null:n(a.statusCode,null),m=p(a.status,k),q=l(a.clientIp||a.sourceIp),r=(c=l(a.clientIpNormalized||q))?c.split(",")[0].trim().replace(/^::ffff:/,""):"",s=a.meta&&"object"==typeof a.meta?a.meta:{},t=s.requestPolicyMeta&&"object"==typeof s.requestPolicyMeta?s.requestPolicyMeta:{},u=y(a.thinkingEnabled??t.thinkingEnabled),v=y(a.thinkingAutoOff??t.thinkingAutoOff);return{timestamp:d,provider:l(a.provider)||"unknown",model:l(a.model)||"unknown",connectionId:l(a.connectionId),apiKey:b.apiKeyFingerprint||o(a.apiKey),apiKeyId:b.apiKeyId||l(a.apiKeyId),apiKeyFingerprint:b.apiKeyFingerprint||l(a.apiKeyFingerprint)||o(a.apiKey),apiKeyName:b.apiKeyName||l(a.apiKeyName),apiKeyOwner:b.apiKeyOwner||l(a.apiKeyOwner),endpoint:l(a.endpoint),requestId:l(a.requestId||s.requestId),sessionId:l(a.sessionId||s.sessionId),clientIp:q,clientIpNormalized:r,clientHost:l(a.clientHost||s.clientHost),clientUserAgent:l(a.clientUserAgent||s.clientUserAgent),sourceTool:l(a.sourceTool||s.sourceTool),sourceToolLabel:l(a.sourceToolLabel||s.sourceToolLabel),sourceHost:l(a.sourceHost||s.sourceHost),latencyMs:n(a.latencyMs??s.latencyMs,0),ttftMs:n(a.ttftMs??s.ttftMs,0),statusCode:k,errorCode:l(a.errorCode||s.errorCode),errorType:l(a.errorType||s.errorType),errorMessageShort:function(a,b=500){let c=l(a).replace(/\s+/g," ");return c.length>b?`${c.slice(0,b-1)}…`:c}(a.errorMessageShort||a.errorMessage||s.errorMessageShort||s.errorMessage),isStreaming:+!!a.isStreaming,isCombo:+!!a.isCombo,comboName:l(a.comboName||s.comboName),thinkingEnabled:u,thinkingAutoOff:null===v?0:v,thinkingAutoOffReason:l(a.thinkingAutoOffReason||t.thinkingAutoOffReason||s.thinkingAutoOffReason),promptChars:n(a.promptChars??t.promptChars??s.promptChars,0),forceThinkingOffAboveChars:n(a.forceThinkingOffAboveChars??t.forceThinkingOffAboveChars??s.forceThinkingOffAboveChars,0),promptTokens:f,completionTokens:g,totalTokens:j,cachedTokens:h,reasoningTokens:i,cost:n(a.cost,0),status:m,tokens:{prompt_tokens:f,completion_tokens:g,cached_tokens:h,reasoning_tokens:i},meta:{...s,apiKeyFingerprint:b.apiKeyFingerprint||l(a.apiKeyFingerprint)||o(a.apiKey),apiKeyId:b.apiKeyId||l(a.apiKeyId),requestPolicyMeta:{thinkingEnabled:null===u?null:1===u,thinkingAutoOff:(null===v?0:v)===1,thinkingAutoOffReason:l(a.thinkingAutoOffReason||t.thinkingAutoOffReason||s.thinkingAutoOffReason),promptChars:n(a.promptChars??t.promptChars??s.promptChars,0),forceThinkingOffAboveChars:n(a.forceThinkingOffAboveChars??t.forceThinkingOffAboveChars??s.forceThinkingOffAboveChars,0)}}}}(a,b);if(c.cost||(c.cost=await w(c.provider,c.model,c.tokens)),!await (0,e.zW)(c).catch(a=>(console.error(`[usageRepo] Failed to write MySQL usage_events: ${a?.message||a||"unknown error"}`),!1)))return console.error("[usageRepo] MySQL usage_events write returned false",{requestId:c.requestId,provider:c.provider,model:c.model,status:c.status}),null;return i.items.push(c),i.items.length>50&&(i.items=i.items.slice(-50)),k.emit("update"),c}catch(a){return console.error("Failed to save request lifecycle:",a),null}}async function C(a){let b=p(a?.status,a?.statusCode);if(q(b))return null;let c=a?.tokens||{},d=c.prompt_tokens??c.input_tokens??a?.promptTokens??0,e=c.completion_tokens??c.output_tokens??a?.completionTokens??0;return(l(a?.status)||a?.statusCode!==void 0&&a?.statusCode!==null)&&!r(b,a?.statusCode)||0!==d||0!==e?B({...a,status:a?.status||"ok"}):null}async function D(a="all"){let b={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:f,activeRequests:(await A()).activeRequests,recentRequests:(await A()).recentRequests,errorProvider:Date.now()-g.ts<1e4?g.provider:""},c=await (0,e.d9)();if(!c)return console.error("[usageRepo] MySQL usage_events adapter unavailable for getUsageStats"),b;try{let d="today"===a?new Date().setHours(0,0,0,0):"24h"===a?Date.now()-864e5:null,e=d?[new Date(d).toISOString()]:[];for(let a of(await c.all(`SELECT provider, model, connectionId, apiKeyFingerprint, endpoint, COUNT(*) AS requests,
391
+ 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,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(56403)},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:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function l(a){let b=await (0,d.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 m(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 n(){return await f.clear(),h(),{}}},99703:(a,b,c)=>{"use strict";c.d(b,{BY:()=>D,E5:()=>F,Py:()=>B,Zx:()=>G,_V:()=>k,j$:()=>E,rg:()=>A,sZ:()=>C,uw:()=>z});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._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0});let f=global._pendingRequests,g=global._lastErrorProvider,h=global._pendingTimers,i=global._recentRing,j=global._connectionMapCache,k=global._statsEmitter;function l(a){return String(a||"").trim()}function m(a){return l(a).toLowerCase()}function n(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function o(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 p(a){let b=l(a);return b?b.length<=12?b:`${b.slice(0,8)}...${b.slice(-4)}`:"local-no-key"}function q(a,b){let c=m(a),d=Number(b);return Number.isFinite(d)&&d>=400?c||"error":c||(Number.isFinite(d),"ok")}function r(a){return["pending","running","in_progress","queued","processing"].includes(m(a))}function s(a,b){let c,d=m(a);if(c=m(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=q(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 t(a,b,c){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&&Object.assign(a[b],c.meta))}async function u(){if(Date.now()-j.ts<3e4)return j.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;j.map=d,j.ts=Date.now()}catch{}return j.map}let v=0;async function w(){if((!i.initialized||!(i.items.length>=50))&&!(Date.now()-v<3e4)){v=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,endpoint:a.endpoint,cost:n(a.cost,0),status:a.status,statusCode:a.statusCode,tokens:{prompt_tokens:n(a.promptTokens,0),completion_tokens:n(a.completionTokens,0)}})),c=new Set(i.items.map(a=>`${a.timestamp}|${a.model}|${a.provider}`)),d=b.filter(a=>!c.has(`${a.timestamp}|${a.model}|${a.provider}`)),f=[...i.items,...d].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).slice(0,50);i.items=f,i.initialized=!0}catch(a){console.error(`[usageRepo] Failed to backfill recent requests from MySQL: ${a?.message||a||"unknown error"}`)}}}async function x(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=d.cached_tokens||d.cache_read_input_tokens||0,j=Math.max(0,h-i);g+=j*(f.input/1e6),i>0&&(g+=i*((f.cached||f.input)/1e6));let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;l>0&&(g+=l*((f.reasoning||f.output)/1e6));let m=d.cache_creation_input_tokens||0;return m>0&&(g+=m*((f.cache_creation||f.input)/1e6)),g}catch(a){return console.error("Error calculating cost:",a),0}}async function y(a){let b=l(a);if(!b)return{apiKeyId:"",apiKeyFingerprint:"local-no-key",apiKeyName:"Local / kh\xf4ng d\xf9ng API key",apiKeyOwner:""};let d=p(b);try{let{getApiKeyByKey:a}=await Promise.resolve().then(c.bind(c,74452)),e=await a(b);if(e)return{apiKeyId:e.id||"",apiKeyFingerprint:d,apiKeyName:e.name||d,apiKeyOwner:e.ownerUser||e.createdByUser||""}}catch{}return{apiKeyId:"",apiKeyFingerprint:d,apiKeyName:d,apiKeyOwner:""}}function z(a,b,c,d,e=!1){let i=b?`${a} (${b})`:a,j=`${c}|${i}`;f.byModel[i]||(f.byModel[i]=0),f.byModel[i]=Math.max(0,f.byModel[i]+(d?1:-1)),0===f.byModel[i]&&delete f.byModel[i],c&&(f.byAccount[c]||(f.byAccount[c]={}),f.byAccount[c][i]||(f.byAccount[c][i]=0),f.byAccount[c][i]=Math.max(0,f.byAccount[c][i]+(d?1:-1)),0===f.byAccount[c][i]&&(delete f.byAccount[c][i],0===Object.keys(f.byAccount[c]).length&&delete f.byAccount[c])),d?(clearTimeout(h[j]),h[j]=setTimeout(()=>{delete h[j],f.byModel[i]>0&&(f.byModel[i]=0),c&&f.byAccount[c]?.[i]>0&&(f.byAccount[c][i]=0),k.emit("pending")},6e4)):(clearTimeout(h[j]),delete h[j]),!d&&e&&b&&(g.provider=b.toLowerCase(),g.ts=Date.now()),k.emit("pending")}async function A(){let a=[],b=await u();for(let[c,d]of Object.entries(f.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}return await w(),{activeRequests:a,recentRequests:[...i.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).slice(0,20),errorProvider:Date.now()-g.ts<1e4?g.provider:""}}async function B(a={}){try{if(r(a?.status))return null;let b=await y(a.apiKey),c=function(a={},b={}){let c,d=a.timestamp||new Date().toISOString(),e=a.tokens&&"object"==typeof a.tokens?a.tokens:{},f=n(a.promptTokens,e.prompt_tokens??e.input_tokens??0),g=n(a.completionTokens,e.completion_tokens??e.output_tokens??0),h=n(a.cachedTokens,e.cached_tokens??e.cache_read_input_tokens??e.prompt_tokens_details?.cached_tokens??0),i=n(a.reasoningTokens,e.reasoning_tokens??e.completion_tokens_details?.reasoning_tokens??0),j=n(a.totalTokens,f+g),k=null==a.statusCode?null:n(a.statusCode,null),m=q(a.status,k),r=l(a.clientIp||a.sourceIp),s=(c=l(a.clientIpNormalized||r))?c.split(",")[0].trim().replace(/^::ffff:/,""):"",t=a.meta&&"object"==typeof a.meta?a.meta:{},u=a.requestPolicyMeta&&"object"==typeof a.requestPolicyMeta?a.requestPolicyMeta:t.requestPolicyMeta&&"object"==typeof t.requestPolicyMeta?t.requestPolicyMeta:{},v=o(a.thinkingEnabled??u.thinkingEnabled),w=!0===o(a.thinkingAutoOff??u.thinkingAutoOff),x=n(a.promptChars??u.promptChars,0),y=n(a.forceThinkingOffAboveChars??u.forceThinkingOffAboveChars,0),z=l(a.thinkingAutoOffReason||u.thinkingAutoOffReason);return{timestamp:d,provider:l(a.provider)||"unknown",model:l(a.model)||"unknown",connectionId:l(a.connectionId),apiKey:b.apiKeyFingerprint||p(a.apiKey),apiKeyId:b.apiKeyId||l(a.apiKeyId),apiKeyFingerprint:b.apiKeyFingerprint||l(a.apiKeyFingerprint)||p(a.apiKey),apiKeyName:b.apiKeyName||l(a.apiKeyName),apiKeyOwner:b.apiKeyOwner||l(a.apiKeyOwner),endpoint:l(a.endpoint),requestId:l(a.requestId||t.requestId),sessionId:l(a.sessionId||t.sessionId),clientIp:r,clientIpNormalized:s,clientHost:l(a.clientHost||t.clientHost),clientUserAgent:l(a.clientUserAgent||t.clientUserAgent),sourceTool:l(a.sourceTool||t.sourceTool),sourceToolLabel:l(a.sourceToolLabel||t.sourceToolLabel),sourceHost:l(a.sourceHost||t.sourceHost),latencyMs:n(a.latencyMs??t.latencyMs,0),ttftMs:n(a.ttftMs??t.ttftMs,0),statusCode:k,errorCode:l(a.errorCode||t.errorCode),errorType:l(a.errorType||t.errorType),errorMessageShort:function(a,b=500){let c=l(a).replace(/\s+/g," ");return c.length>b?`${c.slice(0,b-1)}…`:c}(a.errorMessageShort||a.errorMessage||t.errorMessageShort||t.errorMessage),isStreaming:+!!a.isStreaming,isCombo:+!!a.isCombo,comboName:l(a.comboName||t.comboName),promptTokens:f,completionTokens:g,totalTokens:j,cachedTokens:h,reasoningTokens:i,thinkingEnabled:v,thinkingAutoOff:w,thinkingAutoOffReason:z,promptChars:x,forceThinkingOffAboveChars:y,cost:n(a.cost,0),status:m,tokens:{prompt_tokens:f,completion_tokens:g,cached_tokens:h,reasoning_tokens:i},meta:{...t,apiKeyFingerprint:b.apiKeyFingerprint||l(a.apiKeyFingerprint)||p(a.apiKey),apiKeyId:b.apiKeyId||l(a.apiKeyId),requestPolicyMeta:{...u||{},thinkingEnabled:v,thinkingAutoOff:w,thinkingAutoOffReason:z,promptChars:x,forceThinkingOffAboveChars:y}}}}(a,b);if(c.cost||(c.cost=await x(c.provider,c.model,c.tokens)),!await (0,e.zW)(c).catch(a=>(console.error(`[usageRepo] Failed to write MySQL usage_events: ${a?.message||a||"unknown error"}`),!1)))return console.error("[usageRepo] MySQL usage_events write returned false",{requestId:c.requestId,provider:c.provider,model:c.model,status:c.status}),null;return i.items.push(c),i.items.length>50&&(i.items=i.items.slice(-50)),k.emit("update"),c}catch(a){return console.error("Failed to save request lifecycle:",a),null}}async function C(a){let b=q(a?.status,a?.statusCode);if(r(b))return null;let c=a?.tokens||{},d=c.prompt_tokens??c.input_tokens??a?.promptTokens??0,e=c.completion_tokens??c.output_tokens??a?.completionTokens??0;return(l(a?.status)||a?.statusCode!==void 0&&a?.statusCode!==null)&&!s(b,a?.statusCode)||0!==d||0!==e?B({...a,status:a?.status||"ok"}):null}async function D(a="all"){let b={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:f,activeRequests:(await A()).activeRequests,recentRequests:(await A()).recentRequests,errorProvider:Date.now()-g.ts<1e4?g.provider:""},c=await (0,e.d9)();if(!c)return console.error("[usageRepo] MySQL usage_events adapter unavailable for getUsageStats"),b;try{let d="today"===a?new Date().setHours(0,0,0,0):"24h"===a?Date.now()-864e5:null,e=d?[new Date(d).toISOString()]:[];for(let a of(await c.all(`SELECT provider, model, connectionId, apiKeyFingerprint, endpoint, COUNT(*) AS requests,
395
392
  SUM(promptTokens) AS promptTokens, SUM(completionTokens) AS completionTokens, SUM(cost) AS cost, MAX(timestamp) AS lastUsed
396
393
  FROM usageHistory ${d?"WHERE timestamp >= ?":""}
397
- GROUP BY provider, model, connectionId, apiKeyFingerprint, endpoint`,e))){let c=n(a.requests,0),d=n(a.promptTokens,0),e=n(a.completionTokens,0),f=n(a.cost,0);b.totalRequests+=c,b.totalPromptTokens+=d,b.totalCompletionTokens+=e,b.totalCost+=f,s(b.byProvider,a.provider||"unknown",{requests:c,promptTokens:d,completionTokens:e,cost:f}),s(b.byModel,`${a.model||"unknown"} (${a.provider||"unknown"})`,{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{rawModel:a.model,provider:a.provider,lastUsed:a.lastUsed}}),a.connectionId&&s(b.byAccount,a.connectionId,{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{connectionId:a.connectionId,lastUsed:a.lastUsed}}),s(b.byApiKey,a.apiKeyFingerprint||"local-no-key",{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{apiKey:a.apiKeyFingerprint||"local-no-key",lastUsed:a.lastUsed}}),s(b.byEndpoint,a.endpoint||"Unknown",{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{endpoint:a.endpoint||"Unknown",lastUsed:a.lastUsed}})}let f=new Date,g=new Date(6e4*Math.floor(f.getTime()/6e4)),h=new Date(g.getTime()-54e4),i={};for(let a=0;a<10;a++){let c=g.getTime()-(9-a)*6e4;i[c]={requests:0,promptTokens:0,completionTokens:0,cost:0},b.last10Minutes.push(i[c])}for(let a of(await c.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[h.toISOString(),f.toISOString()]))){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);i[b]&&(i[b].requests++,i[b].promptTokens+=n(a.promptTokens,0),i[b].completionTokens+=n(a.completionTokens,0),i[b].cost+=n(a.cost,0))}return b}finally{await c.close?.()}}async function E(a="7d"){let b=Date.now(),c="today"===a||"24h"===a?24:"7d"===a?7:"30d"===a?30:60,d="today"===a||"24h"===a?36e5:864e5,f="today"===a?new Date(new Date().setHours(0,0,0,0)).getTime():b-c*d,g=Array.from({length:c},(a,b)=>{let c=f+b*d;return{label:36e5===d?new Date(c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}):new Date(c).toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:0,cost:0}}),h=await (0,e.d9)();if(!h)return console.error("[usageRepo] MySQL usage_events adapter unavailable for getChartData"),g;try{for(let a of(await h.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(f).toISOString()]))){let b=Math.min(c-1,Math.max(0,Math.floor((new Date(a.timestamp).getTime()-f)/d)));g[b].tokens+=n(a.promptTokens,0)+n(a.completionTokens,0),g[b].cost+=n(a.cost,0)}return g}finally{await h.close?.()}}async function F(a={}){if(!a||!(a.tokens||a.status||a.error))return null;let b=a.error?"error":a.status||"ok";return q(b)||!a.error&&r(b,a.statusCode)?null:B({provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId,endpoint:a.endpoint,tokens:a.tokens||{},status:b,statusCode:a.statusCode,errorMessage:a.error||a.errorMessage,meta:a})}async function G(a=100){let b=await (0,e.Kc)(a);return Array.isArray(b)?b.map(a=>({...a,apiKey:a.apiKeyFingerprint||a.apiKey,cost:n(a.cost,0),promptTokens:n(a.promptTokens,0),completionTokens:n(a.completionTokens,0)})):(console.error("[usageRepo] MySQL usage_events read returned null for getRecentLogs"),[])}}};
394
+ GROUP BY provider, model, connectionId, apiKeyFingerprint, endpoint`,e))){let c=n(a.requests,0),d=n(a.promptTokens,0),e=n(a.completionTokens,0),f=n(a.cost,0);b.totalRequests+=c,b.totalPromptTokens+=d,b.totalCompletionTokens+=e,b.totalCost+=f,t(b.byProvider,a.provider||"unknown",{requests:c,promptTokens:d,completionTokens:e,cost:f}),t(b.byModel,`${a.model||"unknown"} (${a.provider||"unknown"})`,{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{rawModel:a.model,provider:a.provider,lastUsed:a.lastUsed}}),a.connectionId&&t(b.byAccount,a.connectionId,{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{connectionId:a.connectionId,lastUsed:a.lastUsed}}),t(b.byApiKey,a.apiKeyFingerprint||"local-no-key",{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{apiKey:a.apiKeyFingerprint||"local-no-key",lastUsed:a.lastUsed}}),t(b.byEndpoint,a.endpoint||"Unknown",{requests:c,promptTokens:d,completionTokens:e,cost:f,meta:{endpoint:a.endpoint||"Unknown",lastUsed:a.lastUsed}})}let f=new Date,g=new Date(6e4*Math.floor(f.getTime()/6e4)),h=new Date(g.getTime()-54e4),i={};for(let a=0;a<10;a++){let c=g.getTime()-(9-a)*6e4;i[c]={requests:0,promptTokens:0,completionTokens:0,cost:0},b.last10Minutes.push(i[c])}for(let a of(await c.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[h.toISOString(),f.toISOString()]))){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);i[b]&&(i[b].requests++,i[b].promptTokens+=n(a.promptTokens,0),i[b].completionTokens+=n(a.completionTokens,0),i[b].cost+=n(a.cost,0))}return b}finally{await c.close?.()}}async function E(a="7d"){let b=Date.now(),c="today"===a||"24h"===a?24:"7d"===a?7:"30d"===a?30:60,d="today"===a||"24h"===a?36e5:864e5,f="today"===a?new Date(new Date().setHours(0,0,0,0)).getTime():b-c*d,g=Array.from({length:c},(a,b)=>{let c=f+b*d;return{label:36e5===d?new Date(c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}):new Date(c).toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:0,cost:0}}),h=await (0,e.d9)();if(!h)return console.error("[usageRepo] MySQL usage_events adapter unavailable for getChartData"),g;try{for(let a of(await h.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(f).toISOString()]))){let b=Math.min(c-1,Math.max(0,Math.floor((new Date(a.timestamp).getTime()-f)/d)));g[b].tokens+=n(a.promptTokens,0)+n(a.completionTokens,0),g[b].cost+=n(a.cost,0)}return g}finally{await h.close?.()}}async function F(a={}){if(!a||!(a.tokens||a.status||a.error))return null;let b=a.error?"error":a.status||"ok";return r(b)||!a.error&&s(b,a.statusCode)?null:B({provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId,endpoint:a.endpoint,tokens:a.tokens||{},status:b,statusCode:a.statusCode,errorMessage:a.error||a.errorMessage,meta:a})}async function G(a=100){let b=await (0,e.Kc)(a);return Array.isArray(b)?b.map(a=>({...a,apiKey:a.apiKeyFingerprint||a.apiKey,cost:n(a.cost,0),promptTokens:n(a.promptTokens,0),completionTokens:n(a.completionTokens,0)})):(console.error("[usageRepo] MySQL usage_events read returned null for getRecentLogs"),[])}}};
@@ -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:()=>R,GET:()=>P,POST:()=>Q});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(24424);let s=o.h0.appPort,t=`http://localhost:${s}/api/mcp/`,u=null,v=async()=>(u||(u=await (0,q.Xj)("9r-cli-auth")),u),w=async a=>{let b=await v();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(t)&&(c.headers={...c.headers||{},"x-9r-cli-token":b});return a},x="gateway",y={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},z=()=>{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")]},A=async()=>{let a=z();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},B=()=>z()[0],C=async()=>i().join(await A(),"configLibrary"),D=()=>i().join(B(),"configLibrary"),E=async()=>i().join(await C(),"_meta.json"),F=()=>{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")},G=()=>i().join(F(),"claude_desktop_config.json"),H=async()=>{try{return JSON.parse(await g().readFile(G(),"utf-8"))||{}}catch(a){if("ENOENT"===a.code)return{};throw a}},I=async a=>{await g().mkdir(F(),{recursive:!0}),await g().writeFile(G(),JSON.stringify(a,null,2))},J=async()=>{let a=await H();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await I(a),!0)},K=async()=>{let a=await H();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 I(a)},L=async()=>{for(let a of[...z(),...(()=>{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},M=async a=>{try{return JSON.parse(await g().readFile(a,"utf-8"))}catch(a){if("ENOENT"===a.code)return null;throw a}},N=async()=>{let a=i().join(D(),"_meta.json"),b=await M(a);if(!b||!b.appliedId){let c=await M(await E());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(D(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function O(a){let b=i().join(B(),"config.json"),c={};try{c=JSON.parse(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(B(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function P(){try{if(!await L())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await M(await E()),b=a?.appliedId||null,c=await C(),d=b?i().join(c,`${b}.json`):null,f=d?await M(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===x&&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 Q(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 w((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:${s}/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)),t=await w((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:${s}/api/mcp/${encodeURIComponent(c.name)}/sse`,transport:"sse",custom:!0}));return b})(q)),u=[...(0,n.buildManagedMcpServers)(m),...r,...t],v=await J(),z=await N(),A=i().join(D(),`${z.appliedId}.json`),B={...y,inferenceProvider:x,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 O(u)}catch(a){C={error:a.message}}try{await K()}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 R(){try{let a=await M(await E());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await C(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await O([])}catch{}try{await K()}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,r.D)([P,Q,R]),(0,d.A)(P,"0026cffd2ba21dfc8dcaa193e3116474f0fde8e35c",null),(0,d.A)(Q,"40b8d28ffa33282e9e023b24618c1eefc6ff643261",null),(0,d.A)(R,"0030a90872e0990a496081f5108a3eff7a588ce7a5",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:"4.0.49"}},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()},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:()=>R,GET:()=>P,POST:()=>Q});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(24424);let s=o.h0.appPort,t=`http://localhost:${s}/api/mcp/`,u=null,v=async()=>(u||(u=await (0,q.Xj)("9r-cli-auth")),u),w=async a=>{let b=await v();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(t)&&(c.headers={...c.headers||{},"x-9r-cli-token":b});return a},x="gateway",y={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},z=()=>{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")]},A=async()=>{let a=z();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},B=()=>z()[0],C=async()=>i().join(await A(),"configLibrary"),D=()=>i().join(B(),"configLibrary"),E=async()=>i().join(await C(),"_meta.json"),F=()=>{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")},G=()=>i().join(F(),"claude_desktop_config.json"),H=async()=>{try{return JSON.parse(await g().readFile(G(),"utf-8"))||{}}catch(a){if("ENOENT"===a.code)return{};throw a}},I=async a=>{await g().mkdir(F(),{recursive:!0}),await g().writeFile(G(),JSON.stringify(a,null,2))},J=async()=>{let a=await H();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await I(a),!0)},K=async()=>{let a=await H();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 I(a)},L=async()=>{for(let a of[...z(),...(()=>{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},M=async a=>{try{return JSON.parse(await g().readFile(a,"utf-8"))}catch(a){if("ENOENT"===a.code)return null;throw a}},N=async()=>{let a=i().join(D(),"_meta.json"),b=await M(a);if(!b||!b.appliedId){let c=await M(await E());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(D(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function O(a){let b=i().join(B(),"config.json"),c={};try{c=JSON.parse(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(B(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function P(){try{if(!await L())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await M(await E()),b=a?.appliedId||null,c=await C(),d=b?i().join(c,`${b}.json`):null,f=d?await M(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===x&&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 Q(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 w((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:${s}/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)),t=await w((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:${s}/api/mcp/${encodeURIComponent(c.name)}/sse`,transport:"sse",custom:!0}));return b})(q)),u=[...(0,n.buildManagedMcpServers)(m),...r,...t],v=await J(),z=await N(),A=i().join(D(),`${z.appliedId}.json`),B={...y,inferenceProvider:x,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 O(u)}catch(a){C={error:a.message}}try{await K()}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 R(){try{let a=await M(await E());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await C(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await O([])}catch{}try{await K()}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,r.D)([P,Q,R]),(0,d.A)(P,"0026cffd2ba21dfc8dcaa193e3116474f0fde8e35c",null),(0,d.A)(Q,"40b8d28ffa33282e9e023b24618c1eefc6ff643261",null),(0,d.A)(R,"0030a90872e0990a496081f5108a3eff7a588ce7a5",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:"4.0.50"}},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()},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:()=>{}};