@jheavenknows/bluerouter 3.0.24 → 3.0.25
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 +6 -6
- package/app/.next-cli-build/build-manifest.json +2 -2
- 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_client-reference-manifest.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.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/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/combos/page_client-reference-manifest.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.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/media-providers/[kind]/[id]/page_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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/profile/page_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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/skills/page_client-reference-manifest.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_client-reference-manifest.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/_global-error.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_index.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_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 +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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-settings/route.js.nft.json +1 -1
- 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.nft.json +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.nft.json +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/prompt-logs/[id]/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.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.nft.json +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.nft.json +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.nft.json +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/import/route.js.nft.json +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/pricing/route.js.nft.json +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.nft.json +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/providers/[id]/models/route.js.nft.json +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.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.nft.json +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/test-batch/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +1 -1
- 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/settings/database/route.js.nft.json +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.nft.json +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 +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.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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/route.js.nft.json +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/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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/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_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 +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +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 +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- 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 +4 -4
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +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 +6 -6
- package/app/.next-cli-build/server/chunks/2338.js +1 -1
- package/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/app/.next-cli-build/server/chunks/7130.js +1 -1
- package/app/.next-cli-build/server/chunks/7153.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.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/static/chunks/{620-356dbe3dc69ff1ad.js → 620-0da2d3ddb59472c3.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/login/{page-dce6eaa46bd2c709.js → page-beeb9f7cb47ad3fc.js} +1 -1
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- /package/app/.next-cli-build/static/{-e_GXZS90ok4rzHf0AaIY → nxfjuhFM_8WLGDl2aSVXS}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{-e_GXZS90ok4rzHf0AaIY → nxfjuhFM_8WLGDl2aSVXS}/_ssgManifest.js +0 -0
- /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-3.0.9-to-3.0.20-3.0.20-20260618-152041 → upgrade-3.0.24-to-3.0.25-3.0.25-20260618-163352}/data.sqlite +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4520],{33796:(e,t,r)=>{Promise.resolve().then(r.bind(r,83016))},54642:e=>{var t;"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="//"),(t={}).endianness=function(){return"LE"},t.hostname=function(){return"u">typeof location?location.hostname:""},t.loadavg=function(){return[]},t.uptime=function(){return 0},t.freemem=function(){return Number.MAX_VALUE},t.totalmem=function(){return Number.MAX_VALUE},t.cpus=function(){return[]},t.type=function(){return"Browser"},t.release=function(){return"u">typeof navigator?navigator.appVersion:""},t.networkInterfaces=t.getNetworkInterfaces=function(){return{}},t.arch=function(){return"javascript"},t.platform=function(){return"browser"},t.tmpdir=t.tmpDir=function(){return"/tmp"},t.EOL="\n",t.homedir=function(){return"/"},e.exports=t},73321:(e,t,r)=>{"use strict";var s=r(74645);r.o(s,"notFound")&&r.d(t,{notFound:function(){return s.notFound}}),r.o(s,"useParams")&&r.d(t,{useParams:function(){return s.useParams}}),r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(t,{useSearchParams:function(){return s.useSearchParams}})},83016:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var s=r(95155),n=r(12115),a=r(73321),o=r(90620);let i=[{badge:"API",badgeColor:"bg-indigo-500",title:"AI API Gateway",description:"Quản l\xfd endpoint AI nội bộ. Theo d\xf5i trạng th\xe1i model, cấu h\xecnh routing v\xe0 gi\xe1m s\xe1t lưu lượng API theo thời gian thực.",href:"/dashboard",accent:"from-indigo-500/10 to-indigo-500/5",borderHover:"hover:border-indigo-300"},{badge:"CHAT",badgeColor:"bg-violet-500",title:"AI Web Chat",description:"Tr\xf2 chuyện với AI nội bộ. Hỗ trợ viết code, ph\xe2n t\xedch t\xe0i liệu, brainstorm \xfd tưởng v\xe0 trả lời c\xe2u hỏi kỹ thuật.",href:"https://ai.fujinet.vn/",accent:"from-violet-500/10 to-violet-500/5",borderHover:"hover:border-violet-300"},{badge:"DỊCH",badgeColor:"bg-purple-500",title:"AI Translator",description:"Dịch t\xe0i liệu hỗ trợ 201 ng\xf4n ngữ. Hỗ trợ Word, Excel, PowerPoint, IMAGE v\xe0 PDF với khả năng giữ nguy\xean định dạng gốc.",href:"https://translate-workspace.fujinet.vn",accent:"from-purple-500/10 to-purple-500/5",borderHover:"hover:border-purple-300"},{badge:"TICKET",badgeColor:"bg-blue-500",title:"IT Support",description:"Gửi y\xeau cầu hỗ trợ kỹ thuật. Theo d\xf5i tiến độ xử l\xfd ticket, trao đổi trực tiếp với đội IT v\xe0 xem lịch sử sự cố.",href:"https://itsupport.fujinet.vn",accent:"from-blue-500/10 to-blue-500/5",borderHover:"hover:border-blue-300"},{badge:"ASSET",badgeColor:"bg-sky-500",title:"IT Resource",description:"Quản l\xfd t\xe0i nguy\xean CNTT nội bộ. Đăng k\xfd cấp ph\xe1t thiết bị, t\xe0i khoản, quyền truy cập VPN v\xe0 c\xe1c dịch vụ hạ tầng.",href:"https://itresource.fujinet.net/",accent:"from-sky-500/10 to-sky-500/5",borderHover:"hover:border-sky-300"}];function l({service:e}){return(0,s.jsxs)("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",className:`group relative flex min-h-[260px] flex-col rounded-2xl border border-slate-200/80 bg-white/80 p-6 shadow-sm backdrop-blur transition-all duration-200 ${e.borderHover} hover:-translate-y-0.5 hover:shadow-lg`,children:[(0,s.jsx)("div",{className:`pointer-events-none absolute inset-0 rounded-2xl bg-gradient-to-br ${e.accent} opacity-0 transition-opacity group-hover:opacity-100`}),(0,s.jsxs)("div",{className:"relative flex h-full flex-col",children:[(0,s.jsx)("span",{className:`inline-flex w-fit rounded-lg ${e.badgeColor} px-2.5 py-1 text-[11px] font-bold tracking-widest text-white shadow-sm`,children:e.badge}),(0,s.jsx)("h2",{className:"mt-4 text-lg font-bold text-slate-800",children:e.title}),(0,s.jsx)("p",{className:"mt-2 flex-1 text-sm leading-relaxed text-slate-500",children:e.description}),(0,s.jsxs)("span",{className:"mt-5 inline-flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-indigo-500 opacity-0 transition-opacity group-hover:opacity-100",children:["Truy cập",(0,s.jsx)("svg",{className:"h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"})})]})]})]})}function d(){let[e,t]=(0,n.useState)("admin"),[r,d]=(0,n.useState)(""),[c,u]=(0,n.useState)(""),[x,h]=(0,n.useState)(""),[p,g]=(0,n.useState)(0),[m,b]=(0,n.useState)(!1),[f,v]=(0,n.useState)(null),[j,w]=(0,n.useState)("password"),[y,N]=(0,n.useState)(!1),[k,S]=(0,n.useState)("Sign in with OIDC"),[I,C]=(0,n.useState)(!1),[P,A]=(0,n.useState)(!1),[T,_]=(0,n.useState)("admin"),L=(0,a.useRouter)(),E=o.vQ?.name||"FJS Digital Workspace";(0,n.useEffect)(()=>{if(p<=0)return;let e=setInterval(()=>g(e=>e>0?e-1:0),1e3);return()=>clearInterval(e)},[p]),(0,n.useEffect)(()=>{!async function(){let e=new AbortController,r=setTimeout(()=>e.abort(),5e3),s=window.location.origin;try{let n=await fetch(`${s}/api/auth/status`,{signal:e.signal});if(clearTimeout(r),n.ok){let e=await n.json();v(!!e.hasPassword),w(e.authMode||"password"),N(!0===e.oidcConfigured),S(e.oidcLoginLabel||"Sign in with OIDC"),C(!0===e.ldapEnabled),A(!0===e.ldapConfigured),_(e.localLoginUsername||"admin"),t(e.localLoginUsername||"admin")}else v(!0)}catch{clearTimeout(r),v(!0)}}()},[L]);let F=async t=>{t.preventDefault(),b(!0),u(""),h("");try{let t=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:r,loginType:"auto"})});if(t.ok)L.push("/dashboard"),L.refresh();else{let e=await t.json();u(e.error||"Invalid account or password"),e.resetHint&&h(e.resetHint),e.retryAfter&&g(Number(e.retryAfter))}}catch{u("An error occurred. Please try again.")}finally{b(!1)}},H=y&&["oidc","both"].includes(j),D="oidc"!==j||!y,O=I&&P&&D;return(0,s.jsxs)("main",{className:"relative min-h-screen overflow-hidden bg-slate-50 text-slate-800",children:[(0,s.jsx)("div",{className:"pointer-events-none absolute inset-x-0 top-0 h-72",style:{background:"linear-gradient(135deg, rgba(139,92,246,0.12) 0%, rgba(99,102,241,0.10) 40%, rgba(56,189,248,0.06) 100%)"}}),(0,s.jsx)("div",{className:"pointer-events-none absolute inset-0 opacity-[0.36]",style:{backgroundImage:"linear-gradient(to right, rgba(99,102,241,0.08) 1px, transparent 1px), linear-gradient(to bottom, rgba(99,102,241,0.08) 1px, transparent 1px)",backgroundSize:"48px 48px"}}),(0,s.jsxs)("div",{className:"relative mx-auto max-w-6xl px-6 py-12 lg:px-8",children:[(0,s.jsxs)("header",{className:"mb-10",children:[(0,s.jsxs)("div",{className:"mb-5 flex items-center gap-4",children:[(0,s.jsx)("img",{src:"/fjslogo.svg",alt:"Fujinet Systems JSC",className:"h-10 w-auto"}),(0,s.jsxs)("div",{className:"leading-none",children:[(0,s.jsx)("p",{className:"text-[11px] font-bold uppercase tracking-[0.2em] text-indigo-600",children:"Internal Portal"}),(0,s.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.15em] text-slate-400",children:"Cổng nội bộ Fujinet"})]})]}),(0,s.jsx)("h1",{className:"text-4xl font-extrabold tracking-tight text-slate-900 sm:text-5xl",children:E}),(0,s.jsx)("p",{className:"mt-4 max-w-2xl text-base leading-relaxed text-slate-500",children:"Đăng nhập AI Router Gateway hoặc truy cập nhanh c\xe1c hệ thống nội bộ của Fujinet Systems."})]}),(0,s.jsxs)("section",{className:"grid items-stretch gap-4 sm:grid-cols-2 lg:grid-cols-3",children:[(0,s.jsxs)("div",{className:"relative flex min-h-[260px] flex-col rounded-2xl border border-indigo-200/80 bg-white/90 p-6 shadow-sm backdrop-blur transition-all duration-200 hover:-translate-y-0.5 hover:border-indigo-300 hover:shadow-lg",children:[(0,s.jsx)("div",{className:"pointer-events-none absolute inset-0 rounded-2xl bg-gradient-to-br from-indigo-500/10 to-indigo-500/5"}),(0,s.jsxs)("div",{className:"relative flex h-full flex-col",children:[(0,s.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3",children:[(0,s.jsx)("span",{className:"inline-flex rounded-lg bg-indigo-500 px-2.5 py-1 text-[11px] font-bold tracking-widest text-white shadow-sm",children:"LOGIN"}),(0,s.jsx)("img",{src:"/logo.svg",alt:"FUJINET",className:"h-7 w-auto object-contain"})]}),(0,s.jsx)("h2",{className:"text-lg font-bold text-slate-800",children:"AI Router Gateway"}),(0,s.jsx)("p",{className:"mt-2 text-sm leading-relaxed text-slate-500",children:"Đăng nhập để quản trị API key, provider, routing, prompt logs v\xe0 dashboard usage."}),null===f?(0,s.jsx)("div",{className:"mt-5 rounded-xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-500",children:"Loading..."}):(0,s.jsxs)("div",{className:"mt-5 flex-1",children:[H&&(0,s.jsxs)("button",{type:"button",onClick:()=>{window.location.href="/api/auth/oidc/start"},className:"mb-3 flex w-full items-center justify-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-4 py-2.5 text-sm font-semibold text-slate-700 transition hover:border-indigo-300 hover:bg-indigo-50",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock_open"}),k]}),H&&D&&(0,s.jsxs)("div",{className:"mb-3 flex items-center gap-3 text-xs text-slate-400",children:[(0,s.jsx)("span",{className:"h-px flex-1 bg-slate-200"}),"or",(0,s.jsx)("span",{className:"h-px flex-1 bg-slate-200"})]}),D?(0,s.jsxs)("form",{onSubmit:F,className:"space-y-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mb-1 block text-xs font-semibold uppercase tracking-wide text-slate-500",children:"Account"}),(0,s.jsx)("input",{value:e,onChange:e=>t(e.target.value),placeholder:O?"admin or your LDAP username":T||"admin",autoFocus:!H,required:!0,className:"w-full rounded-xl border border-slate-200 bg-white px-3 py-2.5 text-sm shadow-sm outline-none transition placeholder:text-slate-400 focus:border-indigo-400 focus:ring-4 focus:ring-indigo-500/15"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mb-1 block text-xs font-semibold uppercase tracking-wide text-slate-500",children:"Password"}),(0,s.jsx)("input",{type:"password",value:r,onChange:e=>d(e.target.value),placeholder:"Enter password",required:!0,className:"w-full rounded-xl border border-slate-200 bg-white px-3 py-2.5 text-sm shadow-sm outline-none transition placeholder:text-slate-400 focus:border-indigo-400 focus:ring-4 focus:ring-indigo-500/15"})]}),"oidc"===j&&!y&&(0,s.jsx)("p",{className:"rounded-xl border border-yellow-500/30 bg-yellow-500/10 p-2.5 text-xs text-yellow-700",children:"OIDC login is enabled, but not configured yet. Password login is still available for recovery."}),"both"===j&&y&&(0,s.jsx)("p",{className:"rounded-xl border border-blue-500/30 bg-blue-500/10 p-2.5 text-xs text-blue-700",children:"Password/OIDC login are both enabled."}),c&&(0,s.jsx)("p",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-2.5 text-sm text-red-600",children:c}),p>0&&(0,s.jsxs)("p",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-2.5 text-sm text-red-600",children:["Locked. Retry in ",p,"s."]}),x&&(0,s.jsxs)("p",{className:"rounded-xl border border-slate-200 bg-slate-50 p-2.5 text-xs text-slate-500",children:["Forgot password? Open ",(0,s.jsx)("span",{className:"font-mono",children:"bluerouter"})," CLI on the host → Settings → Reset Password to Default."]}),(0,s.jsx)("button",{type:"submit",disabled:m||p>0,className:"w-full rounded-xl bg-gradient-to-r from-indigo-600 to-violet-500 px-4 py-2.5 text-sm font-semibold text-white shadow-lg shadow-indigo-500/20 transition hover:-translate-y-0.5 hover:shadow-indigo-500/30 disabled:cursor-not-allowed disabled:translate-y-0 disabled:opacity-50",children:p>0?`Wait ${p}s`:m?"Signing in...":"Login"}),!1===f&&(0,s.jsx)("p",{className:"text-center text-xs text-slate-500",children:"No custom password is set yet. The default password above will work until you change it."})]}):c&&(0,s.jsx)("p",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600",children:c})]})]})]}),(0,s.jsx)(l,{service:i[0]}),(0,s.jsx)(l,{service:i[1]}),(0,s.jsx)(l,{service:i[2]}),(0,s.jsx)(l,{service:i[3]}),(0,s.jsx)(l,{service:i[4]})]}),(0,s.jsxs)("footer",{className:"mt-14 flex flex-col items-center justify-between gap-4 border-t border-slate-200 pt-6 sm:flex-row",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("img",{src:"/fjslogo.svg",alt:"Fujinet Systems JSC",className:"h-7 w-auto"}),(0,s.jsx)("div",{className:"leading-tight",children:(0,s.jsx)("p",{className:"text-xs text-slate-400",children:"Internal Portal \xb7 v1.0.0"})})]}),(0,s.jsxs)("div",{className:"text-xs text-slate-400",children:["\xa9 2026 Fujinet Systems. All rights reserved."," ",(0,s.jsx)("a",{href:"mailto:itadmin@fujinet.net",target:"_blank",rel:"noopener noreferrer",className:"font-medium text-indigo-500 hover:underline",children:"Contact: itadmin@fujinet.net"})]})]})]})]})}}},e=>{e.O(0,[620,8441,3794,7358],()=>e(e.s=33796)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4520],{33796:(e,t,r)=>{Promise.resolve().then(r.bind(r,83016))},54642:e=>{var t;"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="//"),(t={}).endianness=function(){return"LE"},t.hostname=function(){return"u">typeof location?location.hostname:""},t.loadavg=function(){return[]},t.uptime=function(){return 0},t.freemem=function(){return Number.MAX_VALUE},t.totalmem=function(){return Number.MAX_VALUE},t.cpus=function(){return[]},t.type=function(){return"Browser"},t.release=function(){return"u">typeof navigator?navigator.appVersion:""},t.networkInterfaces=t.getNetworkInterfaces=function(){return{}},t.arch=function(){return"javascript"},t.platform=function(){return"browser"},t.tmpdir=t.tmpDir=function(){return"/tmp"},t.EOL="\n",t.homedir=function(){return"/"},e.exports=t},73321:(e,t,r)=>{"use strict";var s=r(74645);r.o(s,"notFound")&&r.d(t,{notFound:function(){return s.notFound}}),r.o(s,"useParams")&&r.d(t,{useParams:function(){return s.useParams}}),r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(t,{useSearchParams:function(){return s.useSearchParams}})},83016:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var s=r(95155),n=r(12115),a=r(73321),o=r(90620);let i=[{badge:"API",badgeColor:"bg-indigo-500",title:"AI API Gateway",description:"Quản l\xfd endpoint AI nội bộ. Theo d\xf5i trạng th\xe1i model, cấu h\xecnh routing v\xe0 gi\xe1m s\xe1t lưu lượng API theo thời gian thực.",href:"/dashboard",accent:"from-indigo-500/10 to-indigo-500/5",borderHover:"hover:border-indigo-300"},{badge:"CHAT",badgeColor:"bg-violet-500",title:"AI Web Chat",description:"Tr\xf2 chuyện với AI nội bộ. Hỗ trợ viết code, ph\xe2n t\xedch t\xe0i liệu, brainstorm \xfd tưởng v\xe0 trả lời c\xe2u hỏi kỹ thuật.",href:"https://ai.fujinet.vn/",accent:"from-violet-500/10 to-violet-500/5",borderHover:"hover:border-violet-300"},{badge:"DỊCH",badgeColor:"bg-purple-500",title:"AI Translator",description:"Dịch t\xe0i liệu hỗ trợ 201 ng\xf4n ngữ. Hỗ trợ Word, Excel, PowerPoint, IMAGE v\xe0 PDF với khả năng giữ nguy\xean định dạng gốc.",href:"https://translate-workspace.fujinet.vn",accent:"from-purple-500/10 to-purple-500/5",borderHover:"hover:border-purple-300"},{badge:"TICKET",badgeColor:"bg-blue-500",title:"IT Support",description:"Gửi y\xeau cầu hỗ trợ kỹ thuật. Theo d\xf5i tiến độ xử l\xfd ticket, trao đổi trực tiếp với đội IT v\xe0 xem lịch sử sự cố.",href:"https://itsupport.fujinet.vn",accent:"from-blue-500/10 to-blue-500/5",borderHover:"hover:border-blue-300"},{badge:"ASSET",badgeColor:"bg-sky-500",title:"IT Resource",description:"Quản l\xfd t\xe0i nguy\xean CNTT nội bộ. Đăng k\xfd cấp ph\xe1t thiết bị, t\xe0i khoản, quyền truy cập VPN v\xe0 c\xe1c dịch vụ hạ tầng.",href:"https://itresource.fujinet.net/",accent:"from-sky-500/10 to-sky-500/5",borderHover:"hover:border-sky-300"}];function l({service:e}){return(0,s.jsxs)("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",className:`group relative flex min-h-[260px] flex-col rounded-2xl border border-slate-200/80 bg-white/80 p-6 shadow-sm backdrop-blur transition-all duration-200 ${e.borderHover} hover:-translate-y-0.5 hover:shadow-lg`,children:[(0,s.jsx)("div",{className:`pointer-events-none absolute inset-0 rounded-2xl bg-gradient-to-br ${e.accent} opacity-0 transition-opacity group-hover:opacity-100`}),(0,s.jsxs)("div",{className:"relative flex h-full flex-col",children:[(0,s.jsx)("span",{className:`inline-flex w-fit rounded-lg ${e.badgeColor} px-2.5 py-1 text-[11px] font-bold tracking-widest text-white shadow-sm`,children:e.badge}),(0,s.jsx)("h2",{className:"mt-4 text-lg font-bold text-slate-800",children:e.title}),(0,s.jsx)("p",{className:"mt-2 flex-1 text-sm leading-relaxed text-slate-500",children:e.description}),(0,s.jsxs)("span",{className:"mt-5 inline-flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-indigo-500 opacity-0 transition-opacity group-hover:opacity-100",children:["Truy cập",(0,s.jsx)("svg",{className:"h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"})})]})]})]})}function d(){let[e,t]=(0,n.useState)("admin"),[r,d]=(0,n.useState)(""),[c,u]=(0,n.useState)(""),[x,h]=(0,n.useState)(""),[p,m]=(0,n.useState)(0),[g,b]=(0,n.useState)(!1),[f,v]=(0,n.useState)(null),[j,w]=(0,n.useState)("password"),[y,N]=(0,n.useState)(!1),[k,S]=(0,n.useState)("Sign in with OIDC"),[C,I]=(0,n.useState)(!1),[P,A]=(0,n.useState)(!1),[T,_]=(0,n.useState)("admin"),L=(0,a.useRouter)(),E=o.vQ?.name||"FJS Digital Workspace";(0,n.useEffect)(()=>{if(p<=0)return;let e=setInterval(()=>m(e=>e>0?e-1:0),1e3);return()=>clearInterval(e)},[p]),(0,n.useEffect)(()=>{!async function(){let e=new AbortController,r=setTimeout(()=>e.abort(),5e3),s=window.location.origin;try{let n=await fetch(`${s}/api/auth/status`,{signal:e.signal});if(clearTimeout(r),n.ok){let e=await n.json();v(!!e.hasPassword),w(e.authMode||"password"),N(!0===e.oidcConfigured),S(e.oidcLoginLabel||"Sign in with OIDC"),I(!0===e.ldapEnabled),A(!0===e.ldapConfigured),_(e.localLoginUsername||"admin"),t(e.localLoginUsername||"admin")}else v(!0)}catch{clearTimeout(r),v(!0)}}()},[L]);let H=async t=>{t.preventDefault(),b(!0),u(""),h("");try{let t=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:r,loginType:"auto"})});if(t.ok)L.push("/dashboard"),L.refresh();else{let e=await t.json();u(e.error||"Invalid account or password"),e.resetHint&&h(e.resetHint),e.retryAfter&&m(Number(e.retryAfter))}}catch{u("An error occurred. Please try again.")}finally{b(!1)}},D=y&&["oidc","both"].includes(j),F="oidc"!==j||!y,O=C&&P&&F;return(0,s.jsxs)("main",{className:"relative min-h-screen overflow-hidden bg-slate-50 text-slate-800",children:[(0,s.jsx)("div",{className:"pointer-events-none absolute inset-x-0 top-0 h-72",style:{background:"linear-gradient(135deg, rgba(139,92,246,0.12) 0%, rgba(99,102,241,0.10) 40%, rgba(56,189,248,0.06) 100%)"}}),(0,s.jsx)("div",{className:"pointer-events-none absolute inset-0 opacity-[0.36]",style:{backgroundImage:"linear-gradient(to right, rgba(99,102,241,0.08) 1px, transparent 1px), linear-gradient(to bottom, rgba(99,102,241,0.08) 1px, transparent 1px)",backgroundSize:"48px 48px"}}),(0,s.jsxs)("div",{className:"relative mx-auto max-w-6xl px-6 py-12 lg:px-8",children:[(0,s.jsxs)("header",{className:"mb-10",children:[(0,s.jsxs)("div",{className:"mb-5 flex items-center gap-4",children:[(0,s.jsx)("img",{src:"/fjslogo.svg",alt:"Fujinet Systems JSC",className:"h-10 w-auto"}),(0,s.jsxs)("div",{className:"leading-none",children:[(0,s.jsx)("p",{className:"text-[11px] font-bold uppercase tracking-[0.2em] text-indigo-600",children:"Internal Portal"}),(0,s.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.15em] text-slate-400",children:"Cổng nội bộ Fujinet"})]})]}),(0,s.jsx)("h1",{className:"text-4xl font-extrabold tracking-tight text-slate-900 sm:text-5xl",children:E}),(0,s.jsx)("p",{className:"mt-4 max-w-2xl text-base leading-relaxed text-slate-500",children:"Đăng nhập AI Router Gateway hoặc truy cập nhanh c\xe1c hệ thống nội bộ của Fujinet Systems."})]}),(0,s.jsxs)("section",{className:"grid items-stretch gap-4 sm:grid-cols-2 lg:grid-cols-3",children:[(0,s.jsxs)("div",{className:"relative flex min-h-[260px] flex-col rounded-2xl border border-indigo-200/80 bg-white/90 p-6 shadow-sm backdrop-blur transition-all duration-200 hover:-translate-y-0.5 hover:border-indigo-300 hover:shadow-lg",children:[(0,s.jsx)("div",{className:"pointer-events-none absolute inset-0 rounded-2xl bg-gradient-to-br from-indigo-500/10 to-indigo-500/5"}),(0,s.jsxs)("div",{className:"relative flex h-full flex-col",children:[(0,s.jsx)("div",{className:"mb-4 flex items-center justify-between gap-3",children:(0,s.jsx)("span",{className:"inline-flex rounded-lg bg-indigo-500 px-2.5 py-1 text-[11px] font-bold tracking-widest text-white shadow-sm",children:"LOGIN"})}),(0,s.jsx)("h2",{className:"text-lg font-bold text-slate-800",children:"AI Router Gateway"}),(0,s.jsx)("p",{className:"mt-2 text-sm leading-relaxed text-slate-500",children:"Đăng nhập để quản trị API key, provider, routing, prompt logs v\xe0 dashboard usage."}),null===f?(0,s.jsx)("div",{className:"mt-5 rounded-xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-500",children:"Loading..."}):(0,s.jsxs)("div",{className:"mt-5 flex-1",children:[D&&(0,s.jsxs)("button",{type:"button",onClick:()=>{window.location.href="/api/auth/oidc/start"},className:"mb-3 flex w-full items-center justify-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-4 py-2.5 text-sm font-semibold text-slate-700 transition hover:border-indigo-300 hover:bg-indigo-50",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock_open"}),k]}),D&&F&&(0,s.jsxs)("div",{className:"mb-3 flex items-center gap-3 text-xs text-slate-400",children:[(0,s.jsx)("span",{className:"h-px flex-1 bg-slate-200"}),"or",(0,s.jsx)("span",{className:"h-px flex-1 bg-slate-200"})]}),F?(0,s.jsxs)("form",{onSubmit:H,className:"space-y-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mb-1 block text-xs font-semibold uppercase tracking-wide text-slate-500",children:"Account"}),(0,s.jsx)("input",{value:e,onChange:e=>t(e.target.value),placeholder:O?"admin or your LDAP username":T||"admin",autoFocus:!D,required:!0,className:"w-full rounded-xl border border-slate-200 bg-white px-3 py-2.5 text-sm shadow-sm outline-none transition placeholder:text-slate-400 focus:border-indigo-400 focus:ring-4 focus:ring-indigo-500/15"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mb-1 block text-xs font-semibold uppercase tracking-wide text-slate-500",children:"Password"}),(0,s.jsx)("input",{type:"password",value:r,onChange:e=>d(e.target.value),placeholder:"Enter password",required:!0,className:"w-full rounded-xl border border-slate-200 bg-white px-3 py-2.5 text-sm shadow-sm outline-none transition placeholder:text-slate-400 focus:border-indigo-400 focus:ring-4 focus:ring-indigo-500/15"})]}),"oidc"===j&&!y&&(0,s.jsx)("p",{className:"rounded-xl border border-yellow-500/30 bg-yellow-500/10 p-2.5 text-xs text-yellow-700",children:"OIDC login is enabled, but not configured yet. Password login is still available for recovery."}),"both"===j&&y&&(0,s.jsx)("p",{className:"rounded-xl border border-blue-500/30 bg-blue-500/10 p-2.5 text-xs text-blue-700",children:"Password/OIDC login are both enabled."}),c&&(0,s.jsx)("p",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-2.5 text-sm text-red-600",children:c}),p>0&&(0,s.jsxs)("p",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-2.5 text-sm text-red-600",children:["Locked. Retry in ",p,"s."]}),x&&(0,s.jsxs)("p",{className:"rounded-xl border border-slate-200 bg-slate-50 p-2.5 text-xs text-slate-500",children:["Forgot password? Open ",(0,s.jsx)("span",{className:"font-mono",children:"bluerouter"})," CLI on the host → Settings → Reset Password to Default."]}),(0,s.jsx)("button",{type:"submit",disabled:g||p>0,className:"w-full rounded-xl bg-gradient-to-r from-indigo-600 to-violet-500 px-4 py-2.5 text-sm font-semibold text-white shadow-lg shadow-indigo-500/20 transition hover:-translate-y-0.5 hover:shadow-indigo-500/30 disabled:cursor-not-allowed disabled:translate-y-0 disabled:opacity-50",children:p>0?`Wait ${p}s`:g?"Signing in...":"Login"}),!1===f&&(0,s.jsx)("p",{className:"text-center text-xs text-slate-500",children:"No custom password is set yet. The default password above will work until you change it."})]}):c&&(0,s.jsx)("p",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600",children:c})]})]})]}),(0,s.jsx)(l,{service:i[0]}),(0,s.jsx)(l,{service:i[1]}),(0,s.jsx)(l,{service:i[2]}),(0,s.jsx)(l,{service:i[3]}),(0,s.jsx)(l,{service:i[4]})]}),(0,s.jsxs)("footer",{className:"mt-14 flex flex-col items-center justify-between gap-4 border-t border-slate-200 pt-6 sm:flex-row",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("img",{src:"/fjslogo.svg",alt:"Fujinet Systems JSC",className:"h-7 w-auto"}),(0,s.jsx)("div",{className:"leading-tight",children:(0,s.jsx)("p",{className:"text-xs text-slate-400",children:"Internal Portal \xb7 v1.0.0"})})]}),(0,s.jsxs)("div",{className:"text-xs text-slate-400",children:["\xa9 2026 Fujinet Systems. All rights reserved."," ",(0,s.jsx)("a",{href:"mailto:itadmin@fujinet.net",target:"_blank",rel:"noopener noreferrer",className:"font-medium text-indigo-500 hover:underline",children:"Contact: itadmin@fujinet.net"})]})]})]})]})}}},e=>{e.O(0,[620,8441,3794,7358],()=>e(e.s=33796)),_N_E=e.O()}]);
|
|
Binary file
|
|
Binary file
|
package/app/package.json
CHANGED
package/package.json
CHANGED
|
File without changes
|
/package/app/.next-cli-build/static/{-e_GXZS90ok4rzHf0AaIY → nxfjuhFM_8WLGDl2aSVXS}/_ssgManifest.js
RENAMED
|
File without changes
|