@jheavenknows/bluerouter 5.3.80 → 5.3.82

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 (635) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +7 -7
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js.nft.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/console/page.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/console/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/console/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +1 -1
  86. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  88. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  89. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  91. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  92. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  94. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  95. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  97. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page.js +1 -1
  98. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page_client-reference-manifest.js +1 -1
  100. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page.js +1 -1
  101. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page_client-reference-manifest.js +1 -1
  103. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  104. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  106. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  107. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  109. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js +1 -1
  110. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
  112. package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page.js +1 -1
  113. package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page_client-reference-manifest.js +1 -1
  115. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
  116. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  118. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  119. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  121. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  122. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  124. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  125. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  127. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  128. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  130. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  132. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  133. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  134. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  135. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  136. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  137. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  138. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  140. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  141. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  142. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  143. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
  144. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  145. package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/audit-proxy/route.js +7 -7
  148. package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  156. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/auth/view-mode/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/branding/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/branding/upload/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/cli-tools/qwen-settings/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/cluster/config/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/cluster/peers/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/cluster/sync/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/cluster/test/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/pricing/catalog/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  308. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  334. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  338. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/resource-monitor/route.js +1 -1
  348. package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  350. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  355. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  357. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  359. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  360. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  361. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  372. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  373. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  374. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  375. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  376. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  377. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  378. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  379. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  380. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  381. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  382. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  383. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  384. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  385. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  386. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  387. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  388. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  389. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  390. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  391. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  392. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  393. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  394. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  395. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  396. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  397. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  398. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  399. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  400. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  401. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  402. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  403. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  404. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  405. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  406. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  407. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  408. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  409. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  410. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  411. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  412. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  413. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  414. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  415. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  416. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  417. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  418. package/app/.next-cli-build/server/app/api/version/restart/route.js.nft.json +1 -1
  419. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  420. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  421. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  422. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  423. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  424. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  425. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  426. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  427. package/app/.next-cli-build/server/app/callback.html +1 -1
  428. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  429. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  430. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  431. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
  432. package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +6 -6
  434. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +6 -6
  435. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +6 -6
  436. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  438. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +9 -9
  439. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +9 -9
  440. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +9 -9
  441. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  444. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
  445. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  446. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
  448. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +7 -7
  449. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +7 -7
  450. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +7 -7
  451. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  454. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
  455. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  456. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
  458. package/app/.next-cli-build/server/app/dashboard/cluster.rsc +6 -6
  459. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +6 -6
  460. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +6 -6
  461. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +1 -1
  462. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  463. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  464. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
  465. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  466. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  468. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  469. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
  470. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  471. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  472. package/app/.next-cli-build/server/app/dashboard/local-ai-report.html +1 -1
  473. package/app/.next-cli-build/server/app/dashboard/local-ai-report.rsc +6 -6
  474. package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard/local-ai-report/__PAGE__.segment.rsc +6 -6
  475. package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_full.segment.rsc +6 -6
  476. package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_tree.segment.rsc +1 -1
  477. package/app/.next-cli-build/server/app/dashboard/logs.html +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/logs.rsc +6 -6
  479. package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +6 -6
  480. package/app/.next-cli-build/server/app/dashboard/logs.segments/_full.segment.rsc +6 -6
  481. package/app/.next-cli-build/server/app/dashboard/logs.segments/_tree.segment.rsc +1 -1
  482. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  483. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  484. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
  485. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  486. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  488. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  489. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +7 -7
  490. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  491. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  492. package/app/.next-cli-build/server/app/dashboard/personal.html +1 -1
  493. package/app/.next-cli-build/server/app/dashboard/personal.rsc +7 -7
  494. package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard/personal/__PAGE__.segment.rsc +7 -7
  495. package/app/.next-cli-build/server/app/dashboard/personal.segments/_full.segment.rsc +7 -7
  496. package/app/.next-cli-build/server/app/dashboard/personal.segments/_tree.segment.rsc +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  498. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  499. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
  500. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  501. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  502. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  503. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +6 -6
  504. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +6 -6
  505. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
  506. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  507. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  508. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +6 -6
  509. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +6 -6
  510. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
  511. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  512. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  513. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  514. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
  515. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  516. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  517. package/app/.next-cli-build/server/app/dashboard/providers/stt.html +1 -1
  518. package/app/.next-cli-build/server/app/dashboard/providers/stt.rsc +7 -7
  519. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers/stt/__PAGE__.segment.rsc +7 -7
  520. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_full.segment.rsc +7 -7
  521. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_tree.segment.rsc +1 -1
  522. package/app/.next-cli-build/server/app/dashboard/providers/tts.html +1 -1
  523. package/app/.next-cli-build/server/app/dashboard/providers/tts.rsc +7 -7
  524. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers/tts/__PAGE__.segment.rsc +7 -7
  525. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_full.segment.rsc +7 -7
  526. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_tree.segment.rsc +1 -1
  527. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  528. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  529. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
  530. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  531. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  532. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  533. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  534. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
  535. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  536. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  537. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  538. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  539. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
  540. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  541. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  542. package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
  543. package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +6 -6
  544. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +6 -6
  545. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +6 -6
  546. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +1 -1
  547. package/app/.next-cli-build/server/app/dashboard/routing-topology.html +1 -1
  548. package/app/.next-cli-build/server/app/dashboard/routing-topology.rsc +6 -6
  549. package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/!KGRhc2hib2FyZCk/dashboard/routing-topology/__PAGE__.segment.rsc +6 -6
  550. package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_full.segment.rsc +6 -6
  551. package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_tree.segment.rsc +1 -1
  552. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  553. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
  554. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
  555. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  556. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  557. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  558. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  559. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
  560. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  561. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  562. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  563. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  564. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
  565. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  566. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  567. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  568. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  569. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
  570. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  571. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  572. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  573. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  574. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
  575. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  576. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  577. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  578. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  579. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
  580. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  581. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  582. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  583. package/app/.next-cli-build/server/app/index.html +1 -1
  584. package/app/.next-cli-build/server/app/index.rsc +5 -5
  585. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  586. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  587. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  588. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  589. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  590. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  591. package/app/.next-cli-build/server/app/landing.html +1 -1
  592. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  593. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  594. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  595. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
  596. package/app/.next-cli-build/server/app/login/page.js +1 -1
  597. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  598. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  599. package/app/.next-cli-build/server/app/login.html +1 -1
  600. package/app/.next-cli-build/server/app/login.rsc +6 -6
  601. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  602. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  603. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  604. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  605. package/app/.next-cli-build/server/app/page.js +1 -1
  606. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  607. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  608. package/app/.next-cli-build/server/app-paths-manifest.json +7 -7
  609. package/app/.next-cli-build/server/chunks/{7639.js → 3399.js} +1 -1
  610. package/app/.next-cli-build/server/chunks/3958.js +6 -6
  611. package/app/.next-cli-build/server/chunks/402.js +4 -4
  612. package/app/.next-cli-build/server/chunks/{814.js → 4350.js} +2 -2
  613. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  614. package/app/.next-cli-build/server/chunks/6328.js +1 -1
  615. package/app/.next-cli-build/server/chunks/6684.js +1 -0
  616. package/app/.next-cli-build/server/chunks/6811.js +1 -1
  617. package/app/.next-cli-build/server/chunks/689.js +1 -1
  618. package/app/.next-cli-build/server/chunks/6992.js +1 -1
  619. package/app/.next-cli-build/server/chunks/{3031.js → 8049.js} +2 -2
  620. package/app/.next-cli-build/server/chunks/{476.js → 9.js} +2 -2
  621. package/app/.next-cli-build/server/chunks/{3484.js → 9012.js} +1 -1
  622. package/app/.next-cli-build/server/instrumentation.js +1 -1
  623. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  624. package/app/.next-cli-build/server/middleware.js +6 -6
  625. package/app/.next-cli-build/server/pages/404.html +1 -1
  626. package/app/.next-cli-build/server/pages/500.html +1 -1
  627. package/app/.next-cli-build/static/chunks/{5263-95c9f48f71d09b3f.js → 5263-731a4063a8865eca.js} +1 -1
  628. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.75-to-5.3.76-5.3.76-20260823-171014 → upgrade-5.3.78-to-5.3.79-5.3.79-20260823-174256}/data.sqlite +0 -0
  629. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.75-to-5.3.76-5.3.76-20260823-171015 → upgrade-5.3.79-to-5.3.80-5.3.80-20260823-175511}/data.sqlite +0 -0
  630. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite +0 -0
  631. package/app/package.json +1 -1
  632. package/package.json +1 -1
  633. package/app/.next-cli-build/server/chunks/564.js +0 -1
  634. /package/app/.next-cli-build/static/{QEX9o5oQXbLSr9SjmMGpO → eC7_Xowag0bxjhjAvgjlD}/_buildManifest.js +0 -0
  635. /package/app/.next-cli-build/static/{QEX9o5oQXbLSr9SjmMGpO → eC7_Xowag0bxjhjAvgjlD}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=3031,exports.ids=[3031,3960],exports.modules={23248:(a,b,c)=>{c.d(b,{ensureClusterSyncService:()=>t});var d=c(77598),e=c.n(d),f=c(48161),g=c.n(f),h=c(70321);function i(a){return null==a?"":String(a).trim()}var j=c(43913),k=c(79709),l=c(75870);let m="__blueRouterClusterSync";function n(){return globalThis[m]||(globalThis[m]={timer:null,running:null,started:!1,heartbeatSucceeded:!1}),globalThis[m]}async function o(a=null){var b,c;let d=a||await (0,l.Jc)({includeSecrets:!0});if("slave"!==d.role)throw Error("Node is not in Standby mode");if(!d.masterUrl)throw Error("Master URL is not configured");if(!d.syncToken)throw Error("Sync token is not configured");let f=await fetch((b=d.masterUrl,`${String(b||"").replace(/\/+$/,"")}/api/cluster/snapshot`),{headers:{Authorization:`Bearer ${d.syncToken}`,"X-BlueRouter-Node-Id":d.nodeId},cache:"no-store",signal:AbortSignal.timeout(12e4)});if(!f.ok)throw Error((await f.json().catch(()=>({}))).error||`Master returned HTTP ${f.status}`);if((Number(f.headers.get("content-length"))||0)>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let g=await f.text();if(Buffer.byteLength(g,"utf8")>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let h=JSON.parse(g);if(!h||"object"!=typeof h||!h.manifest||!h.payload)throw Error("Invalid cluster snapshot response");if(c=h.payload,e().createHash("sha256").update(JSON.stringify(c)).digest("hex")!==h.manifest.sha256)throw Error("Cluster snapshot checksum mismatch");if(2!==Number(h.payload?.backup?.formatVersion))throw Error("Unsupported cluster backup format");if(Number(h.manifest.schemaVersion)!==(0,j.q)())throw Error(`Schema version mismatch: Master=${h.manifest.schemaVersion}, Standby=${(0,j.q)()}`);return h}async function p({force:a=!1,allowDisabled:b=!1}={}){let c=n();return c.running||(c.running=(async()=>{let c=await (0,l.Jc)({includeSecrets:!0});if("slave"!==c.role||!c.enabled&&!b)throw Error("Standby sync is not enabled");let d=new Date().toISOString();await (0,l.X_)({lastAttemptAt:d});try{let b=await o(c);if(!a&&b.manifest.sha256===c.lastSnapshotHash){let a={status:"unchanged",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt};return await (0,l.X_)({lastSyncAt:new Date().toISOString(),lastError:"",lastResult:a}),a}let d=await (0,h.K1)(b.payload,{returnExport:!1});try{!function({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let d=i(b),e=i(c);if(!a){"1"===process.env.NINE_ROUTER_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_PROXY_MANAGED,delete process.env.NINE_ROUTER_PROXY_URL,delete process.env.NINE_ROUTER_NO_PROXY);return}let f="1"===process.env.NINE_ROUTER_PROXY_MANAGED,g=!1;f&&(d||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NINE_ROUTER_PROXY_URL),e||(delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_NO_PROXY)),d&&(process.env.HTTP_PROXY=d,process.env.HTTPS_PROXY=d,process.env.ALL_PROXY=d,process.env.NINE_ROUTER_PROXY_URL=d,g=!0),e&&(process.env.NO_PROXY=e,process.env.NINE_ROUTER_NO_PROXY=e,g=!0),g?process.env.NINE_ROUTER_PROXY_MANAGED="1":f&&delete process.env.NINE_ROUTER_PROXY_MANAGED}(await (0,h.mt)())}catch(a){console.warn("[cluster] failed to apply restored outbound proxy settings:",a?.message||a)}let e={status:"synced",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt,serverCount:d.resourceMonitorServerCount||0,historyCount:d.resourceMonitorHistoryCount||0,brandingAssetCount:d.brandingAssetCount||0};return await (0,l.X_)({lastSyncAt:new Date().toISOString(),lastSnapshotHash:b.manifest.sha256,lastError:"",lastResult:e}),e}catch(a){throw await (0,l.X_)({lastError:a?.message||"Cluster sync failed",lastResult:{status:"error"}}),a}})().finally(()=>{c.running=null})),c.running}async function q(a){if(!a?.id||!a?.type)return;let b="ok",c="Command completed";try{if("sync_now"===a.type){let a=await p({force:!0,allowDisabled:!0});c=`Sync completed: ${a.status}`}else if("pause_sync"===a.type)await (0,l.Q1)({enabled:!1}),c="Scheduled sync paused";else if("resume_sync"===a.type)await (0,l.Q1)({enabled:!0}),c="Scheduled sync resumed";else throw Error(`Unsupported Master command: ${a.type}`)}catch(a){b="error",c=a?.message||"Command failed"}await (0,l.X_)({commandAck:{id:a.id,status:b,message:c,completedAt:new Date().toISOString()}})}async function r(a=null){var b;let c=a||await (0,l.Jc)({includeSecrets:!0});if("slave"!==c.role)return{skipped:!0};if(!c.masterUrl||!c.syncToken)throw Error("Master URL and sync token are required for heartbeat");let d=await fetch((b=c.masterUrl,`${String(b||"").replace(/\/+$/,"")}/api/cluster/heartbeat`),{method:"POST",headers:{Authorization:`Bearer ${c.syncToken}`,"Content-Type":"application/json"},body:JSON.stringify({nodeId:c.nodeId,hostname:g().hostname(),appVersion:(0,k.s)(),schemaVersion:(0,j.q)(),syncEnabled:c.enabled,intervalMinutes:c.intervalMinutes,lastAttemptAt:c.lastAttemptAt,lastSyncAt:c.lastSyncAt,lastSnapshotHash:c.lastSnapshotHash,lastError:c.lastError,commandAck:c.commandAck}),cache:"no-store",signal:AbortSignal.timeout(15e3)}),e=await d.json().catch(()=>({}));if(!d.ok)throw Error(e.error||`Master heartbeat returned HTTP ${d.status}`);return c.commandAck&&e.ackAccepted&&await (0,l.X_)({commandAck:null}),e.command&&await q(e.command),e}async function s(){let a=n();try{let b=await (0,l.Jc)({includeSecrets:!0});if("slave"===b.role){let c=!a.heartbeatSucceeded,d=await r(b).then(b=>(a.heartbeatSucceeded=!0,b),b=>(a.heartbeatSucceeded=!1,console.warn("[cluster] heartbeat failed:",b?.message||b),null)),e=await (0,l.Jc)({includeSecrets:!0});if(!e.enabled)return;let f=Date.parse(e.lastAttemptAt||"")||0,g=60*e.intervalMinutes*1e3,h=d&&c&&d.command?.type!=="sync_now";(h||Date.now()-f>=g)&&await p({force:!!h}).catch(a=>{console.warn("[cluster] scheduled sync failed:",a?.message||a)})}else a.heartbeatSucceeded=!1}finally{a.timer=setTimeout(s,3e4),a.timer.unref?.()}}function t(){let a=n();a.started||(a.started=!0,a.timer=setTimeout(s,5e3),a.timer.unref?.())}},34050:(a,b,c)=>{c.d(b,{CG:()=>e,oG:()=>d,zE:()=>f});let d=`
1
+ "use strict";exports.id=8049,exports.ids=[3960,8049],exports.modules={23248:(a,b,c)=>{c.d(b,{ensureClusterSyncService:()=>t});var d=c(77598),e=c.n(d),f=c(48161),g=c.n(f),h=c(70321);function i(a){return null==a?"":String(a).trim()}var j=c(43913),k=c(79709),l=c(75870);let m="__blueRouterClusterSync";function n(){return globalThis[m]||(globalThis[m]={timer:null,running:null,started:!1,heartbeatSucceeded:!1}),globalThis[m]}async function o(a=null){var b,c;let d=a||await (0,l.Jc)({includeSecrets:!0});if("slave"!==d.role)throw Error("Node is not in Standby mode");if(!d.masterUrl)throw Error("Master URL is not configured");if(!d.syncToken)throw Error("Sync token is not configured");let f=await fetch((b=d.masterUrl,`${String(b||"").replace(/\/+$/,"")}/api/cluster/snapshot`),{headers:{Authorization:`Bearer ${d.syncToken}`,"X-BlueRouter-Node-Id":d.nodeId},cache:"no-store",signal:AbortSignal.timeout(12e4)});if(!f.ok)throw Error((await f.json().catch(()=>({}))).error||`Master returned HTTP ${f.status}`);if((Number(f.headers.get("content-length"))||0)>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let g=await f.text();if(Buffer.byteLength(g,"utf8")>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let h=JSON.parse(g);if(!h||"object"!=typeof h||!h.manifest||!h.payload)throw Error("Invalid cluster snapshot response");if(c=h.payload,e().createHash("sha256").update(JSON.stringify(c)).digest("hex")!==h.manifest.sha256)throw Error("Cluster snapshot checksum mismatch");if(2!==Number(h.payload?.backup?.formatVersion))throw Error("Unsupported cluster backup format");if(Number(h.manifest.schemaVersion)!==(0,j.q)())throw Error(`Schema version mismatch: Master=${h.manifest.schemaVersion}, Standby=${(0,j.q)()}`);return h}async function p({force:a=!1,allowDisabled:b=!1}={}){let c=n();return c.running||(c.running=(async()=>{let c=await (0,l.Jc)({includeSecrets:!0});if("slave"!==c.role||!c.enabled&&!b)throw Error("Standby sync is not enabled");let d=new Date().toISOString();await (0,l.X_)({lastAttemptAt:d});try{let b=await o(c);if(!a&&b.manifest.sha256===c.lastSnapshotHash){let a={status:"unchanged",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt};return await (0,l.X_)({lastSyncAt:new Date().toISOString(),lastError:"",lastResult:a}),a}let d=await (0,h.K1)(b.payload,{returnExport:!1});try{!function({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let d=i(b),e=i(c);if(!a){"1"===process.env.NINE_ROUTER_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_PROXY_MANAGED,delete process.env.NINE_ROUTER_PROXY_URL,delete process.env.NINE_ROUTER_NO_PROXY);return}let f="1"===process.env.NINE_ROUTER_PROXY_MANAGED,g=!1;f&&(d||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NINE_ROUTER_PROXY_URL),e||(delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_NO_PROXY)),d&&(process.env.HTTP_PROXY=d,process.env.HTTPS_PROXY=d,process.env.ALL_PROXY=d,process.env.NINE_ROUTER_PROXY_URL=d,g=!0),e&&(process.env.NO_PROXY=e,process.env.NINE_ROUTER_NO_PROXY=e,g=!0),g?process.env.NINE_ROUTER_PROXY_MANAGED="1":f&&delete process.env.NINE_ROUTER_PROXY_MANAGED}(await (0,h.mt)())}catch(a){console.warn("[cluster] failed to apply restored outbound proxy settings:",a?.message||a)}let e={status:"synced",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt,serverCount:d.resourceMonitorServerCount||0,historyCount:d.resourceMonitorHistoryCount||0,brandingAssetCount:d.brandingAssetCount||0};return await (0,l.X_)({lastSyncAt:new Date().toISOString(),lastSnapshotHash:b.manifest.sha256,lastError:"",lastResult:e}),e}catch(a){throw await (0,l.X_)({lastError:a?.message||"Cluster sync failed",lastResult:{status:"error"}}),a}})().finally(()=>{c.running=null})),c.running}async function q(a){if(!a?.id||!a?.type)return;let b="ok",c="Command completed";try{if("sync_now"===a.type){let a=await p({force:!0,allowDisabled:!0});c=`Sync completed: ${a.status}`}else if("pause_sync"===a.type)await (0,l.Q1)({enabled:!1}),c="Scheduled sync paused";else if("resume_sync"===a.type)await (0,l.Q1)({enabled:!0}),c="Scheduled sync resumed";else throw Error(`Unsupported Master command: ${a.type}`)}catch(a){b="error",c=a?.message||"Command failed"}await (0,l.X_)({commandAck:{id:a.id,status:b,message:c,completedAt:new Date().toISOString()}})}async function r(a=null){var b;let c=a||await (0,l.Jc)({includeSecrets:!0});if("slave"!==c.role)return{skipped:!0};if(!c.masterUrl||!c.syncToken)throw Error("Master URL and sync token are required for heartbeat");let d=await fetch((b=c.masterUrl,`${String(b||"").replace(/\/+$/,"")}/api/cluster/heartbeat`),{method:"POST",headers:{Authorization:`Bearer ${c.syncToken}`,"Content-Type":"application/json"},body:JSON.stringify({nodeId:c.nodeId,hostname:g().hostname(),appVersion:(0,k.s)(),schemaVersion:(0,j.q)(),syncEnabled:c.enabled,intervalMinutes:c.intervalMinutes,lastAttemptAt:c.lastAttemptAt,lastSyncAt:c.lastSyncAt,lastSnapshotHash:c.lastSnapshotHash,lastError:c.lastError,commandAck:c.commandAck}),cache:"no-store",signal:AbortSignal.timeout(15e3)}),e=await d.json().catch(()=>({}));if(!d.ok)throw Error(e.error||`Master heartbeat returned HTTP ${d.status}`);return c.commandAck&&e.ackAccepted&&await (0,l.X_)({commandAck:null}),e.command&&await q(e.command),e}async function s(){let a=n();try{let b=await (0,l.Jc)({includeSecrets:!0});if("slave"===b.role){let c=!a.heartbeatSucceeded,d=await r(b).then(b=>(a.heartbeatSucceeded=!0,b),b=>(a.heartbeatSucceeded=!1,console.warn("[cluster] heartbeat failed:",b?.message||b),null)),e=await (0,l.Jc)({includeSecrets:!0});if(!e.enabled)return;let f=Date.parse(e.lastAttemptAt||"")||0,g=60*e.intervalMinutes*1e3,h=d&&c&&d.command?.type!=="sync_now";(h||Date.now()-f>=g)&&await p({force:!!h}).catch(a=>{console.warn("[cluster] scheduled sync failed:",a?.message||a)})}else a.heartbeatSucceeded=!1}finally{a.timer=setTimeout(s,3e4),a.timer.unref?.()}}function t(){let a=n();a.started||(a.started=!0,a.timer=setTimeout(s,5e3),a.timer.unref?.())}},34050:(a,b,c)=>{c.d(b,{CG:()=>e,oG:()=>d,zE:()=>f});let d=`
2
2
  PRAGMA journal_mode = WAL;
3
3
  PRAGMA synchronous = NORMAL;
4
4
  PRAGMA temp_store = MEMORY;
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",scope:"TEXT DEFAULT 'system'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",visibility:"TEXT DEFAULT 'system'",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)","CREATE INDEX IF NOT EXISTS idx_pc_scope_owner ON providerConnections(scope, ownerUser)","CREATE INDEX IF NOT EXISTS idx_pc_provider_scope ON providerConnections(provider, scope)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",adminDisabled:"INTEGER DEFAULT 0",allowedModels:"TEXT DEFAULT '[]'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",cavemanMode:"TEXT DEFAULT 'inherit'",cavemanLevel:"TEXT DEFAULT 'lite'",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)","CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)","CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)","CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},resourceMonitorHistory:{columns:{serverId:"TEXT NOT NULL",sampledAt:"INTEGER NOT NULL",cpuUsage:"REAL DEFAULT 0",memoryUsage:"REAL DEFAULT 0",diskUsage:"REAL DEFAULT 0",diskUsedBytes:"INTEGER DEFAULT 0",networkRxBps:"REAL DEFAULT 0",networkTxBps:"REAL DEFAULT 0",gpus:"TEXT NOT NULL DEFAULT '[]'"},primaryKey:"PRIMARY KEY (serverId, sampledAt)",indexes:["CREATE INDEX IF NOT EXISTS idx_rmh_server_time ON resourceMonitorHistory(serverId, sampledAt)","CREATE INDEX IF NOT EXISTS idx_rmh_sampled_at ON resourceMonitorHistory(sampledAt)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},43913:(a,b,c)=>{c.d(b,{o:()=>e,q:()=>f});var d=c(34050);let e=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(d.CG))for(let e of(a.exec((0,d.zE)(b,c)),c.indexes||[]))a.exec(e)}},{version:2,name:"usage-history-analytics-indexes",up(){}},{version:3,name:"request-observability-rollups",up(a){var b="apiKeys";let c=function(a,b){try{return new Set((a.all(`PRAGMA table_info(${b})`)||[]).map(a=>a.name))}catch{return new Set}}(a,b);for(let[d,e]of Object.entries({ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",allowedModels:"TEXT DEFAULT '[]'"}))c.has(d)||a.exec(`ALTER TABLE ${b} ADD COLUMN ${d} ${e}`);a.exec("CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)"),a.exec("CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)")}},{version:4,name:"api-key-admin-disabled",up(a){(function(a,b){try{return new Set((a.all(`PRAGMA table_info(${b})`)||[]).map(a=>a.name))}catch{return new Set}})(a,"apiKeys").has("adminDisabled")||a.exec("ALTER TABLE apiKeys ADD COLUMN adminDisabled INTEGER DEFAULT 0"),a.exec("CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)")}},{version:5,name:"api-key-caveman-override",up(a){let b=new Set(a.all("PRAGMA table_info(apiKeys)").map(a=>a.name));b.has("cavemanMode")||a.exec("ALTER TABLE apiKeys ADD COLUMN cavemanMode TEXT DEFAULT 'inherit'"),b.has("cavemanLevel")||a.exec("ALTER TABLE apiKeys ADD COLUMN cavemanLevel TEXT DEFAULT 'lite'")}}].sort((a,b)=>a.version-b.version);function f(){return e.length?e[e.length-1].version:0}},63960:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(82009);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},75870:(a,b,c)=>{c.d(b,{Jc:()=>r,Q1:()=>s,WR:()=>u,X_:()=>t});var d=c(77598),e=c.n(d),f=c(51455),g=c.n(f),h=c(76760),i=c.n(h),j=c(53859);let k=i().join(j.n,"cluster-config.json"),l=new Set(["standalone","master","slave"]),m="__blueRouterClusterConfigMutation",n={version:1,nodeId:"",role:"standalone",enabled:!1,masterUrl:"",syncToken:"",intervalMinutes:5,lastAttemptAt:null,lastSyncAt:null,lastSnapshotHash:"",lastError:"",lastResult:null,commandAck:null};function o(a={}){let b=l.has(a.role)?a.role:"standalone";return{...n,...a,version:1,nodeId:String(a.nodeId||"").trim()||e().randomUUID(),role:b,enabled:!0===a.enabled,masterUrl:function(a){let b=String(a||"").trim().replace(/\/+$/,"");if(!b)return"";let c=new URL(b);if(!["http:","https:"].includes(c.protocol))throw Error("Master URL must use http:// or https://");if(c.username||c.password)throw Error("Master URL must not contain credentials");return c.toString().replace(/\/+$/,"")}(a.masterUrl),syncToken:String(a.syncToken||"").trim(),intervalMinutes:Math.min(1440,Math.max(1,Number(a.intervalMinutes)||5))}}async function p(a){await g().mkdir(j.n,{recursive:!0});let b=`${k}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify(a,null,2),{mode:384}),await g().rename(b,k)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function q(a){let b=(globalThis[m]||Promise.resolve()).then(a,a);return globalThis[m]=b.catch(()=>{}),b}async function r({includeSecrets:a=!1}={}){let b={};try{b=JSON.parse(await g().readFile(k,"utf8"))}catch(a){a?.code!=="ENOENT"&&console.warn("[cluster] failed to read config:",a?.message||a)}let c=o(b);if(b.nodeId||await p(c),a)return c;let{syncToken:d,...e}=c;return{...e,hasSyncToken:!!c.syncToken}}async function s(a={}){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid cluster config payload");return q(async()=>{let b=await r({includeSecrets:!0}),c={};for(let b of["role","enabled","masterUrl","syncToken","intervalMinutes"])Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);let d=o({...b,...c});if("master"!==d.role||d.syncToken||(d.syncToken=e().randomBytes(32).toString("base64url")),d.enabled&&"slave"===d.role){if(!d.masterUrl)throw Error("Master URL is required for Standby mode");if(!d.syncToken)throw Error("Sync token is required for Standby mode")}return await p(d),d})}async function t(a={}){return q(async()=>{let b=await r({includeSecrets:!0}),c=o({...b,...a,nodeId:b.nodeId,role:b.role,enabled:b.enabled,masterUrl:b.masterUrl,syncToken:b.syncToken,intervalMinutes:b.intervalMinutes});return await p(c),c})}async function u(){return"slave"===(await r({includeSecrets:!0})).role}},79709:(a,b,c)=>{c.d(b,{I:()=>j,s:()=>i});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=null;function i(){if(h)return h;try{let a=g().join(process.cwd(),"package.json");h=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{h="0.0.0"}return h}function j(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}},82009:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}}};
9
+ `,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",scope:"TEXT DEFAULT 'system'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",visibility:"TEXT DEFAULT 'system'",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)","CREATE INDEX IF NOT EXISTS idx_pc_scope_owner ON providerConnections(scope, ownerUser)","CREATE INDEX IF NOT EXISTS idx_pc_provider_scope ON providerConnections(provider, scope)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",adminDisabled:"INTEGER DEFAULT 0",allowedModels:"TEXT DEFAULT '[]'",ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",cavemanMode:"TEXT DEFAULT 'inherit'",cavemanLevel:"TEXT DEFAULT 'lite'",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)","CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)","CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)","CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},resourceMonitorHistory:{columns:{serverId:"TEXT NOT NULL",sampledAt:"INTEGER NOT NULL",cpuUsage:"REAL DEFAULT 0",memoryUsage:"REAL DEFAULT 0",diskUsage:"REAL DEFAULT 0",diskUsedBytes:"INTEGER DEFAULT 0",networkRxBps:"REAL DEFAULT 0",networkTxBps:"REAL DEFAULT 0",gpus:"TEXT NOT NULL DEFAULT '[]'"},primaryKey:"PRIMARY KEY (serverId, sampledAt)",indexes:["CREATE INDEX IF NOT EXISTS idx_rmh_server_time ON resourceMonitorHistory(serverId, sampledAt)","CREATE INDEX IF NOT EXISTS idx_rmh_sampled_at ON resourceMonitorHistory(sampledAt)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},43913:(a,b,c)=>{c.d(b,{o:()=>e,q:()=>f});var d=c(34050);let e=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(d.CG))for(let e of(a.exec((0,d.zE)(b,c)),c.indexes||[]))a.exec(e)}},{version:2,name:"usage-history-analytics-indexes",up(){}},{version:3,name:"request-observability-rollups",up(a){var b="apiKeys";let c=function(a,b){try{return new Set((a.all(`PRAGMA table_info(${b})`)||[]).map(a=>a.name))}catch{return new Set}}(a,b);for(let[d,e]of Object.entries({ownerUser:"TEXT DEFAULT ''",createdByUser:"TEXT DEFAULT ''",allowedModels:"TEXT DEFAULT '[]'"}))c.has(d)||a.exec(`ALTER TABLE ${b} ADD COLUMN ${d} ${e}`);a.exec("CREATE INDEX IF NOT EXISTS idx_ak_owner ON apiKeys(ownerUser)"),a.exec("CREATE INDEX IF NOT EXISTS idx_ak_created_by ON apiKeys(createdByUser)")}},{version:4,name:"api-key-admin-disabled",up(a){(function(a,b){try{return new Set((a.all(`PRAGMA table_info(${b})`)||[]).map(a=>a.name))}catch{return new Set}})(a,"apiKeys").has("adminDisabled")||a.exec("ALTER TABLE apiKeys ADD COLUMN adminDisabled INTEGER DEFAULT 0"),a.exec("CREATE INDEX IF NOT EXISTS idx_ak_admin_disabled ON apiKeys(adminDisabled)")}},{version:5,name:"api-key-caveman-override",up(a){let b=new Set(a.all("PRAGMA table_info(apiKeys)").map(a=>a.name));b.has("cavemanMode")||a.exec("ALTER TABLE apiKeys ADD COLUMN cavemanMode TEXT DEFAULT 'inherit'"),b.has("cavemanLevel")||a.exec("ALTER TABLE apiKeys ADD COLUMN cavemanLevel TEXT DEFAULT 'lite'")}}].sort((a,b)=>a.version-b.version);function f(){return e.length?e[e.length-1].version:0}},63960:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(82009);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},75870:(a,b,c)=>{c.d(b,{Jc:()=>r,Q1:()=>s,WR:()=>u,X_:()=>t});var d=c(77598),e=c.n(d),f=c(51455),g=c.n(f),h=c(76760),i=c.n(h),j=c(53859);let k=i().join(j.n,"cluster-config.json"),l=new Set(["standalone","master","slave"]),m="__blueRouterClusterConfigMutation",n={version:1,nodeId:"",role:"standalone",enabled:!1,masterUrl:"",syncToken:"",intervalMinutes:5,lastAttemptAt:null,lastSyncAt:null,lastSnapshotHash:"",lastError:"",lastResult:null,commandAck:null};function o(a={}){let b=l.has(a.role)?a.role:"standalone";return{...n,...a,version:1,nodeId:String(a.nodeId||"").trim()||e().randomUUID(),role:b,enabled:!0===a.enabled,masterUrl:function(a){let b=String(a||"").trim().replace(/\/+$/,"");if(!b)return"";let c=new URL(b);if(!["http:","https:"].includes(c.protocol))throw Error("Master URL must use http:// or https://");if(c.username||c.password)throw Error("Master URL must not contain credentials");return c.toString().replace(/\/+$/,"")}(a.masterUrl),syncToken:String(a.syncToken||"").trim(),intervalMinutes:Math.min(1440,Math.max(1,Number(a.intervalMinutes)||5))}}async function p(a){await g().mkdir(j.n,{recursive:!0});let b=`${k}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify(a,null,2),{mode:384}),await g().rename(b,k)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function q(a){let b=(globalThis[m]||Promise.resolve()).then(a,a);return globalThis[m]=b.catch(()=>{}),b}async function r({includeSecrets:a=!1}={}){let b={};try{b=JSON.parse(await g().readFile(k,"utf8"))}catch(a){a?.code!=="ENOENT"&&console.warn("[cluster] failed to read config:",a?.message||a)}let c=o(b);if(b.nodeId||await p(c),a)return c;let{syncToken:d,...e}=c;return{...e,hasSyncToken:!!c.syncToken}}async function s(a={}){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid cluster config payload");return q(async()=>{let b=await r({includeSecrets:!0}),c={};for(let b of["role","enabled","masterUrl","syncToken","intervalMinutes"])Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);let d=o({...b,...c});if("master"!==d.role||d.syncToken||(d.syncToken=e().randomBytes(32).toString("base64url")),d.enabled&&"slave"===d.role){if(!d.masterUrl)throw Error("Master URL is required for Standby mode");if(!d.syncToken)throw Error("Sync token is required for Standby mode")}return await p(d),d})}async function t(a={}){return q(async()=>{let b=await r({includeSecrets:!0}),c=o({...b,...a,nodeId:b.nodeId,role:b.role,enabled:b.enabled,masterUrl:b.masterUrl,syncToken:b.syncToken,intervalMinutes:b.intervalMinutes});return await p(c),c})}async function u(){return"slave"===(await r({includeSecrets:!0})).role}},79709:(a,b,c)=>{c.d(b,{I:()=>j,s:()=>i});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=null;function i(){if(h)return h;try{let a=g().join(process.cwd(),"package.json");h=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{h="0.0.0"}return h}function j(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}},79841:(a,b,c)=>{let{EventEmitter:d}=c(78474),e=Symbol.for("bluerouter.realtime-usage.v1");function f(){let a="u">typeof process?process:globalThis;if(!a[e]){let b=new d;b.setMaxListeners(100),a[e]={emitter:b,ring:{items:[],initialized:!1}}}return a[e]}function g(a={}){let b=String(a.requestId||"").trim();if(b)return`request:${b}`;let c=new Date(a.timestamp||0).getTime();return`fallback:${c}|${a.model||""}|${a.provider||""}|${a.connectionId||""}`}a.exports={entryKey:g,getRealtimeUsageState:f,publishRecentUsage:function(a,{emit:b=!0,cap:c=50}={}){if(!a||"object"!=typeof a)return null;let d=f(),e=g(a),h=d.ring.items.findIndex(a=>g(a)===e),i=h>=0?function(a={},b={}){return{...a,...b,tokens:{...a.tokens&&"object"==typeof a.tokens?a.tokens:{},...b.tokens&&"object"==typeof b.tokens?b.tokens:{}}}}(d.ring.items[h],a):{...a};return h>=0?d.ring.items[h]=i:d.ring.items.push(i),d.ring.items=d.ring.items.sort((a,b)=>new Date(a.timestamp||0)-new Date(b.timestamp||0)).slice(-Math.max(1,Number(c)||50)),d.ring.initialized=!0,b&&d.emitter.emit("update",{source:"memory-ring",requestId:i.requestId||""}),i},resetForTests:function(){let a=f();a.ring.items=[],a.ring.initialized=!1,a.emitter.removeAllListeners()}}},82009:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=476,exports.ids=[476,3960],exports.modules={61736:(a,b,c)=>{c.d(b,{ensureAiPowerIndexScheduler:()=>G});var d=c(689),e=c(41170);let f="__blueRouterAiPowerIndexSnapshots",g=!1,h="lower(trim(COALESCE(CAST(status AS CHAR), '')))",i=`${h} IN ('pending', 'running', 'in_progress', 'queued', 'processing')`,j=`(
1
+ "use strict";exports.id=9,exports.ids=[9,3960],exports.modules={61736:(a,b,c)=>{c.d(b,{ensureAiPowerIndexScheduler:()=>G});var d=c(689),e=c(41170);let f="__blueRouterAiPowerIndexSnapshots",g=!1,h="lower(trim(COALESCE(CAST(status AS CHAR), '')))",i=`${h} IN ('pending', 'running', 'in_progress', 'queued', 'processing')`,j=`(
2
2
  (COALESCE(statusCode, 0) BETWEEN 200 AND 299)
3
3
  OR ${h} = ''
4
4
  OR ${h} IN ('ok', 'success', 'succeeded', 'complete', 'completed', 'done', '200')
@@ -44,4 +44,4 @@
44
44
  is_final = GREATEST(is_final, VALUES(is_final)),
45
45
  computed_at = IF(is_final = 1, computed_at, VALUES(computed_at)),
46
46
  schema_version = VALUES(schema_version),
47
- updated_at = CURRENT_TIMESTAMP(3)`,[a.cycle.id,JSON.stringify(a),+!!b,function(a=new Date){return new Date(a).toISOString().replace("T"," ").replace("Z","")}(a.generatedAt||new Date),1]),!0}finally{await c.end().catch(()=>{})}}async function z(){let a=u();return a.loaded?a.snapshots:(a.loading||(a.loading=(async()=>{try{let b=new Set(p().map(a=>a.id)),c=await x(),d="";for(let e of c)e.payload&&b.has(e.cycleId)&&(a.snapshots.set(e.cycleId,{...e.payload,status:"ready",isFinal:e.isFinal}),e.computedAt&&e.computedAt>d&&(d=e.computedAt));a.snapshots.size&&(a.status="ready",a.lastRefreshAt=d||a.lastRefreshAt),a.lastError=""}catch(b){a.lastError=b?.message||String(b),console.warn("[ai-power-index] Could not load persisted snapshots:",a.lastError)}finally{a.loaded=!0,a.loading=null}return a.snapshots})()),a.loading)}async function A({cycleId:a="",ownerCandidates:b=[],viewerScope:c="all"}={}){let e=p(),f=e.find(b=>b.id===a)||e[0],g=function(a){let[b,c]=a.id.split("-").map(Number);return o(b,c-2)}(f),h=[...new Set(b.map(a=>k(a).toLowerCase()).filter(Boolean))],i=await (0,d.getMysqlObservabilityAdapter)();try{let a,b,d,[j,k]=await Promise.all([t(i,f,h),t(i,g,h)]),l=s(f),n=s(g,new Date(g.endExclusiveIso)),o=new Map(k.map(a=>{let b=r(a,n);return[b.ownerUser,b.score]})),p=j.map(a=>{let b=r(a,l),c=o.get(b.ownerUser);return{...b,previousScore:c??null,scoreChange:void 0===c?null:m(b.score-c)}}).sort((a,b)=>b.score-a.score||b.totalTokens-a.totalTokens).map((a,b)=>({...a,rank:b+1}));return{generatedAt:new Date().toISOString(),viewerScope:c,cycle:f,previousCycle:g,cycles:e,summary:(a=p.reduce((a,b)=>a+b.requests,0),b=p.reduce((a,b)=>a+b.totalTokens,0),d=p.reduce((a,b)=>a+b.success,0),{users:p.length,averageScore:p.length?m(p.reduce((a,b)=>a+b.score,0)/p.length):0,totalRequests:a,totalTokens:b,successRate:a?d/a:0,activeUsers:p.filter(a=>a.activeDays>=3).length}),rows:p,methodology:{version:"1.0",note:"Chỉ số đo mức độ khai th\xe1c AI qua telemetry sử dụng; kh\xf4ng tự suy diễn chất lượng nội dung c\xf4ng việc.",dimensions:[{id:"usage",label:"Mức độ sử dụng",weight:25,detail:"Số request v\xe0 tổng input + output token, chuẩn h\xf3a log."},{id:"depth",label:"Độ s\xe2u tương t\xe1c",weight:20,detail:"Input v\xe0 output token trung b\xecnh tr\xean mỗi request, chuẩn h\xf3a log."},{id:"consistency",label:"T\xednh đều đặn",weight:20,detail:"Số ng\xe0y c\xf3 sử dụng, đạt tối đa tại 15 ng\xe0y trong chu kỳ."},{id:"breadth",label:"Độ đa dạng",weight:15,detail:"Số model, provider v\xe0 source tool kh\xe1c nhau."},{id:"reliability",label:"Độ tin cậy",weight:20,detail:"Tỷ lệ request th\xe0nh c\xf4ng c\xf3 Bayesian smoothing để giảm sai lệch mẫu nhỏ."}]}}}finally{await i?.close?.().catch(()=>{})}}async function B(){let a=u();return a.running||(a.running=(async()=>{await z(),a.status=a.snapshots.size?"refreshing":"warming";let b=p(),c=b[0];for(let d of[c,...b.slice(1).filter(b=>a.snapshots.get(b.id)?.isFinal!==!0).slice(0,2)]){let b=d.id!==c.id,e=await A({cycleId:d.id,ownerCandidates:[],viewerScope:"all"});await y(e,b).catch(a=>{console.warn(`[ai-power-index] Could not persist cycle ${d.id}:`,a?.message||a)}),a.snapshots.set(d.id,{...e,status:"ready",isFinal:b})}return a.status="ready",a.lastError="",a.lastRefreshAt=new Date().toISOString(),a.snapshots})().catch(b=>{throw a.status=a.snapshots.size?"stale":"error",a.lastError=b?.message||String(b),b}).finally(()=>{a.running=null})),a.running}var C=c(65876);let D="__blueRouterAiPowerIndexScheduler";function E(){return globalThis[D]||(globalThis[D]={started:!1,timer:null}),globalThis[D]}async function F(){let a,b;try{if(!(await (0,C.B)("ai-power-index-refresh",async()=>{console.log("[ai-power-index] Starting background snapshot refresh..."),await B(),console.log("[ai-power-index] Background snapshot refresh completed.")})).acquired){let a;return void((a=E()).timer=setTimeout(F,3e5),a.timer.unref?.(),console.log("[ai-power-index] Heavy DB worker busy; retrying refresh in 5 minutes"))}}catch(a){console.warn("[ai-power-index] Background snapshot refresh failed:",a?.message||a)}a=E(),a.timer=setTimeout(F,Math.max(1e3,(b=function(a=new Date){let b=new Date(a.getTime()+252e5);return new Date(Date.UTC(b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate(),12>b.getUTCHours()?12:24,0,0,0)-252e5)}()).getTime()-Date.now())),a.timer.unref?.(),console.log(`[ai-power-index] Next background refresh: ${b.toISOString()} (Asia/Saigon 00:00/12:00)`)}function G(){let a=E();a.started||(a.started=!0,z(),a.timer=setTimeout(F,6e4),a.timer.unref?.())}},63960:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(82009);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},65876:(a,b,c)=>{c.d(b,{B:()=>h});var d=c(41170);let e="bluerouter:background-heavy-db";async function f(){let a=(0,d.normalizeConfig)(await (0,d.getPromptLogDbConfig)());return a.enabled&&"mysql"===a.type?a:null}async function g(a){let b=await c.e(4790).then(c.t.bind(c,94790,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,timezone:"+00:00",dateStrings:!0,connectTimeout:3e3});return await d.query("SET time_zone = '+00:00'"),d}async function h(a,b){let c,d;try{c=await f()}catch(b){return console.warn(`[background-heavy-db] could not read DB config for ${a}; deferring heavy work:`,b?.message||b),{acquired:!1,coordinated:!0,result:null}}if(!c)return{acquired:!0,coordinated:!1,result:await b()};try{d=await g(c)}catch(b){return console.warn(`[background-heavy-db] lock connection unavailable for ${a}; deferring heavy work:`,b?.message||b),{acquired:!1,coordinated:!0,result:null}}try{let[c]=await d.query("SELECT GET_LOCK(?, 0) AS acquired",[e]);if(1!==Number(c?.[0]?.acquired||0))return{acquired:!1,coordinated:!0,result:null};let f=Date.now();try{let c=await b();return console.log(`[background-heavy-db] ${a} completed in ${Date.now()-f}ms`),{acquired:!0,coordinated:!0,result:c}}finally{await d.query("SELECT RELEASE_LOCK(?)",[e]).catch(()=>{})}}finally{await d.end().catch(()=>{})}}},82009:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}}};
47
+ updated_at = CURRENT_TIMESTAMP(3)`,[a.cycle.id,JSON.stringify(a),+!!b,function(a=new Date){return new Date(a).toISOString().replace("T"," ").replace("Z","")}(a.generatedAt||new Date),1]),!0}finally{await c.end().catch(()=>{})}}async function z(){let a=u();return a.loaded?a.snapshots:(a.loading||(a.loading=(async()=>{try{let b=new Set(p().map(a=>a.id)),c=await x(),d="";for(let e of c)e.payload&&b.has(e.cycleId)&&(a.snapshots.set(e.cycleId,{...e.payload,status:"ready",isFinal:e.isFinal}),e.computedAt&&e.computedAt>d&&(d=e.computedAt));a.snapshots.size&&(a.status="ready",a.lastRefreshAt=d||a.lastRefreshAt),a.lastError=""}catch(b){a.lastError=b?.message||String(b),console.warn("[ai-power-index] Could not load persisted snapshots:",a.lastError)}finally{a.loaded=!0,a.loading=null}return a.snapshots})()),a.loading)}async function A({cycleId:a="",ownerCandidates:b=[],viewerScope:c="all"}={}){let e=p(),f=e.find(b=>b.id===a)||e[0],g=function(a){let[b,c]=a.id.split("-").map(Number);return o(b,c-2)}(f),h=[...new Set(b.map(a=>k(a).toLowerCase()).filter(Boolean))],i=await (0,d.getMysqlObservabilityAdapter)();try{let a,b,d,[j,k]=await Promise.all([t(i,f,h),t(i,g,h)]),l=s(f),n=s(g,new Date(g.endExclusiveIso)),o=new Map(k.map(a=>{let b=r(a,n);return[b.ownerUser,b.score]})),p=j.map(a=>{let b=r(a,l),c=o.get(b.ownerUser);return{...b,previousScore:c??null,scoreChange:void 0===c?null:m(b.score-c)}}).sort((a,b)=>b.score-a.score||b.totalTokens-a.totalTokens).map((a,b)=>({...a,rank:b+1}));return{generatedAt:new Date().toISOString(),viewerScope:c,cycle:f,previousCycle:g,cycles:e,summary:(a=p.reduce((a,b)=>a+b.requests,0),b=p.reduce((a,b)=>a+b.totalTokens,0),d=p.reduce((a,b)=>a+b.success,0),{users:p.length,averageScore:p.length?m(p.reduce((a,b)=>a+b.score,0)/p.length):0,totalRequests:a,totalTokens:b,successRate:a?d/a:0,activeUsers:p.filter(a=>a.activeDays>=3).length}),rows:p,methodology:{version:"1.0",note:"Chỉ số đo mức độ khai th\xe1c AI qua telemetry sử dụng; kh\xf4ng tự suy diễn chất lượng nội dung c\xf4ng việc.",dimensions:[{id:"usage",label:"Mức độ sử dụng",weight:25,detail:"Số request v\xe0 tổng input + output token, chuẩn h\xf3a log."},{id:"depth",label:"Độ s\xe2u tương t\xe1c",weight:20,detail:"Input v\xe0 output token trung b\xecnh tr\xean mỗi request, chuẩn h\xf3a log."},{id:"consistency",label:"T\xednh đều đặn",weight:20,detail:"Số ng\xe0y c\xf3 sử dụng, đạt tối đa tại 15 ng\xe0y trong chu kỳ."},{id:"breadth",label:"Độ đa dạng",weight:15,detail:"Số model, provider v\xe0 source tool kh\xe1c nhau."},{id:"reliability",label:"Độ tin cậy",weight:20,detail:"Tỷ lệ request th\xe0nh c\xf4ng c\xf3 Bayesian smoothing để giảm sai lệch mẫu nhỏ."}]}}}finally{await i?.close?.().catch(()=>{})}}async function B(){let a=u();return a.running||(a.running=(async()=>{await z(),a.status=a.snapshots.size?"refreshing":"warming";let b=p(),c=b[0];for(let d of[c,...b.slice(1).filter(b=>a.snapshots.get(b.id)?.isFinal!==!0).slice(0,2)]){let b=d.id!==c.id,e=await A({cycleId:d.id,ownerCandidates:[],viewerScope:"all"});await y(e,b).catch(a=>{console.warn(`[ai-power-index] Could not persist cycle ${d.id}:`,a?.message||a)}),a.snapshots.set(d.id,{...e,status:"ready",isFinal:b})}return a.status="ready",a.lastError="",a.lastRefreshAt=new Date().toISOString(),a.snapshots})().catch(b=>{throw a.status=a.snapshots.size?"stale":"error",a.lastError=b?.message||String(b),b}).finally(()=>{a.running=null})),a.running}var C=c(65876);let D="__blueRouterAiPowerIndexScheduler";function E(){return globalThis[D]||(globalThis[D]={started:!1,timer:null}),globalThis[D]}async function F(){let a,b;try{if(!(await (0,C.B)("ai-power-index-refresh",async()=>{console.log("[ai-power-index] Starting background snapshot refresh..."),await B(),console.log("[ai-power-index] Background snapshot refresh completed.")})).acquired){let a;return void((a=E()).timer=setTimeout(F,3e5),a.timer.unref?.(),console.log("[ai-power-index] Heavy DB worker busy; retrying refresh in 5 minutes"))}}catch(a){console.warn("[ai-power-index] Background snapshot refresh failed:",a?.message||a)}a=E(),a.timer=setTimeout(F,Math.max(1e3,(b=function(a=new Date){let b=new Date(a.getTime()+252e5);return new Date(Date.UTC(b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate(),12>b.getUTCHours()?12:24,0,0,0)-252e5)}()).getTime()-Date.now())),a.timer.unref?.(),console.log(`[ai-power-index] Next background refresh: ${b.toISOString()} (Asia/Saigon 00:00/12:00)`)}function G(){let a=E();a.started||(a.started=!0,z(),a.timer=setTimeout(F,6e4),a.timer.unref?.())}},63960:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(82009);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},65876:(a,b,c)=>{c.d(b,{B:()=>h});var d=c(41170);let e="bluerouter:background-heavy-db";async function f(){let a=(0,d.normalizeConfig)(await (0,d.getPromptLogDbConfig)());return a.enabled&&"mysql"===a.type?a:null}async function g(a){let b=await c.e(4790).then(c.t.bind(c,94790,19)),d=await b.createConnection({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{}:void 0,timezone:"+00:00",dateStrings:!0,connectTimeout:3e3});return await d.query("SET time_zone = '+00:00'"),d}async function h(a,b){let c,d;try{c=await f()}catch(b){return console.warn(`[background-heavy-db] could not read DB config for ${a}; deferring heavy work:`,b?.message||b),{acquired:!1,coordinated:!0,result:null}}if(!c)return{acquired:!0,coordinated:!1,result:await b()};try{d=await g(c)}catch(b){return console.warn(`[background-heavy-db] lock connection unavailable for ${a}; deferring heavy work:`,b?.message||b),{acquired:!1,coordinated:!0,result:null}}try{let[c]=await d.query("SELECT GET_LOCK(?, 0) AS acquired",[e]);if(1!==Number(c?.[0]?.acquired||0))return{acquired:!1,coordinated:!0,result:null};let f=Date.now();try{let c=await b();return console.log(`[background-heavy-db] ${a} completed in ${Date.now()-f}ms`),{acquired:!0,coordinated:!0,result:c}}finally{await d.query("SELECT RELEASE_LOCK(?)",[e]).catch(()=>{})}}finally{await d.end().catch(()=>{})}}},79841:(a,b,c)=>{let{EventEmitter:d}=c(78474),e=Symbol.for("bluerouter.realtime-usage.v1");function f(){let a="u">typeof process?process:globalThis;if(!a[e]){let b=new d;b.setMaxListeners(100),a[e]={emitter:b,ring:{items:[],initialized:!1}}}return a[e]}function g(a={}){let b=String(a.requestId||"").trim();if(b)return`request:${b}`;let c=new Date(a.timestamp||0).getTime();return`fallback:${c}|${a.model||""}|${a.provider||""}|${a.connectionId||""}`}a.exports={entryKey:g,getRealtimeUsageState:f,publishRecentUsage:function(a,{emit:b=!0,cap:c=50}={}){if(!a||"object"!=typeof a)return null;let d=f(),e=g(a),h=d.ring.items.findIndex(a=>g(a)===e),i=h>=0?function(a={},b={}){return{...a,...b,tokens:{...a.tokens&&"object"==typeof a.tokens?a.tokens:{},...b.tokens&&"object"==typeof b.tokens?b.tokens:{}}}}(d.ring.items[h],a):{...a};return h>=0?d.ring.items[h]=i:d.ring.items.push(i),d.ring.items=d.ring.items.sort((a,b)=>new Date(a.timestamp||0)-new Date(b.timestamp||0)).slice(-Math.max(1,Number(c)||50)),d.ring.initialized=!0,b&&d.emitter.emit("update",{source:"memory-ring",requestId:i.requestId||""}),i},resetForTests:function(){let a=f();a.ring.items=[],a.ring.initialized=!1,a.emitter.removeAllListeners()}}},82009:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}}};
@@ -1 +1 @@
1
- "use strict";exports.id=3484,exports.ids=[3484,3960],exports.modules={27099:(a,b,c)=>{function d(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}c.d(b,{MI:()=>d}),c(70321)},59274:(a,b,c)=>{c.r(b),c.d(b,{pruneStaleAllowedModels:()=>F});var d=c(70321),e=c(24081),f=c(50743),g=c(27099),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(55511),m=c.n(l),n=c(21820),o=c.n(n);let p=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(o().homedir(),".bluerouter");k().join(p,"ollama-model-memory.json");let q=["minRamFreeMb","minVramFreeMb","loadedRamFreeMb","loadedVramFreeMb","safetyMarginMb"];function r(a,b=0){let c=Number(a);return Number.isFinite(c)&&c>=0?c:b}function s(a={},b={}){let c={};if(!a||"object"!=typeof a||Array.isArray(a))return c;for(let[d,e]of Object.entries(a)){let a=String(d||"").trim();if(!a||!e||"object"!=typeof e||Array.isArray(e))continue;let f=function(a,{partial:b=!1,preserveEnabled:c=!1}={}){let d={};for(let c of q)if(b){var e;null!=(e=a?.[c])&&""!==String(e).trim()&&(d[c]=r(a[c],0))}else d[c]=r(a?.[c],0);let f=String(a?.notes||"").trim();return f&&(d.notes=f),c&&a&&Object.prototype.hasOwnProperty.call(a,"enabled")&&(d.enabled=!1!==a.enabled),d}(e,b),g=q.some(a=>Object.prototype.hasOwnProperty.call(f,a)),h=b.preserveEnabled&&Object.prototype.hasOwnProperty.call(f,"enabled");(g||f.notes||h)&&(c[a]=f)}return c}let t=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(o().homedir(),".bluerouter"),u=k().join(t,"ollama-nodes.json");async function v(){await i().mkdir(t,{recursive:!0});try{await i().access(u)}catch{await i().writeFile(u,JSON.stringify({nodes:[]},null,2))}}async function w(){await v();try{let a=await i().readFile(u,"utf8"),b=JSON.parse(a||"{}");return{nodes:Array.isArray(b.nodes)?b.nodes:[]}}catch{return{nodes:[]}}}function x(){return new Date().toISOString()}function y(a){return Array.isArray(a)?[...new Set(a.map(a=>Number(a)).filter(a=>Number.isFinite(a)&&a>0))]:[...new Set(String(a||"11434").split(/[\s,;]+/).map(a=>Number(a.trim())).filter(a=>Number.isFinite(a)&&a>0))]}function z(a,b={}){if(!a)return b;if("object"==typeof a&&!Array.isArray(a))return a;try{let c=JSON.parse(String(a));return c&&"object"==typeof c&&!Array.isArray(c)?c:b}catch{return b}}function A(a,b=[]){if(!a||"object"!=typeof a)return a||null;let c=function(a=[]){let b=y(a);return b.length?new Set(b.map(Number)):null}(b);if(!c)return a;let d={...a};return Array.isArray(d.instances)&&(d.instances=d.instances.filter(a=>{let b=Number(a?.port);return Number.isFinite(b)&&c.has(b)})),Array.isArray(d.reservations)&&(d.reservations=d.reservations.filter(a=>{if(!a?.port)return!0;let b=Number(a.port);return Number.isFinite(b)&&c.has(b)})),d}async function B(){return(await w()).nodes.map(a=>{var b;return(b=function(a={},b={}){let c=String(a.host??b.host??"").trim(),d=Number(a.agentPort??b.agentPort??19999)||19999,e=y(a.ollamaPorts??b.ollamaPorts??[11434]),f=s(z(a.modelMemoryRequirements??b.modelMemoryRequirements,b.modelMemoryRequirements||{}),{partial:!0,preserveEnabled:!0}),g=b.id||a.id||m().randomUUID(),h=String(a.agentToken??b.agentToken??m().randomBytes(24).toString("hex")).trim(),i=function(a,b,c={}){let d=new Map((Array.isArray(c.instances)?c.instances:[]).map(a=>[Number(a.port),a])),e=new Map((Array.isArray(a)?a:[]).map(a=>[Number(a.port),a]));return b.map(a=>(function(a={},b={}){var c;let d=Number(a.port??b.port??11434)||11434;return{id:String(a.id??b.id??`ollama-${d}`).trim()||`ollama-${d}`,name:String(a.name??b.name??`Ollama :${d}`).trim()||`Ollama :${d}`,port:d,enabled:a.enabled??b.enabled??!0,gpuMode:["auto","cpu","specific","all"].includes(a.gpuMode??b.gpuMode)?a.gpuMode??b.gpuMode:"auto",gpuIndices:Array.isArray(c=a.gpuIndices??b.gpuIndices??[])?[...new Set(c.map(a=>Number(a)).filter(a=>Number.isInteger(a)&&a>=0))]:[...new Set(String(c||"").split(/[\s,;]+/).map(a=>Number(a)).filter(a=>Number.isInteger(a)&&a>=0))],allowMultiGpuSplit:a.allowMultiGpuSplit??b.allowMultiGpuSplit??!1,tags:Array.isArray(a.tags??b.tags)?(a.tags??b.tags).map(a=>String(a).trim()).filter(Boolean):[],modelMemoryRequirements:s(z(a.modelMemoryRequirements??b.modelMemoryRequirements,b.modelMemoryRequirements||{}),{partial:!0,preserveEnabled:!0})}})(e.get(Number(a))||{},d.get(Number(a))||{port:a}))}(a.instances??b.instances,e.length?e:[11434],b),j=A(b.lastStatus||null,e),k=A(b.lastEvaluation||null,e);return{id:g,name:String(a.name??b.name??c??"Ollama Node").trim()||c||"Ollama Node",host:c,sshPort:Number(a.sshPort??b.sshPort??22)||22,sshUser:String(a.sshUser??b.sshUser??"root").trim()||"root",useSudo:a.useSudo??b.useSudo??!1,agentPort:d,agentToken:h,ollamaPorts:e.length?e:[11434],instances:i,refreshIntervalMs:Math.max(5e3,Number(a.refreshIntervalMs??b.refreshIntervalMs??15e3)||15e3),enabled:a.enabled??b.enabled??!0,ufwAllowFrom:String(a.ufwAllowFrom??b.ufwAllowFrom??"").trim(),useGlobalModelMemory:a.useGlobalModelMemory??b.useGlobalModelMemory??!0,modelMemoryRequirements:f,notes:String(a.notes??b.notes??"").trim(),lastStatus:j,lastEvaluation:k,lastStatusAt:b.lastStatusAt||null,lastError:b.lastError||null,lastInstallAt:b.lastInstallAt||null,lastInstallOk:b.lastInstallOk||!1,lastInstallLog:b.lastInstallLog||"",createdAt:b.createdAt||x(),updatedAt:x()}}(a,a))?{...b,sshPassword:void 0,sudoPassword:void 0}:null})}let C=/^auto(\/|$)/;async function D(a){return!function(a=[]){return a.some(a=>"ollama-local"===String(a?.provider||"").toLowerCase()&&!1!==a.isActive)}(a)&&0===(await B().catch(()=>[])||[]).length}async function E(){let a=new Set;for(let b of await (0,d.Uv)().catch(()=>[])||[]){let c=String(b?.exposedModel||b?.model||b?.name||b?.id||"").trim();c&&!c.includes("/")&&a.add(c)}return a}async function F(){await (0,d.PX)({limit:1});let a=await (0,d.getProviderConnections)({includePersonal:!0}).catch(()=>[])||[],b=await E(),c=await D(a||[]),h=await (0,e.c)(),i=0,j=0,k=0,l=new Set;h.transaction(()=>{for(let a of h.all("SELECT id, allowedModels FROM apiKeys")){i+=1;let d=(0,g.MI)((0,f.q)(a.allowedModels,[]));if(0===d.length){k+=1;continue}let e=d.filter(a=>{let d=(!!(a.includes("/")||C.test(a))||!!b.has(a))&&!(c&&/^ollama-local\//i.test(a));return d||l.add(a),d});if(e.length===d.length)continue;let m=h.run("UPDATE apiKeys SET allowedModels = ? WHERE id = ?",[(0,f.s)(e),a.id]);j+=Number(m?.changes??0)}});let m=[...l].sort();return m.length>0&&console.log(`[ApiKeyModelPrune] Pruned ${m.length} stale model(s) from ${j} API key(s): ${m.join(", ")}`),{scanned:i,updated:j,legacyFullAccessSkipped:k,removedModels:m,prunedLocalModels:c}}},63960:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(82009);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},82009:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}}};
1
+ "use strict";exports.id=9012,exports.ids=[3960,9012],exports.modules={27099:(a,b,c)=>{function d(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}c.d(b,{MI:()=>d}),c(70321)},59274:(a,b,c)=>{c.r(b),c.d(b,{pruneStaleAllowedModels:()=>F});var d=c(70321),e=c(24081),f=c(50743),g=c(27099),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(55511),m=c.n(l),n=c(21820),o=c.n(n);let p=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(o().homedir(),".bluerouter");k().join(p,"ollama-model-memory.json");let q=["minRamFreeMb","minVramFreeMb","loadedRamFreeMb","loadedVramFreeMb","safetyMarginMb"];function r(a,b=0){let c=Number(a);return Number.isFinite(c)&&c>=0?c:b}function s(a={},b={}){let c={};if(!a||"object"!=typeof a||Array.isArray(a))return c;for(let[d,e]of Object.entries(a)){let a=String(d||"").trim();if(!a||!e||"object"!=typeof e||Array.isArray(e))continue;let f=function(a,{partial:b=!1,preserveEnabled:c=!1}={}){let d={};for(let c of q)if(b){var e;null!=(e=a?.[c])&&""!==String(e).trim()&&(d[c]=r(a[c],0))}else d[c]=r(a?.[c],0);let f=String(a?.notes||"").trim();return f&&(d.notes=f),c&&a&&Object.prototype.hasOwnProperty.call(a,"enabled")&&(d.enabled=!1!==a.enabled),d}(e,b),g=q.some(a=>Object.prototype.hasOwnProperty.call(f,a)),h=b.preserveEnabled&&Object.prototype.hasOwnProperty.call(f,"enabled");(g||f.notes||h)&&(c[a]=f)}return c}let t=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||k().join(o().homedir(),".bluerouter"),u=k().join(t,"ollama-nodes.json");async function v(){await i().mkdir(t,{recursive:!0});try{await i().access(u)}catch{await i().writeFile(u,JSON.stringify({nodes:[]},null,2))}}async function w(){await v();try{let a=await i().readFile(u,"utf8"),b=JSON.parse(a||"{}");return{nodes:Array.isArray(b.nodes)?b.nodes:[]}}catch{return{nodes:[]}}}function x(){return new Date().toISOString()}function y(a){return Array.isArray(a)?[...new Set(a.map(a=>Number(a)).filter(a=>Number.isFinite(a)&&a>0))]:[...new Set(String(a||"11434").split(/[\s,;]+/).map(a=>Number(a.trim())).filter(a=>Number.isFinite(a)&&a>0))]}function z(a,b={}){if(!a)return b;if("object"==typeof a&&!Array.isArray(a))return a;try{let c=JSON.parse(String(a));return c&&"object"==typeof c&&!Array.isArray(c)?c:b}catch{return b}}function A(a,b=[]){if(!a||"object"!=typeof a)return a||null;let c=function(a=[]){let b=y(a);return b.length?new Set(b.map(Number)):null}(b);if(!c)return a;let d={...a};return Array.isArray(d.instances)&&(d.instances=d.instances.filter(a=>{let b=Number(a?.port);return Number.isFinite(b)&&c.has(b)})),Array.isArray(d.reservations)&&(d.reservations=d.reservations.filter(a=>{if(!a?.port)return!0;let b=Number(a.port);return Number.isFinite(b)&&c.has(b)})),d}async function B(){return(await w()).nodes.map(a=>{var b;return(b=function(a={},b={}){let c=String(a.host??b.host??"").trim(),d=Number(a.agentPort??b.agentPort??19999)||19999,e=y(a.ollamaPorts??b.ollamaPorts??[11434]),f=s(z(a.modelMemoryRequirements??b.modelMemoryRequirements,b.modelMemoryRequirements||{}),{partial:!0,preserveEnabled:!0}),g=b.id||a.id||m().randomUUID(),h=String(a.agentToken??b.agentToken??m().randomBytes(24).toString("hex")).trim(),i=function(a,b,c={}){let d=new Map((Array.isArray(c.instances)?c.instances:[]).map(a=>[Number(a.port),a])),e=new Map((Array.isArray(a)?a:[]).map(a=>[Number(a.port),a]));return b.map(a=>(function(a={},b={}){var c;let d=Number(a.port??b.port??11434)||11434;return{id:String(a.id??b.id??`ollama-${d}`).trim()||`ollama-${d}`,name:String(a.name??b.name??`Ollama :${d}`).trim()||`Ollama :${d}`,port:d,enabled:a.enabled??b.enabled??!0,gpuMode:["auto","cpu","specific","all"].includes(a.gpuMode??b.gpuMode)?a.gpuMode??b.gpuMode:"auto",gpuIndices:Array.isArray(c=a.gpuIndices??b.gpuIndices??[])?[...new Set(c.map(a=>Number(a)).filter(a=>Number.isInteger(a)&&a>=0))]:[...new Set(String(c||"").split(/[\s,;]+/).map(a=>Number(a)).filter(a=>Number.isInteger(a)&&a>=0))],allowMultiGpuSplit:a.allowMultiGpuSplit??b.allowMultiGpuSplit??!1,tags:Array.isArray(a.tags??b.tags)?(a.tags??b.tags).map(a=>String(a).trim()).filter(Boolean):[],modelMemoryRequirements:s(z(a.modelMemoryRequirements??b.modelMemoryRequirements,b.modelMemoryRequirements||{}),{partial:!0,preserveEnabled:!0})}})(e.get(Number(a))||{},d.get(Number(a))||{port:a}))}(a.instances??b.instances,e.length?e:[11434],b),j=A(b.lastStatus||null,e),k=A(b.lastEvaluation||null,e);return{id:g,name:String(a.name??b.name??c??"Ollama Node").trim()||c||"Ollama Node",host:c,sshPort:Number(a.sshPort??b.sshPort??22)||22,sshUser:String(a.sshUser??b.sshUser??"root").trim()||"root",useSudo:a.useSudo??b.useSudo??!1,agentPort:d,agentToken:h,ollamaPorts:e.length?e:[11434],instances:i,refreshIntervalMs:Math.max(5e3,Number(a.refreshIntervalMs??b.refreshIntervalMs??15e3)||15e3),enabled:a.enabled??b.enabled??!0,ufwAllowFrom:String(a.ufwAllowFrom??b.ufwAllowFrom??"").trim(),useGlobalModelMemory:a.useGlobalModelMemory??b.useGlobalModelMemory??!0,modelMemoryRequirements:f,notes:String(a.notes??b.notes??"").trim(),lastStatus:j,lastEvaluation:k,lastStatusAt:b.lastStatusAt||null,lastError:b.lastError||null,lastInstallAt:b.lastInstallAt||null,lastInstallOk:b.lastInstallOk||!1,lastInstallLog:b.lastInstallLog||"",createdAt:b.createdAt||x(),updatedAt:x()}}(a,a))?{...b,sshPassword:void 0,sudoPassword:void 0}:null})}let C=/^auto(\/|$)/;async function D(a){return!function(a=[]){return a.some(a=>"ollama-local"===String(a?.provider||"").toLowerCase()&&!1!==a.isActive)}(a)&&0===(await B().catch(()=>[])||[]).length}async function E(){let a=new Set;for(let b of await (0,d.Uv)().catch(()=>[])||[]){let c=String(b?.exposedModel||b?.model||b?.name||b?.id||"").trim();c&&!c.includes("/")&&a.add(c)}return a}async function F(){await (0,d.PX)({limit:1});let a=await (0,d.getProviderConnections)({includePersonal:!0}).catch(()=>[])||[],b=await E(),c=await D(a||[]),h=await (0,e.c)(),i=0,j=0,k=0,l=new Set;h.transaction(()=>{for(let a of h.all("SELECT id, allowedModels FROM apiKeys")){i+=1;let d=(0,g.MI)((0,f.q)(a.allowedModels,[]));if(0===d.length){k+=1;continue}let e=d.filter(a=>{let d=(!!(a.includes("/")||C.test(a))||!!b.has(a))&&!(c&&/^ollama-local\//i.test(a));return d||l.add(a),d});if(e.length===d.length)continue;let m=h.run("UPDATE apiKeys SET allowedModels = ? WHERE id = ?",[(0,f.s)(e),a.id]);j+=Number(m?.changes??0)}});let m=[...l].sort();return m.length>0&&console.log(`[ApiKeyModelPrune] Pruned ${m.length} stale model(s) from ${j} API key(s): ${m.join(", ")}`),{scanned:i,updated:j,legacyFullAccessSkipped:k,removedModels:m,prunedLocalModels:c}}},63960:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(82009);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},79841:(a,b,c)=>{let{EventEmitter:d}=c(78474),e=Symbol.for("bluerouter.realtime-usage.v1");function f(){let a="u">typeof process?process:globalThis;if(!a[e]){let b=new d;b.setMaxListeners(100),a[e]={emitter:b,ring:{items:[],initialized:!1}}}return a[e]}function g(a={}){let b=String(a.requestId||"").trim();if(b)return`request:${b}`;let c=new Date(a.timestamp||0).getTime();return`fallback:${c}|${a.model||""}|${a.provider||""}|${a.connectionId||""}`}a.exports={entryKey:g,getRealtimeUsageState:f,publishRecentUsage:function(a,{emit:b=!0,cap:c=50}={}){if(!a||"object"!=typeof a)return null;let d=f(),e=g(a),h=d.ring.items.findIndex(a=>g(a)===e),i=h>=0?function(a={},b={}){return{...a,...b,tokens:{...a.tokens&&"object"==typeof a.tokens?a.tokens:{},...b.tokens&&"object"==typeof b.tokens?b.tokens:{}}}}(d.ring.items[h],a):{...a};return h>=0?d.ring.items[h]=i:d.ring.items.push(i),d.ring.items=d.ring.items.sort((a,b)=>new Date(a.timestamp||0)-new Date(b.timestamp||0)).slice(-Math.max(1,Number(c)||50)),d.ring.initialized=!0,b&&d.emitter.emit("update",{source:"memory-ring",requestId:i.requestId||""}),i},resetForTests:function(){let a=f();a.ring.items=[],a.ring.initialized=!1,a.emitter.removeAllListeners()}}},82009:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}}};
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=6183,a.ids=[6183],a.modules={643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},7066:a=>{a.exports=require("node:tty")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},27172:(a,b,c)=>{async function d(){try{await Promise.all([c.e(2664),c.e(2566),c.e(689),c.e(7639),c.e(5210),c.e(541),c.e(3696)]).then(c.bind(c,13696))}catch(a){console.log("[grok-cli] failed to register provider:",a?.message||a)}let a=globalThis.__appSingleton??={};a.allowedModelsPruned||(a.allowedModelsPruned=!0,Promise.all([c.e(689),c.e(3484)]).then(c.bind(c,59274)).then(a=>a.pruneStaleAllowedModels()).catch(a=>console.log("[InitApp] Allowed models prune failed:",a?.message||a)));try{let{ensureProviderHealthMonitor:a}=await Promise.all([c.e(3433),c.e(689),c.e(7639),c.e(6118)]).then(c.bind(c,59479));a()}catch(a){console.log("[provider-health] failed to start active monitor:",a?.message||a)}try{let{ensureResourceMonitorCollector:a}=await Promise.all([c.e(689),c.e(9483),c.e(2155),c.e(564)]).then(c.bind(c,93621));a()}catch(a){console.log("[resource-monitor] failed to start history collector:",a?.message||a)}try{let{ensureClusterSyncService:a}=await Promise.all([c.e(689),c.e(3031)]).then(c.bind(c,23248));a()}catch(a){console.log("[cluster] failed to start sync service:",a?.message||a)}try{let{ensureResourceMonitorAiScheduler:a}=await Promise.all([c.e(2664),c.e(689),c.e(7639),c.e(5210),c.e(9483),c.e(6977)]).then(c.bind(c,16977));a()}catch(a){console.log("[resource-monitor] failed to start AI analysis scheduler:",a?.message||a)}try{let{ensureDashboardAnalyticsAiScheduler:a}=await Promise.all([c.e(2664),c.e(689),c.e(7639),c.e(5210),c.e(9483),c.e(2155),c.e(2731)]).then(c.bind(c,82731));a()}catch(a){console.log("[dashboard-analytics] failed to start AI analysis scheduler:",a?.message||a)}try{let{ensureAiPowerIndexScheduler:a}=await Promise.all([c.e(689),c.e(476)]).then(c.bind(c,61736));a()}catch(a){console.log("[ai-power-index] failed to start snapshot scheduler:",a?.message||a)}try{let{ensurePromptPayloadRotationScheduler:a}=await Promise.all([c.e(689),c.e(814)]).then(c.bind(c,71372));a()}catch(a){console.log("[prompt-payload-rotation] failed to start scheduler:",a?.message||a)}try{let a=await c.e(3958).then(c.t.bind(c,93958,23)),b=a.default||a;"function"==typeof b.ensureAuditProxyAutostart&&await b.ensureAuditProxyAutostart()}catch(a){console.log("[audit-proxy] failed to initialize autostart:",a?.message||a)}}c.r(b),c.d(b,{register:()=>d})},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},34631:a=>{a.exports=require("tls")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41204:a=>{a.exports=require("string_decoder")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},66136:a=>{a.exports=require("timers")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80099:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},83997:a=>{a.exports=require("tty")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("./webpack-runtime.js");b.C(a);var c=b(b.s=27172);module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=6183,a.ids=[6183],a.modules={643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},7066:a=>{a.exports=require("node:tty")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},27172:(a,b,c)=>{async function d(){try{await Promise.all([c.e(2664),c.e(2566),c.e(689),c.e(3399),c.e(5210),c.e(541),c.e(3696)]).then(c.bind(c,13696))}catch(a){console.log("[grok-cli] failed to register provider:",a?.message||a)}let a=globalThis.__appSingleton??={};a.allowedModelsPruned||(a.allowedModelsPruned=!0,Promise.all([c.e(689),c.e(9012)]).then(c.bind(c,59274)).then(a=>a.pruneStaleAllowedModels()).catch(a=>console.log("[InitApp] Allowed models prune failed:",a?.message||a)));try{let{ensureProviderHealthMonitor:a}=await Promise.all([c.e(3433),c.e(689),c.e(3399),c.e(6118)]).then(c.bind(c,59479));a()}catch(a){console.log("[provider-health] failed to start active monitor:",a?.message||a)}try{let{ensureResourceMonitorCollector:a}=await Promise.all([c.e(689),c.e(9483),c.e(2155),c.e(6684)]).then(c.bind(c,93621));a()}catch(a){console.log("[resource-monitor] failed to start history collector:",a?.message||a)}try{let{ensureClusterSyncService:a}=await Promise.all([c.e(689),c.e(8049)]).then(c.bind(c,23248));a()}catch(a){console.log("[cluster] failed to start sync service:",a?.message||a)}try{let{ensureResourceMonitorAiScheduler:a}=await Promise.all([c.e(2664),c.e(689),c.e(3399),c.e(5210),c.e(9483),c.e(6977)]).then(c.bind(c,16977));a()}catch(a){console.log("[resource-monitor] failed to start AI analysis scheduler:",a?.message||a)}try{let{ensureDashboardAnalyticsAiScheduler:a}=await Promise.all([c.e(2664),c.e(689),c.e(3399),c.e(5210),c.e(9483),c.e(2155),c.e(2731)]).then(c.bind(c,82731));a()}catch(a){console.log("[dashboard-analytics] failed to start AI analysis scheduler:",a?.message||a)}try{let{ensureAiPowerIndexScheduler:a}=await Promise.all([c.e(689),c.e(9)]).then(c.bind(c,61736));a()}catch(a){console.log("[ai-power-index] failed to start snapshot scheduler:",a?.message||a)}try{let{ensurePromptPayloadRotationScheduler:a}=await Promise.all([c.e(689),c.e(4350)]).then(c.bind(c,71372));a()}catch(a){console.log("[prompt-payload-rotation] failed to start scheduler:",a?.message||a)}try{let a=await c.e(3958).then(c.t.bind(c,93958,23)),b=a.default||a;"function"==typeof b.ensureAuditProxyAutostart&&await b.ensureAuditProxyAutostart()}catch(a){console.log("[audit-proxy] failed to initialize autostart:",a?.message||a)}}c.r(b),c.d(b,{register:()=>d})},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},34631:a=>{a.exports=require("tls")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41204:a=>{a.exports=require("string_decoder")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},66136:a=>{a.exports=require("timers")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80099:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},83997:a=>{a.exports=require("tty")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("./webpack-runtime.js");b.C(a);var c=b(b.s=27172);module.exports=c})();
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/QEX9o5oQXbLSr9SjmMGpO/_buildManifest.js","static/QEX9o5oQXbLSr9SjmMGpO/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-7223ab98c3aee1a6.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-d7cddff008311ab3.js","static/chunks/main-app-eacc433ef218cf40.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/eC7_Xowag0bxjhjAvgjlD/_buildManifest.js","static/eC7_Xowag0bxjhjAvgjlD/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-7223ab98c3aee1a6.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-d7cddff008311ab3.js","static/chunks/main-app-eacc433ef218cf40.js"],rootMainFilesTree:{},pages:{"/_app":[]}};