@jheavenknows/bluerouter 1.0.51 → 1.0.53

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 (627) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +5 -5
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/required-server-files.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.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 +1 -1
  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.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ollama-nodes/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ollama-nodes/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/virtual-combos/page.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/virtual-combos/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  62. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  63. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  64. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  65. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  66. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  67. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  68. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  69. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  70. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  72. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  73. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  74. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  75. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  76. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  77. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  78. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  79. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
  80. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
  82. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  84. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  87. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  89. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  91. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  95. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  97. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
  99. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  106. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  107. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  109. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  113. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  115. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  116. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  117. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  118. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  120. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  121. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  136. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  138. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  142. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  144. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  148. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  150. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  152. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  156. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/ollama-model-memory/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/install/route.js +170 -46
  172. package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/status/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/ollama-nodes/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/ollama-routing-targets/route.js +1 -1
  176. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  235. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  238. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  278. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  282. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/virtual-combos/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/virtual-combos/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  295. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  296. package/app/.next-cli-build/server/app/callback.html +1 -1
  297. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  298. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  299. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  300. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  301. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  302. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  306. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  307. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  310. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  311. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  313. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  314. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  315. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  316. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  317. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  320. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  321. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  323. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  324. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  326. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  327. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  329. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  330. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  331. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  333. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  334. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
  336. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  337. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  339. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  340. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  341. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  343. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  344. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  346. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  347. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  348. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  351. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  352. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  354. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  355. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  357. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  358. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  359. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  361. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  362. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  364. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  365. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.html +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.rsc +6 -6
  367. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes/__PAGE__.segment.rsc +2 -2
  368. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  370. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  371. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_full.segment.rsc +6 -6
  372. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_head.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_index.segment.rsc +4 -4
  374. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_tree.segment.rsc +2 -2
  375. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  376. package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  377. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  378. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  379. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  381. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  382. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  383. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  384. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  385. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  386. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +5 -5
  387. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  388. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  390. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  391. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +5 -5
  392. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  393. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +4 -4
  394. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
  395. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  396. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +5 -5
  397. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  398. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  401. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +5 -5
  402. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +4 -4
  404. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
  405. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  407. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  408. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  411. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  412. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  413. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  414. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  415. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  416. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  418. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  419. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  421. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  422. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  423. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  424. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  425. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  426. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  427. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  428. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  429. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  431. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  432. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  433. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  434. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  435. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  436. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  437. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  438. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  439. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  441. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  442. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  443. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  445. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  446. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  448. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  450. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  451. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  453. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  454. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  455. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  456. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  458. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  459. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  460. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  461. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  462. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  463. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  464. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  465. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  466. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  467. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  468. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  469. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  470. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  471. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  472. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  473. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  474. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  475. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  476. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  477. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  478. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  479. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  480. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  481. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  482. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  483. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  485. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  487. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  488. package/app/.next-cli-build/server/app/dashboard/virtual-combos.html +2 -2
  489. package/app/.next-cli-build/server/app/dashboard/virtual-combos.rsc +5 -5
  490. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos/__PAGE__.segment.rsc +1 -1
  491. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos.segment.rsc +1 -1
  492. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  493. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  494. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_full.segment.rsc +5 -5
  495. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_head.segment.rsc +1 -1
  496. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_index.segment.rsc +4 -4
  497. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_tree.segment.rsc +2 -2
  498. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  499. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  500. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  501. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  502. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  503. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  504. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  505. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  506. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  507. package/app/.next-cli-build/server/app/index.html +1 -1
  508. package/app/.next-cli-build/server/app/index.rsc +4 -4
  509. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  510. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  511. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  512. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  513. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  514. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  515. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  516. package/app/.next-cli-build/server/app/landing.html +1 -1
  517. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  518. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  519. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  520. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  521. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  522. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  523. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  524. package/app/.next-cli-build/server/app/login/page.js +1 -1
  525. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  526. package/app/.next-cli-build/server/app/login.html +1 -1
  527. package/app/.next-cli-build/server/app/login.rsc +4 -4
  528. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  529. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  530. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  531. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  532. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  533. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  534. package/app/.next-cli-build/server/app/page.js +1 -1
  535. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  536. package/app/.next-cli-build/server/app-paths-manifest.json +5 -5
  537. package/app/.next-cli-build/server/chunks/2769.js +1 -1
  538. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  539. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  540. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  541. package/app/.next-cli-build/server/chunks/7197.js +1 -1
  542. package/app/.next-cli-build/server/chunks/7774.js +8 -8
  543. package/app/.next-cli-build/server/chunks/7965.js +1 -1
  544. package/app/.next-cli-build/server/chunks/8491.js +1 -1
  545. package/app/.next-cli-build/server/chunks/8520.js +1 -1
  546. package/app/.next-cli-build/server/chunks/8895.js +1 -1
  547. package/app/.next-cli-build/server/chunks/9526.js +1 -1
  548. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  549. package/app/.next-cli-build/server/middleware.js +1 -1
  550. package/app/.next-cli-build/server/pages/404.html +1 -1
  551. package/app/.next-cli-build/server/pages/500.html +1 -1
  552. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  553. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  554. package/app/.next-cli-build/static/chunks/{1321-8d63c226121155a8.js → 1321-5ef553cf7914ae11.js} +1 -1
  555. package/app/.next-cli-build/static/chunks/app/landing/{page-70884f02f4f66d0e.js → page-7d550a4fdc74c753.js} +1 -1
  556. package/app/.next-cli-build/static/css/{b301b62b8274cce1.css → 0f03023a765dc337.css} +1 -1
  557. package/app/.next-cli-build/static/media/material-symbols-outlined.50fdf095.woff2 +0 -0
  558. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  559. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  560. package/app/cli/.build-home/AppData/Roaming/bluerouter/jwt-secret +1 -1
  561. package/app/cli/.build-home/AppData/Roaming/bluerouter/machine-id +1 -1
  562. package/app/cli/.build-home/AppData/Roaming/nextjs-nodejs/Config/config.json +3 -3
  563. package/app/package.json +4 -4
  564. package/app/public/favicon.svg +58 -58
  565. package/app/public/i18n/literals/ar.json +194 -194
  566. package/app/public/i18n/literals/bn.json +194 -194
  567. package/app/public/i18n/literals/cs.json +194 -194
  568. package/app/public/i18n/literals/da.json +194 -194
  569. package/app/public/i18n/literals/de.json +194 -194
  570. package/app/public/i18n/literals/el.json +194 -194
  571. package/app/public/i18n/literals/es.json +194 -194
  572. package/app/public/i18n/literals/fi.json +194 -194
  573. package/app/public/i18n/literals/fr.json +194 -194
  574. package/app/public/i18n/literals/he.json +194 -194
  575. package/app/public/i18n/literals/hi.json +194 -194
  576. package/app/public/i18n/literals/hu.json +194 -194
  577. package/app/public/i18n/literals/id.json +194 -194
  578. package/app/public/i18n/literals/it.json +194 -194
  579. package/app/public/i18n/literals/ja.json +194 -194
  580. package/app/public/i18n/literals/ko.json +194 -194
  581. package/app/public/i18n/literals/nl.json +194 -194
  582. package/app/public/i18n/literals/no.json +194 -194
  583. package/app/public/i18n/literals/pl.json +194 -194
  584. package/app/public/i18n/literals/pt-BR.json +194 -194
  585. package/app/public/i18n/literals/pt-PT.json +194 -194
  586. package/app/public/i18n/literals/ro.json +194 -194
  587. package/app/public/i18n/literals/ru.json +194 -194
  588. package/app/public/i18n/literals/sv.json +194 -194
  589. package/app/public/i18n/literals/th.json +194 -194
  590. package/app/public/i18n/literals/tl.json +194 -194
  591. package/app/public/i18n/literals/tr.json +194 -194
  592. package/app/public/i18n/literals/uk.json +194 -194
  593. package/app/public/i18n/literals/ur.json +194 -194
  594. package/app/public/i18n/literals/vi.json +194 -194
  595. package/app/public/i18n/literals/zh-CN.json +768 -768
  596. package/app/public/i18n/literals/zh-TW.json +194 -194
  597. package/app/server.js +1 -1
  598. package/app/src/lib/updater/updater.js +235 -235
  599. package/hooks/postinstall.js +22 -22
  600. package/hooks/sqliteRuntime.js +139 -139
  601. package/hooks/trayRuntime.js +107 -107
  602. package/package.json +3 -1
  603. package/src/cli/api/client.js +547 -547
  604. package/src/cli/menus/cliTools.js +618 -618
  605. package/src/cli/menus/providers.js +10 -10
  606. package/src/cli/menus/settings.js +207 -207
  607. package/src/cli/terminalUI.js +121 -121
  608. package/src/cli/tray/autostart.js +306 -306
  609. package/src/cli/tray/tray.js +322 -322
  610. package/app/.next-cli-build/static/media/material-symbols-outlined.acf6198a.woff2 +0 -0
  611. package/app/cli/.build-home/AppData/Roaming/9router/db/backups/upgrade-1.0.18-to-1.0.19-1.0.19-20260526-095516/data.sqlite +0 -0
  612. package/app/cli/.build-home/AppData/Roaming/9router/db/backups/upgrade-1.0.19-to-1.0.20-1.0.20-20260526-095953/data.sqlite +0 -0
  613. package/app/cli/.build-home/AppData/Roaming/9router/db/backups/upgrade-1.0.20-to-1.0.21-1.0.21-20260526-100915/data.sqlite +0 -0
  614. package/app/cli/.build-home/AppData/Roaming/9router/db/backups/upgrade-1.0.21-to-1.0.22-1.0.22-20260526-102212/data.sqlite +0 -0
  615. package/app/cli/.build-home/AppData/Roaming/9router/db/data.sqlite +0 -0
  616. package/app/cli/.build-home/AppData/Roaming/9router/db/data.sqlite-shm +0 -0
  617. package/app/cli/.build-home/AppData/Roaming/9router/db/data.sqlite-wal +0 -0
  618. package/app/cli/.build-home/AppData/Roaming/9router/jwt-secret +0 -1
  619. package/app/cli/.build-home/AppData/Roaming/9router/machine-id +0 -1
  620. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.46-to-1.0.47-1.0.47-20260526-224538/data.sqlite +0 -0
  621. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.47-to-1.0.48-1.0.48-20260526-232153/data.sqlite +0 -0
  622. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.48-to-1.0.49-1.0.49-20260526-233719/data.sqlite +0 -0
  623. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.49-to-1.0.50-1.0.50-20260526-234400/data.sqlite +0 -0
  624. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.50-to-1.0.51-1.0.51-20260526-235526/data.sqlite +0 -0
  625. /package/app/.next-cli-build/static/{JCrst1bYxD23RuorShv5s → QSbdGxh8toy2LcHGBDqR0}/_buildManifest.js +0 -0
  626. /package/app/.next-cli-build/static/{JCrst1bYxD23RuorShv5s → QSbdGxh8toy2LcHGBDqR0}/_ssgManifest.js +0 -0
  627. /package/app/cli/.build-home/AppData/Roaming/{9router/db/backups/upgrade-1.0.17-to-1.0.18-1.0.18-20260526-095022 → bluerouter/db/backups/upgrade-1.0.52-to-1.0.53-1.0.53-20260527-171653}/data.sqlite +0 -0
@@ -1,306 +1,306 @@
1
- const fs = require("fs");
2
- const path = require("path");
3
- const os = require("os");
4
- const { execSync } = require("child_process");
5
-
6
- const APP_NAME = "bluerouter";
7
- const APP_LABEL = "com.bluerouter.autostart";
8
-
9
- /**
10
- * Resolve the absolute path to this package's cli.js.
11
- *
12
- * Order of preference:
13
- * 1. Explicit `cliPath` argument — cleanest, used when called from running
14
- * cli.js with `__filename`.
15
- * 2. `process.argv[1]` if it's our cli.js — true when bluerouter is currently
16
- * running and the tray menu fires this code path.
17
- * 3. Compute relative to this file's own location. autostart.js lives at
18
- * `<pkg>/src/cli/tray/autostart.js`, so cli.js is three levels up.
19
- * This works for any global install layout (nvm, Volta, asdf, Homebrew,
20
- * /usr/local, etc.) without depending on `npm bin -g` (removed in npm 9)
21
- * or a hardcoded `/usr/local/...` path.
22
- *
23
- * Returns null if no candidate exists — callers should not write an autostart
24
- * entry pointing at a non-existent script.
25
- */
26
- function getCliJsPath(cliPath) {
27
- if (cliPath) {
28
- const resolved = path.resolve(cliPath);
29
- if (fs.existsSync(resolved)) return resolved;
30
- }
31
- if (process.argv[1]) {
32
- const resolved = path.resolve(process.argv[1]);
33
- if (path.basename(resolved) === "cli.js" && fs.existsSync(resolved)) {
34
- return resolved;
35
- }
36
- }
37
- const computed = path.resolve(__dirname, "..", "..", "..", "cli.js");
38
- if (fs.existsSync(computed)) return computed;
39
- return null;
40
- }
41
-
42
- /**
43
- * Enable auto startup on OS boot
44
- * @param {string} cliPath - Optional path to cli.js (defaults to auto-detect)
45
- * @returns {boolean} success
46
- */
47
- function enableAutoStart(cliPath) {
48
- const platform = process.platform;
49
-
50
- if (!["darwin", "win32", "linux"].includes(platform)) return false;
51
- if (platform === "linux" && !process.env.DISPLAY) return false;
52
-
53
- try {
54
- if (platform === "darwin") return enableMacOS(cliPath);
55
- if (platform === "win32") return enableWindows(cliPath);
56
- if (platform === "linux") return enableLinux(cliPath);
57
- } catch (err) {
58
- // Silent fail — autostart is optional
59
- }
60
- return false;
61
- }
62
-
63
- /**
64
- * Disable auto startup
65
- * @returns {boolean} success
66
- */
67
- function disableAutoStart() {
68
- const platform = process.platform;
69
- try {
70
- if (platform === "darwin") return disableMacOS();
71
- if (platform === "win32") return disableWindows();
72
- if (platform === "linux") return disableLinux();
73
- } catch (err) {}
74
- return false;
75
- }
76
-
77
- /**
78
- * Check if autostart is enabled.
79
- *
80
- * On macOS, both the plist file and the launchd registration must be present —
81
- * otherwise the tray menu would lie about the state (showing "✓ Enabled" even
82
- * when launchd has the agent in a failed state or hasn't loaded it).
83
- */
84
- function isAutoStartEnabled() {
85
- const platform = process.platform;
86
-
87
- try {
88
- if (platform === "darwin") {
89
- const plistPath = path.join(os.homedir(), "Library", "LaunchAgents", `${APP_LABEL}.plist`);
90
- if (!fs.existsSync(plistPath)) return false;
91
- try {
92
- execSync(`launchctl list ${APP_LABEL}`, {
93
- stdio: ["ignore", "ignore", "ignore"],
94
- timeout: 3000
95
- });
96
- return true;
97
- } catch (e) {
98
- return false;
99
- }
100
- } else if (platform === "win32") {
101
- const startupPath = path.join(process.env.APPDATA || "", "Microsoft", "Windows", "Start Menu", "Programs", "Startup", `${APP_NAME}.vbs`);
102
- return fs.existsSync(startupPath);
103
- } else if (platform === "linux") {
104
- const desktopPath = path.join(os.homedir(), ".config", "autostart", `${APP_NAME}.desktop`);
105
- return fs.existsSync(desktopPath);
106
- }
107
- } catch (e) {}
108
- return false;
109
- }
110
-
111
- // ============ macOS ============
112
-
113
- /**
114
- * Returns true when the current Node process IS the running instance that
115
- * launchd is managing under our agent label.
116
- *
117
- * `launchctl unload <plist>` (and `load`) for an Aqua user-domain agent sends
118
- * SIGTERM to the running process. When the running bluerouter cli.js was itself
119
- * spawned by the autostart launchd agent (i.e. user enabled autostart at
120
- * some point, then rebooted, then clicked the tray icon's "Disable
121
- * Auto-start" menu item), an unload would kill the very process executing
122
- * the click handler — and the tray icon would disappear instead of the menu
123
- * label flipping back to "Enable Auto-start". This helper lets the enable
124
- * and disable paths sidestep that by skipping launchctl when we'd otherwise
125
- * be killing ourselves.
126
- */
127
- function isAgentSelfMacOS() {
128
- try {
129
- const output = execSync(`launchctl list ${APP_LABEL}`, {
130
- encoding: "utf8",
131
- stdio: ["ignore", "pipe", "ignore"],
132
- timeout: 3000
133
- });
134
- const match = output.match(/"PID"\s*=\s*(\d+)/);
135
- return !!(match && parseInt(match[1], 10) === process.pid);
136
- } catch (e) {
137
- return false;
138
- }
139
- }
140
-
141
- function enableMacOS(cliPath) {
142
- const launchAgentsDir = path.join(os.homedir(), "Library", "LaunchAgents");
143
- const plistPath = path.join(launchAgentsDir, `${APP_LABEL}.plist`);
144
-
145
- if (!fs.existsSync(launchAgentsDir)) {
146
- fs.mkdirSync(launchAgentsDir, { recursive: true });
147
- }
148
-
149
- const nodePath = process.execPath;
150
- const routerScript = getCliJsPath(cliPath);
151
- // Don't write a broken plist that references a non-existent script.
152
- if (!routerScript) return false;
153
-
154
- // Invoke node + cli.js directly with absolute paths — no shell wrapper.
155
- // The previous design ran `zsh -l -c "..."` so a login shell would source
156
- // nvm/.zshrc and set PATH; that's fragile (nvm.sh sourcing varies by user,
157
- // some setups don't put node on PATH from a non-interactive login shell).
158
- // EnvironmentVariables.PATH explicitly includes node's bin dir so child
159
- // processes spawned by cli.js (npm install at runtime, etc.) resolve.
160
- const launchPath = `${path.dirname(nodePath)}:/usr/local/bin:/usr/bin:/bin`;
161
-
162
- const plistContent = `<?xml version="1.0" encoding="UTF-8"?>
163
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
164
- <plist version="1.0">
165
- <dict>
166
- <key>Label</key>
167
- <string>${APP_LABEL}</string>
168
- <key>ProgramArguments</key>
169
- <array>
170
- <string>${nodePath}</string>
171
- <string>${routerScript}</string>
172
- <string>--tray</string>
173
- <string>--skip-update</string>
174
- </array>
175
- <key>EnvironmentVariables</key>
176
- <dict>
177
- <key>PATH</key>
178
- <string>${launchPath}</string>
179
- </dict>
180
- <key>RunAtLoad</key>
181
- <true/>
182
- <key>KeepAlive</key>
183
- <false/>
184
- <key>StandardOutPath</key>
185
- <string>/tmp/bluerouter.log</string>
186
- <key>StandardErrorPath</key>
187
- <string>/tmp/bluerouter.error.log</string>
188
- </dict>
189
- </plist>`;
190
-
191
- fs.writeFileSync(plistPath, plistContent);
192
-
193
- // If we're the running agent already, launchctl unload/load would send
194
- // ourselves SIGTERM. Skip it — the plist file is updated on disk and
195
- // launchd will pick it up at next login. isAutoStartEnabled() will still
196
- // return true because launchctl already has the agent loaded.
197
- if (isAgentSelfMacOS()) {
198
- return true;
199
- }
200
-
201
- // Register with launchd in the current session. Without this, the agent
202
- // only takes effect on the next user login and the user has no signal that
203
- // anything actually happened. `unload` first defends against re-enable
204
- // replacing an existing plist.
205
- try {
206
- execSync(`launchctl unload "${plistPath}"`, { stdio: "ignore" });
207
- } catch (e) {}
208
- try {
209
- execSync(`launchctl load -w "${plistPath}"`, { stdio: "ignore" });
210
- } catch (e) {
211
- // Even if load fails, the plist is on disk and will be picked up at next
212
- // login; report success based on the file write.
213
- }
214
- return true;
215
- }
216
-
217
- function disableMacOS() {
218
- const plistPath = path.join(os.homedir(), "Library", "LaunchAgents", `${APP_LABEL}.plist`);
219
-
220
- // Don't kill ourselves: when the current process is the running agent,
221
- // `launchctl unload` would send SIGTERM and the user clicking
222
- // "Disable Auto-start" from the tray menu would lose their tray icon
223
- // instead of just flipping the menu label. Skip the unload — removing the
224
- // plist file is enough to prevent the agent from starting on next login.
225
- if (!isAgentSelfMacOS()) {
226
- try {
227
- execSync(`launchctl unload "${plistPath}"`, { stdio: "ignore" });
228
- } catch (e) {}
229
- }
230
-
231
- if (fs.existsSync(plistPath)) {
232
- fs.unlinkSync(plistPath);
233
- }
234
- return true;
235
- }
236
-
237
- // ============ Windows ============
238
-
239
- function enableWindows(cliPath) {
240
- const startupDir = path.join(process.env.APPDATA || "", "Microsoft", "Windows", "Start Menu", "Programs", "Startup");
241
- const vbsPath = path.join(startupDir, `${APP_NAME}.vbs`);
242
-
243
- if (!fs.existsSync(startupDir)) return false;
244
-
245
- const nodePath = process.execPath;
246
- const routerScript = getCliJsPath(cliPath);
247
- if (!routerScript) return false;
248
-
249
- // Run node + cli.js directly, hidden window. Avoids the fragile
250
- // `bluerouter.cmd` lookup that depended on the npm prefix path.
251
- const vbsContent = `Set WshShell = CreateObject("WScript.Shell")
252
- WshShell.Run """${nodePath}"" ""${routerScript}"" --tray --skip-update", 0, False
253
- `;
254
- fs.writeFileSync(vbsPath, vbsContent);
255
- return true;
256
- }
257
-
258
- function disableWindows() {
259
- const vbsPath = path.join(process.env.APPDATA || "", "Microsoft", "Windows", "Start Menu", "Programs", "Startup", `${APP_NAME}.vbs`);
260
- if (fs.existsSync(vbsPath)) {
261
- fs.unlinkSync(vbsPath);
262
- }
263
- return true;
264
- }
265
-
266
- // ============ Linux ============
267
-
268
- function enableLinux(cliPath) {
269
- const autostartDir = path.join(os.homedir(), ".config", "autostart");
270
- const desktopPath = path.join(autostartDir, `${APP_NAME}.desktop`);
271
-
272
- if (!fs.existsSync(autostartDir)) {
273
- try { fs.mkdirSync(autostartDir, { recursive: true }); }
274
- catch (e) { return false; }
275
- }
276
-
277
- const nodePath = process.execPath;
278
- const routerScript = getCliJsPath(cliPath);
279
- if (!routerScript) return false;
280
-
281
- const desktopContent = `[Desktop Entry]
282
- Type=Application
283
- Name=Bluerouter
284
- Comment=Bluerouter API Proxy
285
- Exec=${nodePath} ${routerScript} --tray --skip-update
286
- Hidden=false
287
- NoDisplay=false
288
- X-GNOME-Autostart-enabled=true
289
- `;
290
- fs.writeFileSync(desktopPath, desktopContent);
291
- return true;
292
- }
293
-
294
- function disableLinux() {
295
- const desktopPath = path.join(os.homedir(), ".config", "autostart", `${APP_NAME}.desktop`);
296
- if (fs.existsSync(desktopPath)) {
297
- fs.unlinkSync(desktopPath);
298
- }
299
- return true;
300
- }
301
-
302
- module.exports = {
303
- enableAutoStart,
304
- disableAutoStart,
305
- isAutoStartEnabled
306
- };
1
+ const fs = require("fs");
2
+ const path = require("path");
3
+ const os = require("os");
4
+ const { execSync } = require("child_process");
5
+
6
+ const APP_NAME = "bluerouter";
7
+ const APP_LABEL = "com.bluerouter.autostart";
8
+
9
+ /**
10
+ * Resolve the absolute path to this package's cli.js.
11
+ *
12
+ * Order of preference:
13
+ * 1. Explicit `cliPath` argument — cleanest, used when called from running
14
+ * cli.js with `__filename`.
15
+ * 2. `process.argv[1]` if it's our cli.js — true when bluerouter is currently
16
+ * running and the tray menu fires this code path.
17
+ * 3. Compute relative to this file's own location. autostart.js lives at
18
+ * `<pkg>/src/cli/tray/autostart.js`, so cli.js is three levels up.
19
+ * This works for any global install layout (nvm, Volta, asdf, Homebrew,
20
+ * /usr/local, etc.) without depending on `npm bin -g` (removed in npm 9)
21
+ * or a hardcoded `/usr/local/...` path.
22
+ *
23
+ * Returns null if no candidate exists — callers should not write an autostart
24
+ * entry pointing at a non-existent script.
25
+ */
26
+ function getCliJsPath(cliPath) {
27
+ if (cliPath) {
28
+ const resolved = path.resolve(cliPath);
29
+ if (fs.existsSync(resolved)) return resolved;
30
+ }
31
+ if (process.argv[1]) {
32
+ const resolved = path.resolve(process.argv[1]);
33
+ if (path.basename(resolved) === "cli.js" && fs.existsSync(resolved)) {
34
+ return resolved;
35
+ }
36
+ }
37
+ const computed = path.resolve(__dirname, "..", "..", "..", "cli.js");
38
+ if (fs.existsSync(computed)) return computed;
39
+ return null;
40
+ }
41
+
42
+ /**
43
+ * Enable auto startup on OS boot
44
+ * @param {string} cliPath - Optional path to cli.js (defaults to auto-detect)
45
+ * @returns {boolean} success
46
+ */
47
+ function enableAutoStart(cliPath) {
48
+ const platform = process.platform;
49
+
50
+ if (!["darwin", "win32", "linux"].includes(platform)) return false;
51
+ if (platform === "linux" && !process.env.DISPLAY) return false;
52
+
53
+ try {
54
+ if (platform === "darwin") return enableMacOS(cliPath);
55
+ if (platform === "win32") return enableWindows(cliPath);
56
+ if (platform === "linux") return enableLinux(cliPath);
57
+ } catch (err) {
58
+ // Silent fail — autostart is optional
59
+ }
60
+ return false;
61
+ }
62
+
63
+ /**
64
+ * Disable auto startup
65
+ * @returns {boolean} success
66
+ */
67
+ function disableAutoStart() {
68
+ const platform = process.platform;
69
+ try {
70
+ if (platform === "darwin") return disableMacOS();
71
+ if (platform === "win32") return disableWindows();
72
+ if (platform === "linux") return disableLinux();
73
+ } catch (err) {}
74
+ return false;
75
+ }
76
+
77
+ /**
78
+ * Check if autostart is enabled.
79
+ *
80
+ * On macOS, both the plist file and the launchd registration must be present —
81
+ * otherwise the tray menu would lie about the state (showing "✓ Enabled" even
82
+ * when launchd has the agent in a failed state or hasn't loaded it).
83
+ */
84
+ function isAutoStartEnabled() {
85
+ const platform = process.platform;
86
+
87
+ try {
88
+ if (platform === "darwin") {
89
+ const plistPath = path.join(os.homedir(), "Library", "LaunchAgents", `${APP_LABEL}.plist`);
90
+ if (!fs.existsSync(plistPath)) return false;
91
+ try {
92
+ execSync(`launchctl list ${APP_LABEL}`, {
93
+ stdio: ["ignore", "ignore", "ignore"],
94
+ timeout: 3000
95
+ });
96
+ return true;
97
+ } catch (e) {
98
+ return false;
99
+ }
100
+ } else if (platform === "win32") {
101
+ const startupPath = path.join(process.env.APPDATA || "", "Microsoft", "Windows", "Start Menu", "Programs", "Startup", `${APP_NAME}.vbs`);
102
+ return fs.existsSync(startupPath);
103
+ } else if (platform === "linux") {
104
+ const desktopPath = path.join(os.homedir(), ".config", "autostart", `${APP_NAME}.desktop`);
105
+ return fs.existsSync(desktopPath);
106
+ }
107
+ } catch (e) {}
108
+ return false;
109
+ }
110
+
111
+ // ============ macOS ============
112
+
113
+ /**
114
+ * Returns true when the current Node process IS the running instance that
115
+ * launchd is managing under our agent label.
116
+ *
117
+ * `launchctl unload <plist>` (and `load`) for an Aqua user-domain agent sends
118
+ * SIGTERM to the running process. When the running bluerouter cli.js was itself
119
+ * spawned by the autostart launchd agent (i.e. user enabled autostart at
120
+ * some point, then rebooted, then clicked the tray icon's "Disable
121
+ * Auto-start" menu item), an unload would kill the very process executing
122
+ * the click handler — and the tray icon would disappear instead of the menu
123
+ * label flipping back to "Enable Auto-start". This helper lets the enable
124
+ * and disable paths sidestep that by skipping launchctl when we'd otherwise
125
+ * be killing ourselves.
126
+ */
127
+ function isAgentSelfMacOS() {
128
+ try {
129
+ const output = execSync(`launchctl list ${APP_LABEL}`, {
130
+ encoding: "utf8",
131
+ stdio: ["ignore", "pipe", "ignore"],
132
+ timeout: 3000
133
+ });
134
+ const match = output.match(/"PID"\s*=\s*(\d+)/);
135
+ return !!(match && parseInt(match[1], 10) === process.pid);
136
+ } catch (e) {
137
+ return false;
138
+ }
139
+ }
140
+
141
+ function enableMacOS(cliPath) {
142
+ const launchAgentsDir = path.join(os.homedir(), "Library", "LaunchAgents");
143
+ const plistPath = path.join(launchAgentsDir, `${APP_LABEL}.plist`);
144
+
145
+ if (!fs.existsSync(launchAgentsDir)) {
146
+ fs.mkdirSync(launchAgentsDir, { recursive: true });
147
+ }
148
+
149
+ const nodePath = process.execPath;
150
+ const routerScript = getCliJsPath(cliPath);
151
+ // Don't write a broken plist that references a non-existent script.
152
+ if (!routerScript) return false;
153
+
154
+ // Invoke node + cli.js directly with absolute paths — no shell wrapper.
155
+ // The previous design ran `zsh -l -c "..."` so a login shell would source
156
+ // nvm/.zshrc and set PATH; that's fragile (nvm.sh sourcing varies by user,
157
+ // some setups don't put node on PATH from a non-interactive login shell).
158
+ // EnvironmentVariables.PATH explicitly includes node's bin dir so child
159
+ // processes spawned by cli.js (npm install at runtime, etc.) resolve.
160
+ const launchPath = `${path.dirname(nodePath)}:/usr/local/bin:/usr/bin:/bin`;
161
+
162
+ const plistContent = `<?xml version="1.0" encoding="UTF-8"?>
163
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
164
+ <plist version="1.0">
165
+ <dict>
166
+ <key>Label</key>
167
+ <string>${APP_LABEL}</string>
168
+ <key>ProgramArguments</key>
169
+ <array>
170
+ <string>${nodePath}</string>
171
+ <string>${routerScript}</string>
172
+ <string>--tray</string>
173
+ <string>--skip-update</string>
174
+ </array>
175
+ <key>EnvironmentVariables</key>
176
+ <dict>
177
+ <key>PATH</key>
178
+ <string>${launchPath}</string>
179
+ </dict>
180
+ <key>RunAtLoad</key>
181
+ <true/>
182
+ <key>KeepAlive</key>
183
+ <false/>
184
+ <key>StandardOutPath</key>
185
+ <string>/tmp/bluerouter.log</string>
186
+ <key>StandardErrorPath</key>
187
+ <string>/tmp/bluerouter.error.log</string>
188
+ </dict>
189
+ </plist>`;
190
+
191
+ fs.writeFileSync(plistPath, plistContent);
192
+
193
+ // If we're the running agent already, launchctl unload/load would send
194
+ // ourselves SIGTERM. Skip it — the plist file is updated on disk and
195
+ // launchd will pick it up at next login. isAutoStartEnabled() will still
196
+ // return true because launchctl already has the agent loaded.
197
+ if (isAgentSelfMacOS()) {
198
+ return true;
199
+ }
200
+
201
+ // Register with launchd in the current session. Without this, the agent
202
+ // only takes effect on the next user login and the user has no signal that
203
+ // anything actually happened. `unload` first defends against re-enable
204
+ // replacing an existing plist.
205
+ try {
206
+ execSync(`launchctl unload "${plistPath}"`, { stdio: "ignore" });
207
+ } catch (e) {}
208
+ try {
209
+ execSync(`launchctl load -w "${plistPath}"`, { stdio: "ignore" });
210
+ } catch (e) {
211
+ // Even if load fails, the plist is on disk and will be picked up at next
212
+ // login; report success based on the file write.
213
+ }
214
+ return true;
215
+ }
216
+
217
+ function disableMacOS() {
218
+ const plistPath = path.join(os.homedir(), "Library", "LaunchAgents", `${APP_LABEL}.plist`);
219
+
220
+ // Don't kill ourselves: when the current process is the running agent,
221
+ // `launchctl unload` would send SIGTERM and the user clicking
222
+ // "Disable Auto-start" from the tray menu would lose their tray icon
223
+ // instead of just flipping the menu label. Skip the unload — removing the
224
+ // plist file is enough to prevent the agent from starting on next login.
225
+ if (!isAgentSelfMacOS()) {
226
+ try {
227
+ execSync(`launchctl unload "${plistPath}"`, { stdio: "ignore" });
228
+ } catch (e) {}
229
+ }
230
+
231
+ if (fs.existsSync(plistPath)) {
232
+ fs.unlinkSync(plistPath);
233
+ }
234
+ return true;
235
+ }
236
+
237
+ // ============ Windows ============
238
+
239
+ function enableWindows(cliPath) {
240
+ const startupDir = path.join(process.env.APPDATA || "", "Microsoft", "Windows", "Start Menu", "Programs", "Startup");
241
+ const vbsPath = path.join(startupDir, `${APP_NAME}.vbs`);
242
+
243
+ if (!fs.existsSync(startupDir)) return false;
244
+
245
+ const nodePath = process.execPath;
246
+ const routerScript = getCliJsPath(cliPath);
247
+ if (!routerScript) return false;
248
+
249
+ // Run node + cli.js directly, hidden window. Avoids the fragile
250
+ // `bluerouter.cmd` lookup that depended on the npm prefix path.
251
+ const vbsContent = `Set WshShell = CreateObject("WScript.Shell")
252
+ WshShell.Run """${nodePath}"" ""${routerScript}"" --tray --skip-update", 0, False
253
+ `;
254
+ fs.writeFileSync(vbsPath, vbsContent);
255
+ return true;
256
+ }
257
+
258
+ function disableWindows() {
259
+ const vbsPath = path.join(process.env.APPDATA || "", "Microsoft", "Windows", "Start Menu", "Programs", "Startup", `${APP_NAME}.vbs`);
260
+ if (fs.existsSync(vbsPath)) {
261
+ fs.unlinkSync(vbsPath);
262
+ }
263
+ return true;
264
+ }
265
+
266
+ // ============ Linux ============
267
+
268
+ function enableLinux(cliPath) {
269
+ const autostartDir = path.join(os.homedir(), ".config", "autostart");
270
+ const desktopPath = path.join(autostartDir, `${APP_NAME}.desktop`);
271
+
272
+ if (!fs.existsSync(autostartDir)) {
273
+ try { fs.mkdirSync(autostartDir, { recursive: true }); }
274
+ catch (e) { return false; }
275
+ }
276
+
277
+ const nodePath = process.execPath;
278
+ const routerScript = getCliJsPath(cliPath);
279
+ if (!routerScript) return false;
280
+
281
+ const desktopContent = `[Desktop Entry]
282
+ Type=Application
283
+ Name=Bluerouter
284
+ Comment=Bluerouter API Proxy
285
+ Exec=${nodePath} ${routerScript} --tray --skip-update
286
+ Hidden=false
287
+ NoDisplay=false
288
+ X-GNOME-Autostart-enabled=true
289
+ `;
290
+ fs.writeFileSync(desktopPath, desktopContent);
291
+ return true;
292
+ }
293
+
294
+ function disableLinux() {
295
+ const desktopPath = path.join(os.homedir(), ".config", "autostart", `${APP_NAME}.desktop`);
296
+ if (fs.existsSync(desktopPath)) {
297
+ fs.unlinkSync(desktopPath);
298
+ }
299
+ return true;
300
+ }
301
+
302
+ module.exports = {
303
+ enableAutoStart,
304
+ disableAutoStart,
305
+ isAutoStartEnabled
306
+ };