@jheavenknows/bluerouter 1.0.26 → 1.0.28

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 (494) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -3
  3. package/app/.next-cli-build/BUILD_ID +1 -1
  4. package/app/.next-cli-build/app-path-routes-manifest.json +2 -2
  5. package/app/.next-cli-build/build-manifest.json +2 -2
  6. package/app/.next-cli-build/prerender-manifest.json +3 -3
  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 +3 -3
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/virtual-combos/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  40. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  41. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  42. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  43. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  45. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  49. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  50. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  51. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  52. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  53. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  54. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  55. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  56. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  59. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  66. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  68. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js +2 -2
  72. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  74. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  76. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  77. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  78. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  79. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  81. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  82. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  83. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  85. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  86. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  87. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  88. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  89. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  90. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  91. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  143. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  144. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  153. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  156. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/version/restart/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/virtual-combos/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  189. package/app/.next-cli-build/server/app/callback.html +1 -1
  190. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  191. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  192. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  193. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  194. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  195. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  196. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  197. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  198. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  199. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  200. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  202. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  203. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  204. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  206. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  207. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  208. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  209. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  210. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  212. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  213. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  214. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  216. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  218. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  219. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  220. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  222. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  223. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  224. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  226. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  228. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  229. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  230. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  232. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  233. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  234. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  235. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  236. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  238. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  239. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  240. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  243. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  244. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  245. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  247. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  249. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  250. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  251. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  253. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  254. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  255. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  256. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  257. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  258. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  259. package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  260. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  263. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  264. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  265. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  266. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  267. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  268. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  269. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +5 -5
  270. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  273. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  274. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +5 -5
  275. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  276. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +3 -3
  277. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  278. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  279. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +5 -5
  280. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  281. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  283. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  284. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +5 -5
  285. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  286. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +3 -3
  287. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  289. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  290. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  291. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  294. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  295. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  296. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  297. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  298. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  300. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  301. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  302. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  305. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  306. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  307. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  308. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  310. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  311. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  312. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  314. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  315. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  316. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  317. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  318. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  320. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  321. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  322. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  324. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  325. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  326. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  327. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  328. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  329. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  330. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  331. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  332. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  333. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  334. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  335. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  336. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  337. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  339. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  341. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  342. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  343. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  344. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  346. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  347. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  348. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  349. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  351. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  352. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  353. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  354. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  356. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  357. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  358. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  359. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  361. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  362. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  363. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  364. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  366. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  367. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  368. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  369. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  370. package/app/.next-cli-build/server/app/dashboard/virtual-combos.html +2 -2
  371. package/app/.next-cli-build/server/app/dashboard/virtual-combos.rsc +5 -5
  372. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos/__PAGE__.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos.segment.rsc +1 -1
  374. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  376. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_full.segment.rsc +5 -5
  377. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_head.segment.rsc +1 -1
  378. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_index.segment.rsc +3 -3
  379. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_tree.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  381. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  382. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  383. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  384. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  385. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  386. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  387. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  388. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  390. package/app/.next-cli-build/server/app/favicon.ico.body +0 -0
  391. package/app/.next-cli-build/server/app/index.html +1 -1
  392. package/app/.next-cli-build/server/app/index.rsc +4 -4
  393. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  395. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  396. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  397. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  398. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  399. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  400. package/app/.next-cli-build/server/app/landing.html +1 -1
  401. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  402. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  403. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  404. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  405. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  406. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  407. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  408. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  409. package/app/.next-cli-build/server/app/login.html +1 -1
  410. package/app/.next-cli-build/server/app/login.rsc +4 -4
  411. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  412. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  413. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  414. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  415. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  417. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +1 -1
  418. package/app/.next-cli-build/server/app/manifest.webmanifest.body +1 -1
  419. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  420. package/app/.next-cli-build/server/app-paths-manifest.json +2 -2
  421. package/app/.next-cli-build/server/chunks/3110.js +2 -2
  422. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  423. package/app/.next-cli-build/server/chunks/476.js +2 -2
  424. package/app/.next-cli-build/server/chunks/6182.js +3 -3
  425. package/app/.next-cli-build/server/chunks/6567.js +8 -8
  426. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  427. package/app/.next-cli-build/server/chunks/9447.js +1 -1
  428. package/app/.next-cli-build/server/chunks/9526.js +1 -1
  429. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  430. package/app/.next-cli-build/server/middleware.js +3 -3
  431. package/app/.next-cli-build/server/pages/404.html +1 -1
  432. package/app/.next-cli-build/server/pages/500.html +1 -1
  433. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  434. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  435. package/app/.next-cli-build/static/chunks/{1321-932e605b6d47063d.js → 1321-053e3b830b2ec1bf.js} +1 -1
  436. package/app/.next-cli-build/static/chunks/4404-63455b79e318b1c7.js +53 -0
  437. package/app/.next-cli-build/static/chunks/5497-90dfe11dd01a459e.js +7 -0
  438. package/app/.next-cli-build/static/chunks/{5907-b4c71b034a42cd8c.js → 5907-46d07be8a58ce080.js} +2 -2
  439. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-d8b42a4e1ae60f65.js +1 -0
  440. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-84e359aafb683d81.js +1 -0
  441. package/app/.next-cli-build/static/chunks/app/landing/page-70884f02f4f66d0e.js +1 -0
  442. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.26-to-1.0.27-1.0.27-20260526-112743/data.sqlite +0 -0
  443. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.27-to-1.0.28-1.0.28-20260526-112925/data.sqlite +0 -0
  444. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  445. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  446. package/app/package.json +1 -1
  447. package/app/public/i18n/literals/ar.json +3 -3
  448. package/app/public/i18n/literals/bn.json +3 -3
  449. package/app/public/i18n/literals/cs.json +3 -3
  450. package/app/public/i18n/literals/da.json +3 -3
  451. package/app/public/i18n/literals/de.json +3 -3
  452. package/app/public/i18n/literals/el.json +3 -3
  453. package/app/public/i18n/literals/es.json +3 -3
  454. package/app/public/i18n/literals/fi.json +3 -3
  455. package/app/public/i18n/literals/fr.json +3 -3
  456. package/app/public/i18n/literals/he.json +3 -3
  457. package/app/public/i18n/literals/hi.json +3 -3
  458. package/app/public/i18n/literals/hu.json +3 -3
  459. package/app/public/i18n/literals/id.json +3 -3
  460. package/app/public/i18n/literals/it.json +3 -3
  461. package/app/public/i18n/literals/ja.json +3 -3
  462. package/app/public/i18n/literals/ko.json +3 -3
  463. package/app/public/i18n/literals/nl.json +3 -3
  464. package/app/public/i18n/literals/no.json +3 -3
  465. package/app/public/i18n/literals/pl.json +3 -3
  466. package/app/public/i18n/literals/pt-BR.json +3 -3
  467. package/app/public/i18n/literals/pt-PT.json +3 -3
  468. package/app/public/i18n/literals/ro.json +3 -3
  469. package/app/public/i18n/literals/ru.json +3 -3
  470. package/app/public/i18n/literals/sv.json +3 -3
  471. package/app/public/i18n/literals/th.json +3 -3
  472. package/app/public/i18n/literals/tl.json +3 -3
  473. package/app/public/i18n/literals/tr.json +3 -3
  474. package/app/public/i18n/literals/uk.json +3 -3
  475. package/app/public/i18n/literals/ur.json +3 -3
  476. package/app/public/i18n/literals/vi.json +3 -3
  477. package/app/public/i18n/literals/zh-CN.json +12 -12
  478. package/app/public/i18n/literals/zh-TW.json +3 -3
  479. package/app/src/mitm/server.js +2 -2
  480. package/cli.js +4 -4
  481. package/package.json +2 -2
  482. package/src/cli/api/client.js +1 -1
  483. package/src/cli/menus/cliTools.js +14 -14
  484. package/src/cli/terminalUI.js +2 -2
  485. package/src/cli/tray/autostart.js +2 -2
  486. package/src/cli/tray/tray.js +3 -3
  487. package/src/cli/tray/tray.ps1 +1 -1
  488. package/app/.next-cli-build/static/chunks/4404-3bd3186f4ee612a1.js +0 -53
  489. package/app/.next-cli-build/static/chunks/5497-886bdd124c9e47a3.js +0 -7
  490. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-93016427d63637f4.js +0 -1
  491. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-d00a05320aab3650.js +0 -1
  492. package/app/.next-cli-build/static/chunks/app/landing/page-743f3f6975e53a9a.js +0 -1
  493. /package/app/.next-cli-build/static/{QxXip6ZNmTsndS1LuvETC → 0bNk4v4Wo1zifmOozrtGi}/_buildManifest.js +0 -0
  494. /package/app/.next-cli-build/static/{QxXip6ZNmTsndS1LuvETC → 0bNk4v4Wo1zifmOozrtGi}/_ssgManifest.js +0 -0
@@ -108,7 +108,7 @@
108
108
  "Manage your AI provider connections": "管理您的 AI 提供者連接",
109
109
  "Model combos with fallback": "具有備用的模型組合",
110
110
  "Monitor your API usage, token consumption, and request logs": "監控您的 API 使用、令牌消耗和請求日誌",
111
- "Intercept CLI tool traffic and route through 9Router": "攔截 CLI 工具流量並通過 9Router 路由",
111
+ "Intercept CLI tool traffic and route through Bluerouter": "攔截 CLI 工具流量並通過 Bluerouter 路由",
112
112
  "Configure CLI tools": "配置 CLI 工具",
113
113
  "API endpoint configuration": "API 端點配置",
114
114
  "Manage your preferences": "管理您的首選項",
@@ -172,9 +172,9 @@
172
172
  "Cert": "證書",
173
173
  "Server": "服務器",
174
174
  "Purpose:": "目的:",
175
- "Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router": "使用 Antigravity IDE 和 GitHub Copilot → 與 9Router 中的任何提供者/模型一起",
175
+ "Use Antigravity IDE & GitHub Copilot → with ANY provider/model from Bluerouter": "使用 Antigravity IDE 和 GitHub Copilot → 與 Bluerouter 中的任何提供者/模型一起",
176
176
  "How it works:": "工作原理:",
177
- "Antigravity/Copilot IDE request → DNS redirect to localhost:443 → AI Traffic Proxy intercepts → 9Router → response to Antigravity/Copilot": "Antigravity/Copilot IDE 請求 → DNS 重定向到 localhost:443 → MITM 代理攔截 → 9Router → 响應到 Antigravity/Copilot",
177
+ "Antigravity/Copilot IDE request → DNS redirect to localhost:443 → AI Traffic Proxy intercepts → Bluerouter → response to Antigravity/Copilot": "Antigravity/Copilot IDE 請求 → DNS 重定向到 localhost:443 → MITM 代理攔截 → Bluerouter → 响應到 Antigravity/Copilot",
178
178
  "No API keys — create one in Keys page": "沒有 API 金鑰 — 在金鑰頁面中創建一個",
179
179
  "sk_bluerouter (default)": "sk_bluerouter(默認)",
180
180
  "Server started": "服務器已啟動",
@@ -23,7 +23,7 @@ Private-Lines: `+u+`\r
23
23
  `,s+=c;var S=xa("putty-private-key-file-mac-key",t),T=xe.util.createBuffer();Cr(T,r),Cr(T,n),Cr(T,a),T.putInt32(i.length()),T.putBuffer(i),T.putInt32(l.length()),T.putBuffer(l);var B=xe.hmac.create();return B.start("sha1",S),B.update(T.bytes()),s+=`\r
24
24
  Private-MAC: `+B.digest().toHex()+`\r
25
25
  `,s};Sa.publicKeyToOpenSSH=function(e,t){var a="ssh-rsa";t=t||"";var r=xe.util.createBuffer();return Cr(r,a),St(r,e.e),St(r,e.n),a+" "+xe.util.encode64(r.bytes())+" "+t};Sa.privateKeyToOpenSSH=function(e,t){return t?xe.pki.encryptRsaPrivateKey(e,t,{legacy:!0,algorithm:"aes128"}):xe.pki.privateKeyToPem(e)};Sa.getPublicKeyFingerprint=function(e,t){t=t||{};var a=t.md||xe.md.md5.create(),r="ssh-rsa",n=xe.util.createBuffer();Cr(n,r),St(n,e.e),St(n,e.n),a.start(),a.update(n.getBytes());var s=a.digest();if(t.encoding==="hex"){var i=s.toHex();return t.delimiter?i.match(/.{2}/g).join(t.delimiter):i}else{if(t.encoding==="binary")return s.getBytes();if(t.encoding)throw new Error('Unknown encoding "'+t.encoding+'".')}return s};function St(e,t){var a=t.toString(16);a[0]>="8"&&(a="00"+a);var r=xe.util.hexToBytes(a);e.putInt32(r.length),e.putBytes(r)}function Cr(e,t){e.putInt32(t.length),e.putString(t)}function xa(){for(var e=xe.md.sha1.create(),t=arguments.length,a=0;a<t;++a)e.update(arguments[a]);return e.digest()}});var So=K(($h,xo)=>{xo.exports=$();Lt();Ks();ft();Qr();br();no();or();uo();ho();yo();sn();aa();Yt();Za();ln();mo();fn();tn();za();ca();nt();ja();Eo();vn();ae()});var Bo=K((jh,Io)=>{var Mt=require("path"),j=require("fs"),ge=So(),{execFileSync:On}=require("child_process"),{MITM_DIR:qt}=nr(),Re=Mt.join(qt,"rootCA.key"),Te=Mt.join(qt,"rootCA.crt"),Tt=Mt.join(qt,"rootCA.csr"),Dn=Mt.join(qt,"rootCA.csr.cnf"),Xe=Mt.join(qt,"rootCA.pending.key"),Un=Mt.join(qt,"backup");function Kr(){j.existsSync(qt)||j.mkdirSync(qt,{recursive:!0})}function Fr(e,t){let a=String(e||"").trim();if(!a)throw new Error(`${t} is empty`);return`${a}
26
- `}function Vn(e){return ge.md.sha256.create().update(ge.pki.publicKeyToPem(e),"utf8").digest().toHex()}function bf(e){if(!e?.n||!e?.e)throw new Error("Only RSA private keys are supported for MITM Root CA");return ge.pki.setRsaPublicKey(e.n,e.e)}function Fn(e){let t=e.getExtension("basicConstraints"),a=e.getExtension("keyUsage");return!!t?.cA&&(!a||a.keyCertSign===!0)}function To(e,t){let a=Vn(e.publicKey),r=Vn(bf(t));if(a!==r)throw new Error("Certificate public key does not match private key")}function Ta(){Kr();let e=j.existsSync(Re),t=j.existsSync(Te);if(!e&&!t)return null;j.mkdirSync(Un,{recursive:!0});let a=new Date().toISOString().replace(/[:.]/g,"-"),r={key:Mt.join(Un,`rootCA.${a}.key`),cert:Mt.join(Un,`rootCA.${a}.crt`)};return e&&j.copyFileSync(Re,r.key),t&&j.copyFileSync(Te,r.cert),r}function Kn(e,t="Certificate"){try{return ge.pki.certificateFromPem(Fr(e,t))}catch(a){throw new Error(`${t} is not a valid PEM certificate: ${a.message}`)}}function Ao(e,t="Private key"){try{return ge.pki.privateKeyFromPem(Fr(e,t))}catch(a){throw new Error(`${t} is not a valid PEM private key: ${a.message}`)}}function Mn(e){try{let t=ge.pki.certificateFromPem(j.readFileSync(e,"utf8")),a=new Date(Date.now()+720*60*60*1e3);return t.validity.notAfter<a}catch{return!0}}function qn(){let e=j.existsSync(Te),t=j.existsSync(Re),a=j.existsSync(Tt),r=j.existsSync(Xe),n={certExists:e,keyExists:t,csrExists:a,pendingKeyExists:r,certPath:Te,keyPath:Re,csrPath:Tt,pendingKeyPath:Xe};if(!e)return n;try{let s=Kn(j.readFileSync(Te,"utf8")),i=s.subject.attributes.map(u=>`${u.shortName||u.name}=${u.value}`).join(", "),o=s.issuer.attributes.map(u=>`${u.shortName||u.name}=${u.value}`).join(", ");n.subject=i,n.issuer=o,n.serialNumber=s.serialNumber,n.notBefore=s.validity.notBefore.toISOString(),n.notAfter=s.validity.notAfter.toISOString(),n.expiredOrExpiringSoon=Mn(Te),n.isCa=Fn(s),n.isSelfSigned=i===o,n.fingerprint=Vn(s.publicKey)}catch(s){n.error=s.message}return n}async function _f(){let e=j.existsSync(Re)&&j.existsSync(Te);if(e&&!Mn(Te))return console.log("\u2705 Root CA already exists"),{key:Re,cert:Te};if(e){console.log("\u{1F510} Root CA expired or expiring soon \u2014 regenerating...");try{j.unlinkSync(Re)}catch{}try{j.unlinkSync(Te)}catch{}}Kr(),console.log("\u{1F510} Generating Root CA certificate...");let t=ge.pki.rsa.generateKeyPair(2048),a=ge.pki.createCertificate();a.publicKey=t.publicKey,a.serialNumber="01",a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.validity.notAfter.setFullYear(a.validity.notBefore.getFullYear()+10);let r=[{name:"commonName",value:"Blue Router Gateway Root CA"},{name:"organizationName",value:"Blue Router Gateway"},{name:"countryName",value:"VN"}];a.setSubject(r),a.setIssuer(r),a.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),a.sign(t.privateKey,ge.md.sha256.create());let n=ge.pki.privateKeyToPem(t.privateKey),s=ge.pki.certificateToPem(a);return j.writeFileSync(Re,n,{mode:384}),j.writeFileSync(Te,s),console.log("\u2705 Root CA generated successfully"),{key:Re,cert:Te}}function Nf({certPem:e,keyPem:t}){Kr();let a=Fr(e,"Certificate"),r=Fr(t,"Private key"),n=Kn(a),s=Ao(r);if(To(n,s),!Fn(n))throw new Error("Certificate must be a CA certificate with basicConstraints CA:true and keyCertSign usage");if(n.validity.notAfter<new Date)throw new Error("Certificate is already expired");let i=Ta();j.writeFileSync(Re,r,{mode:384}),j.writeFileSync(Te,a);try{j.unlinkSync(Tt)}catch{}try{j.unlinkSync(Xe)}catch{}return{key:Re,cert:Te,backup:i,info:qn()}}function Pn(e,t){return String(e||t||"").replace(/[\r\n]+/g," ").replace(/[\\]/g,"\\\\").trim()||String(t||"")}function wf(){try{return On("openssl",["version"],{stdio:"ignore"}),!0}catch{return!1}}function Rf({commonName:e,organizationName:t,countryName:a}={}){let r=Pn(e,"Fujinet 9Router MITM CA"),n=Pn(t,"Fujinet"),i=`[ req ]
26
+ `}function Vn(e){return ge.md.sha256.create().update(ge.pki.publicKeyToPem(e),"utf8").digest().toHex()}function bf(e){if(!e?.n||!e?.e)throw new Error("Only RSA private keys are supported for MITM Root CA");return ge.pki.setRsaPublicKey(e.n,e.e)}function Fn(e){let t=e.getExtension("basicConstraints"),a=e.getExtension("keyUsage");return!!t?.cA&&(!a||a.keyCertSign===!0)}function To(e,t){let a=Vn(e.publicKey),r=Vn(bf(t));if(a!==r)throw new Error("Certificate public key does not match private key")}function Ta(){Kr();let e=j.existsSync(Re),t=j.existsSync(Te);if(!e&&!t)return null;j.mkdirSync(Un,{recursive:!0});let a=new Date().toISOString().replace(/[:.]/g,"-"),r={key:Mt.join(Un,`rootCA.${a}.key`),cert:Mt.join(Un,`rootCA.${a}.crt`)};return e&&j.copyFileSync(Re,r.key),t&&j.copyFileSync(Te,r.cert),r}function Kn(e,t="Certificate"){try{return ge.pki.certificateFromPem(Fr(e,t))}catch(a){throw new Error(`${t} is not a valid PEM certificate: ${a.message}`)}}function Ao(e,t="Private key"){try{return ge.pki.privateKeyFromPem(Fr(e,t))}catch(a){throw new Error(`${t} is not a valid PEM private key: ${a.message}`)}}function Mn(e){try{let t=ge.pki.certificateFromPem(j.readFileSync(e,"utf8")),a=new Date(Date.now()+720*60*60*1e3);return t.validity.notAfter<a}catch{return!0}}function qn(){let e=j.existsSync(Te),t=j.existsSync(Re),a=j.existsSync(Tt),r=j.existsSync(Xe),n={certExists:e,keyExists:t,csrExists:a,pendingKeyExists:r,certPath:Te,keyPath:Re,csrPath:Tt,pendingKeyPath:Xe};if(!e)return n;try{let s=Kn(j.readFileSync(Te,"utf8")),i=s.subject.attributes.map(u=>`${u.shortName||u.name}=${u.value}`).join(", "),o=s.issuer.attributes.map(u=>`${u.shortName||u.name}=${u.value}`).join(", ");n.subject=i,n.issuer=o,n.serialNumber=s.serialNumber,n.notBefore=s.validity.notBefore.toISOString(),n.notAfter=s.validity.notAfter.toISOString(),n.expiredOrExpiringSoon=Mn(Te),n.isCa=Fn(s),n.isSelfSigned=i===o,n.fingerprint=Vn(s.publicKey)}catch(s){n.error=s.message}return n}async function _f(){let e=j.existsSync(Re)&&j.existsSync(Te);if(e&&!Mn(Te))return console.log("\u2705 Root CA already exists"),{key:Re,cert:Te};if(e){console.log("\u{1F510} Root CA expired or expiring soon \u2014 regenerating...");try{j.unlinkSync(Re)}catch{}try{j.unlinkSync(Te)}catch{}}Kr(),console.log("\u{1F510} Generating Root CA certificate...");let t=ge.pki.rsa.generateKeyPair(2048),a=ge.pki.createCertificate();a.publicKey=t.publicKey,a.serialNumber="01",a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.validity.notAfter.setFullYear(a.validity.notBefore.getFullYear()+10);let r=[{name:"commonName",value:"Blue Router Gateway Root CA"},{name:"organizationName",value:"Blue Router Gateway"},{name:"countryName",value:"VN"}];a.setSubject(r),a.setIssuer(r),a.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),a.sign(t.privateKey,ge.md.sha256.create());let n=ge.pki.privateKeyToPem(t.privateKey),s=ge.pki.certificateToPem(a);return j.writeFileSync(Re,n,{mode:384}),j.writeFileSync(Te,s),console.log("\u2705 Root CA generated successfully"),{key:Re,cert:Te}}function Nf({certPem:e,keyPem:t}){Kr();let a=Fr(e,"Certificate"),r=Fr(t,"Private key"),n=Kn(a),s=Ao(r);if(To(n,s),!Fn(n))throw new Error("Certificate must be a CA certificate with basicConstraints CA:true and keyCertSign usage");if(n.validity.notAfter<new Date)throw new Error("Certificate is already expired");let i=Ta();j.writeFileSync(Re,r,{mode:384}),j.writeFileSync(Te,a);try{j.unlinkSync(Tt)}catch{}try{j.unlinkSync(Xe)}catch{}return{key:Re,cert:Te,backup:i,info:qn()}}function Pn(e,t){return String(e||t||"").replace(/[\r\n]+/g," ").replace(/[\\]/g,"\\\\").trim()||String(t||"")}function wf(){try{return On("openssl",["version"],{stdio:"ignore"}),!0}catch{return!1}}function Rf({commonName:e,organizationName:t,countryName:a}={}){let r=Pn(e,"Fujinet Bluerouter MITM CA"),n=Pn(t,"Fujinet"),i=`[ req ]
27
27
  default_bits = 4096
28
28
  prompt = no
29
29
  distinguished_name = dn
@@ -39,7 +39,7 @@ CN = ${r}
39
39
  basicConstraints = critical, CA:true, pathlen:0
40
40
  keyUsage = critical, keyCertSign, cRLSign
41
41
  subjectKeyIdentifier = hash
42
- `,o=Ta();j.writeFileSync(Dn,i,"utf8");try{On("openssl",["genrsa","-out",Xe,"4096"],{stdio:["ignore","pipe","pipe"]}),On("openssl",["req","-new","-key",Xe,"-out",Tt,"-config",Dn],{stdio:["ignore","pipe","pipe"]});try{j.chmodSync(Xe,384)}catch{}return{csr:Tt,pendingKey:Xe,config:Dn,backup:o}}catch(u){try{j.unlinkSync(Xe)}catch{}try{j.unlinkSync(Tt)}catch{}let l=u?.stderr?String(u.stderr).trim():"";throw new Error(`OpenSSL CSR generation failed${l?`: ${l}`:""}`)}}function Lf({commonName:e,organizationName:t,countryName:a}={}){if(Kr(),wf())return Rf({commonName:e,organizationName:t,countryName:a});let r=[{name:"commonName",value:String(e||"Fujinet 9Router MITM CA").trim()||"Fujinet 9Router MITM CA"},{name:"organizationName",value:String(t||"Fujinet").trim()||"Fujinet"},{name:"organizationalUnitName",value:"AI Gateway"}],n=String(a||"VN").trim().slice(0,2).toUpperCase();n&&r.push({name:"countryName",value:n});let s=ge.pki.rsa.generateKeyPair(4096),i=ge.pki.createCertificationRequest();if(i.publicKey=s.publicKey,i.setSubject(r),i.sign(s.privateKey,ge.md.sha256.create()),!i.verify())throw new Error("Generated CSR failed verification");let o=Ta(),u=ge.pki.certificationRequestToPem(i),l=ge.pki.privateKeyToPem(s.privateKey);return j.writeFileSync(Xe,l,{mode:384}),j.writeFileSync(Tt,u),{csr:Tt,pendingKey:Xe,backup:o}}function kf({certPem:e}){if(Kr(),!j.existsSync(Xe))throw new Error("No pending CSR private key found. Generate a CSR first.");let t=Fr(e,"Signed certificate"),a=Kn(t,"Signed certificate"),r=Ao(j.readFileSync(Xe,"utf8"),"Pending private key");if(To(a,r),!Fn(a))throw new Error("Signed certificate must be a CA certificate with CA:true and keyCertSign usage");if(a.validity.notAfter<new Date)throw new Error("Signed certificate is already expired");let n=Ta();j.copyFileSync(Xe,Re);try{j.chmodSync(Re,384)}catch{}j.writeFileSync(Te,t);try{j.unlinkSync(Tt)}catch{}try{j.unlinkSync(Xe)}catch{}return{key:Re,cert:Te,backup:n,info:qn()}}function Df(){if(!j.existsSync(Re)||!j.existsSync(Te))throw new Error("Root CA not found. Generate it first.");let e=j.readFileSync(Re,"utf8"),t=j.readFileSync(Te,"utf8");return{key:ge.pki.privateKeyFromPem(e),cert:ge.pki.certificateFromPem(t)}}function Uf(e,t){let a=ge.pki.rsa.generateKeyPair(2048),r=ge.pki.createCertificate();return r.publicKey=a.publicKey,r.serialNumber=Math.floor(Math.random()*1e6).toString(),r.validity.notBefore=new Date,r.validity.notAfter=new Date,r.validity.notAfter.setFullYear(r.validity.notBefore.getFullYear()+1),r.setSubject([{name:"commonName",value:e}]),r.setIssuer(t.cert.subject.attributes),r.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:e},{type:2,value:`*.${e}`}]}]),r.sign(t.key,ge.md.sha256.create()),{key:ge.pki.privateKeyToPem(a.privateKey),cert:ge.pki.certificateToPem(r)}}Io.exports={generateRootCA:_f,importRootCAPair:Nf,generateRootCACsr:Lf,importSignedRootCACert:kf,loadRootCA:Df,generateLeafCert:Uf,isCertExpired:Mn,readRootCAInfo:qn,ROOT_CA_CERT_PATH:Te,ROOT_CA_KEY_PATH:Re,ROOT_CA_CSR_PATH:Tt,ROOT_CA_PENDING_KEY_PATH:Xe}});var _o=K((Jh,bo)=>{var Yh=require("path"),Wh=require("fs"),{MITM_DIR:Xh}=nr(),{generateRootCA:Pf,loadRootCA:Of,generateLeafCert:Vf}=Bo();async function Ff(){return await Pf()}function Kf(e){try{let t=Of(),a=Vf(e,t);return{key:a.key,cert:a.cert}}catch(t){return console.error(`Failed to generate cert for ${e}:`,t.message),null}}bo.exports={generateCert:Ff,getCertForDomain:Kf}});var Lo=K((Zh,Ro)=>{var No=require("fs"),Mf=require("path"),{DATA_DIR:qf}=nr(),wo=Mf.join(qf,"mitm","aliases.json");function Hf(){try{return No.existsSync(wo)?JSON.parse(No.readFileSync(wo,"utf-8")):null}catch{return null}}function Gf(e){return Hf()?.[e]||null}Ro.exports={getMitmAlias:Gf}});var Aa=K((rp,Uo)=>{var{log:ep,err:tp}=$t(),ko="http://localhost:20128",zf=String(process.env.MITM_ROUTER_BASE||ko).trim().replace(/\/+$/,"")||ko,Do=process.env.ROUTER_API_KEY,Qf=new Set(["host","content-length","connection","transfer-encoding","content-type","authorization"]);async function $f(e,t="/v1/chat/completions",a={}){let r={};for(let[s,i]of Object.entries(a))Qf.has(s.toLowerCase())||(r[s]=i);return await fetch(`${zf}${t}`,{method:"POST",headers:{...r,"Content-Type":"application/json",...Do&&{Authorization:`Bearer ${Do}`}},body:JSON.stringify(e)})}async function jf(e,t,a){let r=e.headers.get("content-type")||"application/json",n=e.status||200,s={"Content-Type":r,"Cache-Control":"no-cache",Connection:"keep-alive"};if(r.includes("text/event-stream")&&(s["X-Accel-Buffering"]="no"),t.writeHead(n,s),a&&a.writeHeader(e.status,Object.fromEntries(e.headers)),!e.body){let u=await e.text().catch(()=>"");a&&(a.writeChunk(u),a.end()),t.end(u);return}let i=e.body.getReader(),o=new TextDecoder;for(;;){let{done:u,value:l}=await i.read();if(u){a&&a.end(),t.end();break}a&&a.writeChunk(l),t.write(o.decode(l,{stream:!0}))}}Uo.exports={fetchRouter:$f,pipeSSE:jf}});var Oo=K((ap,Po)=>{var{err:Yf,createResponseDumper:Wf}=$t(),{IS_DEV:Xf}=Sr(),{fetchRouter:Jf,pipeSSE:Zf}=Aa();async function ed(e,t,a,r){let n=Xf?Wf(e,"intercept-antigravity"):null,s=e.url.includes(":streamGenerateContent");try{let i=JSON.parse(a.toString());i.model&&(i.model=r);let o=await Jf(i,"/v1/chat/completions",e.headers);await Zf(o,t,n)}catch(i){Yf(`[antigravity] ${i.message}`),n&&(n.writeChunk(`
42
+ `,o=Ta();j.writeFileSync(Dn,i,"utf8");try{On("openssl",["genrsa","-out",Xe,"4096"],{stdio:["ignore","pipe","pipe"]}),On("openssl",["req","-new","-key",Xe,"-out",Tt,"-config",Dn],{stdio:["ignore","pipe","pipe"]});try{j.chmodSync(Xe,384)}catch{}return{csr:Tt,pendingKey:Xe,config:Dn,backup:o}}catch(u){try{j.unlinkSync(Xe)}catch{}try{j.unlinkSync(Tt)}catch{}let l=u?.stderr?String(u.stderr).trim():"";throw new Error(`OpenSSL CSR generation failed${l?`: ${l}`:""}`)}}function Lf({commonName:e,organizationName:t,countryName:a}={}){if(Kr(),wf())return Rf({commonName:e,organizationName:t,countryName:a});let r=[{name:"commonName",value:String(e||"Fujinet Bluerouter MITM CA").trim()||"Fujinet Bluerouter MITM CA"},{name:"organizationName",value:String(t||"Fujinet").trim()||"Fujinet"},{name:"organizationalUnitName",value:"AI Gateway"}],n=String(a||"VN").trim().slice(0,2).toUpperCase();n&&r.push({name:"countryName",value:n});let s=ge.pki.rsa.generateKeyPair(4096),i=ge.pki.createCertificationRequest();if(i.publicKey=s.publicKey,i.setSubject(r),i.sign(s.privateKey,ge.md.sha256.create()),!i.verify())throw new Error("Generated CSR failed verification");let o=Ta(),u=ge.pki.certificationRequestToPem(i),l=ge.pki.privateKeyToPem(s.privateKey);return j.writeFileSync(Xe,l,{mode:384}),j.writeFileSync(Tt,u),{csr:Tt,pendingKey:Xe,backup:o}}function kf({certPem:e}){if(Kr(),!j.existsSync(Xe))throw new Error("No pending CSR private key found. Generate a CSR first.");let t=Fr(e,"Signed certificate"),a=Kn(t,"Signed certificate"),r=Ao(j.readFileSync(Xe,"utf8"),"Pending private key");if(To(a,r),!Fn(a))throw new Error("Signed certificate must be a CA certificate with CA:true and keyCertSign usage");if(a.validity.notAfter<new Date)throw new Error("Signed certificate is already expired");let n=Ta();j.copyFileSync(Xe,Re);try{j.chmodSync(Re,384)}catch{}j.writeFileSync(Te,t);try{j.unlinkSync(Tt)}catch{}try{j.unlinkSync(Xe)}catch{}return{key:Re,cert:Te,backup:n,info:qn()}}function Df(){if(!j.existsSync(Re)||!j.existsSync(Te))throw new Error("Root CA not found. Generate it first.");let e=j.readFileSync(Re,"utf8"),t=j.readFileSync(Te,"utf8");return{key:ge.pki.privateKeyFromPem(e),cert:ge.pki.certificateFromPem(t)}}function Uf(e,t){let a=ge.pki.rsa.generateKeyPair(2048),r=ge.pki.createCertificate();return r.publicKey=a.publicKey,r.serialNumber=Math.floor(Math.random()*1e6).toString(),r.validity.notBefore=new Date,r.validity.notAfter=new Date,r.validity.notAfter.setFullYear(r.validity.notBefore.getFullYear()+1),r.setSubject([{name:"commonName",value:e}]),r.setIssuer(t.cert.subject.attributes),r.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:e},{type:2,value:`*.${e}`}]}]),r.sign(t.key,ge.md.sha256.create()),{key:ge.pki.privateKeyToPem(a.privateKey),cert:ge.pki.certificateToPem(r)}}Io.exports={generateRootCA:_f,importRootCAPair:Nf,generateRootCACsr:Lf,importSignedRootCACert:kf,loadRootCA:Df,generateLeafCert:Uf,isCertExpired:Mn,readRootCAInfo:qn,ROOT_CA_CERT_PATH:Te,ROOT_CA_KEY_PATH:Re,ROOT_CA_CSR_PATH:Tt,ROOT_CA_PENDING_KEY_PATH:Xe}});var _o=K((Jh,bo)=>{var Yh=require("path"),Wh=require("fs"),{MITM_DIR:Xh}=nr(),{generateRootCA:Pf,loadRootCA:Of,generateLeafCert:Vf}=Bo();async function Ff(){return await Pf()}function Kf(e){try{let t=Of(),a=Vf(e,t);return{key:a.key,cert:a.cert}}catch(t){return console.error(`Failed to generate cert for ${e}:`,t.message),null}}bo.exports={generateCert:Ff,getCertForDomain:Kf}});var Lo=K((Zh,Ro)=>{var No=require("fs"),Mf=require("path"),{DATA_DIR:qf}=nr(),wo=Mf.join(qf,"mitm","aliases.json");function Hf(){try{return No.existsSync(wo)?JSON.parse(No.readFileSync(wo,"utf-8")):null}catch{return null}}function Gf(e){return Hf()?.[e]||null}Ro.exports={getMitmAlias:Gf}});var Aa=K((rp,Uo)=>{var{log:ep,err:tp}=$t(),ko="http://localhost:20128",zf=String(process.env.MITM_ROUTER_BASE||ko).trim().replace(/\/+$/,"")||ko,Do=process.env.ROUTER_API_KEY,Qf=new Set(["host","content-length","connection","transfer-encoding","content-type","authorization"]);async function $f(e,t="/v1/chat/completions",a={}){let r={};for(let[s,i]of Object.entries(a))Qf.has(s.toLowerCase())||(r[s]=i);return await fetch(`${zf}${t}`,{method:"POST",headers:{...r,"Content-Type":"application/json",...Do&&{Authorization:`Bearer ${Do}`}},body:JSON.stringify(e)})}async function jf(e,t,a){let r=e.headers.get("content-type")||"application/json",n=e.status||200,s={"Content-Type":r,"Cache-Control":"no-cache",Connection:"keep-alive"};if(r.includes("text/event-stream")&&(s["X-Accel-Buffering"]="no"),t.writeHead(n,s),a&&a.writeHeader(e.status,Object.fromEntries(e.headers)),!e.body){let u=await e.text().catch(()=>"");a&&(a.writeChunk(u),a.end()),t.end(u);return}let i=e.body.getReader(),o=new TextDecoder;for(;;){let{done:u,value:l}=await i.read();if(u){a&&a.end(),t.end();break}a&&a.writeChunk(l),t.write(o.decode(l,{stream:!0}))}}Uo.exports={fetchRouter:$f,pipeSSE:jf}});var Oo=K((ap,Po)=>{var{err:Yf,createResponseDumper:Wf}=$t(),{IS_DEV:Xf}=Sr(),{fetchRouter:Jf,pipeSSE:Zf}=Aa();async function ed(e,t,a,r){let n=Xf?Wf(e,"intercept-antigravity"):null,s=e.url.includes(":streamGenerateContent");try{let i=JSON.parse(a.toString());i.model&&(i.model=r);let o=await Jf(i,"/v1/chat/completions",e.headers);await Zf(o,t,n)}catch(i){Yf(`[antigravity] ${i.message}`),n&&(n.writeChunk(`
43
43
  [ERROR] ${i.message}
44
44
  `),n.end()),s?(t.headersSent||t.writeHead(200,{"Content-Type":"text/event-stream"}),t.end(`data: ${JSON.stringify({error:{message:i.message}})}\r
45
45
  \r
package/cli.js CHANGED
@@ -196,7 +196,7 @@ for i in $(seq 1 "\${MAX_WAIT_SECONDS}"); do
196
196
  done
197
197
 
198
198
  if [[ "\${ready}" != "1" ]]; then
199
- log "9Router API is not ready; skip MITM autostart"
199
+ log "Bluerouter API is not ready; skip MITM autostart"
200
200
  exit 0
201
201
  fi
202
202
 
@@ -492,7 +492,7 @@ function writeSystemdService({
492
492
  .join("\n");
493
493
 
494
494
  const unit = `[Unit]
495
- Description=9Router
495
+ Description=Bluerouter
496
496
  After=network.target
497
497
 
498
498
  [Service]
@@ -1319,7 +1319,7 @@ function startServer(latestVersion) {
1319
1319
  process.on("SIGHUP", () => {});
1320
1320
 
1321
1321
  console.log(`\n⏳ Switching to tray mode... (icon already visible in menu bar)`);
1322
- console.log(`🔔 9Router is running in tray (PID: ${process.pid})`);
1322
+ console.log(`🔔 Bluerouter is running in tray (PID: ${process.pid})`);
1323
1323
  console.log(` Server: http://${displayHost}:${port}`);
1324
1324
  console.log(`\n💡 You can close this terminal. Right-click tray icon to quit.\n`);
1325
1325
 
@@ -1338,7 +1338,7 @@ function startServer(latestVersion) {
1338
1338
  });
1339
1339
  bgProcess.unref();
1340
1340
 
1341
- console.log(`🔔 9Router is now running in background (PID: ${bgProcess.pid})`);
1341
+ console.log(`🔔 Bluerouter is now running in background (PID: ${bgProcess.pid})`);
1342
1342
  console.log(` Server: http://${displayHost}:${port}`);
1343
1343
  console.log(`\n💡 You can close this terminal. Right-click tray icon to quit.\n`);
1344
1344
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jheavenknows/bluerouter",
3
- "version": "1.0.26",
4
- "description": "9Router CLI - Start and manage 9Router server",
3
+ "version": "1.0.28",
4
+ "description": "Bluerouter CLI - Start and manage Bluerouter server",
5
5
  "bin": {
6
6
  "bluerouter": "./cli.js"
7
7
  },
@@ -364,7 +364,7 @@ async function deleteCombo(id) {
364
364
  /**
365
365
  * Get CLI tool settings
366
366
  * @param {string} tool - Tool name: claude | codex | droid | openclaw
367
- * @returns {Promise<Object>} { success, data: { installed, has9Router, ... } }
367
+ * @returns {Promise<Object>} { success, data: { installed, hasBluerouter, ... } }
368
368
  */
369
369
  async function getCliToolSettings(tool) {
370
370
  return makeRequest("GET", `/api/cli-tools/${tool}-settings`);
@@ -179,10 +179,10 @@ async function buildCodexHeader() {
179
179
  const result = await api.getCliToolSettings("codex");
180
180
  if (!result.success) return ` ${COLORS.red}Failed to load settings${COLORS.reset}`;
181
181
 
182
- const { installed, has9Router, config } = result.data;
182
+ const { installed, hasBluerouter, config } = result.data;
183
183
  if (!installed) return `Status: ${COLORS.red}✗ Codex CLI not installed${COLORS.reset}`;
184
184
 
185
- if (!has9Router) {
185
+ if (!hasBluerouter) {
186
186
  return [
187
187
  `Status: ${COLORS.red}✗ Not configured${COLORS.reset}`,
188
188
  `${COLORS.dim}Run "Quick Setup" to configure${COLORS.reset}`
@@ -267,18 +267,18 @@ async function buildDroidHeader() {
267
267
  const result = await api.getCliToolSettings("droid");
268
268
  if (!result.success) return ` ${COLORS.red}Failed to load settings${COLORS.reset}`;
269
269
 
270
- const { installed, has9Router, settings } = result.data;
270
+ const { installed, hasBluerouter, settings } = result.data;
271
271
  if (!installed) return `Status: ${COLORS.red}✗ Factory Droid not installed${COLORS.reset}`;
272
272
 
273
- if (!has9Router) {
273
+ if (!hasBluerouter) {
274
274
  return [
275
275
  `Status: ${COLORS.red}✗ Not configured${COLORS.reset}`,
276
276
  `${COLORS.dim}Run "Quick Setup" to configure${COLORS.reset}`
277
277
  ].join("\n");
278
278
  }
279
279
 
280
- // Extract 9Router custom model config
281
- const custom = settings?.customModels?.find(m => m.id === "custom:9Router-0");
280
+ // Extract Bluerouter custom model config
281
+ const custom = settings?.customModels?.find(m => m.id === "custom:Bluerouter-0");
282
282
  const lines = [`Status: ${COLORS.green}✓ Configured${COLORS.reset}`];
283
283
  if (custom?.baseUrl) lines.push(`Endpoint: ${COLORS.cyan}${custom.baseUrl}${COLORS.reset}`);
284
284
  if (custom?.model) lines.push(`Model: ${COLORS.dim}${custom.model}${COLORS.reset}`);
@@ -350,17 +350,17 @@ async function buildOpenClawHeader() {
350
350
  const result = await api.getCliToolSettings("openclaw");
351
351
  if (!result.success) return ` ${COLORS.red}Failed to load settings${COLORS.reset}`;
352
352
 
353
- const { installed, has9Router, settings } = result.data;
353
+ const { installed, hasBluerouter, settings } = result.data;
354
354
  if (!installed) return `Status: ${COLORS.red}✗ Open Claw not installed${COLORS.reset}`;
355
355
 
356
- if (!has9Router) {
356
+ if (!hasBluerouter) {
357
357
  return [
358
358
  `Status: ${COLORS.red}✗ Not configured${COLORS.reset}`,
359
359
  `${COLORS.dim}Run "Quick Setup" to configure${COLORS.reset}`
360
360
  ].join("\n");
361
361
  }
362
362
 
363
- // Extract 9Router provider config
363
+ // Extract Bluerouter provider config
364
364
  const provider = settings?.models?.providers?.["bluerouter"];
365
365
  const primary = settings?.agents?.defaults?.model?.primary || "";
366
366
  const model = primary.startsWith("bluerouter/") ? primary.replace("bluerouter/", "") : (provider?.models?.[0]?.id || "");
@@ -431,10 +431,10 @@ async function buildOpenCodeHeader() {
431
431
  const result = await api.getCliToolSettings("opencode");
432
432
  if (!result.success) return ` ${COLORS.red}Failed to load settings${COLORS.reset}`;
433
433
 
434
- const { installed, has9Router, opencode } = result.data;
434
+ const { installed, hasBluerouter, opencode } = result.data;
435
435
  if (!installed) return `Status: ${COLORS.red}✗ OpenCode CLI not installed${COLORS.reset}`;
436
436
 
437
- if (!has9Router) {
437
+ if (!hasBluerouter) {
438
438
  return [
439
439
  `Status: ${COLORS.red}✗ Not configured${COLORS.reset}`,
440
440
  `${COLORS.dim}Run "Quick Setup" to configure${COLORS.reset}`
@@ -519,10 +519,10 @@ async function buildHermesHeader() {
519
519
  const result = await api.getCliToolSettings("hermes");
520
520
  if (!result.success) return ` ${COLORS.red}Failed to load settings${COLORS.reset}`;
521
521
 
522
- const { installed, has9Router, settings } = result.data;
522
+ const { installed, hasBluerouter, settings } = result.data;
523
523
  if (!installed) return `Status: ${COLORS.red}✗ Hermes Agent not installed${COLORS.reset}`;
524
524
 
525
- if (!has9Router) {
525
+ if (!hasBluerouter) {
526
526
  return [
527
527
  `Status: ${COLORS.red}✗ Not configured${COLORS.reset}`,
528
528
  `${COLORS.dim}Run "Quick Setup" to configure${COLORS.reset}`
@@ -585,7 +585,7 @@ async function showCliToolsMenu(port, breadcrumb = []) {
585
585
  await showMenuWithBack({
586
586
  title: "🔧 CLI Tools",
587
587
  breadcrumb,
588
- headerContent: `Configure CLI tools to use 9Router\nEndpoint: ${endpoint}`,
588
+ headerContent: `Configure CLI tools to use Bluerouter\nEndpoint: ${endpoint}`,
589
589
  items: [
590
590
  {
591
591
  label: "Claude Code",
@@ -67,14 +67,14 @@ async function startTerminalUI(port) {
67
67
  // Configure API client
68
68
  api.configure({ port });
69
69
 
70
- const basePath = ["9Router"];
70
+ const basePath = ["Bluerouter"];
71
71
 
72
72
  // Prime header cache before first render
73
73
  await refreshHeaderBg(port);
74
74
 
75
75
  // Main menu
76
76
  await showMenuWithBack({
77
- title: "📡 9Router Terminal UI",
77
+ title: "📡 Bluerouter Terminal UI",
78
78
  breadcrumb: basePath,
79
79
  headerContent: () => getHeader(port),
80
80
  items: [
@@ -280,8 +280,8 @@ function enableLinux(cliPath) {
280
280
 
281
281
  const desktopContent = `[Desktop Entry]
282
282
  Type=Application
283
- Name=9Router
284
- Comment=9Router API Proxy
283
+ Name=Bluerouter
284
+ Comment=Bluerouter API Proxy
285
285
  Exec=${nodePath} ${routerScript} --tray --skip-update
286
286
  Hidden=false
287
287
  NoDisplay=false
@@ -58,7 +58,7 @@ function initTray(options) {
58
58
  */
59
59
  function buildMenuItems(port, autostartEnabled) {
60
60
  return [
61
- { title: `9Router (Port ${port})`, tooltip: "Server is running", enabled: false },
61
+ { title: `Bluerouter (Port ${port})`, tooltip: "Server is running", enabled: false },
62
62
  { title: "Open Dashboard", tooltip: "Open in browser", enabled: true },
63
63
  {
64
64
  title: autostartEnabled ? "✓ Auto-start Enabled" : "Enable Auto-start",
@@ -121,7 +121,7 @@ function initWindowsTray(options) {
121
121
 
122
122
  trayInstance = initWinTray({
123
123
  iconPath,
124
- tooltip: `9Router - Port ${port}`,
124
+ tooltip: `Bluerouter - Port ${port}`,
125
125
  items,
126
126
  onClick: (index) => {
127
127
  handleClick(index, options, (newEnabled) => {
@@ -204,7 +204,7 @@ function initUnixTray(options) {
204
204
  // because template mode only uses the alpha channel.
205
205
  isTemplateIcon: false,
206
206
  title: "",
207
- tooltip: `9Router - Port ${port}`,
207
+ tooltip: `Bluerouter - Port ${port}`,
208
208
  items
209
209
  };
210
210
 
@@ -1,4 +1,4 @@
1
- # 9Router tray icon for Windows using NotifyIcon
1
+ # Bluerouter tray icon for Windows using NotifyIcon
2
2
  # IPC: stdin JSON commands, stdout JSON events
3
3
  param([string]$IconPath, [string]$Tooltip)
4
4