@jheavenknows/bluerouter 1.0.62 → 1.0.65

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 (566) 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 +2 -2
  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 +1 -1
  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 +1 -1
  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 +2 -2
  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 +1 -1
  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/pricing/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  229. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
  232. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  278. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/virtual-combos/preview/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/virtual-combos/preview/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/virtual-combos/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/virtual-combos/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  291. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  292. package/app/.next-cli-build/server/app/callback.html +1 -1
  293. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  294. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  295. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  296. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  297. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  298. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  299. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  300. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  301. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  302. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  303. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  306. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  307. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  309. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  310. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  311. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  312. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  313. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  314. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  315. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  316. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  317. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  319. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  320. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  321. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  322. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  323. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  324. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  326. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  327. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  329. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  330. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  331. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
  332. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  333. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  334. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  336. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  337. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  339. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  340. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  341. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  342. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  343. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  344. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  346. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  347. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  348. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  350. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  351. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  352. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  353. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  354. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  357. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  358. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  359. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  360. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  361. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.html +1 -1
  362. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.rsc +6 -6
  363. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes/__PAGE__.segment.rsc +2 -2
  364. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes.segment.rsc +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  367. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_full.segment.rsc +6 -6
  368. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_head.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_index.segment.rsc +4 -4
  370. package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_tree.segment.rsc +2 -2
  371. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  372. package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  373. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  374. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  376. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  377. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  378. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  379. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  380. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  381. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  382. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +5 -5
  383. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  384. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  386. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  387. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +5 -5
  388. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +4 -4
  390. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
  391. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  392. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +5 -5
  393. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  396. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  397. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +5 -5
  398. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +4 -4
  400. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
  401. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  402. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  403. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  404. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  407. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  408. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  409. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  411. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  412. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  414. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  415. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  418. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  419. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  421. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  422. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  424. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  425. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  427. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  428. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  429. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  431. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  432. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  433. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  434. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  435. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  436. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  438. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  439. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  441. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  442. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  446. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  447. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  448. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  449. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  450. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  451. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  454. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  455. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  456. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  457. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  458. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  459. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  460. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  461. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  462. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  463. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  464. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  465. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  466. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  467. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  468. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  469. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  470. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  471. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  472. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  473. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  474. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  475. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  476. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  477. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  479. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  480. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  481. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  482. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  483. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/virtual-combos.html +1 -1
  485. package/app/.next-cli-build/server/app/dashboard/virtual-combos.rsc +6 -6
  486. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos/__PAGE__.segment.rsc +2 -2
  487. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos.segment.rsc +1 -1
  488. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  489. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  490. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_full.segment.rsc +6 -6
  491. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_head.segment.rsc +1 -1
  492. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_index.segment.rsc +4 -4
  493. package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_tree.segment.rsc +2 -2
  494. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  495. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  496. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  497. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  498. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  499. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  500. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  501. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  502. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  503. package/app/.next-cli-build/server/app/index.html +1 -1
  504. package/app/.next-cli-build/server/app/index.rsc +4 -4
  505. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  506. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  507. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  508. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  509. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  510. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  511. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  512. package/app/.next-cli-build/server/app/landing.html +1 -1
  513. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  514. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  515. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  516. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  517. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  518. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  519. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  520. package/app/.next-cli-build/server/app/login/page.js +1 -1
  521. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  522. package/app/.next-cli-build/server/app/login.html +1 -1
  523. package/app/.next-cli-build/server/app/login.rsc +4 -4
  524. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  525. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  526. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  527. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  528. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  529. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  530. package/app/.next-cli-build/server/app/page.js +1 -1
  531. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  532. package/app/.next-cli-build/server/app-paths-manifest.json +5 -5
  533. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  534. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  535. package/app/.next-cli-build/server/chunks/7130.js +1 -1
  536. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  537. package/app/.next-cli-build/server/chunks/7197.js +1 -1
  538. package/app/.next-cli-build/server/chunks/7774.js +2 -2
  539. package/app/.next-cli-build/server/chunks/7965.js +1 -1
  540. package/app/.next-cli-build/server/chunks/8520.js +1 -1
  541. package/app/.next-cli-build/server/chunks/8895.js +1 -1
  542. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  543. package/app/.next-cli-build/server/middleware.js +1 -1
  544. package/app/.next-cli-build/server/pages/404.html +1 -1
  545. package/app/.next-cli-build/server/pages/500.html +1 -1
  546. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  547. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  548. package/app/.next-cli-build/static/chunks/{1321-a69ec142fb2fa325.js → 1321-aee41561605fce5d.js} +1 -1
  549. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/virtual-combos/page-606188fef0d6c05c.js +15 -0
  550. package/app/.next-cli-build/static/css/{11e167ecf7b4e500.css → 094fcadad9d4acb1.css} +1 -1
  551. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  552. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  553. package/app/cli/.build-home/AppData/Roaming/bluerouter/jwt-secret +1 -1
  554. package/app/cli/.build-home/AppData/Roaming/bluerouter/machine-id +1 -1
  555. package/app/package.json +3 -3
  556. package/app/server.js +1 -1
  557. package/package.json +1 -1
  558. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/virtual-combos/page-7731b73f4ce55878.js +0 -15
  559. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.57-to-1.0.58-1.0.58-20260527-230328/data.sqlite +0 -0
  560. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.58-to-1.0.59-1.0.59-20260527-233043/data.sqlite +0 -0
  561. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.59-to-1.0.60-1.0.60-20260528-000431/data.sqlite +0 -0
  562. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.60-to-1.0.61-1.0.61-20260528-065316/data.sqlite +0 -0
  563. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.61-to-1.0.62-1.0.62-20260528-071706/data.sqlite +0 -0
  564. package/app/cli/.build-home/AppData/Roaming/nextjs-nodejs/Config/config.json +0 -7
  565. /package/app/.next-cli-build/static/{LGHFaxA_dsojPM1qPUYxI → E9eCxEkATqY52-r92l_3-}/_buildManifest.js +0 -0
  566. /package/app/.next-cli-build/static/{LGHFaxA_dsojPM1qPUYxI → E9eCxEkATqY52-r92l_3-}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- 01f0526d45168265077123d5ac9d9188a5a4ea9c6b525e6a7a2320c97390522e
1
+ e1a196c22c23f6a6d1da063e049e57dd1fe1bdce93296a033e4ad368109af005
@@ -1 +1 @@
1
- 667e557ea0eb7cbbdf4448b83c5bc42c54f8d74af040c2c369a7a5245ac1eb07
1
+ de2dc8f7c6f7ad9ed0ff6d97a96ad3f7d02c6b17f6fdd51db26f9d3ce7fef99d
package/app/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "bluerouter-app",
3
- "version": "1.0.62",
3
+ "version": "1.0.65",
4
4
  "description": "Router web dashboard",
5
- "private": true,
5
+ "private": false,
6
6
  "scripts": {
7
7
  "dev": "next dev --webpack --port 20128",
8
8
  "build": "next build --webpack",
@@ -27,7 +27,7 @@
27
27
  "ldapts": "^8.0.9",
28
28
  "marked": "^18.0.1",
29
29
  "material-symbols": "^0.44.6",
30
- "monaco-editor": "^0.55.1",
30
+ "monaco-editor": "^0.53.0",
31
31
  "mysql2": "^3.22.4",
32
32
  "next": "^16.2.6",
33
33
  "node-forge": "^1.3.3",
package/app/server.js CHANGED
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next-cli-build","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"D:\\","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":23,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","serverExternalPackages":["better-sqlite3","sql.js","node:sqlite","bun:sqlite"],"turbopack":{"root":"D:\\"},"outputFileTracingExcludes":{"*":["./gitbook/**/*"]},"distDirRoot":".next-cli-build","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
12
+ const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next-cli-build","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"D:\\","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":11,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","serverExternalPackages":["better-sqlite3","sql.js","node:sqlite","bun:sqlite"],"turbopack":{"root":"D:\\"},"outputFileTracingExcludes":{"*":["./gitbook/**/*"]},"distDirRoot":".next-cli-build","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jheavenknows/bluerouter",
3
- "version": "1.0.62",
3
+ "version": "1.0.65",
4
4
  "description": "Bluerouter CLI - Start and manage Bluerouter server",
5
5
  "bin": {
6
6
  "bluerouter": "./cli.js"
@@ -1,15 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6967],{53677:(e,l,t)=>{"use strict";t.r(l),t.d(l,{default:()=>j});var a=t(95155),o=t(12115);let r=[{value:"virtual",label:"Provider / LAN target combo"},{value:"ollama-local",label:"Ollama Local Combo"}],s=[{value:"fallback",label:"Fallback priority"},{value:"least-latency",label:"Least latency"},{value:"p2c",label:"P2C"}],n=[{value:"best-fit",label:"Best fit"},{value:"loaded-first",label:"Loaded first"},{value:"lowest-latency",label:"Lowest latency"},{value:"balanced",label:"Balanced"}],d=`qwen3-coder:30b | priority=100
2
- qwen3-coder:latest | priority=95
3
- qwen2.5-coder:14b | priority=80
4
- deepseek-coder:6.7b | priority=60`,i={"auto/offline-fast":{name:"auto/offline-fast",exposedModel:"auto/offline-fast",description:"Fast local Ollama chat models.",modelPatternsText:`glm-4.7-flash:latest | priority=100
5
- gemma4:e4b | priority=90
6
- gemma:7b | priority=80
7
- llama3.1:8b | priority=70`,preferLoaded:!0,allowWakeSleeping:!0,requireGpu:!1,allowCpuFallback:!0,allowMultiGpuSplit:!1,maxWakeVramMb:"12000",maxWakeRamMb:"16384",selectionPolicy:"loaded-first"},"auto/offline-coding":{name:"auto/offline-coding",exposedModel:"auto/offline-coding",description:"Local coding models with RAM/VRAM preflight.",modelPatternsText:d,preferLoaded:!0,allowWakeSleeping:!0,requireGpu:!0,allowCpuFallback:!1,allowMultiGpuSplit:!1,maxWakeVramMb:"28000",maxWakeRamMb:"32768",selectionPolicy:"best-fit"},"auto/offline-vision":{name:"auto/offline-vision",exposedModel:"auto/offline-vision",description:"Local vision models.",modelPatternsText:`qwen2.5vl:7b | priority=100
8
- qwen2.5vl:latest | priority=95
9
- llama3.2-vision:latest | priority=80`,preferLoaded:!0,allowWakeSleeping:!0,requireGpu:!0,allowCpuFallback:!1,allowMultiGpuSplit:!1,maxWakeVramMb:"18000",maxWakeRamMb:"24576",selectionPolicy:"best-fit"},"auto/offline-translate":{name:"auto/offline-translate",exposedModel:"auto/offline-translate",description:"Local translation models.",modelPatternsText:`qwen3-jp-vi-translate:latest | priority=100
10
- qwen3-jp-vi-k2-translate-f16:latest | priority=95
11
- qwen3-ijs-k4-translate:latest | priority=90
12
- qwen3-ijs-k4-translate-vn2jp:latest | priority=85
13
- qwen3-mail-translate-f16:latest | priority=80
14
- qwen3-prc-sc-k2-translate-jp2vn:latest | priority=75`,preferLoaded:!0,allowWakeSleeping:!0,requireGpu:!1,allowCpuFallback:!0,allowMultiGpuSplit:!1,maxWakeVramMb:"24000",maxWakeRamMb:"32768",selectionPolicy:"loaded-first"},"auto/offline-embed":{name:"auto/offline-embed",exposedModel:"auto/offline-embed",description:"Local embedding models.",modelPatternsText:`bge-m3:latest | priority=100
15
- mxbai-embed-large:latest | priority=90`,preferLoaded:!0,allowWakeSleeping:!0,requireGpu:!1,allowCpuFallback:!0,allowMultiGpuSplit:!1,maxWakeVramMb:"4096",maxWakeRamMb:"8192",selectionPolicy:"lowest-latency"}};function c(e){return String(e||"").trim()}function m(e){return Array.isArray(e)?e.join(", "):c(e)}function x(e=""){return[...new Set(String(e||"").split(/[\n,;]+/).map(e=>e.trim()).filter(Boolean))]}function u(e){let l=String(e||"").split("|").map(e=>e.trim()).filter(Boolean),t=c(l.shift());if(!t)return null;let a={model:t,label:t,tags:[]};for(let e of l){let l=e.indexOf("=");if(l<=0)continue;let t=e.slice(0,l).trim().toLowerCase(),o=e.slice(l+1).trim();"connection"===t||"connectionid"===t||"account"===t?a.connectionId=o:"label"===t||"name"===t?a.label=o:"endpoint"===t||"url"===t||"baseurl"===t?a.endpoint=o:"tags"===t||"labels"===t?a.tags=x(o):"max"===t||"maxinflight"===t?a.maxInFlight=Number(o)||void 0:"provider"===t&&(a.provider=o)}return a}let b={type:"virtual",name:"",exposedModel:"",enabled:!0,strategy:"least-latency",requiredTagsText:"",modelRulesText:"",targetsText:"",description:"",modelPatternsText:d,allowedNodeIdsText:"",allowedPortsText:"",preferLoaded:!0,allowWakeSleeping:!0,requireGpu:!0,allowCpuFallback:!1,allowMultiGpuSplit:!1,maxWakeVramMb:"28000",maxWakeRamMb:"32768",fallbackCombo:"",selectionPolicy:"best-fit"};function p(e){let l={id:c(e.name),name:c(e.name),exposedModel:c(e.exposedModel||e.name),enabled:!1!==e.enabled,type:e.type||"virtual",strategy:e.strategy||"least-latency",requiredTags:x(e.requiredTagsText),modelTagRules:function(e=""){let l={};for(let t of String(e||"").split(/\n+/)){let e=t.trim();if(!e)continue;let a=e.indexOf(":");if(a<=0)continue;let o=e.slice(0,a).trim(),r=x(e.slice(a+1));o&&r.length&&(l[o]=r)}return l}(e.modelRulesText),targets:"ollama-local"===e.type?[]:function(e=""){return String(e||"").split(/\n+/).map(u).filter(Boolean)}(e.targetsText),description:c(e.description)};return"ollama-local"===e.type&&(l.localOllama={modelPatterns:function(e=""){return String(e||"").split(/\n+/).map((e,l)=>{let t=e.split("|").map(e=>e.trim()).filter(Boolean),a=t.shift();if(!a)return null;let o={pattern:a,priority:Math.max(1,100-5*l),enabled:!0};for(let e of t){let[l,...t]=e.split("="),a=l.trim().toLowerCase(),r=t.join("=").trim();("priority"===a||"prio"===a)&&(o.priority=Number(r)||o.priority),"enabled"===a&&(o.enabled="false"!==r&&"0"!==r),("notes"===a||"note"===a)&&(o.notes=r)}return o}).filter(Boolean)}(e.modelPatternsText),allowedNodeIds:x(e.allowedNodeIdsText),allowedPorts:x(e.allowedPortsText).map(Number).filter(e=>Number.isFinite(e)&&e>0),preferLoaded:!1!==e.preferLoaded,allowWakeSleeping:!1!==e.allowWakeSleeping,requireGpu:!0===e.requireGpu,allowCpuFallback:!0===e.allowCpuFallback,allowMultiGpuSplit:!0===e.allowMultiGpuSplit,maxWakeVramMb:Number(e.maxWakeVramMb||0)||0,maxWakeRamMb:Number(e.maxWakeRamMb||0)||0,fallbackCombo:c(e.fallbackCombo),selectionPolicy:e.selectionPolicy||"best-fit"}),l}function g({label:e,description:l,checked:t,onChange:o}){return(0,a.jsxs)("label",{className:"flex items-start gap-3 rounded-xl border border-border bg-surface-1 p-3",children:[(0,a.jsx)("input",{type:"checkbox",checked:t,onChange:e=>o(e.target.checked),className:"mt-1 h-4 w-4 accent-primary"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-text-main",children:e}),l?(0,a.jsx)("span",{className:"mt-0.5 block text-xs text-text-muted",children:l}):null]})]})}function f({children:e}){return(0,a.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:e})}function h({preview:e}){if(!e)return null;let l=e.selected;return(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-surface-1 p-4",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Routing Preview"}),e.error?(0,a.jsx)("p",{className:"mt-2 text-sm text-red-600",children:e.error}):null,l?(0,a.jsxs)("div",{className:"mt-3 rounded-xl border border-green-200 bg-green-50 p-3 text-sm text-green-900 dark:border-green-500/30 dark:bg-green-500/10 dark:text-green-100",children:[(0,a.jsxs)("div",{className:"font-semibold",children:["Selected: ",l.nodeName,":",l.port," / ",l.model]}),(0,a.jsxs)("div",{className:"mt-1 text-xs",children:[l.reason," \xb7 score ",l.score," \xb7 ",l.loaded?"loaded":"sleeping"," \xb7 ",l.endpoint]}),(0,a.jsxs)("div",{className:"mt-1 text-xs",children:["GPU scope: ",(l.gpuIndices||[]).length?l.gpuIndices.map(e=>`GPU ${e}`).join(", "):"none"," \xb7 VRAM free ",l.vramFreeMb||0,"MB"]})]}):(0,a.jsx)("p",{className:"mt-2 text-sm text-text-muted",children:"No eligible local target selected."}),(0,a.jsxs)("div",{className:"mt-3 grid gap-3 md:grid-cols-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"text-xs font-semibold uppercase text-text-muted",children:["Eligible (",e.eligible?.length||0,")"]}),(0,a.jsx)("div",{className:"mt-2 max-h-48 space-y-2 overflow-auto",children:(e.eligible||[]).slice(0,12).map(e=>(0,a.jsxs)("div",{className:"rounded-lg bg-background p-2 text-xs text-text-main",children:[(0,a.jsxs)("b",{children:[e.nodeName,":",e.port]})," ",e.model," \xb7 ",e.reason," \xb7 score ",e.score]},e.id))})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"text-xs font-semibold uppercase text-text-muted",children:["Rejected (",e.rejected?.length||0,")"]}),(0,a.jsx)("div",{className:"mt-2 max-h-48 space-y-2 overflow-auto",children:(e.rejected||[]).slice(0,20).map(e=>(0,a.jsxs)("div",{className:"rounded-lg bg-background p-2 text-xs text-text-muted",children:[(0,a.jsxs)("b",{children:[e.nodeName,":",e.port]})," ",e.model," \xb7 ",e.reason]},`${e.id}-${e.reason}`))})]})]})]})}function j(){let[e,l]=(0,o.useState)([]),[t,c]=(0,o.useState)(!0),[x,u]=(0,o.useState)(null),[j,y]=(0,o.useState)(b),[v,k]=(0,o.useState)(!1),[N,w]=(0,o.useState)(""),[C,M]=(0,o.useState)(null),[P,T]=(0,o.useState)(!1),S=(0,o.useMemo)(()=>e.filter(e=>!1!==e.enabled),[e]),q=(0,o.useMemo)(()=>e.filter(e=>"ollama-local"===e.type),[e]);(0,o.useEffect)(()=>{R()},[]);let R=async()=>{c(!0);try{let e=await fetch("/api/virtual-combos",{cache:"no-store"}),t=await e.json();e.ok?l(t.virtualCombos||[]):w(t.error||"Failed to load virtual combos")}catch(e){w(e?.message||"Failed to load virtual combos")}finally{c(!1)}},O=(e="virtual")=>{u(null),"ollama-local"===e?y({...b,type:"ollama-local",name:"auto/offline-coding",exposedModel:"auto/offline-coding"}):y({...b,type:"virtual",targetsText:"oc/qwen3:8b | tags=gpu,model_support:qwen3:8b\noc/qwen3:8b | connection=CONNECTION_ID | tags=gpu,vram:8gb",modelRulesText:"qwen3:32b: gpu, vram:16gb\nqwen3:8b: model_support:qwen3:8b"}),M(null),w("")},W=async()=>{let e=p(j);if(!e.name||!e.exposedModel)return void w("Name and exposed model are required.");if("ollama-local"===e.type&&!e.localOllama.modelPatterns.length)return void w("Ollama Local Combo requires at least one model pattern.");if("ollama-local"!==e.type&&0===e.targets.length)return void w("Provider/LAN virtual combo requires at least one target.");k(!0),w("");try{let l=x?encodeURIComponent(x.name||x.id||x.exposedModel):"",t=await fetch(x?`/api/virtual-combos/${l}`:"/api/virtual-combos",{method:x?"PUT":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json().catch(()=>({}));if(!t.ok)return void w(a.error||"Save failed");u(null),y(b),M(null),await R()}catch(e){w(e?.message||"Save failed")}finally{k(!1)}},G=async()=>{if("ollama-local"===j.type){T(!0),w("");try{let e=await fetch("/api/virtual-combos/preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({combo:p(j),maxAgeMs:5e3})}),l=await e.json();if(!e.ok)return void w(l.error||"Preview failed");M(l)}catch(e){w(e?.message||"Preview failed")}finally{T(!1)}}},L=async e=>{if(!confirm(`Delete virtual combo ${e.name}?`))return;let l=encodeURIComponent(e.name||e.id||e.exposedModel),t=await fetch(`/api/virtual-combos/${l}`,{method:"DELETE"});t.ok?await R():alert((await t.json().catch(()=>({}))).error||"Delete failed")},A=j!==b||x;return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"text-2xl font-semibold text-text-main",children:"Virtual Combos"}),(0,a.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-text-muted",children:"Expose one virtual model name and route it to provider targets or hardware-aware local Ollama model selectors."})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,a.jsx)("button",{onClick:()=>O("virtual"),className:"rounded-xl border border-border px-4 py-2 text-sm font-medium text-text-main hover:bg-surface",children:"New Provider Combo"}),(0,a.jsx)("button",{onClick:()=>O("ollama-local"),className:"rounded-xl bg-primary px-4 py-2 text-sm font-medium text-white hover:opacity-90",children:"New Ollama Local Combo"})]})]}),N?(0,a.jsx)("div",{className:"rounded-xl border border-red-200 bg-red-50 p-3 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-200",children:N}):null,(0,a.jsx)("div",{className:"grid gap-3 md:grid-cols-5",children:Object.keys(i).map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{let l;(l=i[e])&&(y({...b,type:"ollama-local",...l}),u(null),M(null),w(""))},className:"rounded-2xl border border-border bg-surface-1 p-3 text-left hover:bg-surface-2",children:[(0,a.jsx)("div",{className:"text-sm font-semibold text-text-main",children:e}),(0,a.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:"Load preset"})]},e))}),t?(0,a.jsx)("div",{className:"rounded-2xl border border-border bg-surface-1 p-8 text-sm text-text-muted",children:"Loading..."}):0===e.length?(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-surface-1 p-8 text-center",children:[(0,a.jsx)("span",{className:"material-icons text-4xl text-text-muted",children:"hub"}),(0,a.jsx)("h2",{className:"mt-2 text-lg font-semibold text-text-main",children:"No virtual combos yet"}),(0,a.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Create a provider combo or a local Ollama combo."})]}):(0,a.jsx)("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-3",children:e.map(e=>(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-surface-1 p-4",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:e.name}),(0,a.jsxs)("p",{className:"font-mono text-xs text-text-muted",children:["model: ",e.exposedModel]})]}),(0,a.jsx)("span",{className:`rounded-full px-2 py-1 text-xs ${!1!==e.enabled?"bg-green-100 text-green-700 dark:bg-green-500/10 dark:text-green-300":"bg-surface-2 text-text-muted"}`,children:!1!==e.enabled?"enabled":"disabled"})]}),(0,a.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2 text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"rounded-full bg-surface-2 px-2 py-1",children:"ollama-local"===e.type?"Ollama Local Combo":"Provider Combo"}),"ollama-local"===e.type?(0,a.jsxs)("span",{className:"rounded-full bg-surface-2 px-2 py-1",children:[e.localOllama?.modelPatterns?.length||0," pattern(s)"]}):(0,a.jsxs)("span",{className:"rounded-full bg-surface-2 px-2 py-1",children:[e.strategy||"least-latency"," \xb7 ",e.targets?.length||0," target(s)"]})]}),"ollama-local"===e.type?(0,a.jsx)("div",{className:"mt-3 space-y-1 text-xs text-text-muted",children:(e.localOllama?.modelPatterns||[]).slice(0,5).map(e=>(0,a.jsxs)("div",{className:"font-mono",children:[e.pattern," \xb7 p",e.priority]},e.pattern))}):(0,a.jsx)("div",{className:"mt-3 space-y-1 text-xs text-text-muted",children:(e.targets||[]).slice(0,4).map((e,l)=>(0,a.jsx)("div",{className:"font-mono",children:e.label||e.model},`${e.model}-${l}`))}),(0,a.jsxs)("div",{className:"mt-4 flex gap-2",children:[(0,a.jsx)("button",{onClick:()=>{u(e),y(function(e){if(!e)return b;let l=e.localOllama||{},t="ollama-local"===e.type;return{...b,type:t?"ollama-local":"virtual",name:e.name||"",exposedModel:e.exposedModel||e.model||e.name||"",enabled:!1!==e.enabled,strategy:e.strategy||e.fallbackStrategy||"least-latency",requiredTagsText:m(e.requiredTags||e.tags||[]),modelRulesText:function(e={}){return Object.entries(e||{}).map(([e,l])=>`${e}: ${Array.isArray(l)?l.join(", "):l}`).join("\n")}(e.modelTagRules||{}),targetsText:function(e=[]){return(e||[]).map(e=>{let l=[e.model||""];return e.connectionId&&l.push(`connection=${e.connectionId}`),e.label&&l.push(`label=${e.label}`),e.endpoint&&l.push(`endpoint=${e.endpoint}`),e.tags?.length&&l.push(`tags=${e.tags.join(",")}`),e.maxInFlight&&l.push(`max=${e.maxInFlight}`),l.filter(Boolean).join(" | ")}).join("\n")}(e.targets||e.endpoints||e.models||[]),description:e.description||"",modelPatternsText:function(e=[]){return(e||[]).map((e,l)=>{if("string"==typeof e)return`${e} | priority=${Math.max(1,100-5*l)}`;let t=[e.pattern||e.model||e.name||""];return t.push(`priority=${Number(e.priority||Math.max(1,100-5*l))}`),!1===e.enabled&&t.push("enabled=false"),e.notes&&t.push(`notes=${e.notes}`),t.filter(Boolean).join(" | ")}).join("\n")}(l.modelPatterns||[]),allowedNodeIdsText:m(l.allowedNodeIds||[]),allowedPortsText:Array.isArray(l.allowedPorts)?l.allowedPorts.join(","):"",preferLoaded:!1!==l.preferLoaded,allowWakeSleeping:!1!==l.allowWakeSleeping,requireGpu:!0===l.requireGpu,allowCpuFallback:!1!==l.allowCpuFallback,allowMultiGpuSplit:!0===l.allowMultiGpuSplit,maxWakeVramMb:String(l.maxWakeVramMb||""),maxWakeRamMb:String(l.maxWakeRamMb||""),fallbackCombo:l.fallbackCombo||"",selectionPolicy:l.selectionPolicy||"best-fit"}}(e)),M(null),w("")},className:"rounded-lg border border-border px-3 py-1.5 text-xs font-medium text-text-main hover:bg-surface",children:"Edit"}),(0,a.jsx)("button",{onClick:()=>L(e),className:"rounded-lg border border-red-200 px-3 py-1.5 text-xs font-medium text-red-600 hover:bg-red-50 dark:border-red-500/30 dark:hover:bg-red-500/10",children:"Delete"})]})]},e.name||e.id))}),A?(0,a.jsxs)("div",{className:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_420px]",children:[(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-surface-1 p-5",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:x?"Edit Virtual Combo":"Create Virtual Combo"}),(0,a.jsxs)("p",{className:"mt-1 text-sm text-text-muted",children:[S.length," active combo(s), ",q.length," local Ollama combo(s)."]}),(0,a.jsxs)("div",{className:"mt-5 grid gap-4 md:grid-cols-2",children:[(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Type"}),(0,a.jsx)("select",{value:j.type,onChange:e=>y({...j,type:e.target.value}),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:r.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Enabled"}),(0,a.jsxs)("label",{className:"flex h-[42px] items-center gap-2 rounded-xl border border-border bg-background px-3 text-sm text-text-main",children:[(0,a.jsx)("input",{type:"checkbox",checked:j.enabled,onChange:e=>y({...j,enabled:e.target.checked}),className:"h-4 w-4 accent-primary"})," Enabled"]})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Name / ID"}),(0,a.jsx)("input",{value:j.name,onChange:e=>y({...j,name:e.target.value,exposedModel:j.exposedModel||e.target.value}),placeholder:"auto/offline-coding",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"Unique combo ID. The slash format is supported, for example auto/offline-coding."})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Exposed model"}),(0,a.jsx)("input",{value:j.exposedModel,onChange:e=>y({...j,exposedModel:e.target.value}),placeholder:"auto/offline-coding",className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-sm text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"Clients call this model name. BlueRouter resolves it to an upstream provider model or an Ollama instance target."})]})]}),"ollama-local"===j.type?(0,a.jsx)("div",{className:"mt-5 space-y-5",children:(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-background p-4",children:[(0,a.jsx)("h3",{className:"font-semibold text-text-main",children:"Ollama Local Combo"}),(0,a.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"This combo stores model patterns only. At request time BlueRouter selects the best node, port, model, and GPU scope using the Ollama Node reports."}),(0,a.jsxs)("div",{className:"mt-4 grid gap-4 md:grid-cols-2",children:[(0,a.jsxs)("label",{className:"block md:col-span-2",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Model patterns + priority"}),(0,a.jsx)("textarea",{value:j.modelPatternsText,onChange:e=>y({...j,modelPatternsText:e.target.value}),rows:8,placeholder:d,className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-xs text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"One model per line. Syntax: model-pattern | priority=100. Wildcards like qwen3-coder:* are allowed."})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Allowed nodes"}),(0,a.jsx)("input",{value:j.allowedNodeIdsText,onChange:e=>y({...j,allowedNodeIdsText:e.target.value}),placeholder:"empty = all nodes",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"Comma-separated node IDs. Empty means all enabled Ollama nodes."})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Allowed instance ports"}),(0,a.jsx)("input",{value:j.allowedPortsText,onChange:e=>y({...j,allowedPortsText:e.target.value}),placeholder:"11434,11435 or empty",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"Limit this combo to specific Ollama ports. Empty means all enabled instances."})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Selection policy"}),(0,a.jsx)("select",{value:j.selectionPolicy,onChange:e=>y({...j,selectionPolicy:e.target.value}),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:n.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,a.jsx)(f,{children:"Best fit filters by memory and scores loaded status, model priority, GPU scope, free VRAM/RAM, latency and errors."})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Fallback combo"}),(0,a.jsx)("input",{value:j.fallbackCombo,onChange:e=>y({...j,fallbackCombo:e.target.value}),placeholder:"empty = local only",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"Optional combo/model to call if no local target is eligible. Empty means fail local-only."})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Max wake VRAM MB"}),(0,a.jsx)("input",{value:j.maxWakeVramMb,onChange:e=>y({...j,maxWakeVramMb:e.target.value}),placeholder:"0 = no cap",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"Cap for sleeping model wake cost. Loaded models use loaded overhead instead."})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Max wake RAM MB"}),(0,a.jsx)("input",{value:j.maxWakeRamMb,onChange:e=>y({...j,maxWakeRamMb:e.target.value}),placeholder:"0 = no cap",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),(0,a.jsx)(f,{children:"Cap host RAM cost when waking sleeping models."})]})]}),(0,a.jsxs)("div",{className:"mt-4 grid gap-3 md:grid-cols-2",children:[(0,a.jsx)(g,{label:"Prefer loaded models",checked:j.preferLoaded,onChange:e=>y({...j,preferLoaded:e}),description:"Prefer /api/ps loaded models to avoid wake latency and OOM risk."}),(0,a.jsx)(g,{label:"Allow wake sleeping models",checked:j.allowWakeSleeping,onChange:e=>y({...j,allowWakeSleeping:e}),description:"When off, only already-loaded local models are eligible."}),(0,a.jsx)(g,{label:"Require GPU",checked:j.requireGpu,onChange:e=>y({...j,requireGpu:e}),description:"Reject CPU-only or no-GPU-scope targets."}),(0,a.jsx)(g,{label:"Allow CPU fallback",checked:j.allowCpuFallback,onChange:e=>y({...j,allowCpuFallback:e}),description:"Allow CPU route if GPU is unavailable. Usually off for large coding/vision models."}),(0,a.jsx)(g,{label:"Allow multi-GPU split",checked:j.allowMultiGpuSplit,onChange:e=>y({...j,allowMultiGpuSplit:e}),description:"Only enable when the instance/model can split VRAM across GPUs."})]})]})}):(0,a.jsxs)("div",{className:"mt-5 grid gap-4 md:grid-cols-2",children:[(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Strategy"}),(0,a.jsx)("select",{value:j.strategy,onChange:e=>y({...j,strategy:e.target.value}),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:s.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]}),(0,a.jsxs)("label",{className:"block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Required tags"}),(0,a.jsx)("input",{value:j.requiredTagsText,onChange:e=>y({...j,requiredTagsText:e.target.value}),placeholder:"gpu, vram:8gb",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"})]}),(0,a.jsxs)("label",{className:"block md:col-span-2",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Model tag rules"}),(0,a.jsx)("textarea",{value:j.modelRulesText,onChange:e=>y({...j,modelRulesText:e.target.value}),rows:3,placeholder:"qwen3:32b: gpu, vram:16gb\nqwen3:8b: model_support:qwen3:8b",className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-xs text-text-main outline-none focus:border-primary"})]}),(0,a.jsxs)("label",{className:"block md:col-span-2",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Targets"}),(0,a.jsx)("textarea",{value:j.targetsText,onChange:e=>y({...j,targetsText:e.target.value}),rows:8,placeholder:"oc/qwen3:8b | connection=abc123 | tags=gpu,vram:8gb\noc/qwen3:8b | tags=cpu",className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-xs text-text-main outline-none focus:border-primary"})]})]}),(0,a.jsxs)("label",{className:"mt-4 block",children:[(0,a.jsx)("span",{className:"mb-1 block text-xs font-semibold text-text-muted",children:"Description"}),(0,a.jsx)("input",{value:j.description,onChange:e=>y({...j,description:e.target.value}),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"})]}),(0,a.jsxs)("div",{className:"mt-5 flex flex-wrap gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:W,disabled:v,className:"rounded-xl bg-primary px-5 py-2 text-sm font-medium text-white hover:opacity-90 disabled:opacity-50",children:v?"Saving...":x?"Save":"Create"}),"ollama-local"===j.type?(0,a.jsx)("button",{type:"button",onClick:G,disabled:P,className:"rounded-xl border border-border px-5 py-2 text-sm font-medium text-text-main hover:bg-surface",children:P?"Previewing...":"Preview routing"}):null,(0,a.jsx)("button",{type:"button",onClick:()=>{u(null),y(b),M(null),w("")},className:"rounded-xl border border-border px-5 py-2 text-sm font-medium text-text-main hover:bg-surface",children:"Clear"})]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-surface-1 p-4",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Field meanings"}),(0,a.jsxs)("dl",{className:"mt-3 space-y-2 text-xs text-text-muted",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{className:"font-semibold text-text-main",children:"Model patterns"}),(0,a.jsx)("dd",{children:"Allowed local model names or wildcards. Priority decides model preference after hardware filtering."})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{className:"font-semibold text-text-main",children:"Allowed nodes / ports"}),(0,a.jsx)("dd",{children:"Optional constraints. Empty means all enabled Ollama nodes and instances."})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{className:"font-semibold text-text-main",children:"Prefer loaded"}),(0,a.jsx)("dd",{children:"Boosts models already in /api/ps to avoid waking large models."})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{className:"font-semibold text-text-main",children:"Allow wake"}),(0,a.jsx)("dd",{children:"If disabled, sleeping models are rejected even if RAM/VRAM is enough."})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{className:"font-semibold text-text-main",children:"Require GPU / CPU fallback"}),(0,a.jsx)("dd",{children:"Controls whether CPU-only/no-GPU-scope targets are eligible."})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{className:"font-semibold text-text-main",children:"Multi-GPU split"}),(0,a.jsx)("dd",{children:"Allows aggregate VRAM only when you know that instance can split across GPUs."})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{className:"font-semibold text-text-main",children:"Fallback combo"}),(0,a.jsx)("dd",{children:"Optional cloud/provider fallback. Empty keeps the combo local-only."})]})]})]}),(0,a.jsx)(h,{preview:C})]})]}):null]})}},67711:(e,l,t)=>{Promise.resolve().then(t.bind(t,53677))}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=67711)),_N_E=e.O()}]);
@@ -1,7 +0,0 @@
1
- {
2
- "telemetry": {
3
- "notifiedAt": "1779883249496",
4
- "anonymousId": "32c974b3fef786f2974101f1951440c046e40ca526e4ef581c97f428dee0b2a3",
5
- "salt": "c221d1ece5b33dbecb023a0ccfd07f25"
6
- }
7
- }