@jheavenknows/bluerouter 5.3.47 → 5.3.49
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.
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +7 -4
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +59 -31
- package/app/.next-cli-build/routes-manifest.json +18 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js +5 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js +18 -0
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js +38 -0
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/audit-proxy/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +2 -2
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/qwen-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +2 -2
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +2 -2
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/restart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.html +1 -0
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.meta +36 -0
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.rsc +25 -0
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/!KGRhc2hib2FyZCk/dashboard/audit-proxy/__PAGE__.segment.rsc +32 -0
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/_full.segment.rsc +25 -0
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/_tree.segment.rsc +4 -0
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard/local-ai-report/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/routing-topology.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-topology.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/!KGRhc2hib2FyZCk/dashboard/routing-topology/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login/page.js +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/page.js +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +7 -4
- package/app/.next-cli-build/server/chunks/2566.js +2 -2
- package/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/app/.next-cli-build/server/chunks/5210.js +3 -3
- package/app/.next-cli-build/server/chunks/6108.js +1 -1
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/6811.js +1 -1
- package/app/.next-cli-build/server/chunks/6992.js +1 -1
- package/app/.next-cli-build/server/chunks/7639.js +1 -1
- package/app/.next-cli-build/server/chunks/8352.js +2 -2
- package/app/.next-cli-build/server/chunks/8946.js +2 -2
- package/app/.next-cli-build/server/functions-config-manifest.json +2 -0
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/prefetch-hints.json +24 -0
- package/app/.next-cli-build/static/L_h01kCNsdvHq-NfbF9cq/_buildManifest.js +1 -0
- package/app/.next-cli-build/static/chunks/{5263-7e4da67adf06eccf.js → 5263-4d0783ef24c50911.js} +1 -1
- package/app/.next-cli-build/static/chunks/7050-a706e6827db952b3.js +1 -0
- package/app/.next-cli-build/static/chunks/8500-01a63dafd809e317.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/api-keys/{page-653c30e1cfc826ad.js → page-a979b53a0e095564.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-3f3d666087630a55.js +5 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-756885e39ef00c20.js → page-65c05edc9521c8fc.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-1b504e40c85200fe.js → page-0193441bced46de6.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/model-profiles/{page-08c194e770f52b58.js → page-7844bf2031454b1c.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-5ee83aae55928333.js → page-fd337e41209f4b90.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-4639baaf9071ffff.js → page-7f613428dc68ec6e.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-c06fac9001a0ff2b.js → page-cc31ec395c8b0116.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/{page-7e360930d0ecbe91.js → page-fb3cdf0c2e7742b6.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-5016b3d6e5295239.js → page-12700e16781ed896.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-82071dc65929d1a2.js → page-f1b6603d564d76e3.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-db01b84cc209b4f9.js → page-50c464dc6ec10d2f.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-700b671f2e833c31.js → page-82923ad2695bf65f.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-054e65328f040baf.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/{page-7e360930d0ecbe91.js → page-fb3cdf0c2e7742b6.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/{layout-83fbe505bfd1d46f.js → layout-b6944f78d9c0e80c.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovider/{page-2e31214e45dd5dd7.js → page-89759854090658c5.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudprovidermonitor/{page-8e723a2203914aed.js → page-ae4159241f66d5fa.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/{page-007560f58f9ba8fd.js → page-6c370ee99bad6882.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-8619c99c9e76cc49.js → page-951afd9955093a68.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-c4bf38103d1317a3.js → page-b264785b8e695d7a.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-97e8bd5381f6b48c.js → page-983bcf0c76f9029e.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-44cf1f0d3d57fab2.js → page-fafe439299f350bf.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/{page-23ecefa1f8d06ab3.js → page-a05ac739ed8f8677.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/{page-a96f92cdf7ccaa92.js → page-59d8a02c13292a77.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-dc2a0d576213c24f.js → page-9eaf4a3d688f4243.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/{page-e814d95a2e7f4fe2.js → page-b4ab0d22383a8303.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-bb6fdba0137a6272.js → layout-43b9cc22f69b564c.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/audit-proxy/ca/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/audit-proxy/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/view-mode/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/branding/[asset]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/branding/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/branding/upload/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/cloud-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/qwen-settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/config/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/heartbeat/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/command/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/snapshot/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/sync/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/ai-power-index/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/ai-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/analyze/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/combos/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/endpoint/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/local-ai-report/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/options/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/config/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/live/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/token-saver/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/caveman-test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/device-code/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/poll/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/api-key-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/import-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/move/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/usage/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/client/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/monitor/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/permissions/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/routing/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/shares/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/visibility/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/catalog/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/recalculate/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-health/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/openai-compatible/manage/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/[id]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/ai-models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/analyze/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/history/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/restart/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f5efd20f46cedab1.js +1 -0
- package/app/.next-cli-build/static/css/150584b47405f066.css +1 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.40-to-5.3.41-5.3.41-20260821-072821 → upgrade-5.3.46-to-5.3.47-5.3.47-20260822-172255}/data.sqlite +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next-cli-build/static/WzpaETe2CHJPwZBBssQBx/_buildManifest.js +0 -1
- package/app/.next-cli-build/static/chunks/1997-ec155690a9441b82.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-df910327664404cc.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/view-mode/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/branding/[asset]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/branding/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/branding/upload/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/cloud-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-model-profiles/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/qwen-settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/config/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/heartbeat/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/command/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/snapshot/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/sync/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/ai-power-index/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/ai-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/analyze/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/combos/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/endpoint/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/local-ai-report/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/options/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/config/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/live/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/routing-topology/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/token-saver/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/caveman-test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/device-code/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/poll/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/api-key-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/import-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/move/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/usage/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/client/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/monitor/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/permissions/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/routing/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/shares/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/visibility/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/catalog/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/recalculate/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-health/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/openai-compatible/manage/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/[id]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/ai-models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/analyze/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/history/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/restart/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-1ae9897b4a00731e.js +0 -1
- package/app/.next-cli-build/static/css/b5abfe9c2085ba8e.css +0 -1
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.41-to-5.3.43-5.3.43-20260822-131146/data.sqlite +0 -0
- /package/app/.next-cli-build/static/{WzpaETe2CHJPwZBBssQBx → L_h01kCNsdvHq-NfbF9cq}/_ssgManifest.js +0 -0
|
@@ -455,4 +455,4 @@
|
|
|
455
455
|
transition: none;
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
|
-
`}),a]})}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},21820:a=>{"use strict";a.exports=require("os")},22550:(a,b,c)=>{Promise.resolve().then(c.bind(c,48754))},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30746:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\resource-monitor\\\\layout.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\layout.js","default")},31915:(a,b,c)=>{Promise.resolve().then(c.bind(c,41199))},33873:a=>{"use strict";a.exports=require("path")},34174:(a,b,c)=>{Promise.resolve().then(c.bind(c,18548))},34631:a=>{"use strict";a.exports=require("tls")},38522:a=>{"use strict";a.exports=require("node:zlib")},39528:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>y,handler:()=>A,routeModule:()=>z});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,32059))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30508))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),t=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30746))),u=(0,d.p)(()=>Promise.resolve().then(c.bind(c,48754))),v=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),w={children:["",{children:["(dashboard)",{children:["dashboard",{children:["resource-monitor",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,41199))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\page.js"]}]},{layout:[t,"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\layout.js"],template:[u,"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\template.js"],"global-error":[v,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,x=(0,e.H)({tree:w,page:"/(dashboard)/dashboard/resource-monitor/page",pathname:"/dashboard/resource-monitor",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),y=x.__next_app__,z=x.routeModule,A=x.handler},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41199:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\resource-monitor\\\\page.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\page.js","default")},41204:a=>{"use strict";a.exports=require("string_decoder")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},46293:a=>{"use strict";a.exports=require("sql.js")},48754:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\resource-monitor\\\\template.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\template.js","default")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},56194:(a,b,c)=>{Promise.resolve().then(c.bind(c,30746))},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{"use strict";a.exports=import("pg")},66136:a=>{"use strict";a.exports=require("timers")},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},74346:(a,b,c)=>{Promise.resolve().then(c.bind(c,10040))},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")},96703:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>bQ});var d=c(48249),e=c(67484),f=c(48679),g=c(21621),h=c(5277),i=c(22393),j=c(54206),k=c(79751),l=c(53330),m=c(53935),n=c(75556),o=["axis"],p=(0,e.forwardRef)((a,b)=>e.createElement(n.P,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:o,tooltipPayloadSearcher:m.uN,categoricalChartProps:a,ref:b})),q=c(74429),r=c(93223),s=c(73919),t=c(99314),u=c(54702);let v=Math.cos,w=Math.sin,x=Math.sqrt,y=Math.PI,z=2*y,A={draw(a,b){let c=x(b/y);a.moveTo(c,0),a.arc(0,0,c,0,z)}},B=x(1/3),C=2*B,D=w(y/10)/w(7*y/10),E=w(z/10)*D,F=-v(z/10)*D,G=x(3),H=x(3)/2,I=1/x(12),J=(I/2+1)*3;var K=c(99608),L=c(85922);x(3),x(3);var M=c(1791),N=c(50149),O=["type","size","sizeType"];function P(){return(P=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function Q(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function R(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?Q(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):Q(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}var S={symbolCircle:A,symbolCross:{draw(a,b){let c=x(b/5)/2;a.moveTo(-3*c,-c),a.lineTo(-c,-c),a.lineTo(-c,-3*c),a.lineTo(c,-3*c),a.lineTo(c,-c),a.lineTo(3*c,-c),a.lineTo(3*c,c),a.lineTo(c,c),a.lineTo(c,3*c),a.lineTo(-c,3*c),a.lineTo(-c,c),a.lineTo(-3*c,c),a.closePath()}},symbolDiamond:{draw(a,b){let c=x(b/C),d=c*B;a.moveTo(0,-c),a.lineTo(d,0),a.lineTo(0,c),a.lineTo(-d,0),a.closePath()}},symbolSquare:{draw(a,b){let c=x(b),d=-c/2;a.rect(d,d,c,c)}},symbolStar:{draw(a,b){let c=x(.8908130915292852*b),d=E*c,e=F*c;a.moveTo(0,-c),a.lineTo(d,e);for(let b=1;b<5;++b){let f=z*b/5,g=v(f),h=w(f);a.lineTo(h*c,-g*c),a.lineTo(g*d-h*e,h*d+g*e)}a.closePath()}},symbolTriangle:{draw(a,b){let c=-x(b/(3*G));a.moveTo(0,2*c),a.lineTo(-G*c,-c),a.lineTo(G*c,-c),a.closePath()}},symbolWye:{draw(a,b){let c=x(b/J),d=c/2,e=c*I,f=c*I+c,g=-d;a.moveTo(d,e),a.lineTo(d,f),a.lineTo(g,f),a.lineTo(-.5*d-H*e,H*d+-.5*e),a.lineTo(-.5*d-H*f,H*d+-.5*f),a.lineTo(-.5*g-H*f,H*g+-.5*f),a.lineTo(-.5*d+H*e,-.5*e-H*d),a.lineTo(-.5*d+H*f,-.5*f-H*d),a.lineTo(-.5*g+H*f,-.5*f-H*g),a.closePath()}}},T=Math.PI/180,U=a=>{var b=a.type,c=void 0===b?"circle":b,d=a.size,f=void 0===d?64:d,g=a.sizeType,h=void 0===g?"area":g,i=R(R({},function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,O)),{},{type:c,size:f,sizeType:h}),j="circle";"string"==typeof c&&(j=c);var k=i.className,l=i.cx,m=i.cy,n=(0,N.a)(i);return(0,M.Et)(l)&&(0,M.Et)(m)&&(0,M.Et)(f)?e.createElement("path",P({},n,{className:(0,t.$)("recharts-symbols",k),transform:"translate(".concat(l,", ").concat(m,")"),d:(()=>{var a,b=(a=j,S["symbol".concat((0,M.Zb)(a))]||A),c=(function(a,b){let c=null,d=(0,L.i)(e);function e(){let e;if(c||(c=e=d()),a.apply(this,arguments).draw(c,+b.apply(this,arguments)),e)return c=null,e+""||null}return a="function"==typeof a?a:(0,K.A)(a||A),b="function"==typeof b?b:(0,K.A)(void 0===b?64:+b),e.type=function(b){return arguments.length?(a="function"==typeof b?b:(0,K.A)(b),e):a},e.size=function(a){return arguments.length?(b="function"==typeof a?a:(0,K.A)(+a),e):b},e.context=function(a){return arguments.length?(c=null==a?null:a,e):c},e})().type(b).size(((a,b,c)=>{if("area"===b)return a;switch(c){case"cross":return 5*a*a/9;case"diamond":return .5*a*a/Math.sqrt(3);case"square":return a*a;case"star":var d=18*T;return 1.25*a*a*(Math.tan(d)-Math.tan(2*d)*Math.tan(d)**2);case"triangle":return Math.sqrt(3)*a*a/4;case"wye":return(21-10*Math.sqrt(3))*a*a/8;default:return Math.PI*a*a/4}})(f,h,j))();if(null!==c)return c})()})):null};U.registerSymbol=(a,b)=>{S["symbol".concat((0,M.Zb)(a))]=b};var V=c(64635),W=c(69599);function X(){return(X=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function Y(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function Z(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?Y(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):Y(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}var $={align:"center",iconSize:14,inactiveColor:"#ccc",layout:"horizontal",verticalAlign:"middle",labelStyle:{}};function _(a){var b=a.data,c=a.iconType,d=a.inactiveColor,f=32/6,g=32/3,h=b.inactive?d:b.color,i=null!=c?c:b.type;if("none"===i)return null;if("plainline"===i)return e.createElement("line",{strokeWidth:4,fill:"none",stroke:h,strokeDasharray:function(a){if("object"==typeof a&&null!==a&&"strokeDasharray"in a)return String(a.strokeDasharray)}(b.payload),x1:0,y1:16,x2:32,y2:16,className:"recharts-legend-icon"});if("line"===i)return e.createElement("path",{strokeWidth:4,fill:"none",stroke:h,d:"M0,".concat(16,"h").concat(g,"\n A").concat(f,",").concat(f,",0,1,1,").concat(2*g,",").concat(16,"\n H").concat(32,"M").concat(2*g,",").concat(16,"\n A").concat(f,",").concat(f,",0,1,1,").concat(g,",").concat(16),className:"recharts-legend-icon"});if("rect"===i)return e.createElement("path",{stroke:"none",fill:h,d:"M0,".concat(4,"h").concat(32,"v").concat(24,"h").concat(-32,"z"),className:"recharts-legend-icon"});if(e.isValidElement(b.legendIcon)){var j=Z({},b);return delete j.legendIcon,e.cloneElement(b.legendIcon,j)}return e.createElement(U,{fill:h,cx:16,cy:16,size:32,sizeType:"diameter",type:i})}function aa(a){var b=a.payload,c=a.iconSize,d=a.layout,f=a.formatter,g=a.inactiveColor,h=a.iconType,i=a.labelStyle,j={x:0,y:0,width:32,height:32},k={display:"horizontal"===d?"inline-block":"block",marginRight:10,whiteSpace:"nowrap"},l={display:"inline-block",verticalAlign:"middle",marginRight:4};return b.map((b,d)=>{var m=b.formatter||f,n=(0,t.$)({"recharts-legend-item":!0,["legend-item-".concat(d)]:!0,inactive:b.inactive});if("none"===b.type)return null;var o="object"==typeof i?Z({},i):{};o.color=b.inactive?g:o.color||b.color,null!=o.whiteSpace||(o.whiteSpace="normal"),null!=o.overflowWrap||(o.overflowWrap="break-word");var p=m?m(b.value,b,d):b.value;return e.createElement("li",X({className:n,style:k,key:"legend-item-".concat(d)},(0,V.XC)(a,b,d)),e.createElement(u.u,{width:c,height:c,viewBox:j,style:l,"aria-label":null==b.value?"legend icon":"".concat(b.value," legend icon")},e.createElement(_,{data:b,iconType:h,inactiveColor:g})),e.createElement("span",{className:"recharts-legend-item-text",style:o},p))})}var ab=a=>{var b=(0,W.e)(a,$),c=b.payload,d=b.layout,f=b.align;return c&&c.length?e.createElement("ul",{className:"recharts-default-legend",style:{padding:0,margin:0,textAlign:"horizontal"===d?f:"left"}},e.createElement(aa,X({},b,{payload:c}))):null},ac=c(46406),ad=c(32671),ae=c(7795),af=c(12450),ag=c(55644);c(46154);var ah=c(66762),ai=c(32362),aj=c(15279),ak=(0,ai.Mz)([aj.Lp,aj.A$,aj.HK],(a,b,c)=>({x:c.left||0,y:c.top||0,width:Math.max(a-(c.left||0)-(c.right||0),0),height:Math.max(b-(c.top||0)-(c.bottom||0),0)})),al=c(27603),am=["contextPayload"];function an(){return(an=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function ao(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function ap(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function aq(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ap(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ap(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function ar(a){return a.value}function as(a){var b=a.contextPayload,c=function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,am),d=(0,ac.s)(b,a.payloadUniqBy,ar),f=aq(aq({},c),{},{payload:d});return e.isValidElement(a.content)?e.cloneElement(a.content,f):"function"==typeof a.content?e.createElement(a.content,f):e.createElement(ab,f)}function at(a){return a.align,a.layout,a.verticalAlign,a.itemSorter,a.position,a.offset,(0,ad.j)(),null}function au(a){return a.width,a.height,(0,ad.j)(),null}var av={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0},aw=e.memo(function(a){var b,c,d,f,g,h,i,j,k,l,m,n,o,p,t,u,v,w=(0,W.e)(a,av),x=a.layout&&"auto"!==a.layout?a.layout:"left"===(b=w.position)||"right"===b||"insideLeft"===b||"insideRight"===b?"vertical":"horizontal",y=(0,ad.G)(ae.g0),z=(0,s.M)(),A=(0,ag.Kp)(),B=(0,ad.G)(a=>{var b;return null==(b=w.position)?null:(0,r.x)(b)?ak(a):(0,al.Ds)(a)}),C=w.width,D=w.height,E=w.wrapperStyle,F=w.portal,G=null==F&&(null==w.position||(0,r.x)(w.position)),H=function(a){if(Array.isArray(a))return a}(c=(0,af.V)([y]))||function(a){var b=null==a?null:"u">typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=b){var c,d,e,f,g=[],h=!0,i=!1;try{e=(b=b.call(a)).next,!1;for(;!(h=(c=e.call(b)).done)&&(g.push(c.value),2!==g.length);h=!0);}catch(a){i=!0,d=a}finally{try{if(!h&&null!=b.return&&(f=b.return(),Object(f)!==f))return}finally{if(i)throw d}}return g}}(c)||function(a){if(a){if("string"==typeof a)return ao(a,2);var b=({}).toString.call(a).slice(8,-1);return"Object"===b&&a.constructor&&(b=a.constructor.name),"Map"===b||"Set"===b?Array.from(a):"Arguments"===b||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(b)?ao(a,2):void 0}}(c)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),I=H[0],J=H[1],K=(0,ag.yi)(),L=(0,ag.rY)();if(null==K||null==L||null!=w.position&&null==B)return null;var M=K-((null==A?void 0:A.left)||0)-((null==A?void 0:A.right)||0),N="vertical"===x&&null!=D?{height:D}:"horizontal"===x?{width:C||M}:null,O=null==w.position?null:(0,r._)({viewBox:null!=B?B:{x:0,y:0,width:K,height:L},position:w.position,offset:null!=(l=w.offset)?l:0}),P=(d=w.position,f=null!=(m=w.offset)?m:0,"top"===d?{top:I.height+f}:"bottom"===d?{top:-I.height-f}:"left"===d?{left:I.width+f}:"right"===d?{left:-I.width-f}:{}),Q="vertical"===x?(null!=(n=null==B?void 0:B.width)?n:0)/2:null!=(o=null==B?void 0:B.width)?o:0,R="horizontal"===x?(null!=(p=null==B?void 0:B.height)?p:0)/2:null!=(t=null==B?void 0:B.height)?t:0,S=O?{width:"max-content",height:"max-content",maxWidth:Q,maxHeight:R,overflowY:"auto",top:O.y+(null!=(u=P.top)?u:0),left:O.x+(null!=(v=P.left)?v:0),transform:function(a,b){if("start"===a&&"start"===b)return"";var c,d=null!=(c=({start:"0",middle:"-50%",end:"-100%"})[b])?c:"0";return"translate(".concat("inherit"===a?"0":({start:"0",middle:"-50%",end:"-100%"})[a],", ").concat(d,")")}(O.horizontalAnchor,O.verticalAnchor)}:(i=w.layout,j=w.align,k=w.verticalAlign,E&&(void 0!==E.left&&null!==E.left||void 0!==E.right&&null!==E.right)||(g="center"===j&&"vertical"===i?{left:((K||0)-I.width)/2}:"right"===j?{right:A&&A.right||0}:{left:A&&A.left||0}),E&&(void 0!==E.top&&null!==E.top||void 0!==E.bottom&&null!==E.bottom)||(h="middle"===k?{top:((L||0)-I.height)/2}:"bottom"===k?{bottom:A&&A.bottom||0}:{top:A&&A.top||0}),aq(aq({},g),h)),T=F?E:aq(aq({position:"absolute",width:(null==N?void 0:N.width)||C||"auto",height:(null==N?void 0:N.height)||D||"auto"},S),E),U=null!=F?F:z;if(null==U||null==y)return null;var V=e.createElement("div",{className:"recharts-legend-wrapper",style:T,ref:J},e.createElement(at,{layout:x,align:w.align,verticalAlign:w.verticalAlign,itemSorter:w.itemSorter,position:w.position,offset:w.offset}),G&&e.createElement(au,I),e.createElement(as,an({},w,{layout:x},N,{margin:A,chartWidth:K,chartHeight:L,contextPayload:y})));return(0,q.createPortal)(V,U)},ah.P);aw.displayName="Legend";var ax=c(40948),ay=c(85167),az=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function aA(){return(aA=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function aB(a,b){return"".concat(b,"px ").concat(a,"px")}var aC=c(59798),aD=c(47459),aE=c(83521),aF=c(21480),aG=c(16216),aH=c(36136),aI=c(443),aJ=["children"],aK=(0,e.createContext)({data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0});function aL(a){var b=a.children,c=function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,aJ);return e.createElement(aK.Provider,{value:c},b)}var aM=c(10059),aN=c(70383),aO=c(25644),aP=c(27382),aQ=(a,b,c,d)=>(0,aP.Gx)(a,"xAxis",b,d),aR=(a,b,c,d)=>(0,aP.CR)(a,"xAxis",b,d),aS=(a,b,c,d)=>(0,aP.Gx)(a,"yAxis",c,d),aT=(a,b,c,d)=>(0,aP.CR)(a,"yAxis",c,d),aU=(0,ai.Mz)([ag.fz,aQ,aS,aR,aT],(a,b,c,d,e)=>(0,aG._L)(a,"xAxis")?(0,aG.Hj)(b,d,!1):(0,aG.Hj)(c,e,!1));function aV(a){return"line"===a.type}var aW=(0,ai.Mz)([aP.ld,(a,b,c,d,e)=>e],(a,b)=>a.filter(aV).find(a=>a.id===b)),aX=(0,ai.Mz)([ag.fz,aQ,aS,aR,aT,aW,aU,aO.k$],(a,b,c,d,e,f,g,h)=>{var i,j=h.chartData,k=h.dataStartIndex,l=h.dataEndIndex;if(null!=f&&null!=b&&null!=c&&null!=d&&null!=e&&0!==d.length&&0!==e.length&&null!=g&&("horizontal"===a||"vertical"===a)){var m,n,o,p,q,r,s,t,u=f.dataKey,v=f.data;if(null!=(i=null!=v&&v.length>0?v:null==j?void 0:j.slice(k,l+1))){return n=(m={layout:a,xAxis:b,yAxis:c,xAxisTicks:d,yAxisTicks:e,dataKey:u,bandSize:g,displayedData:i}).layout,o=m.xAxis,p=m.yAxis,q=m.xAxisTicks,r=m.yAxisTicks,s=m.dataKey,t=m.bandSize,m.displayedData.map((a,b)=>{var c=(0,aG.kr)(a,s);if("horizontal"===n){var d=(0,aG.nb)({axis:o,ticks:q,bandSize:t,entry:a,index:b}),e=(0,M.uy)(c)?null:p.scale.map(c);return{x:d,y:null!=e?e:null,value:c,payload:a}}var f=(0,M.uy)(c)?null:o.scale.map(c),g=(0,aG.nb)({axis:p,ticks:r,bandSize:t,entry:a,index:b});return null==f||null==g?null:{x:f,y:g,value:c,payload:a}}).filter(Boolean)}}}),aY=c(82118),aZ=c(99659),a$=c(64644),a_=c(30069),a0=c(26674),a1=c(93021),a2=c(70719),a3=c(1432),a4=c(61368),a5=c(17947),a6=c(6859),a7=["id"],a8=["type","layout","connectNulls","needClip","shape","strokeDasharray"],a9=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function ba(){return(ba=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function bb(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function bc(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function bd(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?bc(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):bc(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}var be={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:(a,b)=>{if(null==a)return[];if(1===b)return a.flatMap(a=>"removed"===a.status?[]:[a.next]);var c=function(a){var b=0,c=0;for(var d of a)"matched"===d.status&&null!=d.prev.x&&null!=d.next.x&&(b+=d.next.x-d.prev.x,c++);return c>0?b/c:0}(a),d=[];for(var e of a)if("matched"===e.status)d.push(bd(bd({},e.next),{},{x:(0,M.GW)(e.prev.x,e.next.x,b),y:(0,M.GW)(e.prev.y,e.next.y,b)}));else if("added"===e.status)if(null!=e.next.x){var f=e.next.x-c;d.push(bd(bd({},e.next),{},{x:(0,M.GW)(f,e.next.x,b),y:e.next.y}))}else d.push(e.next);else if("removed"===e.status&&null!=e.prev.x){var g=e.prev.x+c;d.push(bd(bd({},e.prev),{},{x:(0,M.GW)(e.prev.x,g,b),y:e.prev.y}))}return d},animationMatchBy:a$.hC,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:function(a){a.animationElapsedTime,a.isAnimating,a.isEntrance;var b=a.visibleLength,c=a.strokeDasharray,d=a.connectNulls,f=function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,az);if(null!=b){var g,h,i=f.pathRef,j=function(a){try{return a&&a.getTotalLength&&a.getTotalLength()||0}catch(a){return 0}}(null!=(h=null==i?void 0:i.current)?h:null);g=c?function(a,b,c){var d=c.length%2!=0?[...c,...c]:c,e=d.reduce((a,b)=>a+b,0);if(!e)return aB(b,a);for(var f=Math.floor(a/e),g=a%e,h=[],i=0,j=0;i<d.length;j+=null!=(k=d[i])?k:0,++i){var k,l=d[i];if(null!=l&&j+l>g){h=[...d.slice(0,i),g-j];break}}var m=h.length%2==0?[0,b]:[b];return[...function(a,b){for(var c=[],d=0;d<b;++d)c.push(...a);return c}(d,f),...h,...m].map(a=>"".concat(a,"px")).join(", ")}(b,j,"".concat(c).split(/[,\s]+/gim).map(a=>parseFloat(a))):aB(j,b)}else null!=c&&(g=String(c));return e.createElement(ay.Ip,aA({},f,{connectNulls:null!=d&&d,strokeDasharray:g}))},stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:a6.I.line,type:"linear"},bf=e.memo(a=>{var b=a.dataKey,c=a.data,d=a.stroke,f=a.strokeWidth,g=a.fill,h=a.name,i=a.hide,j=a.unit,k=a.formatter,l=a.tooltipType,m=a.id,n={dataDefinedOnItem:c,getPosition:M.lQ,settings:{stroke:d,strokeWidth:f,fill:g,dataKey:b,nameKey:void 0,name:(0,aG.uM)(h,b),hide:i,type:l,color:d,unit:j,formatter:k,graphicalItemId:m}};return e.createElement(aI.r,{tooltipEntrySettings:n})});function bg(a){var b=a.clipPathId,c=a.points,d=a.props,f=d.dot,g=d.dataKey,h=d.needClip;d.id;var i=bb(d,a7),j=(0,a2.uZ)(i);return e.createElement(aE.n,{points:c,dot:f,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:g,baseProps:j,needClip:h,clipPathId:b})}function bh(a){var b=a.showLabels,c=a.children,d=a.points,f=(0,e.useMemo)(()=>null==d?void 0:d.map(a=>{var b,c,d={x:null!=(b=a.x)?b:0,y:null!=(c=a.y)?c:0,width:0,lowerWidth:0,upperWidth:0,height:0};return bd(bd({},d),{},{value:a.value,payload:a.payload,viewBox:d,parentViewBox:void 0,fill:void 0})}),[d]);return e.createElement(aD.h8,{value:b?f:void 0},c)}function bi(a){var b=a.clipPathId,c=a.pathRef,d=a.points,f=a.props,g=a.animationElapsedTime,h=a.isAnimating,i=a.isEntrance,j=a.visibleLength,k=f.type,l=f.layout,m=f.connectNulls,n=f.needClip,o=f.shape,p=f.strokeDasharray,q=bb(f,a8),r=bd(bd({},(0,N.a)(q)),{},{fill:"none",className:"recharts-line-curve",clipPath:n?"url(#clipPath-".concat(b,")"):void 0,points:d,type:k,layout:l,connectNulls:m,strokeDasharray:null!=p?p:f.strokeDasharray,pathRef:c,animationElapsedTime:g,isAnimating:h,isEntrance:!!f.animateNewValues&&i,visibleLength:j});return e.createElement(e.Fragment,null,(null==d?void 0:d.length)>1&&e.createElement(a4.y,{option:o,DefaultShape:be.shape,shapeProps:r}),e.createElement(bg,{points:d,clipPathId:b,props:f}))}function bj(a){var b,c,d,f,g=a.clipPathId,h=a.props,i=a.pathRef,j=a.previousPointsRef,k=h.points,l=h.isAnimationActive,m=h.animationBegin,n=h.animationDuration,o=h.animationEasing,p=h.animationMatchBy,q=h.animationInterpolateFn,r=h.layout,s=function(a){try{return a&&a.getTotalLength&&a.getTotalLength()||0}catch(a){return 0}}(i.current),t=(0,aZ.I)(h.onAnimationStart,h.onAnimationEnd),u=t.isAnimating,v=t.handleAnimationStart,w=t.handleAnimationEnd,x=(b=(0,e.useRef)(0),c=(0,e.useRef)(0),d=(0,e.useRef)(!1),(f=(0,e.useRef)(k)).current!==k&&(b.current=c.current,f.current=k),(0,e.useCallback)((a,e)=>{if(d.current)return null;var f=Math.min((0,aC.L)(b.current+a*e),e);return a>0&&e>0&&(c.current=Math.max(c.current,f),f>=e)?(d.current=!0,null):f},[])),y=(0,e.useCallback)(a=>a>0&&s>0,[s]);return e.createElement(bh,{points:k,showLabels:!u},h.children,e.createElement(aZ.U,{animationInput:k,animationIdPrefix:"recharts-line-",items:k,previousItemsRef:j,isAnimationActive:l,animationBegin:m,animationDuration:n,animationEasing:o,onAnimationStart:v,onAnimationEnd:w,animationInterpolateFn:q,animationMatchBy:p,shouldUpdatePreviousRef:y,layout:r},(a,b,c)=>{var d=u||b<1,f=d?x(b,s):null;return e.createElement(bi,{props:h,points:a,clipPathId:g,pathRef:i,animationElapsedTime:b,isAnimating:d,isEntrance:c,visibleLength:f})}),e.createElement(aD.qY,{label:h.label}))}function bk(a){var b=a.clipPathId,c=a.props,d=(0,e.useRef)(null),f=(0,e.useRef)(null);return e.createElement(bj,{props:c,clipPathId:b,previousPointsRef:d,pathRef:f})}var bl=(a,b)=>{var c,d;return{x:null!=(c=a.x)?c:void 0,y:null!=(d=a.y)?d:void 0,value:a.value,errorVal:(0,aG.kr)(a.payload,b)}};class bm extends e.Component{render(){var a=this.props,b=a.hide,c=a.dot,d=a.points,f=a.className,g=a.xAxisId,h=a.yAxisId,i=a.top,j=a.left,k=a.width,l=a.height,m=a.id,n=a.needClip,o=a.zIndex;if(b)return null;var p=(0,t.$)("recharts-line",f),q=(0,a3.x)(c),r=q.r,s=q.strokeWidth,u=(0,aF.y$)(c),v=2*r+s,w=n?"url(#clipPath-".concat(u?"":"dots-").concat(m,")"):void 0;return e.createElement(a5.g,{zIndex:o},e.createElement(ax.W,{className:p},n&&e.createElement("defs",null,e.createElement(aM.Q,{clipPathId:m,xAxisId:g,yAxisId:h}),!u&&e.createElement("clipPath",{id:"clipPath-dots-".concat(m)},e.createElement("rect",{x:j-v/2,y:i-v/2,width:k+v,height:l+v}))),e.createElement(aL,{xAxisId:g,yAxisId:h,data:d,dataPointFormatter:bl,errorBarOffset:0},e.createElement(bk,{props:this.props,clipPathId:m}))),e.createElement(aH.W,{activeDot:this.props.activeDot,points:d,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}}function bn(a){var b=(0,W.e)(a,be),c=b.activeDot,d=b.animateNewValues,f=b.animationBegin,g=b.animationDuration,h=b.animationEasing,i=b.connectNulls,j=b.dot,k=b.hide,l=b.isAnimationActive,m=b.label,n=b.legendType,o=b.xAxisId,p=b.yAxisId,q=b.id,r=bb(b,a9),s=(0,aM.l)(o,p).needClip,t=(0,a_.oM)(),u=(0,ag.WX)(),v=(0,aN.r)(),w=(0,ad.G)(a=>aX(a,o,p,v,q));if("horizontal"!==u&&"vertical"!==u||null==w||null==t)return null;var x=t.height,y=t.width,z=t.x,A=t.y;return e.createElement(bm,ba({},r,{id:q,connectNulls:i,dot:j,activeDot:c,animateNewValues:d,animationBegin:f,animationDuration:g,animationEasing:h,isAnimationActive:l,hide:k,label:m,legendType:n,xAxisId:o,yAxisId:p,points:w,layout:u,height:x,width:y,left:z,top:A,needClip:s}))}var bo=e.memo(function(a){var b=(0,W.e)(a,be),c=(0,aN.r)();return e.createElement(a0.x,{id:b.id,type:"line"},a=>{var d,f,g,h;return e.createElement(e.Fragment,null,e.createElement(aY.A,{legendPayload:(d=b.dataKey,f=b.name,g=b.stroke,h=b.legendType,[{inactive:b.hide,dataKey:d,type:h,color:g,value:(0,aG.uM)(f,d),payload:b}])}),e.createElement(bf,{dataKey:b.dataKey,data:b.data,stroke:b.stroke,strokeWidth:b.strokeWidth,fill:b.fill,name:b.name,hide:b.hide,unit:b.unit,formatter:b.formatter,tooltipType:b.tooltipType,id:a}),e.createElement(a1.p,{type:"line",id:a,data:b.data,xAxisId:b.xAxisId,yAxisId:b.yAxisId,zAxisId:0,dataKey:b.dataKey,hide:b.hide,isPanorama:c}),e.createElement(bn,ba({},b,{id:a})))})},ah.P);bo.displayName="Line";var bp=c(75171),bq=c(99070),br=c(83552),bs=c(95145),bt=c(4770);let bu={name:"",host:"",sshPort:"22",sshUser:"",sshPassword:"",useSudo:!0,sudoPassword:"",agentPort:"19998",installAgent:!0};function bv(a){var b;let c;return!!a?.lastStatus&&(!a.lastError||Date.now()-(Number.isFinite(c=(b=a?.lastStatusAt)?new Date(b).getTime():0)?c:0)<=3e4)}function bw(a){return Math.max(0,Math.min(100,Number(a)||0))}function bx(a,b=1){let c=Number(a)||0;if(!c)return"0 B";let d=["B","KB","MB","GB","TB","PB"],e=Math.min(d.length-1,Math.floor(Math.log(c)/Math.log(1024)));return`${(c/1024**e).toFixed(e>2?b:0)} ${d[e]}`}function by(a){return a?new Date(a).toLocaleTimeString("vi-VN",{hour12:!1}):"--:--:--"}function bz({value:a,label:b,detail:c,color:e="var(--color-brand-500)",icon:f}){let g=bw(a),h=2*Math.PI*49;return(0,d.jsxs)("div",{className:"flex min-w-0 flex-col items-center",children:[(0,d.jsxs)("div",{className:"relative h-36 w-36",children:[(0,d.jsxs)("svg",{className:"h-full w-full -rotate-90",viewBox:"0 0 120 120","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"60",cy:"60",r:49,fill:"none",stroke:"var(--color-surface-2)",strokeWidth:"8"}),(0,d.jsx)("circle",{cx:"60",cy:"60",r:49,fill:"none",stroke:e,strokeWidth:"8",strokeLinecap:"round",strokeDasharray:h,strokeDashoffset:h*(1-g/100),className:"transition-all duration-700"})]}),(0,d.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center text-center",children:[f?(0,d.jsx)("span",{className:"material-symbols-outlined mb-0.5 text-[19px] text-text-muted",children:f}):null,(0,d.jsxs)("strong",{className:"text-2xl font-semibold tracking-tight text-text-main",children:[g.toFixed(+(g<10)),"%"]}),(0,d.jsx)("span",{className:"mt-0.5 text-xs font-medium text-text-muted",children:b})]})]}),(0,d.jsx)("div",{className:"mt-2 max-w-full truncate text-center text-xs text-text-subtle",title:c,children:c})]})}function bA({online:a}){return(0,d.jsx)("span",{className:`h-2.5 w-2.5 shrink-0 rounded-full ${a?"bg-emerald-500 shadow-[0_0_0_4px_rgba(16,185,129,.12)]":"bg-red-400 shadow-[0_0_0_4px_rgba(248,113,113,.12)]"}`})}function bB({servers:a,selectedId:b,onSelect:c}){return(0,d.jsx)("div",{className:"flex gap-3 overflow-x-auto pb-1 scroll-thin-x",children:a.map(a=>{let e=a.id===b,f=bv(a);return(0,d.jsxs)("button",{type:"button",onClick:()=>c(a.id),className:`min-w-[420px] rounded-2xl border p-5 text-left transition ${e?"border-primary bg-primary/5 shadow-[var(--shadow-warm)]":"border-border bg-surface hover:border-primary/40"}`,children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(bA,{online:f}),(0,d.jsx)("div",{className:"truncate text-base font-semibold text-text-main",children:a.name})]}),(0,d.jsxs)("div",{className:"mt-1.5 truncate font-mono text-sm text-text-muted",children:[a.host,":",a.agentPort]})]}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[22px] text-text-subtle",children:"dns"})]}),(0,d.jsxs)("div",{className:"mt-3 flex items-center justify-between text-sm text-text-muted",children:[(0,d.jsx)("span",{children:f?"Đang hoạt động":"Mất kết nối"}),(0,d.jsx)("span",{children:by(a.lastStatusAt)})]})]},a.id)})})}function bC({icon:a,label:b,value:c,sublabel:e,colorClass:f="text-primary",children:g}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-4 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-surface-2 ${f}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[22px]",children:a})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wider text-text-muted",children:b}),(0,d.jsx)("div",{className:"mt-0.5 truncate text-lg font-semibold text-text-main",children:c})]})]}),e?(0,d.jsx)("div",{className:"mt-3 truncate text-xs text-text-subtle",children:e}):null,g]})}function bD({data:a,dataKey:b,label:c,color:e,unit:m="%"}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-5 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,d.jsx)("h3",{className:"font-semibold text-text-main",children:c}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"60 mẫu gần nhất"})]}),(0,d.jsx)("div",{className:"h-44",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(g.Q,{data:a,margin:{top:6,right:4,left:-22,bottom:0},children:[(0,d.jsx)("defs",{children:(0,d.jsxs)("linearGradient",{id:`fill-${b}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"0%",stopColor:e,stopOpacity:.3}),(0,d.jsx)("stop",{offset:"100%",stopColor:e,stopOpacity:.02})]})}),(0,d.jsx)(h.d,{stroke:"var(--color-border-subtle)",strokeDasharray:"4 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"time",hide:!0}),(0,d.jsx)(j.h,{domain:[0,"auto"],tick:{fill:"var(--color-text-subtle)",fontSize:11},axisLine:!1,tickLine:!1}),(0,d.jsx)(k.m,{contentStyle:{background:"var(--color-surface)",border:"1px solid var(--color-border)",borderRadius:12,fontSize:12},formatter:a=>[`${Number(a).toFixed(1)}${m}`,c]}),(0,d.jsx)(l.Gk,{type:"monotone",dataKey:b,stroke:e,fill:`url(#fill-${b})`,strokeWidth:2.2,dot:!1,isAnimationActive:!1})]})})})]})}let bE=["#10b981","#06b6d4","#8b5cf6","#f59e0b","#ef4444","#3b82f6","#ec4899","#84cc16"];function bF(a){return a?.uuid||`index-${a?.index??0}`}function bG({data:a,gpus:b}){let c=(b||[]).map((a,b)=>({id:bF(a),dataKey:`gpu${b}`,name:`GPU ${a.index} \xb7 ${a.name}`,color:bE[b%bE.length]})),e=a.map(a=>{let b={time:a.time};return c.forEach(c=>{let d=a.gpus?.find(a=>a.id===c.id);b[c.dataKey]=d?.usagePercent??null}),b});return(0,d.jsxs)("div",{className:"mb-5 rounded-2xl border border-border bg-surface p-5 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"mb-4 flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main",children:"GPU usage history"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Mỗi đường biểu diễn mức tải realtime của một NVIDIA GPU."})]}),(0,d.jsx)("span",{className:"rounded-full bg-emerald-500/10 px-2.5 py-1 text-xs font-medium text-emerald-600 dark:text-emerald-400",children:"60 mẫu gần nhất"})]}),(0,d.jsx)("div",{className:"h-64",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(p,{data:e,margin:{top:8,right:12,left:-16,bottom:2},children:[(0,d.jsx)(h.d,{stroke:"var(--color-border-subtle)",strokeDasharray:"4 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"time",tickFormatter:by,minTickGap:36,tick:{fill:"var(--color-text-subtle)",fontSize:11},axisLine:!1,tickLine:!1}),(0,d.jsx)(j.h,{domain:[0,100],ticks:[0,25,50,75,100],tickFormatter:a=>`${a}%`,tick:{fill:"var(--color-text-subtle)",fontSize:11},axisLine:!1,tickLine:!1}),(0,d.jsx)(k.m,{contentStyle:{background:"var(--color-surface)",border:"1px solid var(--color-border)",borderRadius:12,fontSize:12},labelFormatter:a=>`Thời gian ${by(a)}`,formatter:(a,b)=>[`${Number(a).toFixed(1)}%`,b]}),(0,d.jsx)(aw,{iconType:"circle",iconSize:8,wrapperStyle:{fontSize:12,paddingTop:12},formatter:a=>(0,d.jsx)("span",{className:"text-text-muted",children:a})}),c.map(a=>(0,d.jsx)(bo,{type:"monotone",dataKey:a.dataKey,name:a.name,stroke:a.color,strokeWidth:2.4,dot:!1,connectNulls:!1,isAnimationActive:!1},a.id))]})})})]})}let bH=[{value:"1h",label:"1 giờ"},{value:"6h",label:"6 giờ"},{value:"24h",label:"24 giờ"},{value:"7d",label:"7 ng\xe0y"},{value:"30d",label:"30 ng\xe0y"}];function bI(a){return a?new Date(a).toLocaleString("vi-VN",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}):"—"}function bJ({title:a,description:b,data:c,series:e,domain:g=[0,100],valueFormatter:l=a=>`${Number(a).toFixed(1)}%`,axisFormatter:m=a=>`${a}%`}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-5 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"mb-4",children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main",children:a}),b?(0,d.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:b}):null]}),(0,d.jsx)("div",{className:"h-64",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(p,{data:c,margin:{top:8,right:12,left:-8,bottom:2},children:[(0,d.jsx)(h.d,{stroke:"var(--color-border-subtle)",strokeDasharray:"4 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"time",tickFormatter:bI,minTickGap:48,tick:{fill:"var(--color-text-subtle)",fontSize:10},axisLine:!1,tickLine:!1}),(0,d.jsx)(j.h,{domain:g,tickFormatter:m,width:58,tick:{fill:"var(--color-text-subtle)",fontSize:10},axisLine:!1,tickLine:!1}),(0,d.jsx)(k.m,{contentStyle:{background:"var(--color-surface)",border:"1px solid var(--color-border)",borderRadius:12,fontSize:12},labelFormatter:a=>bI(a),formatter:(a,b)=>[l(a),b]}),(0,d.jsx)(aw,{iconType:"circle",iconSize:8,wrapperStyle:{fontSize:12,paddingTop:12},formatter:a=>(0,d.jsx)("span",{className:"text-text-muted",children:a})}),e.map(a=>(0,d.jsx)(bo,{type:"monotone",dataKey:a.key,name:a.name,stroke:a.color,strokeWidth:2.2,dot:!1,connectNulls:!1,isAnimationActive:!1},a.key))]})})})]})}function bK({server:a,data:b,meta:c,period:f,onPeriodChange:g,loading:h,error:i}){let j=(0,e.useMemo)(()=>{let a=new Map;return b.forEach(b=>{(b.gpus||[]).forEach(b=>{a.has(b.id)||a.set(b.id,b)})}),[...a.values()].map((a,b)=>({id:a.id,key:`gpu${b}`,name:`GPU ${a.index} \xb7 ${a.name}`,color:bE[b%bE.length]}))},[b]),k=(0,e.useCallback)(a=>b.map(b=>{let c={time:b.time};return j.forEach(d=>{let e=b.gpus?.find(a=>a.id===d.id);c[d.key]=e?.[a]??null}),c}),[b,j]);return(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-4 border-b border-border px-6 py-5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-4",children:[(0,d.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl bg-violet-500/10 text-violet-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[27px]",children:"monitoring"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("h3",{className:"truncate text-lg font-semibold text-text-main",children:["Lịch sử \xb7 ",a.name]}),(0,d.jsxs)("p",{className:"mt-1 text-xs text-text-muted",children:["Sample mỗi ph\xfat \xb7 lưu tối đa ",c?.retentionDays||30," ng\xe0y"]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1 rounded-xl bg-surface-2 p-1",children:bH.map(a=>(0,d.jsx)("button",{type:"button",onClick:()=>g(a.value),className:`rounded-lg px-3 py-2 text-xs font-semibold transition ${f===a.value?"bg-surface text-primary shadow-sm":"text-text-muted hover:text-text-main"}`,children:a.label},a.value))})]}),h?(0,d.jsxs)("div",{className:"flex min-h-[420px] items-center justify-center text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mr-2 animate-spin",children:"progress_activity"}),"Đang tải dữ liệu lịch sử..."]}):i?(0,d.jsx)("div",{className:"m-6 rounded-2xl border border-red-500/20 bg-red-500/10 p-5 text-sm text-red-600 dark:text-red-300",children:i}):b.length?(0,d.jsxs)("div",{className:"space-y-5 p-6",children:[(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-3",children:[(0,d.jsx)(bC,{icon:"database",label:"Số điểm hiển thị",value:b.length.toLocaleString("vi-VN"),sublabel:`Bucket ${c?.bucketMinutes||1} ph\xfat`,colorClass:"text-violet-500"}),(0,d.jsx)(bC,{icon:"date_range",label:"Từ thời điểm",value:bI(b[0]?.time),sublabel:"Điểm đầu ti\xean trong khoảng đ\xe3 chọn",colorClass:"text-cyan-500"}),(0,d.jsx)(bC,{icon:"memory",label:"NVIDIA GPU",value:`${j.length} card`,sublabel:"Theo d\xf5i ri\xeang bằng GPU UUID",colorClass:"text-emerald-500"})]}),(0,d.jsxs)("div",{className:"grid gap-5 xl:grid-cols-2",children:[(0,d.jsx)(bJ,{title:"CPU, RAM & Disk usage",description:"Tỷ lệ sử dụng t\xe0i nguy\xean hệ thống theo thời gian.",data:b,series:[{key:"cpu",name:"CPU",color:"#3b9dec"},{key:"memory",name:"RAM",color:"#8b5cf6"},{key:"disk",name:"Disk",color:"#f59e0b"}]}),(0,d.jsx)(bJ,{title:"Network throughput",description:"Tốc độ nhận v\xe0 gửi trung b\xecnh trong mỗi bucket.",data:b,domain:[0,"auto"],series:[{key:"networkRxBps",name:"Download",color:"#06b6d4"},{key:"networkTxBps",name:"Upload",color:"#ec4899"}],valueFormatter:a=>`${bx(a)}/s`,axisFormatter:a=>bx(a)})]}),j.length?(0,d.jsxs)("div",{className:"grid gap-5 xl:grid-cols-2",children:[(0,d.jsx)(bJ,{title:"NVIDIA GPU usage",description:"Mức tải của từng GPU, ph\xe2n biệt theo UUID.",data:k("usagePercent"),series:j}),(0,d.jsx)(bJ,{title:"GPU VRAM usage",description:"Phần trăm VRAM đ\xe3 sử dụng tr\xean từng card.",data:k("memoryUsagePercent"),series:j}),(0,d.jsx)(bJ,{title:"GPU temperature",description:"Nhiệt độ trung b\xecnh của từng card trong mỗi bucket.",data:k("temperatureC"),domain:[0,"auto"],series:j,valueFormatter:a=>`${Number(a).toFixed(1)}\xb0C`,axisFormatter:a=>`${a}\xb0`}),(0,d.jsx)(bJ,{title:"GPU power draw",description:"C\xf4ng suất ti\xeau thụ trung b\xecnh của từng card.",data:k("powerDrawW"),domain:[0,"auto"],series:j,valueFormatter:a=>`${Number(a).toFixed(1)} W`,axisFormatter:a=>`${a}W`})]}):null]}):(0,d.jsxs)("div",{className:"flex min-h-[420px] flex-col items-center justify-center px-6 text-center",children:[(0,d.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl bg-violet-500/10 text-violet-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[34px]",children:"hourglass_empty"})}),(0,d.jsx)("h4",{className:"mt-5 font-semibold text-text-main",children:"Chưa c\xf3 dữ liệu lịch sử"}),(0,d.jsx)("p",{className:"mt-2 max-w-md text-sm leading-6 text-text-muted",children:"Collector đ\xe3 được bật v\xe0 sẽ ghi mẫu đầu ti\xean trong v\xf2ng một ph\xfat. Dữ liệu vẫn tiếp tục được thu thập khi kh\xf4ng mở dashboard."})]})]})}function bL({gpu:a}){let b=bw(a.memoryUsagePercent);return(0,d.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-border-subtle bg-gradient-to-r from-emerald-500/8 to-cyan-500/5 px-5 py-4",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-xl bg-emerald-500/10 text-emerald-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"memory"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"truncate font-semibold text-text-main",children:["GPU ",a.index," \xb7 ",a.name]}),(0,d.jsxs)("div",{className:"mt-0.5 text-xs text-text-muted",children:["NVIDIA Driver ",a.driverVersion||"—"]})]})]}),(0,d.jsx)("span",{className:"rounded-full bg-emerald-500/10 px-2.5 py-1 text-xs font-semibold text-emerald-600 dark:text-emerald-400",children:"NVIDIA"})]}),(0,d.jsxs)("div",{className:"grid gap-5 p-5 sm:grid-cols-[150px_1fr]",children:[(0,d.jsx)(bz,{value:a.usagePercent,label:"GPU Load",detail:`${a.temperatureC??"—"}\xb0C`,color:"#10b981"}),(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"VRAM"}),(0,d.jsxs)("span",{className:"font-semibold text-text-main",children:[bx(1048576*(a.memoryUsedMb||0))," /"," ",bx(1048576*(a.memoryTotalMb||0))]})]}),(0,d.jsx)("div",{className:"h-2.5 overflow-hidden rounded-full bg-surface-2",children:(0,d.jsx)("div",{className:"h-full rounded-full bg-emerald-500 transition-all duration-700",style:{width:`${b}%`}})}),(0,d.jsxs)("div",{className:"mt-1.5 text-right text-xs text-text-subtle",children:[b.toFixed(1),"% đ\xe3 d\xf9ng"]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("div",{className:"rounded-xl bg-surface-2 p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Nhiệt độ"}),(0,d.jsxs)("div",{className:"mt-1 text-lg font-semibold text-text-main",children:[a.temperatureC??"—","\xb0C"]})]}),(0,d.jsxs)("div",{className:"rounded-xl bg-surface-2 p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"C\xf4ng suất"}),(0,d.jsxs)("div",{className:"mt-1 text-lg font-semibold text-text-main",children:[a.powerDrawW??"—",(0,d.jsxs)("span",{className:"text-xs font-normal text-text-muted",children:[" ","/ ",a.powerLimitW??"—"," W"]})]})]})]})]})]})]})}function bM({open:a,onClose:b,onCreated:c}){let[f,g]=(0,e.useState)(bu),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(""),l=(a,b)=>g(c=>({...c,[a]:b})),m=async a=>{a.preventDefault(),i(!0),k("");try{let a=await fetch("/api/resource-monitor",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}),d=await a.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Kh\xf4ng thể th\xeam server");await c(d.server,d.install),b()}catch(a){k(a?.message||"Kh\xf4ng thể th\xeam server")}finally{i(!1)}};return(0,d.jsx)(bs.default,{isOpen:a,onClose:b,title:"Th\xeam Linux server",size:"xl",busy:h,footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(bq.default,{variant:"ghost",onClick:b,disabled:h,children:"Hủy"}),(0,d.jsx)(bq.default,{onClick:m,loading:h,icon:"rocket_launch",children:"C\xe0i agent & th\xeam server"})]}),children:(0,d.jsxs)("form",{onSubmit:m,className:"space-y-5",children:[(0,d.jsx)("div",{className:"rounded-xl border border-primary/20 bg-primary/5 p-4 text-sm text-text-muted",children:(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"auto_fix_high"}),(0,d.jsx)("p",{children:"BlueRouter sẽ SSH v\xe0o m\xe1y, d\xf9ng quyền sudo để c\xe0i Python agent dưới dạng systemd service. Sau lần n\xe0y bạn kh\xf4ng cần thao t\xe1c th\xeam tr\xean Linux."})]})}),(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,d.jsx)(br.default,{label:"T\xean hiển thị",value:f.name,onChange:a=>l("name",a.target.value),placeholder:"GPU Worker 01",icon:"dns"}),(0,d.jsx)(br.default,{required:!0,label:"Hostname / IP",value:f.host,onChange:a=>l("host",a.target.value),placeholder:"192.168.1.50",icon:"lan"}),(0,d.jsx)(br.default,{required:!0,label:"SSH user",value:f.sshUser,onChange:a=>l("sshUser",a.target.value),placeholder:"ubuntu",icon:"person"}),(0,d.jsx)(br.default,{label:"SSH port",type:"number",value:f.sshPort,onChange:a=>l("sshPort",a.target.value)}),(0,d.jsx)(br.default,{label:"SSH password",type:"password",value:f.sshPassword,onChange:a=>l("sshPassword",a.target.value),placeholder:"Để trống nếu d\xf9ng SSH key",hint:"Chỉ d\xf9ng trong l\xfac c\xe0i, kh\xf4ng lưu v\xe0o database."}),(0,d.jsx)(br.default,{label:"Agent port",type:"number",value:f.agentPort,onChange:a=>l("agentPort",a.target.value),hint:"Mặc định 19998; dashboard server phải truy cập được port n\xe0y."})]}),(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-surface-2/60 p-4",children:[(0,d.jsx)("input",{type:"checkbox",checked:f.useSudo,onChange:a=>l("useSudo",a.target.checked),className:"mt-1 h-4 w-4"}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-semibold text-text-main",children:"User cần sudo để c\xe0i service"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Tắt nếu đăng nhập trực tiếp bằng root."})]})]}),f.useSudo?(0,d.jsx)(br.default,{label:"Sudo password",type:"password",value:f.sudoPassword,onChange:a=>l("sudoPassword",a.target.value),placeholder:"Mặc định d\xf9ng c\xf9ng SSH password"}):null,j?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/20 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-300",children:j}):null]})})}function bN({open:a,server:b,onClose:c,onUpdated:f}){let[g,h]=(0,e.useState)({name:b?.name||"",host:b?.host||"",sshPort:String(b?.sshPort||22),sshUser:b?.sshUser||"",sshPassword:"",useSudo:b?.useSudo!==!1,sudoPassword:"",agentPort:String(b?.agentPort||19998),installAgent:!0}),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(""),m=(a,b)=>h(c=>({...c,[a]:b})),n=async a=>{if(a.preventDefault(),b?.id){j(!0),l("");try{let a=await fetch(`/api/resource-monitor/${b.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name,host:g.host,sshPort:g.sshPort,sshUser:g.sshUser,useSudo:g.useSudo,agentPort:g.agentPort})}),d=await a.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Kh\xf4ng thể lưu server");let e=null;if(g.installAgent){let a=await fetch(`/api/resource-monitor/${b.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sshPassword:g.sshPassword,sudoPassword:g.sudoPassword})}),c=await a.json().catch(()=>({}));e={ok:a.ok&&!1!==c.ok,log:c.log,error:c.error}}await f(d.server,e),c()}catch(a){l(a?.message||"Kh\xf4ng thể cập nhật server")}finally{j(!1)}}};return(0,d.jsx)(bs.default,{isOpen:a,onClose:c,title:"Sửa Linux server",size:"xl",busy:i,footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(bq.default,{variant:"ghost",onClick:c,disabled:i,children:"Hủy"}),(0,d.jsx)(bq.default,{onClick:n,loading:i,icon:"save",children:"Lưu & c\xe0i lại agent"})]}),children:(0,d.jsxs)("form",{onSubmit:n,className:"space-y-5",children:[(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,d.jsx)(br.default,{label:"T\xean hiển thị",value:g.name,onChange:a=>m("name",a.target.value),placeholder:"GPU Worker 01",icon:"dns"}),(0,d.jsx)(br.default,{required:!0,label:"Hostname / IP",value:g.host,onChange:a=>m("host",a.target.value),placeholder:"192.168.1.50",icon:"lan"}),(0,d.jsx)(br.default,{required:!0,label:"SSH user",value:g.sshUser,onChange:a=>m("sshUser",a.target.value),placeholder:"ubuntu",icon:"person"}),(0,d.jsx)(br.default,{label:"SSH port",type:"number",value:g.sshPort,onChange:a=>m("sshPort",a.target.value)}),(0,d.jsx)(br.default,{label:"SSH password",type:"password",value:g.sshPassword,onChange:a=>m("sshPassword",a.target.value),placeholder:"Nhập lại nếu trước đ\xf3 sai",hint:"Chỉ d\xf9ng để c\xe0i lại agent, kh\xf4ng lưu v\xe0o database."}),(0,d.jsx)(br.default,{label:"Agent port",type:"number",value:g.agentPort,onChange:a=>m("agentPort",a.target.value)})]}),(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-surface-2/60 p-4",children:[(0,d.jsx)("input",{type:"checkbox",checked:g.useSudo,onChange:a=>m("useSudo",a.target.checked),className:"mt-1 h-4 w-4"}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-semibold text-text-main",children:"User cần sudo để c\xe0i service"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Tắt nếu đăng nhập trực tiếp bằng root."})]})]}),g.useSudo?(0,d.jsx)(br.default,{label:"Sudo password",type:"password",value:g.sudoPassword,onChange:a=>m("sudoPassword",a.target.value),placeholder:"Mặc định d\xf9ng c\xf9ng SSH password"}):null,(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-surface-2/60 p-4",children:[(0,d.jsx)("input",{type:"checkbox",checked:g.installAgent,onChange:a=>m("installAgent",a.target.checked),className:"mt-1 h-4 w-4"}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-semibold text-text-main",children:"C\xe0i lại agent sau khi lưu"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Bật mục n\xe0y khi cần nhập lại account/password SSH hoặc đổi port."})]})]}),k?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/20 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-300",children:k}):null]})})}let bO={normal:{variant:"success",label:"B\xecnh thường"},warning:{variant:"warning",label:"Cảnh b\xe1o"},critical:{variant:"error",label:"Qu\xe1 tải"},unknown:{variant:"default",label:"Kh\xf4ng r\xf5"}};function bP({modelOptions:a,selectedModel:b,onSelectModel:c,analysis:e,loading:f,error:g,onAnalyze:h,standby:i}){return(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsx)("div",{className:"flex flex-wrap items-center justify-between gap-4 border-b border-border px-6 py-5",children:(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/10 text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[27px]",children:"neurology"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"text-lg font-semibold text-text-main",children:"Đ\xe1nh gi\xe1 AI t\xecnh trạng server"}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Ph\xe2n t\xedch giờ l\xe0m việc h\xf4m nay (8:00 - 18:00) tr\xean to\xe0n bộ Linux server."})]})]})}),(0,d.jsxs)("div",{className:"space-y-5 p-6",children:[i?(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/20 bg-amber-500/10 px-4 py-3 text-sm text-amber-700 dark:text-amber-300",children:"Standby mode: kết quả ph\xe2n t\xedch được đồng bộ tự động từ Master. Node n\xe0y kh\xf4ng tự chạy ph\xe2n t\xedch AI."}):null,(0,d.jsxs)("div",{className:"flex flex-wrap items-end gap-3",children:[(0,d.jsx)(bt.default,{className:"min-w-[280px] flex-1",label:"AI model d\xf9ng để ph\xe2n t\xedch",options:a,value:b,onChange:a=>c(a.target.value),placeholder:a.length?"Chọn model":"Chưa c\xf3 kết nối AI n\xe0o đang hoạt động",disabled:!a.length||i}),(0,d.jsx)(bq.default,{icon:"auto_awesome",onClick:h,loading:f,disabled:!b||i,children:"Ph\xe2n t\xedch lại"})]}),g?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/20 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-300",children:g}):null,e?(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs text-text-muted",children:[(0,d.jsxs)("span",{children:["Model: ",(0,d.jsx)("span",{className:"font-semibold",children:e.modelLabel})]}),(0,d.jsxs)("span",{children:["Cập nhật l\xfac ",by(e.generatedAt)]})]}),(0,d.jsx)("div",{className:"whitespace-pre-wrap rounded-2xl border border-border bg-surface-2/40 p-5 text-sm leading-6 text-text-main",children:e.summary}),e.servers?.length?(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-3 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-5 w-1 rounded-full bg-primary"}),(0,d.jsx)("h4",{className:"font-semibold text-text-main",children:"Trạng th\xe1i từng server"})]}),(0,d.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:e.servers.map(a=>{let b=bO[a.status]||bO.unknown;return(0,d.jsxs)("div",{className:"flex items-center justify-between rounded-xl border border-border bg-surface px-4 py-3",children:[(0,d.jsx)("span",{className:"truncate text-sm font-medium text-text-main",children:a.name}),(0,d.jsx)(bp.default,{variant:b.variant,dot:!0,children:b.label})]},a.serverId)})})]}):null]}):f?null:(0,d.jsx)("div",{className:"rounded-2xl border border-dashed border-border bg-surface-2/40 py-10 text-center text-sm text-text-muted",children:'Chưa c\xf3 ph\xe2n t\xedch n\xe0o — bấm "Ph\xe2n t\xedch lại" để bắt đầu.'})]})]})}function bQ(){let a,b,c,f,[g,h]=(0,e.useState)("realtime"),[i,j]=(0,e.useState)([]),[k,l]=(0,e.useState)(""),[m,n]=(0,e.useState)({}),[o,p]=(0,e.useState)(!0),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)("24h"),[E,F]=(0,e.useState)([]),[G,H]=(0,e.useState)(null),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(""),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)([]),[Q,R]=(0,e.useState)(""),[S,T]=(0,e.useState)(null),[U,V]=(0,e.useState)(!1),[W,X]=(0,e.useState)(""),Y=(0,e.useRef)(0),Z=(0,e.useCallback)(async({quiet:a=!1}={})=>{a||r(!0);try{let a=await fetch("/api/resource-monitor",{cache:"no-store"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b.error||"Kh\xf4ng tải được server");let c=b.servers||[];N(!0===b.standby),j(c),l(a=>a&&c.some(b=>b.id===a)?a:c[0]?.id||""),n(a=>{let b={...a};return c.forEach(a=>{if(!bv(a))return;let c=a.lastStatus,d={time:c.updatedAt||new Date().toISOString(),cpu:c.cpu?.usagePercent||0,memory:c.memory?.usagePercent||0,disk:c.disks?.[0]?.usagePercent||0,gpu:c.gpus?.length?Math.max(...c.gpus.map(a=>a.usagePercent||0)):0,gpus:(c.gpus||[]).map(a=>({id:bF(a),usagePercent:bw(a.usagePercent)}))},e=b[a.id]||[];b[a.id]=e.at(-1)?.time===d.time?e:[...e,d].slice(-60)}),b})}catch(b){a||B({type:"error",text:b?.message||"Kh\xf4ng tải được server"})}finally{p(!1),a||r(!1)}},[]),$=(0,e.useCallback)(async()=>{if(!k)return;let a=++Y.current;J(!0),L("");try{let b=await fetch(`/api/resource-monitor/history?serverId=${encodeURIComponent(k)}&period=${encodeURIComponent(C)}`,{cache:"no-store"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Kh\xf4ng tải được lịch sử t\xe0i nguy\xean");if(Y.current!==a)return;F(c.points||[]),H(c)}catch(b){if(Y.current!==a)return;L(b?.message||"Kh\xf4ng tải được lịch sử t\xe0i nguy\xean"),F([])}finally{Y.current===a&&J(!1)}},[C,k]),_=(0,e.useCallback)(a=>{R(a),fetch("/api/resource-monitor/analyze",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a})}).catch(()=>{})},[]),aa=(0,e.useCallback)(async()=>{if(!Q)return;let a=Q.indexOf("::"),b=Q.slice(0,a),c=Q.slice(a+2);V(!0),X("");try{let a=await fetch("/api/resource-monitor/analyze",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionId:b,model:c})}),d=await a.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Kh\xf4ng thể ph\xe2n t\xedch t\xe0i nguy\xean");T(d.analysis)}catch(a){X(a?.message||"Kh\xf4ng thể ph\xe2n t\xedch t\xe0i nguy\xean")}finally{V(!1)}},[Q]),ab=(0,e.useMemo)(()=>i.find(a=>a.id===k)||null,[i,k]),ac=ab?.lastStatus,ad=bv(ab),ae=ac?.disks?.[0],af=m[k]||[],ag=async()=>{if(w){z(!0);try{if(!(await fetch(`/api/resource-monitor/${w.id}`,{method:"DELETE"})).ok)throw Error("Kh\xf4ng thể x\xf3a server");x(null),await Z()}catch(a){B({type:"error",text:a.message})}finally{z(!1)}}};return o?(0,d.jsxs)("div",{className:"flex min-h-[50vh] items-center justify-center text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mr-2 animate-spin",children:"progress_activity"}),"Đang tải t\xe0i nguy\xean server..."]}):(0,d.jsxs)("div",{className:"space-y-6",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-xl font-semibold text-text-main",children:"Linux Resource Monitor"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Theo d\xf5i realtime CPU, RAM, disk, network v\xe0 to\xe0n bộ NVIDIA GPU."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(bq.default,{variant:"secondary",icon:"refresh",onClick:()=>"history"===g?$():Z(),loading:"history"===g?I:q,children:"L\xe0m mới"}),(0,d.jsx)(bq.default,{icon:"add",onClick:()=>t(!0),disabled:M,children:"Th\xeam server"})]})]}),M?(0,d.jsx)("div",{className:"rounded-xl border border-blue-500/30 bg-blue-500/10 px-4 py-3 text-sm text-blue-700 dark:text-blue-300",children:"Standby mode: Resource Monitor chỉ hiển thị snapshot từ Master. Node n\xe0y kh\xf4ng polling agent v\xe0 kh\xf4ng cho sửa danh s\xe1ch server."}):null,(0,d.jsxs)("div",{className:"flex w-fit rounded-xl border border-border bg-surface p-1 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>h("realtime"),className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-sm font-semibold transition ${"realtime"===g?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[19px]",children:"monitor_heart"}),"Realtime Monitor"]}),(0,d.jsxs)("button",{type:"button",onClick:()=>h("history"),className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-sm font-semibold transition ${"history"===g?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[19px]",children:"query_stats"}),"History"]}),(0,d.jsxs)("button",{type:"button",onClick:()=>h("ai"),className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-sm font-semibold transition ${"ai"===g?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[19px]",children:"neurology"}),"Đ\xe1nh gi\xe1 AI"]})]}),A?(0,d.jsxs)("div",{className:`flex items-center justify-between rounded-xl border px-4 py-3 text-sm ${"error"===A.type?"border-red-500/20 bg-red-500/10 text-red-600 dark:text-red-300":"border-amber-500/20 bg-amber-500/10 text-amber-700 dark:text-amber-300"}`,children:[(0,d.jsx)("span",{children:A.text}),(0,d.jsx)("button",{onClick:()=>B(null),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}):null,i.length?(0,d.jsxs)(d.Fragment,{children:["ai"!==g?(0,d.jsx)(bB,{servers:i,selectedId:k,onSelect:l}):null,"ai"===g?(0,d.jsx)(bP,{modelOptions:O,selectedModel:Q,onSelectModel:_,analysis:S,loading:U,error:W,onAnalyze:aa,standby:M}):ab?"realtime"===g?(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-4 border-b border-border px-6 py-5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-4",children:[(0,d.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/10 text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[27px]",children:"dns"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(bA,{online:ad}),(0,d.jsx)("h3",{className:"truncate text-lg font-semibold text-text-main",children:ab.name})]}),(0,d.jsxs)("div",{className:"mt-1 flex flex-wrap gap-x-3 text-xs text-text-muted",children:[(0,d.jsx)("span",{className:"font-mono",children:ab.host}),ac?.os?(0,d.jsx)("span",{children:ac.os}):null,ac?.uptimeSeconds?(0,d.jsxs)("span",{children:["Uptime ",(b=Math.floor((a=Number(ac.uptimeSeconds)||0)/86400),c=Math.floor(a%86400/3600),f=Math.floor(a%3600/60),b?`${b} ng\xe0y ${c} giờ`:c?`${c} giờ ${f} ph\xfat`:`${f} ph\xfat`)]}):null]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`rounded-full px-3 py-1.5 text-xs font-semibold ${ad?"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400":"bg-red-500/10 text-red-600 dark:text-red-300"}`,children:ad?"Online":"Offline"}),M?null:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",onClick:()=>v(!0),className:"rounded-xl p-2 text-text-muted hover:bg-primary/10 hover:text-primary",title:"Sửa server v\xe0 c\xe0i lại agent",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"edit"})}),(0,d.jsx)("button",{type:"button",onClick:()=>x(ab),className:"rounded-xl p-2 text-text-muted hover:bg-red-500/10 hover:text-red-500",title:"X\xf3a khỏi dashboard",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"delete"})})]})]})]}),ad?null:(0,d.jsx)("div",{className:"m-6 rounded-2xl border border-amber-500/20 bg-amber-500/8 p-5",children:(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-500",children:"cloud_off"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"font-semibold text-text-main",children:"Kh\xf4ng kết nối được agent"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:ab.lastError||"Agent chưa gửi dữ liệu. Kiểm tra firewall v\xe0 agent port."}),ab.lastInstallLog?(0,d.jsxs)("details",{className:"mt-3",children:[(0,d.jsx)("summary",{className:"cursor-pointer text-xs font-semibold text-amber-600",children:"Xem log c\xe0i đặt"}),(0,d.jsx)("pre",{className:"mt-2 max-h-48 overflow-auto whitespace-pre-wrap rounded-xl bg-black/80 p-3 text-xs text-white",children:ab.lastInstallLog})]}):null]})]})}),ac?(0,d.jsxs)("div",{className:"space-y-7 p-6",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-5 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-5 w-1 rounded-full bg-primary"}),(0,d.jsx)("h3",{className:"font-semibold text-text-main",children:"Tổng quan t\xe0i nguy\xean"}),(0,d.jsxs)("span",{className:"ml-auto text-xs text-text-muted",children:["Cập nhật ",by(ab.lastStatusAt)]})]}),(0,d.jsxs)("div",{className:"grid gap-5 sm:grid-cols-2 xl:grid-cols-4",children:[(0,d.jsx)(bz,{value:ac.cpu?.usagePercent,label:"CPU",detail:`${ac.cpu?.cores||0} cores \xb7 Load ${ac.cpu?.load1??0}`,icon:"developer_board"}),(0,d.jsx)(bz,{value:ac.memory?.usagePercent,label:"RAM",detail:`${bx(ac.memory?.usedBytes)} / ${bx(ac.memory?.totalBytes)}`,icon:"memory_alt"}),(0,d.jsx)(bz,{value:ae?.usagePercent,label:"Disk /",detail:`${bx(ae?.usedBytes)} / ${bx(ae?.totalBytes)}`,icon:"hard_drive"}),(0,d.jsx)(bz,{value:ac.gpus?.length?Math.max(...ac.gpus.map(a=>a.usagePercent||0)):0,label:ac.gpus?.length?`${ac.gpus.length} NVIDIA GPU`:"GPU",detail:ac.gpus?.length?`${ac.gpus.length} card được ph\xe1t hiện`:"Kh\xf4ng c\xf3 NVIDIA GPU",color:"#10b981",icon:"memory"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2 xl:grid-cols-4",children:[(0,d.jsx)(bC,{icon:"developer_board",label:"CPU",value:ac.cpu?.model||`${ac.cpu?.cores||0} cores`,sublabel:`Load average ${ac.cpu?.load1??0} / ${ac.cpu?.load5??0} / ${ac.cpu?.load15??0}`}),(0,d.jsx)(bC,{icon:"swap_vert",label:"Network realtime",value:`↓ ${bx(ac.network?.rxBytesPerSecond)}/s`,sublabel:`↑ ${bx(ac.network?.txBytesPerSecond)}/s`,colorClass:"text-cyan-500"}),(0,d.jsx)(bC,{icon:"hard_drive",label:"Disk root",value:`${bx(ae?.freeBytes)} trống`,sublabel:`${ae?.device||"root"} \xb7 ${ae?.filesystem||"filesystem"}`,colorClass:"text-violet-500"}),(0,d.jsx)(bC,{icon:"memory",label:"Swap",value:bx(ac.memory?.swapUsedBytes),sublabel:`Tổng ${bx(ac.memory?.swapTotalBytes)}`,colorClass:"text-amber-500"})]}),(0,d.jsxs)("div",{className:"grid gap-5 xl:grid-cols-2",children:[(0,d.jsx)(bD,{data:af,dataKey:"cpu",label:"CPU usage",color:"#3b9dec"}),(0,d.jsx)(bD,{data:af,dataKey:"memory",label:"RAM usage",color:"#8b5cf6"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-5 w-1 rounded-full bg-emerald-500"}),(0,d.jsxs)("h3",{className:"font-semibold text-text-main",children:["NVIDIA GPU (",ac.gpus?.length||0,")"]})]}),ac.gpus?.length?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(bG,{data:af,gpus:ac.gpus}),(0,d.jsx)("div",{className:"grid gap-5 xl:grid-cols-2",children:ac.gpus.map(a=>(0,d.jsx)(bL,{gpu:a},a.uuid||a.index))})]}):(0,d.jsxs)("div",{className:"rounded-2xl border border-dashed border-border bg-surface-2/40 py-10 text-center text-sm text-text-muted",children:["Kh\xf4ng ph\xe1t hiện NVIDIA GPU hoặc"," ",(0,d.jsx)("span",{className:"font-mono",children:"nvidia-smi"})," chưa sẵn s\xe0ng."]})]})]}):null]}):(0,d.jsx)(bK,{server:ab,data:E,meta:G,period:C,onPeriodChange:D,loading:I,error:K}):null]}):(0,d.jsxs)("div",{className:"flex min-h-[460px] flex-col items-center justify-center rounded-3xl border border-dashed border-border bg-surface px-6 text-center",children:[(0,d.jsx)("div",{className:"flex h-20 w-20 items-center justify-center rounded-3xl bg-primary/10 text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[42px]",children:"monitor_heart"})}),(0,d.jsx)("h3",{className:"mt-6 text-xl font-semibold text-text-main",children:"Chưa c\xf3 Linux server"}),(0,d.jsx)("p",{className:"mt-2 max-w-lg text-sm leading-6 text-text-muted",children:"Th\xeam server bằng t\xe0i khoản SSH c\xf3 quyền sudo. BlueRouter sẽ tự c\xe0i agent systemd v\xe0 bắt đầu hiển thị t\xe0i nguy\xean ngay tại đ\xe2y."}),M?null:(0,d.jsx)(bq.default,{className:"mt-6",icon:"add",onClick:()=>t(!0),children:"Th\xeam server đầu ti\xean"})]}),(0,d.jsx)(bM,{open:s&&!M,onClose:()=>t(!1),onCreated:async(a,b)=>{b&&!b.ok&&B({type:"warning",text:"Đ\xe3 lưu server nhưng c\xe0i agent chưa th\xe0nh c\xf4ng. Mở server để xem log."}),await Z()}}),(0,d.jsx)(bN,{open:u&&!M,server:ab,onClose:()=>v(!1),onUpdated:async(a,b)=>{b&&!b.ok&&B({type:"warning",text:"Đ\xe3 lưu server nhưng c\xe0i lại agent chưa th\xe0nh c\xf4ng. Mở server để xem log."}),await Z()}}),(0,d.jsx)(bs.ConfirmModal,{isOpen:!!w,onClose:()=>x(null),onConfirm:ag,loading:y,variant:"danger",title:"X\xf3a server khỏi dashboard?",confirmText:"X\xf3a server",cancelText:"Hủy",message:"Server sẽ ngừng được theo d\xf5i. Agent systemd tr\xean Linux kh\xf4ng bị gỡ tự động."})]})}}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,2430,8316,8946,402,5681,4404,6064,6328,8640],()=>b(b.s=39528));module.exports=c})();
|
|
458
|
+
`}),a]})}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},21820:a=>{"use strict";a.exports=require("os")},22550:(a,b,c)=>{Promise.resolve().then(c.bind(c,48754))},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30746:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\resource-monitor\\\\layout.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\layout.js","default")},31915:(a,b,c)=>{Promise.resolve().then(c.bind(c,41199))},33873:a=>{"use strict";a.exports=require("path")},34174:(a,b,c)=>{Promise.resolve().then(c.bind(c,18548))},34631:a=>{"use strict";a.exports=require("tls")},38522:a=>{"use strict";a.exports=require("node:zlib")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41199:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\resource-monitor\\\\page.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\page.js","default")},41204:a=>{"use strict";a.exports=require("string_decoder")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},46293:a=>{"use strict";a.exports=require("sql.js")},48754:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\resource-monitor\\\\template.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\template.js","default")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},54199:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>y,handler:()=>A,routeModule:()=>z});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,32059))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30508))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),t=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30746))),u=(0,d.p)(()=>Promise.resolve().then(c.bind(c,48754))),v=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),w={children:["",{children:["(dashboard)",{children:["dashboard",{children:["resource-monitor",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,41199))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\page.js"]}]},{layout:[t,"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\layout.js"],template:[u,"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\resource-monitor\\template.js"],"global-error":[v,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,x=(0,e.H)({tree:w,page:"/(dashboard)/dashboard/resource-monitor/page",pathname:"/dashboard/resource-monitor",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),y=x.__next_app__,z=x.routeModule,A=x.handler},55511:a=>{"use strict";a.exports=require("crypto")},56194:(a,b,c)=>{Promise.resolve().then(c.bind(c,30746))},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{"use strict";a.exports=import("pg")},66136:a=>{"use strict";a.exports=require("timers")},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},74346:(a,b,c)=>{Promise.resolve().then(c.bind(c,10040))},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")},96703:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>bQ});var d=c(48249),e=c(67484),f=c(48679),g=c(21621),h=c(5277),i=c(22393),j=c(54206),k=c(79751),l=c(53330),m=c(53935),n=c(75556),o=["axis"],p=(0,e.forwardRef)((a,b)=>e.createElement(n.P,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:o,tooltipPayloadSearcher:m.uN,categoricalChartProps:a,ref:b})),q=c(74429),r=c(93223),s=c(73919),t=c(99314),u=c(54702);let v=Math.cos,w=Math.sin,x=Math.sqrt,y=Math.PI,z=2*y,A={draw(a,b){let c=x(b/y);a.moveTo(c,0),a.arc(0,0,c,0,z)}},B=x(1/3),C=2*B,D=w(y/10)/w(7*y/10),E=w(z/10)*D,F=-v(z/10)*D,G=x(3),H=x(3)/2,I=1/x(12),J=(I/2+1)*3;var K=c(99608),L=c(85922);x(3),x(3);var M=c(1791),N=c(50149),O=["type","size","sizeType"];function P(){return(P=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function Q(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function R(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?Q(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):Q(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}var S={symbolCircle:A,symbolCross:{draw(a,b){let c=x(b/5)/2;a.moveTo(-3*c,-c),a.lineTo(-c,-c),a.lineTo(-c,-3*c),a.lineTo(c,-3*c),a.lineTo(c,-c),a.lineTo(3*c,-c),a.lineTo(3*c,c),a.lineTo(c,c),a.lineTo(c,3*c),a.lineTo(-c,3*c),a.lineTo(-c,c),a.lineTo(-3*c,c),a.closePath()}},symbolDiamond:{draw(a,b){let c=x(b/C),d=c*B;a.moveTo(0,-c),a.lineTo(d,0),a.lineTo(0,c),a.lineTo(-d,0),a.closePath()}},symbolSquare:{draw(a,b){let c=x(b),d=-c/2;a.rect(d,d,c,c)}},symbolStar:{draw(a,b){let c=x(.8908130915292852*b),d=E*c,e=F*c;a.moveTo(0,-c),a.lineTo(d,e);for(let b=1;b<5;++b){let f=z*b/5,g=v(f),h=w(f);a.lineTo(h*c,-g*c),a.lineTo(g*d-h*e,h*d+g*e)}a.closePath()}},symbolTriangle:{draw(a,b){let c=-x(b/(3*G));a.moveTo(0,2*c),a.lineTo(-G*c,-c),a.lineTo(G*c,-c),a.closePath()}},symbolWye:{draw(a,b){let c=x(b/J),d=c/2,e=c*I,f=c*I+c,g=-d;a.moveTo(d,e),a.lineTo(d,f),a.lineTo(g,f),a.lineTo(-.5*d-H*e,H*d+-.5*e),a.lineTo(-.5*d-H*f,H*d+-.5*f),a.lineTo(-.5*g-H*f,H*g+-.5*f),a.lineTo(-.5*d+H*e,-.5*e-H*d),a.lineTo(-.5*d+H*f,-.5*f-H*d),a.lineTo(-.5*g+H*f,-.5*f-H*g),a.closePath()}}},T=Math.PI/180,U=a=>{var b=a.type,c=void 0===b?"circle":b,d=a.size,f=void 0===d?64:d,g=a.sizeType,h=void 0===g?"area":g,i=R(R({},function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,O)),{},{type:c,size:f,sizeType:h}),j="circle";"string"==typeof c&&(j=c);var k=i.className,l=i.cx,m=i.cy,n=(0,N.a)(i);return(0,M.Et)(l)&&(0,M.Et)(m)&&(0,M.Et)(f)?e.createElement("path",P({},n,{className:(0,t.$)("recharts-symbols",k),transform:"translate(".concat(l,", ").concat(m,")"),d:(()=>{var a,b=(a=j,S["symbol".concat((0,M.Zb)(a))]||A),c=(function(a,b){let c=null,d=(0,L.i)(e);function e(){let e;if(c||(c=e=d()),a.apply(this,arguments).draw(c,+b.apply(this,arguments)),e)return c=null,e+""||null}return a="function"==typeof a?a:(0,K.A)(a||A),b="function"==typeof b?b:(0,K.A)(void 0===b?64:+b),e.type=function(b){return arguments.length?(a="function"==typeof b?b:(0,K.A)(b),e):a},e.size=function(a){return arguments.length?(b="function"==typeof a?a:(0,K.A)(+a),e):b},e.context=function(a){return arguments.length?(c=null==a?null:a,e):c},e})().type(b).size(((a,b,c)=>{if("area"===b)return a;switch(c){case"cross":return 5*a*a/9;case"diamond":return .5*a*a/Math.sqrt(3);case"square":return a*a;case"star":var d=18*T;return 1.25*a*a*(Math.tan(d)-Math.tan(2*d)*Math.tan(d)**2);case"triangle":return Math.sqrt(3)*a*a/4;case"wye":return(21-10*Math.sqrt(3))*a*a/8;default:return Math.PI*a*a/4}})(f,h,j))();if(null!==c)return c})()})):null};U.registerSymbol=(a,b)=>{S["symbol".concat((0,M.Zb)(a))]=b};var V=c(64635),W=c(69599);function X(){return(X=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function Y(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function Z(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?Y(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):Y(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}var $={align:"center",iconSize:14,inactiveColor:"#ccc",layout:"horizontal",verticalAlign:"middle",labelStyle:{}};function _(a){var b=a.data,c=a.iconType,d=a.inactiveColor,f=32/6,g=32/3,h=b.inactive?d:b.color,i=null!=c?c:b.type;if("none"===i)return null;if("plainline"===i)return e.createElement("line",{strokeWidth:4,fill:"none",stroke:h,strokeDasharray:function(a){if("object"==typeof a&&null!==a&&"strokeDasharray"in a)return String(a.strokeDasharray)}(b.payload),x1:0,y1:16,x2:32,y2:16,className:"recharts-legend-icon"});if("line"===i)return e.createElement("path",{strokeWidth:4,fill:"none",stroke:h,d:"M0,".concat(16,"h").concat(g,"\n A").concat(f,",").concat(f,",0,1,1,").concat(2*g,",").concat(16,"\n H").concat(32,"M").concat(2*g,",").concat(16,"\n A").concat(f,",").concat(f,",0,1,1,").concat(g,",").concat(16),className:"recharts-legend-icon"});if("rect"===i)return e.createElement("path",{stroke:"none",fill:h,d:"M0,".concat(4,"h").concat(32,"v").concat(24,"h").concat(-32,"z"),className:"recharts-legend-icon"});if(e.isValidElement(b.legendIcon)){var j=Z({},b);return delete j.legendIcon,e.cloneElement(b.legendIcon,j)}return e.createElement(U,{fill:h,cx:16,cy:16,size:32,sizeType:"diameter",type:i})}function aa(a){var b=a.payload,c=a.iconSize,d=a.layout,f=a.formatter,g=a.inactiveColor,h=a.iconType,i=a.labelStyle,j={x:0,y:0,width:32,height:32},k={display:"horizontal"===d?"inline-block":"block",marginRight:10,whiteSpace:"nowrap"},l={display:"inline-block",verticalAlign:"middle",marginRight:4};return b.map((b,d)=>{var m=b.formatter||f,n=(0,t.$)({"recharts-legend-item":!0,["legend-item-".concat(d)]:!0,inactive:b.inactive});if("none"===b.type)return null;var o="object"==typeof i?Z({},i):{};o.color=b.inactive?g:o.color||b.color,null!=o.whiteSpace||(o.whiteSpace="normal"),null!=o.overflowWrap||(o.overflowWrap="break-word");var p=m?m(b.value,b,d):b.value;return e.createElement("li",X({className:n,style:k,key:"legend-item-".concat(d)},(0,V.XC)(a,b,d)),e.createElement(u.u,{width:c,height:c,viewBox:j,style:l,"aria-label":null==b.value?"legend icon":"".concat(b.value," legend icon")},e.createElement(_,{data:b,iconType:h,inactiveColor:g})),e.createElement("span",{className:"recharts-legend-item-text",style:o},p))})}var ab=a=>{var b=(0,W.e)(a,$),c=b.payload,d=b.layout,f=b.align;return c&&c.length?e.createElement("ul",{className:"recharts-default-legend",style:{padding:0,margin:0,textAlign:"horizontal"===d?f:"left"}},e.createElement(aa,X({},b,{payload:c}))):null},ac=c(46406),ad=c(32671),ae=c(7795),af=c(12450),ag=c(55644);c(46154);var ah=c(66762),ai=c(32362),aj=c(15279),ak=(0,ai.Mz)([aj.Lp,aj.A$,aj.HK],(a,b,c)=>({x:c.left||0,y:c.top||0,width:Math.max(a-(c.left||0)-(c.right||0),0),height:Math.max(b-(c.top||0)-(c.bottom||0),0)})),al=c(27603),am=["contextPayload"];function an(){return(an=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function ao(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function ap(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function aq(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ap(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ap(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function ar(a){return a.value}function as(a){var b=a.contextPayload,c=function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,am),d=(0,ac.s)(b,a.payloadUniqBy,ar),f=aq(aq({},c),{},{payload:d});return e.isValidElement(a.content)?e.cloneElement(a.content,f):"function"==typeof a.content?e.createElement(a.content,f):e.createElement(ab,f)}function at(a){return a.align,a.layout,a.verticalAlign,a.itemSorter,a.position,a.offset,(0,ad.j)(),null}function au(a){return a.width,a.height,(0,ad.j)(),null}var av={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0},aw=e.memo(function(a){var b,c,d,f,g,h,i,j,k,l,m,n,o,p,t,u,v,w=(0,W.e)(a,av),x=a.layout&&"auto"!==a.layout?a.layout:"left"===(b=w.position)||"right"===b||"insideLeft"===b||"insideRight"===b?"vertical":"horizontal",y=(0,ad.G)(ae.g0),z=(0,s.M)(),A=(0,ag.Kp)(),B=(0,ad.G)(a=>{var b;return null==(b=w.position)?null:(0,r.x)(b)?ak(a):(0,al.Ds)(a)}),C=w.width,D=w.height,E=w.wrapperStyle,F=w.portal,G=null==F&&(null==w.position||(0,r.x)(w.position)),H=function(a){if(Array.isArray(a))return a}(c=(0,af.V)([y]))||function(a){var b=null==a?null:"u">typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=b){var c,d,e,f,g=[],h=!0,i=!1;try{e=(b=b.call(a)).next,!1;for(;!(h=(c=e.call(b)).done)&&(g.push(c.value),2!==g.length);h=!0);}catch(a){i=!0,d=a}finally{try{if(!h&&null!=b.return&&(f=b.return(),Object(f)!==f))return}finally{if(i)throw d}}return g}}(c)||function(a){if(a){if("string"==typeof a)return ao(a,2);var b=({}).toString.call(a).slice(8,-1);return"Object"===b&&a.constructor&&(b=a.constructor.name),"Map"===b||"Set"===b?Array.from(a):"Arguments"===b||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(b)?ao(a,2):void 0}}(c)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),I=H[0],J=H[1],K=(0,ag.yi)(),L=(0,ag.rY)();if(null==K||null==L||null!=w.position&&null==B)return null;var M=K-((null==A?void 0:A.left)||0)-((null==A?void 0:A.right)||0),N="vertical"===x&&null!=D?{height:D}:"horizontal"===x?{width:C||M}:null,O=null==w.position?null:(0,r._)({viewBox:null!=B?B:{x:0,y:0,width:K,height:L},position:w.position,offset:null!=(l=w.offset)?l:0}),P=(d=w.position,f=null!=(m=w.offset)?m:0,"top"===d?{top:I.height+f}:"bottom"===d?{top:-I.height-f}:"left"===d?{left:I.width+f}:"right"===d?{left:-I.width-f}:{}),Q="vertical"===x?(null!=(n=null==B?void 0:B.width)?n:0)/2:null!=(o=null==B?void 0:B.width)?o:0,R="horizontal"===x?(null!=(p=null==B?void 0:B.height)?p:0)/2:null!=(t=null==B?void 0:B.height)?t:0,S=O?{width:"max-content",height:"max-content",maxWidth:Q,maxHeight:R,overflowY:"auto",top:O.y+(null!=(u=P.top)?u:0),left:O.x+(null!=(v=P.left)?v:0),transform:function(a,b){if("start"===a&&"start"===b)return"";var c,d=null!=(c=({start:"0",middle:"-50%",end:"-100%"})[b])?c:"0";return"translate(".concat("inherit"===a?"0":({start:"0",middle:"-50%",end:"-100%"})[a],", ").concat(d,")")}(O.horizontalAnchor,O.verticalAnchor)}:(i=w.layout,j=w.align,k=w.verticalAlign,E&&(void 0!==E.left&&null!==E.left||void 0!==E.right&&null!==E.right)||(g="center"===j&&"vertical"===i?{left:((K||0)-I.width)/2}:"right"===j?{right:A&&A.right||0}:{left:A&&A.left||0}),E&&(void 0!==E.top&&null!==E.top||void 0!==E.bottom&&null!==E.bottom)||(h="middle"===k?{top:((L||0)-I.height)/2}:"bottom"===k?{bottom:A&&A.bottom||0}:{top:A&&A.top||0}),aq(aq({},g),h)),T=F?E:aq(aq({position:"absolute",width:(null==N?void 0:N.width)||C||"auto",height:(null==N?void 0:N.height)||D||"auto"},S),E),U=null!=F?F:z;if(null==U||null==y)return null;var V=e.createElement("div",{className:"recharts-legend-wrapper",style:T,ref:J},e.createElement(at,{layout:x,align:w.align,verticalAlign:w.verticalAlign,itemSorter:w.itemSorter,position:w.position,offset:w.offset}),G&&e.createElement(au,I),e.createElement(as,an({},w,{layout:x},N,{margin:A,chartWidth:K,chartHeight:L,contextPayload:y})));return(0,q.createPortal)(V,U)},ah.P);aw.displayName="Legend";var ax=c(40948),ay=c(85167),az=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function aA(){return(aA=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function aB(a,b){return"".concat(b,"px ").concat(a,"px")}var aC=c(59798),aD=c(47459),aE=c(83521),aF=c(21480),aG=c(16216),aH=c(36136),aI=c(443),aJ=["children"],aK=(0,e.createContext)({data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0});function aL(a){var b=a.children,c=function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,aJ);return e.createElement(aK.Provider,{value:c},b)}var aM=c(10059),aN=c(70383),aO=c(25644),aP=c(27382),aQ=(a,b,c,d)=>(0,aP.Gx)(a,"xAxis",b,d),aR=(a,b,c,d)=>(0,aP.CR)(a,"xAxis",b,d),aS=(a,b,c,d)=>(0,aP.Gx)(a,"yAxis",c,d),aT=(a,b,c,d)=>(0,aP.CR)(a,"yAxis",c,d),aU=(0,ai.Mz)([ag.fz,aQ,aS,aR,aT],(a,b,c,d,e)=>(0,aG._L)(a,"xAxis")?(0,aG.Hj)(b,d,!1):(0,aG.Hj)(c,e,!1));function aV(a){return"line"===a.type}var aW=(0,ai.Mz)([aP.ld,(a,b,c,d,e)=>e],(a,b)=>a.filter(aV).find(a=>a.id===b)),aX=(0,ai.Mz)([ag.fz,aQ,aS,aR,aT,aW,aU,aO.k$],(a,b,c,d,e,f,g,h)=>{var i,j=h.chartData,k=h.dataStartIndex,l=h.dataEndIndex;if(null!=f&&null!=b&&null!=c&&null!=d&&null!=e&&0!==d.length&&0!==e.length&&null!=g&&("horizontal"===a||"vertical"===a)){var m,n,o,p,q,r,s,t,u=f.dataKey,v=f.data;if(null!=(i=null!=v&&v.length>0?v:null==j?void 0:j.slice(k,l+1))){return n=(m={layout:a,xAxis:b,yAxis:c,xAxisTicks:d,yAxisTicks:e,dataKey:u,bandSize:g,displayedData:i}).layout,o=m.xAxis,p=m.yAxis,q=m.xAxisTicks,r=m.yAxisTicks,s=m.dataKey,t=m.bandSize,m.displayedData.map((a,b)=>{var c=(0,aG.kr)(a,s);if("horizontal"===n){var d=(0,aG.nb)({axis:o,ticks:q,bandSize:t,entry:a,index:b}),e=(0,M.uy)(c)?null:p.scale.map(c);return{x:d,y:null!=e?e:null,value:c,payload:a}}var f=(0,M.uy)(c)?null:o.scale.map(c),g=(0,aG.nb)({axis:p,ticks:r,bandSize:t,entry:a,index:b});return null==f||null==g?null:{x:f,y:g,value:c,payload:a}}).filter(Boolean)}}}),aY=c(82118),aZ=c(99659),a$=c(64644),a_=c(30069),a0=c(26674),a1=c(93021),a2=c(70719),a3=c(1432),a4=c(61368),a5=c(17947),a6=c(6859),a7=["id"],a8=["type","layout","connectNulls","needClip","shape","strokeDasharray"],a9=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function ba(){return(ba=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(null,arguments)}function bb(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function bc(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function bd(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?bc(Object(c),!0).forEach(function(b){var d,e,f;d=a,e=b,f=c[b],(e=function(a){var b=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(a,"string");return"symbol"==typeof b?b:b+""}(e))in d?Object.defineProperty(d,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):d[e]=f}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):bc(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}var be={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:(a,b)=>{if(null==a)return[];if(1===b)return a.flatMap(a=>"removed"===a.status?[]:[a.next]);var c=function(a){var b=0,c=0;for(var d of a)"matched"===d.status&&null!=d.prev.x&&null!=d.next.x&&(b+=d.next.x-d.prev.x,c++);return c>0?b/c:0}(a),d=[];for(var e of a)if("matched"===e.status)d.push(bd(bd({},e.next),{},{x:(0,M.GW)(e.prev.x,e.next.x,b),y:(0,M.GW)(e.prev.y,e.next.y,b)}));else if("added"===e.status)if(null!=e.next.x){var f=e.next.x-c;d.push(bd(bd({},e.next),{},{x:(0,M.GW)(f,e.next.x,b),y:e.next.y}))}else d.push(e.next);else if("removed"===e.status&&null!=e.prev.x){var g=e.prev.x+c;d.push(bd(bd({},e.prev),{},{x:(0,M.GW)(e.prev.x,g,b),y:e.prev.y}))}return d},animationMatchBy:a$.hC,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:function(a){a.animationElapsedTime,a.isAnimating,a.isEntrance;var b=a.visibleLength,c=a.strokeDasharray,d=a.connectNulls,f=function(a,b){if(null==a)return{};var c,d,e=function(a,b){if(null==a)return{};var c={};for(var d in a)if(({}).hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&({}).propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}(a,az);if(null!=b){var g,h,i=f.pathRef,j=function(a){try{return a&&a.getTotalLength&&a.getTotalLength()||0}catch(a){return 0}}(null!=(h=null==i?void 0:i.current)?h:null);g=c?function(a,b,c){var d=c.length%2!=0?[...c,...c]:c,e=d.reduce((a,b)=>a+b,0);if(!e)return aB(b,a);for(var f=Math.floor(a/e),g=a%e,h=[],i=0,j=0;i<d.length;j+=null!=(k=d[i])?k:0,++i){var k,l=d[i];if(null!=l&&j+l>g){h=[...d.slice(0,i),g-j];break}}var m=h.length%2==0?[0,b]:[b];return[...function(a,b){for(var c=[],d=0;d<b;++d)c.push(...a);return c}(d,f),...h,...m].map(a=>"".concat(a,"px")).join(", ")}(b,j,"".concat(c).split(/[,\s]+/gim).map(a=>parseFloat(a))):aB(j,b)}else null!=c&&(g=String(c));return e.createElement(ay.Ip,aA({},f,{connectNulls:null!=d&&d,strokeDasharray:g}))},stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:a6.I.line,type:"linear"},bf=e.memo(a=>{var b=a.dataKey,c=a.data,d=a.stroke,f=a.strokeWidth,g=a.fill,h=a.name,i=a.hide,j=a.unit,k=a.formatter,l=a.tooltipType,m=a.id,n={dataDefinedOnItem:c,getPosition:M.lQ,settings:{stroke:d,strokeWidth:f,fill:g,dataKey:b,nameKey:void 0,name:(0,aG.uM)(h,b),hide:i,type:l,color:d,unit:j,formatter:k,graphicalItemId:m}};return e.createElement(aI.r,{tooltipEntrySettings:n})});function bg(a){var b=a.clipPathId,c=a.points,d=a.props,f=d.dot,g=d.dataKey,h=d.needClip;d.id;var i=bb(d,a7),j=(0,a2.uZ)(i);return e.createElement(aE.n,{points:c,dot:f,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:g,baseProps:j,needClip:h,clipPathId:b})}function bh(a){var b=a.showLabels,c=a.children,d=a.points,f=(0,e.useMemo)(()=>null==d?void 0:d.map(a=>{var b,c,d={x:null!=(b=a.x)?b:0,y:null!=(c=a.y)?c:0,width:0,lowerWidth:0,upperWidth:0,height:0};return bd(bd({},d),{},{value:a.value,payload:a.payload,viewBox:d,parentViewBox:void 0,fill:void 0})}),[d]);return e.createElement(aD.h8,{value:b?f:void 0},c)}function bi(a){var b=a.clipPathId,c=a.pathRef,d=a.points,f=a.props,g=a.animationElapsedTime,h=a.isAnimating,i=a.isEntrance,j=a.visibleLength,k=f.type,l=f.layout,m=f.connectNulls,n=f.needClip,o=f.shape,p=f.strokeDasharray,q=bb(f,a8),r=bd(bd({},(0,N.a)(q)),{},{fill:"none",className:"recharts-line-curve",clipPath:n?"url(#clipPath-".concat(b,")"):void 0,points:d,type:k,layout:l,connectNulls:m,strokeDasharray:null!=p?p:f.strokeDasharray,pathRef:c,animationElapsedTime:g,isAnimating:h,isEntrance:!!f.animateNewValues&&i,visibleLength:j});return e.createElement(e.Fragment,null,(null==d?void 0:d.length)>1&&e.createElement(a4.y,{option:o,DefaultShape:be.shape,shapeProps:r}),e.createElement(bg,{points:d,clipPathId:b,props:f}))}function bj(a){var b,c,d,f,g=a.clipPathId,h=a.props,i=a.pathRef,j=a.previousPointsRef,k=h.points,l=h.isAnimationActive,m=h.animationBegin,n=h.animationDuration,o=h.animationEasing,p=h.animationMatchBy,q=h.animationInterpolateFn,r=h.layout,s=function(a){try{return a&&a.getTotalLength&&a.getTotalLength()||0}catch(a){return 0}}(i.current),t=(0,aZ.I)(h.onAnimationStart,h.onAnimationEnd),u=t.isAnimating,v=t.handleAnimationStart,w=t.handleAnimationEnd,x=(b=(0,e.useRef)(0),c=(0,e.useRef)(0),d=(0,e.useRef)(!1),(f=(0,e.useRef)(k)).current!==k&&(b.current=c.current,f.current=k),(0,e.useCallback)((a,e)=>{if(d.current)return null;var f=Math.min((0,aC.L)(b.current+a*e),e);return a>0&&e>0&&(c.current=Math.max(c.current,f),f>=e)?(d.current=!0,null):f},[])),y=(0,e.useCallback)(a=>a>0&&s>0,[s]);return e.createElement(bh,{points:k,showLabels:!u},h.children,e.createElement(aZ.U,{animationInput:k,animationIdPrefix:"recharts-line-",items:k,previousItemsRef:j,isAnimationActive:l,animationBegin:m,animationDuration:n,animationEasing:o,onAnimationStart:v,onAnimationEnd:w,animationInterpolateFn:q,animationMatchBy:p,shouldUpdatePreviousRef:y,layout:r},(a,b,c)=>{var d=u||b<1,f=d?x(b,s):null;return e.createElement(bi,{props:h,points:a,clipPathId:g,pathRef:i,animationElapsedTime:b,isAnimating:d,isEntrance:c,visibleLength:f})}),e.createElement(aD.qY,{label:h.label}))}function bk(a){var b=a.clipPathId,c=a.props,d=(0,e.useRef)(null),f=(0,e.useRef)(null);return e.createElement(bj,{props:c,clipPathId:b,previousPointsRef:d,pathRef:f})}var bl=(a,b)=>{var c,d;return{x:null!=(c=a.x)?c:void 0,y:null!=(d=a.y)?d:void 0,value:a.value,errorVal:(0,aG.kr)(a.payload,b)}};class bm extends e.Component{render(){var a=this.props,b=a.hide,c=a.dot,d=a.points,f=a.className,g=a.xAxisId,h=a.yAxisId,i=a.top,j=a.left,k=a.width,l=a.height,m=a.id,n=a.needClip,o=a.zIndex;if(b)return null;var p=(0,t.$)("recharts-line",f),q=(0,a3.x)(c),r=q.r,s=q.strokeWidth,u=(0,aF.y$)(c),v=2*r+s,w=n?"url(#clipPath-".concat(u?"":"dots-").concat(m,")"):void 0;return e.createElement(a5.g,{zIndex:o},e.createElement(ax.W,{className:p},n&&e.createElement("defs",null,e.createElement(aM.Q,{clipPathId:m,xAxisId:g,yAxisId:h}),!u&&e.createElement("clipPath",{id:"clipPath-dots-".concat(m)},e.createElement("rect",{x:j-v/2,y:i-v/2,width:k+v,height:l+v}))),e.createElement(aL,{xAxisId:g,yAxisId:h,data:d,dataPointFormatter:bl,errorBarOffset:0},e.createElement(bk,{props:this.props,clipPathId:m}))),e.createElement(aH.W,{activeDot:this.props.activeDot,points:d,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}}function bn(a){var b=(0,W.e)(a,be),c=b.activeDot,d=b.animateNewValues,f=b.animationBegin,g=b.animationDuration,h=b.animationEasing,i=b.connectNulls,j=b.dot,k=b.hide,l=b.isAnimationActive,m=b.label,n=b.legendType,o=b.xAxisId,p=b.yAxisId,q=b.id,r=bb(b,a9),s=(0,aM.l)(o,p).needClip,t=(0,a_.oM)(),u=(0,ag.WX)(),v=(0,aN.r)(),w=(0,ad.G)(a=>aX(a,o,p,v,q));if("horizontal"!==u&&"vertical"!==u||null==w||null==t)return null;var x=t.height,y=t.width,z=t.x,A=t.y;return e.createElement(bm,ba({},r,{id:q,connectNulls:i,dot:j,activeDot:c,animateNewValues:d,animationBegin:f,animationDuration:g,animationEasing:h,isAnimationActive:l,hide:k,label:m,legendType:n,xAxisId:o,yAxisId:p,points:w,layout:u,height:x,width:y,left:z,top:A,needClip:s}))}var bo=e.memo(function(a){var b=(0,W.e)(a,be),c=(0,aN.r)();return e.createElement(a0.x,{id:b.id,type:"line"},a=>{var d,f,g,h;return e.createElement(e.Fragment,null,e.createElement(aY.A,{legendPayload:(d=b.dataKey,f=b.name,g=b.stroke,h=b.legendType,[{inactive:b.hide,dataKey:d,type:h,color:g,value:(0,aG.uM)(f,d),payload:b}])}),e.createElement(bf,{dataKey:b.dataKey,data:b.data,stroke:b.stroke,strokeWidth:b.strokeWidth,fill:b.fill,name:b.name,hide:b.hide,unit:b.unit,formatter:b.formatter,tooltipType:b.tooltipType,id:a}),e.createElement(a1.p,{type:"line",id:a,data:b.data,xAxisId:b.xAxisId,yAxisId:b.yAxisId,zAxisId:0,dataKey:b.dataKey,hide:b.hide,isPanorama:c}),e.createElement(bn,ba({},b,{id:a})))})},ah.P);bo.displayName="Line";var bp=c(75171),bq=c(99070),br=c(83552),bs=c(95145),bt=c(4770);let bu={name:"",host:"",sshPort:"22",sshUser:"",sshPassword:"",useSudo:!0,sudoPassword:"",agentPort:"19998",installAgent:!0};function bv(a){var b;let c;return!!a?.lastStatus&&(!a.lastError||Date.now()-(Number.isFinite(c=(b=a?.lastStatusAt)?new Date(b).getTime():0)?c:0)<=3e4)}function bw(a){return Math.max(0,Math.min(100,Number(a)||0))}function bx(a,b=1){let c=Number(a)||0;if(!c)return"0 B";let d=["B","KB","MB","GB","TB","PB"],e=Math.min(d.length-1,Math.floor(Math.log(c)/Math.log(1024)));return`${(c/1024**e).toFixed(e>2?b:0)} ${d[e]}`}function by(a){return a?new Date(a).toLocaleTimeString("vi-VN",{hour12:!1}):"--:--:--"}function bz({value:a,label:b,detail:c,color:e="var(--color-brand-500)",icon:f}){let g=bw(a),h=2*Math.PI*49;return(0,d.jsxs)("div",{className:"flex min-w-0 flex-col items-center",children:[(0,d.jsxs)("div",{className:"relative h-36 w-36",children:[(0,d.jsxs)("svg",{className:"h-full w-full -rotate-90",viewBox:"0 0 120 120","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"60",cy:"60",r:49,fill:"none",stroke:"var(--color-surface-2)",strokeWidth:"8"}),(0,d.jsx)("circle",{cx:"60",cy:"60",r:49,fill:"none",stroke:e,strokeWidth:"8",strokeLinecap:"round",strokeDasharray:h,strokeDashoffset:h*(1-g/100),className:"transition-all duration-700"})]}),(0,d.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center text-center",children:[f?(0,d.jsx)("span",{className:"material-symbols-outlined mb-0.5 text-[19px] text-text-muted",children:f}):null,(0,d.jsxs)("strong",{className:"text-2xl font-semibold tracking-tight text-text-main",children:[g.toFixed(+(g<10)),"%"]}),(0,d.jsx)("span",{className:"mt-0.5 text-xs font-medium text-text-muted",children:b})]})]}),(0,d.jsx)("div",{className:"mt-2 max-w-full truncate text-center text-xs text-text-subtle",title:c,children:c})]})}function bA({online:a}){return(0,d.jsx)("span",{className:`h-2.5 w-2.5 shrink-0 rounded-full ${a?"bg-emerald-500 shadow-[0_0_0_4px_rgba(16,185,129,.12)]":"bg-red-400 shadow-[0_0_0_4px_rgba(248,113,113,.12)]"}`})}function bB({servers:a,selectedId:b,onSelect:c}){return(0,d.jsx)("div",{className:"flex gap-3 overflow-x-auto pb-1 scroll-thin-x",children:a.map(a=>{let e=a.id===b,f=bv(a);return(0,d.jsxs)("button",{type:"button",onClick:()=>c(a.id),className:`min-w-[420px] rounded-2xl border p-5 text-left transition ${e?"border-primary bg-primary/5 shadow-[var(--shadow-warm)]":"border-border bg-surface hover:border-primary/40"}`,children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(bA,{online:f}),(0,d.jsx)("div",{className:"truncate text-base font-semibold text-text-main",children:a.name})]}),(0,d.jsxs)("div",{className:"mt-1.5 truncate font-mono text-sm text-text-muted",children:[a.host,":",a.agentPort]})]}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[22px] text-text-subtle",children:"dns"})]}),(0,d.jsxs)("div",{className:"mt-3 flex items-center justify-between text-sm text-text-muted",children:[(0,d.jsx)("span",{children:f?"Đang hoạt động":"Mất kết nối"}),(0,d.jsx)("span",{children:by(a.lastStatusAt)})]})]},a.id)})})}function bC({icon:a,label:b,value:c,sublabel:e,colorClass:f="text-primary",children:g}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-4 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-surface-2 ${f}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[22px]",children:a})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wider text-text-muted",children:b}),(0,d.jsx)("div",{className:"mt-0.5 truncate text-lg font-semibold text-text-main",children:c})]})]}),e?(0,d.jsx)("div",{className:"mt-3 truncate text-xs text-text-subtle",children:e}):null,g]})}function bD({data:a,dataKey:b,label:c,color:e,unit:m="%"}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-5 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,d.jsx)("h3",{className:"font-semibold text-text-main",children:c}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"60 mẫu gần nhất"})]}),(0,d.jsx)("div",{className:"h-44",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(g.Q,{data:a,margin:{top:6,right:4,left:-22,bottom:0},children:[(0,d.jsx)("defs",{children:(0,d.jsxs)("linearGradient",{id:`fill-${b}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"0%",stopColor:e,stopOpacity:.3}),(0,d.jsx)("stop",{offset:"100%",stopColor:e,stopOpacity:.02})]})}),(0,d.jsx)(h.d,{stroke:"var(--color-border-subtle)",strokeDasharray:"4 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"time",hide:!0}),(0,d.jsx)(j.h,{domain:[0,"auto"],tick:{fill:"var(--color-text-subtle)",fontSize:11},axisLine:!1,tickLine:!1}),(0,d.jsx)(k.m,{contentStyle:{background:"var(--color-surface)",border:"1px solid var(--color-border)",borderRadius:12,fontSize:12},formatter:a=>[`${Number(a).toFixed(1)}${m}`,c]}),(0,d.jsx)(l.Gk,{type:"monotone",dataKey:b,stroke:e,fill:`url(#fill-${b})`,strokeWidth:2.2,dot:!1,isAnimationActive:!1})]})})})]})}let bE=["#10b981","#06b6d4","#8b5cf6","#f59e0b","#ef4444","#3b82f6","#ec4899","#84cc16"];function bF(a){return a?.uuid||`index-${a?.index??0}`}function bG({data:a,gpus:b}){let c=(b||[]).map((a,b)=>({id:bF(a),dataKey:`gpu${b}`,name:`GPU ${a.index} \xb7 ${a.name}`,color:bE[b%bE.length]})),e=a.map(a=>{let b={time:a.time};return c.forEach(c=>{let d=a.gpus?.find(a=>a.id===c.id);b[c.dataKey]=d?.usagePercent??null}),b});return(0,d.jsxs)("div",{className:"mb-5 rounded-2xl border border-border bg-surface p-5 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"mb-4 flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main",children:"GPU usage history"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Mỗi đường biểu diễn mức tải realtime của một NVIDIA GPU."})]}),(0,d.jsx)("span",{className:"rounded-full bg-emerald-500/10 px-2.5 py-1 text-xs font-medium text-emerald-600 dark:text-emerald-400",children:"60 mẫu gần nhất"})]}),(0,d.jsx)("div",{className:"h-64",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(p,{data:e,margin:{top:8,right:12,left:-16,bottom:2},children:[(0,d.jsx)(h.d,{stroke:"var(--color-border-subtle)",strokeDasharray:"4 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"time",tickFormatter:by,minTickGap:36,tick:{fill:"var(--color-text-subtle)",fontSize:11},axisLine:!1,tickLine:!1}),(0,d.jsx)(j.h,{domain:[0,100],ticks:[0,25,50,75,100],tickFormatter:a=>`${a}%`,tick:{fill:"var(--color-text-subtle)",fontSize:11},axisLine:!1,tickLine:!1}),(0,d.jsx)(k.m,{contentStyle:{background:"var(--color-surface)",border:"1px solid var(--color-border)",borderRadius:12,fontSize:12},labelFormatter:a=>`Thời gian ${by(a)}`,formatter:(a,b)=>[`${Number(a).toFixed(1)}%`,b]}),(0,d.jsx)(aw,{iconType:"circle",iconSize:8,wrapperStyle:{fontSize:12,paddingTop:12},formatter:a=>(0,d.jsx)("span",{className:"text-text-muted",children:a})}),c.map(a=>(0,d.jsx)(bo,{type:"monotone",dataKey:a.dataKey,name:a.name,stroke:a.color,strokeWidth:2.4,dot:!1,connectNulls:!1,isAnimationActive:!1},a.id))]})})})]})}let bH=[{value:"1h",label:"1 giờ"},{value:"6h",label:"6 giờ"},{value:"24h",label:"24 giờ"},{value:"7d",label:"7 ng\xe0y"},{value:"30d",label:"30 ng\xe0y"}];function bI(a){return a?new Date(a).toLocaleString("vi-VN",{day:"2-digit",month:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}):"—"}function bJ({title:a,description:b,data:c,series:e,domain:g=[0,100],valueFormatter:l=a=>`${Number(a).toFixed(1)}%`,axisFormatter:m=a=>`${a}%`}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface p-5 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"mb-4",children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main",children:a}),b?(0,d.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:b}):null]}),(0,d.jsx)("div",{className:"h-64",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(p,{data:c,margin:{top:8,right:12,left:-8,bottom:2},children:[(0,d.jsx)(h.d,{stroke:"var(--color-border-subtle)",strokeDasharray:"4 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"time",tickFormatter:bI,minTickGap:48,tick:{fill:"var(--color-text-subtle)",fontSize:10},axisLine:!1,tickLine:!1}),(0,d.jsx)(j.h,{domain:g,tickFormatter:m,width:58,tick:{fill:"var(--color-text-subtle)",fontSize:10},axisLine:!1,tickLine:!1}),(0,d.jsx)(k.m,{contentStyle:{background:"var(--color-surface)",border:"1px solid var(--color-border)",borderRadius:12,fontSize:12},labelFormatter:a=>bI(a),formatter:(a,b)=>[l(a),b]}),(0,d.jsx)(aw,{iconType:"circle",iconSize:8,wrapperStyle:{fontSize:12,paddingTop:12},formatter:a=>(0,d.jsx)("span",{className:"text-text-muted",children:a})}),e.map(a=>(0,d.jsx)(bo,{type:"monotone",dataKey:a.key,name:a.name,stroke:a.color,strokeWidth:2.2,dot:!1,connectNulls:!1,isAnimationActive:!1},a.key))]})})})]})}function bK({server:a,data:b,meta:c,period:f,onPeriodChange:g,loading:h,error:i}){let j=(0,e.useMemo)(()=>{let a=new Map;return b.forEach(b=>{(b.gpus||[]).forEach(b=>{a.has(b.id)||a.set(b.id,b)})}),[...a.values()].map((a,b)=>({id:a.id,key:`gpu${b}`,name:`GPU ${a.index} \xb7 ${a.name}`,color:bE[b%bE.length]}))},[b]),k=(0,e.useCallback)(a=>b.map(b=>{let c={time:b.time};return j.forEach(d=>{let e=b.gpus?.find(a=>a.id===d.id);c[d.key]=e?.[a]??null}),c}),[b,j]);return(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-4 border-b border-border px-6 py-5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-4",children:[(0,d.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl bg-violet-500/10 text-violet-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[27px]",children:"monitoring"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("h3",{className:"truncate text-lg font-semibold text-text-main",children:["Lịch sử \xb7 ",a.name]}),(0,d.jsxs)("p",{className:"mt-1 text-xs text-text-muted",children:["Sample mỗi ph\xfat \xb7 lưu tối đa ",c?.retentionDays||30," ng\xe0y"]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1 rounded-xl bg-surface-2 p-1",children:bH.map(a=>(0,d.jsx)("button",{type:"button",onClick:()=>g(a.value),className:`rounded-lg px-3 py-2 text-xs font-semibold transition ${f===a.value?"bg-surface text-primary shadow-sm":"text-text-muted hover:text-text-main"}`,children:a.label},a.value))})]}),h?(0,d.jsxs)("div",{className:"flex min-h-[420px] items-center justify-center text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mr-2 animate-spin",children:"progress_activity"}),"Đang tải dữ liệu lịch sử..."]}):i?(0,d.jsx)("div",{className:"m-6 rounded-2xl border border-red-500/20 bg-red-500/10 p-5 text-sm text-red-600 dark:text-red-300",children:i}):b.length?(0,d.jsxs)("div",{className:"space-y-5 p-6",children:[(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-3",children:[(0,d.jsx)(bC,{icon:"database",label:"Số điểm hiển thị",value:b.length.toLocaleString("vi-VN"),sublabel:`Bucket ${c?.bucketMinutes||1} ph\xfat`,colorClass:"text-violet-500"}),(0,d.jsx)(bC,{icon:"date_range",label:"Từ thời điểm",value:bI(b[0]?.time),sublabel:"Điểm đầu ti\xean trong khoảng đ\xe3 chọn",colorClass:"text-cyan-500"}),(0,d.jsx)(bC,{icon:"memory",label:"NVIDIA GPU",value:`${j.length} card`,sublabel:"Theo d\xf5i ri\xeang bằng GPU UUID",colorClass:"text-emerald-500"})]}),(0,d.jsxs)("div",{className:"grid gap-5 xl:grid-cols-2",children:[(0,d.jsx)(bJ,{title:"CPU, RAM & Disk usage",description:"Tỷ lệ sử dụng t\xe0i nguy\xean hệ thống theo thời gian.",data:b,series:[{key:"cpu",name:"CPU",color:"#3b9dec"},{key:"memory",name:"RAM",color:"#8b5cf6"},{key:"disk",name:"Disk",color:"#f59e0b"}]}),(0,d.jsx)(bJ,{title:"Network throughput",description:"Tốc độ nhận v\xe0 gửi trung b\xecnh trong mỗi bucket.",data:b,domain:[0,"auto"],series:[{key:"networkRxBps",name:"Download",color:"#06b6d4"},{key:"networkTxBps",name:"Upload",color:"#ec4899"}],valueFormatter:a=>`${bx(a)}/s`,axisFormatter:a=>bx(a)})]}),j.length?(0,d.jsxs)("div",{className:"grid gap-5 xl:grid-cols-2",children:[(0,d.jsx)(bJ,{title:"NVIDIA GPU usage",description:"Mức tải của từng GPU, ph\xe2n biệt theo UUID.",data:k("usagePercent"),series:j}),(0,d.jsx)(bJ,{title:"GPU VRAM usage",description:"Phần trăm VRAM đ\xe3 sử dụng tr\xean từng card.",data:k("memoryUsagePercent"),series:j}),(0,d.jsx)(bJ,{title:"GPU temperature",description:"Nhiệt độ trung b\xecnh của từng card trong mỗi bucket.",data:k("temperatureC"),domain:[0,"auto"],series:j,valueFormatter:a=>`${Number(a).toFixed(1)}\xb0C`,axisFormatter:a=>`${a}\xb0`}),(0,d.jsx)(bJ,{title:"GPU power draw",description:"C\xf4ng suất ti\xeau thụ trung b\xecnh của từng card.",data:k("powerDrawW"),domain:[0,"auto"],series:j,valueFormatter:a=>`${Number(a).toFixed(1)} W`,axisFormatter:a=>`${a}W`})]}):null]}):(0,d.jsxs)("div",{className:"flex min-h-[420px] flex-col items-center justify-center px-6 text-center",children:[(0,d.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl bg-violet-500/10 text-violet-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[34px]",children:"hourglass_empty"})}),(0,d.jsx)("h4",{className:"mt-5 font-semibold text-text-main",children:"Chưa c\xf3 dữ liệu lịch sử"}),(0,d.jsx)("p",{className:"mt-2 max-w-md text-sm leading-6 text-text-muted",children:"Collector đ\xe3 được bật v\xe0 sẽ ghi mẫu đầu ti\xean trong v\xf2ng một ph\xfat. Dữ liệu vẫn tiếp tục được thu thập khi kh\xf4ng mở dashboard."})]})]})}function bL({gpu:a}){let b=bw(a.memoryUsagePercent);return(0,d.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-border-subtle bg-gradient-to-r from-emerald-500/8 to-cyan-500/5 px-5 py-4",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-xl bg-emerald-500/10 text-emerald-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined",children:"memory"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"truncate font-semibold text-text-main",children:["GPU ",a.index," \xb7 ",a.name]}),(0,d.jsxs)("div",{className:"mt-0.5 text-xs text-text-muted",children:["NVIDIA Driver ",a.driverVersion||"—"]})]})]}),(0,d.jsx)("span",{className:"rounded-full bg-emerald-500/10 px-2.5 py-1 text-xs font-semibold text-emerald-600 dark:text-emerald-400",children:"NVIDIA"})]}),(0,d.jsxs)("div",{className:"grid gap-5 p-5 sm:grid-cols-[150px_1fr]",children:[(0,d.jsx)(bz,{value:a.usagePercent,label:"GPU Load",detail:`${a.temperatureC??"—"}\xb0C`,color:"#10b981"}),(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-2 flex items-center justify-between text-sm",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"VRAM"}),(0,d.jsxs)("span",{className:"font-semibold text-text-main",children:[bx(1048576*(a.memoryUsedMb||0))," /"," ",bx(1048576*(a.memoryTotalMb||0))]})]}),(0,d.jsx)("div",{className:"h-2.5 overflow-hidden rounded-full bg-surface-2",children:(0,d.jsx)("div",{className:"h-full rounded-full bg-emerald-500 transition-all duration-700",style:{width:`${b}%`}})}),(0,d.jsxs)("div",{className:"mt-1.5 text-right text-xs text-text-subtle",children:[b.toFixed(1),"% đ\xe3 d\xf9ng"]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("div",{className:"rounded-xl bg-surface-2 p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Nhiệt độ"}),(0,d.jsxs)("div",{className:"mt-1 text-lg font-semibold text-text-main",children:[a.temperatureC??"—","\xb0C"]})]}),(0,d.jsxs)("div",{className:"rounded-xl bg-surface-2 p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"C\xf4ng suất"}),(0,d.jsxs)("div",{className:"mt-1 text-lg font-semibold text-text-main",children:[a.powerDrawW??"—",(0,d.jsxs)("span",{className:"text-xs font-normal text-text-muted",children:[" ","/ ",a.powerLimitW??"—"," W"]})]})]})]})]})]})]})}function bM({open:a,onClose:b,onCreated:c}){let[f,g]=(0,e.useState)(bu),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(""),l=(a,b)=>g(c=>({...c,[a]:b})),m=async a=>{a.preventDefault(),i(!0),k("");try{let a=await fetch("/api/resource-monitor",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}),d=await a.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Kh\xf4ng thể th\xeam server");await c(d.server,d.install),b()}catch(a){k(a?.message||"Kh\xf4ng thể th\xeam server")}finally{i(!1)}};return(0,d.jsx)(bs.default,{isOpen:a,onClose:b,title:"Th\xeam Linux server",size:"xl",busy:h,footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(bq.default,{variant:"ghost",onClick:b,disabled:h,children:"Hủy"}),(0,d.jsx)(bq.default,{onClick:m,loading:h,icon:"rocket_launch",children:"C\xe0i agent & th\xeam server"})]}),children:(0,d.jsxs)("form",{onSubmit:m,className:"space-y-5",children:[(0,d.jsx)("div",{className:"rounded-xl border border-primary/20 bg-primary/5 p-4 text-sm text-text-muted",children:(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"auto_fix_high"}),(0,d.jsx)("p",{children:"BlueRouter sẽ SSH v\xe0o m\xe1y, d\xf9ng quyền sudo để c\xe0i Python agent dưới dạng systemd service. Sau lần n\xe0y bạn kh\xf4ng cần thao t\xe1c th\xeam tr\xean Linux."})]})}),(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,d.jsx)(br.default,{label:"T\xean hiển thị",value:f.name,onChange:a=>l("name",a.target.value),placeholder:"GPU Worker 01",icon:"dns"}),(0,d.jsx)(br.default,{required:!0,label:"Hostname / IP",value:f.host,onChange:a=>l("host",a.target.value),placeholder:"192.168.1.50",icon:"lan"}),(0,d.jsx)(br.default,{required:!0,label:"SSH user",value:f.sshUser,onChange:a=>l("sshUser",a.target.value),placeholder:"ubuntu",icon:"person"}),(0,d.jsx)(br.default,{label:"SSH port",type:"number",value:f.sshPort,onChange:a=>l("sshPort",a.target.value)}),(0,d.jsx)(br.default,{label:"SSH password",type:"password",value:f.sshPassword,onChange:a=>l("sshPassword",a.target.value),placeholder:"Để trống nếu d\xf9ng SSH key",hint:"Chỉ d\xf9ng trong l\xfac c\xe0i, kh\xf4ng lưu v\xe0o database."}),(0,d.jsx)(br.default,{label:"Agent port",type:"number",value:f.agentPort,onChange:a=>l("agentPort",a.target.value),hint:"Mặc định 19998; dashboard server phải truy cập được port n\xe0y."})]}),(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-surface-2/60 p-4",children:[(0,d.jsx)("input",{type:"checkbox",checked:f.useSudo,onChange:a=>l("useSudo",a.target.checked),className:"mt-1 h-4 w-4"}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-semibold text-text-main",children:"User cần sudo để c\xe0i service"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Tắt nếu đăng nhập trực tiếp bằng root."})]})]}),f.useSudo?(0,d.jsx)(br.default,{label:"Sudo password",type:"password",value:f.sudoPassword,onChange:a=>l("sudoPassword",a.target.value),placeholder:"Mặc định d\xf9ng c\xf9ng SSH password"}):null,j?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/20 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-300",children:j}):null]})})}function bN({open:a,server:b,onClose:c,onUpdated:f}){let[g,h]=(0,e.useState)({name:b?.name||"",host:b?.host||"",sshPort:String(b?.sshPort||22),sshUser:b?.sshUser||"",sshPassword:"",useSudo:b?.useSudo!==!1,sudoPassword:"",agentPort:String(b?.agentPort||19998),installAgent:!0}),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(""),m=(a,b)=>h(c=>({...c,[a]:b})),n=async a=>{if(a.preventDefault(),b?.id){j(!0),l("");try{let a=await fetch(`/api/resource-monitor/${b.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name,host:g.host,sshPort:g.sshPort,sshUser:g.sshUser,useSudo:g.useSudo,agentPort:g.agentPort})}),d=await a.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Kh\xf4ng thể lưu server");let e=null;if(g.installAgent){let a=await fetch(`/api/resource-monitor/${b.id}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sshPassword:g.sshPassword,sudoPassword:g.sudoPassword})}),c=await a.json().catch(()=>({}));e={ok:a.ok&&!1!==c.ok,log:c.log,error:c.error}}await f(d.server,e),c()}catch(a){l(a?.message||"Kh\xf4ng thể cập nhật server")}finally{j(!1)}}};return(0,d.jsx)(bs.default,{isOpen:a,onClose:c,title:"Sửa Linux server",size:"xl",busy:i,footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(bq.default,{variant:"ghost",onClick:c,disabled:i,children:"Hủy"}),(0,d.jsx)(bq.default,{onClick:n,loading:i,icon:"save",children:"Lưu & c\xe0i lại agent"})]}),children:(0,d.jsxs)("form",{onSubmit:n,className:"space-y-5",children:[(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,d.jsx)(br.default,{label:"T\xean hiển thị",value:g.name,onChange:a=>m("name",a.target.value),placeholder:"GPU Worker 01",icon:"dns"}),(0,d.jsx)(br.default,{required:!0,label:"Hostname / IP",value:g.host,onChange:a=>m("host",a.target.value),placeholder:"192.168.1.50",icon:"lan"}),(0,d.jsx)(br.default,{required:!0,label:"SSH user",value:g.sshUser,onChange:a=>m("sshUser",a.target.value),placeholder:"ubuntu",icon:"person"}),(0,d.jsx)(br.default,{label:"SSH port",type:"number",value:g.sshPort,onChange:a=>m("sshPort",a.target.value)}),(0,d.jsx)(br.default,{label:"SSH password",type:"password",value:g.sshPassword,onChange:a=>m("sshPassword",a.target.value),placeholder:"Nhập lại nếu trước đ\xf3 sai",hint:"Chỉ d\xf9ng để c\xe0i lại agent, kh\xf4ng lưu v\xe0o database."}),(0,d.jsx)(br.default,{label:"Agent port",type:"number",value:g.agentPort,onChange:a=>m("agentPort",a.target.value)})]}),(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-surface-2/60 p-4",children:[(0,d.jsx)("input",{type:"checkbox",checked:g.useSudo,onChange:a=>m("useSudo",a.target.checked),className:"mt-1 h-4 w-4"}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-semibold text-text-main",children:"User cần sudo để c\xe0i service"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Tắt nếu đăng nhập trực tiếp bằng root."})]})]}),g.useSudo?(0,d.jsx)(br.default,{label:"Sudo password",type:"password",value:g.sudoPassword,onChange:a=>m("sudoPassword",a.target.value),placeholder:"Mặc định d\xf9ng c\xf9ng SSH password"}):null,(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-border bg-surface-2/60 p-4",children:[(0,d.jsx)("input",{type:"checkbox",checked:g.installAgent,onChange:a=>m("installAgent",a.target.checked),className:"mt-1 h-4 w-4"}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm font-semibold text-text-main",children:"C\xe0i lại agent sau khi lưu"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Bật mục n\xe0y khi cần nhập lại account/password SSH hoặc đổi port."})]})]}),k?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/20 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-300",children:k}):null]})})}let bO={normal:{variant:"success",label:"B\xecnh thường"},warning:{variant:"warning",label:"Cảnh b\xe1o"},critical:{variant:"error",label:"Qu\xe1 tải"},unknown:{variant:"default",label:"Kh\xf4ng r\xf5"}};function bP({modelOptions:a,selectedModel:b,onSelectModel:c,analysis:e,loading:f,error:g,onAnalyze:h,standby:i}){return(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsx)("div",{className:"flex flex-wrap items-center justify-between gap-4 border-b border-border px-6 py-5",children:(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/10 text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[27px]",children:"neurology"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"text-lg font-semibold text-text-main",children:"Đ\xe1nh gi\xe1 AI t\xecnh trạng server"}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Ph\xe2n t\xedch giờ l\xe0m việc h\xf4m nay (8:00 - 18:00) tr\xean to\xe0n bộ Linux server."})]})]})}),(0,d.jsxs)("div",{className:"space-y-5 p-6",children:[i?(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/20 bg-amber-500/10 px-4 py-3 text-sm text-amber-700 dark:text-amber-300",children:"Standby mode: kết quả ph\xe2n t\xedch được đồng bộ tự động từ Master. Node n\xe0y kh\xf4ng tự chạy ph\xe2n t\xedch AI."}):null,(0,d.jsxs)("div",{className:"flex flex-wrap items-end gap-3",children:[(0,d.jsx)(bt.default,{className:"min-w-[280px] flex-1",label:"AI model d\xf9ng để ph\xe2n t\xedch",options:a,value:b,onChange:a=>c(a.target.value),placeholder:a.length?"Chọn model":"Chưa c\xf3 kết nối AI n\xe0o đang hoạt động",disabled:!a.length||i}),(0,d.jsx)(bq.default,{icon:"auto_awesome",onClick:h,loading:f,disabled:!b||i,children:"Ph\xe2n t\xedch lại"})]}),g?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/20 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-300",children:g}):null,e?(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs text-text-muted",children:[(0,d.jsxs)("span",{children:["Model: ",(0,d.jsx)("span",{className:"font-semibold",children:e.modelLabel})]}),(0,d.jsxs)("span",{children:["Cập nhật l\xfac ",by(e.generatedAt)]})]}),(0,d.jsx)("div",{className:"whitespace-pre-wrap rounded-2xl border border-border bg-surface-2/40 p-5 text-sm leading-6 text-text-main",children:e.summary}),e.servers?.length?(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-3 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-5 w-1 rounded-full bg-primary"}),(0,d.jsx)("h4",{className:"font-semibold text-text-main",children:"Trạng th\xe1i từng server"})]}),(0,d.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:e.servers.map(a=>{let b=bO[a.status]||bO.unknown;return(0,d.jsxs)("div",{className:"flex items-center justify-between rounded-xl border border-border bg-surface px-4 py-3",children:[(0,d.jsx)("span",{className:"truncate text-sm font-medium text-text-main",children:a.name}),(0,d.jsx)(bp.default,{variant:b.variant,dot:!0,children:b.label})]},a.serverId)})})]}):null]}):f?null:(0,d.jsx)("div",{className:"rounded-2xl border border-dashed border-border bg-surface-2/40 py-10 text-center text-sm text-text-muted",children:'Chưa c\xf3 ph\xe2n t\xedch n\xe0o — bấm "Ph\xe2n t\xedch lại" để bắt đầu.'})]})]})}function bQ(){let a,b,c,f,[g,h]=(0,e.useState)("realtime"),[i,j]=(0,e.useState)([]),[k,l]=(0,e.useState)(""),[m,n]=(0,e.useState)({}),[o,p]=(0,e.useState)(!0),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)("24h"),[E,F]=(0,e.useState)([]),[G,H]=(0,e.useState)(null),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(""),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)([]),[Q,R]=(0,e.useState)(""),[S,T]=(0,e.useState)(null),[U,V]=(0,e.useState)(!1),[W,X]=(0,e.useState)(""),Y=(0,e.useRef)(0),Z=(0,e.useCallback)(async({quiet:a=!1}={})=>{a||r(!0);try{let a=await fetch("/api/resource-monitor",{cache:"no-store"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b.error||"Kh\xf4ng tải được server");let c=b.servers||[];N(!0===b.standby),j(c),l(a=>a&&c.some(b=>b.id===a)?a:c[0]?.id||""),n(a=>{let b={...a};return c.forEach(a=>{if(!bv(a))return;let c=a.lastStatus,d={time:c.updatedAt||new Date().toISOString(),cpu:c.cpu?.usagePercent||0,memory:c.memory?.usagePercent||0,disk:c.disks?.[0]?.usagePercent||0,gpu:c.gpus?.length?Math.max(...c.gpus.map(a=>a.usagePercent||0)):0,gpus:(c.gpus||[]).map(a=>({id:bF(a),usagePercent:bw(a.usagePercent)}))},e=b[a.id]||[];b[a.id]=e.at(-1)?.time===d.time?e:[...e,d].slice(-60)}),b})}catch(b){a||B({type:"error",text:b?.message||"Kh\xf4ng tải được server"})}finally{p(!1),a||r(!1)}},[]),$=(0,e.useCallback)(async()=>{if(!k)return;let a=++Y.current;J(!0),L("");try{let b=await fetch(`/api/resource-monitor/history?serverId=${encodeURIComponent(k)}&period=${encodeURIComponent(C)}`,{cache:"no-store"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Kh\xf4ng tải được lịch sử t\xe0i nguy\xean");if(Y.current!==a)return;F(c.points||[]),H(c)}catch(b){if(Y.current!==a)return;L(b?.message||"Kh\xf4ng tải được lịch sử t\xe0i nguy\xean"),F([])}finally{Y.current===a&&J(!1)}},[C,k]),_=(0,e.useCallback)(a=>{R(a),fetch("/api/resource-monitor/analyze",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a})}).catch(()=>{})},[]),aa=(0,e.useCallback)(async()=>{if(!Q)return;let a=Q.indexOf("::"),b=Q.slice(0,a),c=Q.slice(a+2);V(!0),X("");try{let a=await fetch("/api/resource-monitor/analyze",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionId:b,model:c})}),d=await a.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Kh\xf4ng thể ph\xe2n t\xedch t\xe0i nguy\xean");T(d.analysis)}catch(a){X(a?.message||"Kh\xf4ng thể ph\xe2n t\xedch t\xe0i nguy\xean")}finally{V(!1)}},[Q]),ab=(0,e.useMemo)(()=>i.find(a=>a.id===k)||null,[i,k]),ac=ab?.lastStatus,ad=bv(ab),ae=ac?.disks?.[0],af=m[k]||[],ag=async()=>{if(w){z(!0);try{if(!(await fetch(`/api/resource-monitor/${w.id}`,{method:"DELETE"})).ok)throw Error("Kh\xf4ng thể x\xf3a server");x(null),await Z()}catch(a){B({type:"error",text:a.message})}finally{z(!1)}}};return o?(0,d.jsxs)("div",{className:"flex min-h-[50vh] items-center justify-center text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mr-2 animate-spin",children:"progress_activity"}),"Đang tải t\xe0i nguy\xean server..."]}):(0,d.jsxs)("div",{className:"space-y-6",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-xl font-semibold text-text-main",children:"Linux Resource Monitor"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Theo d\xf5i realtime CPU, RAM, disk, network v\xe0 to\xe0n bộ NVIDIA GPU."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(bq.default,{variant:"secondary",icon:"refresh",onClick:()=>"history"===g?$():Z(),loading:"history"===g?I:q,children:"L\xe0m mới"}),(0,d.jsx)(bq.default,{icon:"add",onClick:()=>t(!0),disabled:M,children:"Th\xeam server"})]})]}),M?(0,d.jsx)("div",{className:"rounded-xl border border-blue-500/30 bg-blue-500/10 px-4 py-3 text-sm text-blue-700 dark:text-blue-300",children:"Standby mode: Resource Monitor chỉ hiển thị snapshot từ Master. Node n\xe0y kh\xf4ng polling agent v\xe0 kh\xf4ng cho sửa danh s\xe1ch server."}):null,(0,d.jsxs)("div",{className:"flex w-fit rounded-xl border border-border bg-surface p-1 shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>h("realtime"),className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-sm font-semibold transition ${"realtime"===g?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[19px]",children:"monitor_heart"}),"Realtime Monitor"]}),(0,d.jsxs)("button",{type:"button",onClick:()=>h("history"),className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-sm font-semibold transition ${"history"===g?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[19px]",children:"query_stats"}),"History"]}),(0,d.jsxs)("button",{type:"button",onClick:()=>h("ai"),className:`flex items-center gap-2 rounded-lg px-4 py-2.5 text-sm font-semibold transition ${"ai"===g?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[19px]",children:"neurology"}),"Đ\xe1nh gi\xe1 AI"]})]}),A?(0,d.jsxs)("div",{className:`flex items-center justify-between rounded-xl border px-4 py-3 text-sm ${"error"===A.type?"border-red-500/20 bg-red-500/10 text-red-600 dark:text-red-300":"border-amber-500/20 bg-amber-500/10 text-amber-700 dark:text-amber-300"}`,children:[(0,d.jsx)("span",{children:A.text}),(0,d.jsx)("button",{onClick:()=>B(null),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}):null,i.length?(0,d.jsxs)(d.Fragment,{children:["ai"!==g?(0,d.jsx)(bB,{servers:i,selectedId:k,onSelect:l}):null,"ai"===g?(0,d.jsx)(bP,{modelOptions:O,selectedModel:Q,onSelectModel:_,analysis:S,loading:U,error:W,onAnalyze:aa,standby:M}):ab?"realtime"===g?(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-surface shadow-[var(--shadow-soft)]",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-4 border-b border-border px-6 py-5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-4",children:[(0,d.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/10 text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[27px]",children:"dns"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(bA,{online:ad}),(0,d.jsx)("h3",{className:"truncate text-lg font-semibold text-text-main",children:ab.name})]}),(0,d.jsxs)("div",{className:"mt-1 flex flex-wrap gap-x-3 text-xs text-text-muted",children:[(0,d.jsx)("span",{className:"font-mono",children:ab.host}),ac?.os?(0,d.jsx)("span",{children:ac.os}):null,ac?.uptimeSeconds?(0,d.jsxs)("span",{children:["Uptime ",(b=Math.floor((a=Number(ac.uptimeSeconds)||0)/86400),c=Math.floor(a%86400/3600),f=Math.floor(a%3600/60),b?`${b} ng\xe0y ${c} giờ`:c?`${c} giờ ${f} ph\xfat`:`${f} ph\xfat`)]}):null]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`rounded-full px-3 py-1.5 text-xs font-semibold ${ad?"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400":"bg-red-500/10 text-red-600 dark:text-red-300"}`,children:ad?"Online":"Offline"}),M?null:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",onClick:()=>v(!0),className:"rounded-xl p-2 text-text-muted hover:bg-primary/10 hover:text-primary",title:"Sửa server v\xe0 c\xe0i lại agent",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"edit"})}),(0,d.jsx)("button",{type:"button",onClick:()=>x(ab),className:"rounded-xl p-2 text-text-muted hover:bg-red-500/10 hover:text-red-500",title:"X\xf3a khỏi dashboard",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"delete"})})]})]})]}),ad?null:(0,d.jsx)("div",{className:"m-6 rounded-2xl border border-amber-500/20 bg-amber-500/8 p-5",children:(0,d.jsxs)("div",{className:"flex gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-500",children:"cloud_off"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"font-semibold text-text-main",children:"Kh\xf4ng kết nối được agent"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:ab.lastError||"Agent chưa gửi dữ liệu. Kiểm tra firewall v\xe0 agent port."}),ab.lastInstallLog?(0,d.jsxs)("details",{className:"mt-3",children:[(0,d.jsx)("summary",{className:"cursor-pointer text-xs font-semibold text-amber-600",children:"Xem log c\xe0i đặt"}),(0,d.jsx)("pre",{className:"mt-2 max-h-48 overflow-auto whitespace-pre-wrap rounded-xl bg-black/80 p-3 text-xs text-white",children:ab.lastInstallLog})]}):null]})]})}),ac?(0,d.jsxs)("div",{className:"space-y-7 p-6",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-5 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-5 w-1 rounded-full bg-primary"}),(0,d.jsx)("h3",{className:"font-semibold text-text-main",children:"Tổng quan t\xe0i nguy\xean"}),(0,d.jsxs)("span",{className:"ml-auto text-xs text-text-muted",children:["Cập nhật ",by(ab.lastStatusAt)]})]}),(0,d.jsxs)("div",{className:"grid gap-5 sm:grid-cols-2 xl:grid-cols-4",children:[(0,d.jsx)(bz,{value:ac.cpu?.usagePercent,label:"CPU",detail:`${ac.cpu?.cores||0} cores \xb7 Load ${ac.cpu?.load1??0}`,icon:"developer_board"}),(0,d.jsx)(bz,{value:ac.memory?.usagePercent,label:"RAM",detail:`${bx(ac.memory?.usedBytes)} / ${bx(ac.memory?.totalBytes)}`,icon:"memory_alt"}),(0,d.jsx)(bz,{value:ae?.usagePercent,label:"Disk /",detail:`${bx(ae?.usedBytes)} / ${bx(ae?.totalBytes)}`,icon:"hard_drive"}),(0,d.jsx)(bz,{value:ac.gpus?.length?Math.max(...ac.gpus.map(a=>a.usagePercent||0)):0,label:ac.gpus?.length?`${ac.gpus.length} NVIDIA GPU`:"GPU",detail:ac.gpus?.length?`${ac.gpus.length} card được ph\xe1t hiện`:"Kh\xf4ng c\xf3 NVIDIA GPU",color:"#10b981",icon:"memory"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2 xl:grid-cols-4",children:[(0,d.jsx)(bC,{icon:"developer_board",label:"CPU",value:ac.cpu?.model||`${ac.cpu?.cores||0} cores`,sublabel:`Load average ${ac.cpu?.load1??0} / ${ac.cpu?.load5??0} / ${ac.cpu?.load15??0}`}),(0,d.jsx)(bC,{icon:"swap_vert",label:"Network realtime",value:`↓ ${bx(ac.network?.rxBytesPerSecond)}/s`,sublabel:`↑ ${bx(ac.network?.txBytesPerSecond)}/s`,colorClass:"text-cyan-500"}),(0,d.jsx)(bC,{icon:"hard_drive",label:"Disk root",value:`${bx(ae?.freeBytes)} trống`,sublabel:`${ae?.device||"root"} \xb7 ${ae?.filesystem||"filesystem"}`,colorClass:"text-violet-500"}),(0,d.jsx)(bC,{icon:"memory",label:"Swap",value:bx(ac.memory?.swapUsedBytes),sublabel:`Tổng ${bx(ac.memory?.swapTotalBytes)}`,colorClass:"text-amber-500"})]}),(0,d.jsxs)("div",{className:"grid gap-5 xl:grid-cols-2",children:[(0,d.jsx)(bD,{data:af,dataKey:"cpu",label:"CPU usage",color:"#3b9dec"}),(0,d.jsx)(bD,{data:af,dataKey:"memory",label:"RAM usage",color:"#8b5cf6"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-5 w-1 rounded-full bg-emerald-500"}),(0,d.jsxs)("h3",{className:"font-semibold text-text-main",children:["NVIDIA GPU (",ac.gpus?.length||0,")"]})]}),ac.gpus?.length?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(bG,{data:af,gpus:ac.gpus}),(0,d.jsx)("div",{className:"grid gap-5 xl:grid-cols-2",children:ac.gpus.map(a=>(0,d.jsx)(bL,{gpu:a},a.uuid||a.index))})]}):(0,d.jsxs)("div",{className:"rounded-2xl border border-dashed border-border bg-surface-2/40 py-10 text-center text-sm text-text-muted",children:["Kh\xf4ng ph\xe1t hiện NVIDIA GPU hoặc"," ",(0,d.jsx)("span",{className:"font-mono",children:"nvidia-smi"})," chưa sẵn s\xe0ng."]})]})]}):null]}):(0,d.jsx)(bK,{server:ab,data:E,meta:G,period:C,onPeriodChange:D,loading:I,error:K}):null]}):(0,d.jsxs)("div",{className:"flex min-h-[460px] flex-col items-center justify-center rounded-3xl border border-dashed border-border bg-surface px-6 text-center",children:[(0,d.jsx)("div",{className:"flex h-20 w-20 items-center justify-center rounded-3xl bg-primary/10 text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[42px]",children:"monitor_heart"})}),(0,d.jsx)("h3",{className:"mt-6 text-xl font-semibold text-text-main",children:"Chưa c\xf3 Linux server"}),(0,d.jsx)("p",{className:"mt-2 max-w-lg text-sm leading-6 text-text-muted",children:"Th\xeam server bằng t\xe0i khoản SSH c\xf3 quyền sudo. BlueRouter sẽ tự c\xe0i agent systemd v\xe0 bắt đầu hiển thị t\xe0i nguy\xean ngay tại đ\xe2y."}),M?null:(0,d.jsx)(bq.default,{className:"mt-6",icon:"add",onClick:()=>t(!0),children:"Th\xeam server đầu ti\xean"})]}),(0,d.jsx)(bM,{open:s&&!M,onClose:()=>t(!1),onCreated:async(a,b)=>{b&&!b.ok&&B({type:"warning",text:"Đ\xe3 lưu server nhưng c\xe0i agent chưa th\xe0nh c\xf4ng. Mở server để xem log."}),await Z()}}),(0,d.jsx)(bN,{open:u&&!M,server:ab,onClose:()=>v(!1),onUpdated:async(a,b)=>{b&&!b.ok&&B({type:"warning",text:"Đ\xe3 lưu server nhưng c\xe0i lại agent chưa th\xe0nh c\xf4ng. Mở server để xem log."}),await Z()}}),(0,d.jsx)(bs.ConfirmModal,{isOpen:!!w,onClose:()=>x(null),onConfirm:ag,loading:y,variant:"danger",title:"X\xf3a server khỏi dashboard?",confirmText:"X\xf3a server",cancelText:"Hủy",message:"Server sẽ ngừng được theo d\xf5i. Agent systemd tr\xean Linux kh\xf4ng bị gỡ tự động."})]})}}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,2430,8316,8946,402,5681,4404,6064,6328,8640],()=>b(b.s=54199));module.exports=c})();
|