@jheavenknows/bluerouter 5.4.20 → 5.4.21
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 +30 -30
- package/app/.next-cli-build/build-manifest.json +2 -2
- 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_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/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/model-profiles/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/cluster/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/logs/console/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/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/personal/page_client-reference-manifest.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_client-reference-manifest.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_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/providers/stt/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/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/resource-monitor/page_client-reference-manifest.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_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_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/_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 +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/me/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/users/route.js.nft.json +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/auth/view-mode/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/model-catalog/route.js.nft.json +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.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/cluster/config/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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/codex-catalog/download/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/codex-catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/codex-catalog/upload/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/ai-power-index/route.js.nft.json +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 +6 -7
- 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/dashboard/token-saver/route.js +2 -2
- 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/keys/[id]/caveman-test/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/grok-cli/device-code/route.js.nft.json +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.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/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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.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/openai-compatible/manage/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/resource-monitor/[id]/route.js.nft.json +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.nft.json +1 -1
- 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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/export/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 +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/logs/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 +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/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 +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- 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 +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.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 +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +9 -9
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
- 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/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 +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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/logs.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/personal.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/personal.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard/personal/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
- 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 +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
- 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 +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
- 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/stt.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/stt.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers/stt/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/tts.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/tts.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers/tts/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
- 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 +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +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 +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
- 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 +5 -5
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- 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 +6 -6
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
- 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 +6 -6
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +30 -30
- package/app/.next-cli-build/server/chunks/1470.js +81 -81
- package/app/.next-cli-build/server/chunks/2731.js +84 -84
- package/app/.next-cli-build/server/chunks/3399.js +1 -1
- package/app/.next-cli-build/server/chunks/402.js +5 -5
- package/app/.next-cli-build/server/chunks/4746.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/8640.js +2 -2
- 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/{5263-cb8cc0ec36f08fec.js → 5263-8c9d3413d7af4be6.js} +1 -1
- package/app/.next-cli-build/static/chunks/5497-cd964740ba299403.js +15 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/analytics/page-a490ee99c12ec139.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/{page-7bdaff73571c066b.js → page-85844d8eef5b95df.js} +1 -1
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.4.19-to-5.4.20-5.4.20-20260825-164658/data.sqlite +0 -0
- 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/chunks/5497-c352fe8c48441441.js +0 -15
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/analytics/page-e71b6a5d6675a48d.js +0 -1
- /package/app/.next-cli-build/static/{z1Eao96Iq3r_h1r2CiZ6D → dD8D7N73BiFCP3LITpWCK}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{z1Eao96Iq3r_h1r2CiZ6D → dD8D7N73BiFCP3LITpWCK}/_ssgManifest.js +0 -0
- /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.4.14-to-5.4.15-5.4.15-20260824-213538 → upgrade-5.4.18-to-5.4.19-5.4.19-20260825-075641}/data.sqlite +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var a={};a.id=9839,a.ids=[9839],a.modules={1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11550:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>w,handler:()=>y,routeModule:()=>x});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.t.bind(c,95547,23))),u={children:["",{children:["(dashboard)",{children:["dashboard",{children:["token-saver",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,59239))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\token-saver\\page.js"]}]},{"global-error":[t,"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,v=(0,e.H)({tree:u,page:"/(dashboard)/dashboard/token-saver/page",pathname:"/dashboard/token-saver",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),w=v.__next_app__,x=v.routeModule,y=v.handler},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")},20503:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={MutableRequestCookiesAdapter:function(){return o},ReadonlyRequestCookiesError:function(){return j},RequestCookiesAdapter:function(){return k},appendMutableCookies:function(){return n},areCookiesMutableInCurrentPhase:function(){return q},createCookiesWithMutableAccessCheck:function(){return p},getModifiedCookieValues:function(){return m},responseCookiesToRequestCookies:function(){return s}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(91488),g=c(20445),h=c(29294),i=c(43014);class j extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1180",enumerable:!1,configurable:!0})}static callable(){throw new j}}class k{static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"clear":case"delete":case"set":return j.callable;default:return g.ReflectAdapter.get(a,b,c)}}})}static fresh(a){return new Proxy(a,{get:(a,b,c)=>g.ReflectAdapter.get(a,b,c)})}}let l=Symbol.for("next.mutated.cookies");function m(a){let b=a[l];return b&&Array.isArray(b)&&0!==b.length?b:[]}function n(a,b){let c=m(b);if(0===c.length)return!1;let d=new f.ResponseCookies(a),e=d.getAll();for(let a of c)d.set(a);for(let a of e)d.set(a);return!0}class o{static wrap(a,b){let c=new f.ResponseCookies(new Headers);for(let b of a.getAll())c.set(b);let d=[],e=new Set,j=()=>{let a=h.workAsyncStorage.getStore();if(a&&(a.pathWasRevalidated=i.ActionDidRevalidateStaticAndDynamic),d=c.getAll().filter(a=>e.has(a.name)),b){let a=[];for(let b of d){let c=new f.ResponseCookies(new Headers);c.set(b),a.push(c.toString())}b(a)}},k=new Proxy(c,{get(a,b,c){switch(b){case l:return d;case"delete":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.delete(...b),k}finally{j()}};case"set":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.set(...b),k}finally{j()}};default:return g.ReflectAdapter.get(a,b,c)}}});return k}}function p(a){let b=new Proxy(a.mutableCookies,{get(c,d,e){switch(d){case"delete":return function(...d){return r(a,"cookies().delete"),c.delete(...d),b};case"set":return function(...d){return r(a,"cookies().set"),c.set(...d),b};default:return g.ReflectAdapter.get(c,d,e)}}});return b}function q(a){return"action"===a.phase}function r(a,b){if(!q(a))throw new j}function s(a){let b=new f.RequestCookies(new Headers);for(let c of a.getAll())b.set(c);return b}},21820:a=>{"use strict";a.exports=require("os")},23784:(a,b,c)=>{"use strict";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\\\\token-saver\\\\TokenSaverAnalyticsPageClient.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\\token-saver\\TokenSaverAnalyticsPageClient.js","default")},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")},33873:a=>{"use strict";a.exports=require("path")},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")},41204:a=>{"use strict";a.exports=require("string_decoder")},43014:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={ActionDidNotRevalidate:function(){return e},ActionDidRevalidateDynamicOnly:function(){return g},ActionDidRevalidateStaticAndDynamic:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=0,f=1,g=2},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")},50774:(a,b,c)=>{"use strict";c.d(b,{default:()=>r});var d=c(48249),e=c(67484);c(32971);let f=[{value:"today",label:"H\xf4m nay"},{value:"yesterday",label:"H\xf4m qua"},{value:"24h",label:"24h"},{value:"7d",label:"7 ng\xe0y"},{value:"30d",label:"30 ng\xe0y"},{value:"all",label:"Tất cả"}];function g(a){return new Intl.NumberFormat("en-US").format(Number(a||0))}function h(a){let b=Number(a||0);if(b<1024)return`${g(b)} B`;let c=["KB","MB","GB","TB"],d=b/1024,e=0;for(;d>=1024&&e<c.length-1;)d/=1024,e+=1;return`${d>=100?d.toFixed(0):d>=10?d.toFixed(1):d.toFixed(2)} ${c[e]}`}function i(a){let b=Number(a||0);return`${b.toFixed(b>=10?1:2)}%`}function j(a){let b=String(a||"");return b.length<=18?b||"-":`${b.slice(0,10)}…${b.slice(-6)}`}function k({icon:a,label:b,value:c,hint:e,tone:f="default"}){return(0,d.jsxs)("div",{className:`rounded-2xl border p-5 shadow-sm ${"success"===f?"border-emerald-500/20 bg-emerald-500/5 text-emerald-700 dark:text-emerald-300":"warning"===f?"border-amber-500/20 bg-amber-500/5 text-amber-700 dark:text-amber-300":"border-border bg-background text-text-main"}`,children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wide text-text-muted",children:b}),(0,d.jsx)("div",{className:"mt-2 text-2xl font-bold text-text-main",children:c})]}),(0,d.jsx)("span",{className:"material-symbols-outlined rounded-xl bg-surface px-2.5 py-2 text-[22px] text-primary",children:a})]}),e?(0,d.jsx)("div",{className:"mt-3 text-xs text-text-muted",children:e}):null]})}function l({value:a}){let b=Math.max(0,Math.min(100,Number(a||0)));return(0,d.jsx)("div",{className:"h-2 w-full overflow-hidden rounded-full bg-surface",children:(0,d.jsx)("div",{className:"h-full rounded-full bg-primary",style:{width:`${b}%`}})})}function m(){return(0,d.jsx)("span",{className:"ml-1 rounded-full border border-amber-500/30 bg-amber-500/10 px-1.5 py-0.5 text-[10px] font-semibold text-amber-700 dark:text-amber-300",title:"Số request c\xf3 hit < 5 — con số hiệu quả c\xf3 thể chưa đại diện",children:"low sample"})}function n({title:a,icon:b,rows:c,columns:e="default",showEmpty:f=!0}){let j=f?c:(c||[]).filter(a=>Number(a.hitCount||0)>0);return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsx)("div",{className:"mb-4 flex items-center justify-between gap-3",children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:b}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:a})]})}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"min-w-full text-sm",children:[(0,d.jsx)("thead",{className:"text-left text-xs uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{className:"border-b border-border",children:[(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"T\xean"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Requests"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Hits"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Saved"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",title:"filter"===e?"Phần trăm đ\xf3ng g\xf3p v\xe0o tổng saved":"bytesSaved / bytesBefore tr\xean to\xe0n bộ text đ\xe3 scan (kể cả kh\xf4ng match filter)",children:"filter"===e?"Share":"Saved / scanned"}),"filter"===e?null:(0,d.jsx)("th",{className:"pb-2 text-right font-semibold",title:"bytesSaved / bytesBefore CHỈ t\xednh tr\xean request c\xf3 hit (applied=true) — hiệu quả n\xe9n thực sự của RTK",children:"Saved / applied"})]})}),(0,d.jsx)("tbody",{children:j?.length?j.map(a=>{let b=Number(a.appliedRequests||0),c=Number(a.hitCount||0);return(0,d.jsxs)("tr",{className:"border-b border-border/60 last:border-0",children:[(0,d.jsxs)("td",{className:"max-w-[280px] py-3 pr-4 font-medium text-text-main",children:[(0,d.jsx)("div",{className:"truncate",title:a.key,children:a.key}),"filter"===e?(0,d.jsxs)("div",{className:"text-xs text-text-muted",children:[g(a.hitCount)," hit \xb7 ~",g(a.estimatedTokensSaved)," token"]}):null]}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.requests||a.appliedRequests)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.hitCount)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right font-semibold text-emerald-600 dark:text-emerald-300",children:h(a.bytesSaved)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:i(a.savedPct)}),"filter"===e?null:(0,d.jsx)("td",{className:"py-3 text-right font-semibold text-primary",children:c>0?(0,d.jsxs)(d.Fragment,{children:[i(a.appliedSavedPct),c>0&&b>0&&b<5?(0,d.jsx)(m,{}):null]}):"—"})]},a.key)}):(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:"filter"===e?5:6,className:"py-6 text-center text-text-muted",children:f?"Chưa c\xf3 dữ liệu RTK trong khoảng thời gian n\xe0y.":"Kh\xf4ng c\xf3 row n\xe0o c\xf3 hit trong khoảng thời gian n\xe0y."})})})]})})]})}function o({rows:a}){let b=Math.max(1,...(a||[]).map(a=>Number(a.bytesSaved||0))),c=(a||[]).slice(-30);return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"stacked_bar_chart"}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:"Savings trend"})]}),(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Theo bucket thời gian (local)"})]}),c.length?(0,d.jsx)("div",{className:"flex h-56 items-end gap-2 rounded-2xl bg-surface/60 px-4 py-4",children:c.map(a=>{let c=Math.max(4,Math.round(Number(a.bytesSaved||0)/b*100)),e=function(a){if(!a)return{full:"-",short:"-"};let b=String(a);if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/.test(b)){let a=new Date(`${b}:00Z`);return Number.isNaN(a.getTime())?{full:b,short:b.slice(-5)}:{full:a.toLocaleString("vi-VN",{hour12:!1}),short:a.toLocaleTimeString("vi-VN",{hour12:!1,hour:"2-digit",minute:"2-digit"})}}if(/^\d{4}-\d{2}-\d{2}$/.test(b)){let a=new Date(`${b}T00:00:00Z`);return Number.isNaN(a.getTime())?{full:b,short:b.slice(5)}:{full:a.toLocaleDateString("vi-VN"),short:a.toLocaleDateString("vi-VN",{day:"2-digit",month:"2-digit"})}}return{full:b,short:b.slice(-5)}}(a.key);return(0,d.jsxs)("div",{className:"flex h-full min-w-0 flex-1 flex-col items-center gap-2",children:[(0,d.jsxs)("div",{className:"group relative flex min-h-0 w-full flex-1 items-end justify-center",children:[(0,d.jsx)("div",{className:"w-full rounded-t-lg bg-primary/80 transition hover:bg-primary",style:{height:`${c}%`,minHeight:4}}),(0,d.jsxs)("div",{className:"pointer-events-none absolute bottom-full z-10 mb-2 hidden min-w-max rounded-xl border border-border bg-background px-3 py-2 text-xs shadow-lg group-hover:block",children:[(0,d.jsx)("div",{className:"font-semibold text-text-main",children:e.full}),(0,d.jsxs)("div",{className:"text-text-muted",children:["Saved: ",h(a.bytesSaved)]}),(0,d.jsxs)("div",{className:"text-text-muted",children:["Requests: ",g(a.requests)]})]})]}),(0,d.jsx)("div",{className:"w-full truncate text-center text-[10px] text-text-muted",title:e.full,children:e.short})]},a.key)})}):(0,d.jsx)("div",{className:"rounded-2xl bg-surface/60 py-12 text-center text-sm text-text-muted",children:"Chưa c\xf3 trend data."})]})}function p({rows:a}){return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"history"}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:"Recent RTK hits"})]}),(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Kh\xf4ng hiển thị nội dung prompt/tool output"})]}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"min-w-full text-sm",children:[(0,d.jsx)("thead",{className:"text-left text-xs uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{className:"border-b border-border",children:[(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Time"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Source"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Provider / Model"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"API key"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Filters"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Saved"}),(0,d.jsx)("th",{className:"pb-2 text-right font-semibold",children:"Request"})]})}),(0,d.jsx)("tbody",{children:a?.length?a.map((a,b)=>(0,d.jsxs)("tr",{className:"border-b border-border/60 last:border-0",children:[(0,d.jsx)("td",{className:"whitespace-nowrap py-3 pr-4 text-text-muted",children:function(a){if(!a)return"-";let b=new Date(a);return Number.isNaN(b.getTime())?String(a):b.toLocaleString("vi-VN",{hour12:!1})}(a.timestamp)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:a.sourceTool||"unknown"}),(0,d.jsxs)("td",{className:"max-w-[260px] py-3 pr-4",children:[(0,d.jsx)("div",{className:"font-medium text-text-main",children:a.provider}),(0,d.jsx)("div",{className:"truncate text-xs text-text-muted",title:a.model,children:a.model})]}),(0,d.jsxs)("td",{className:"max-w-[200px] py-3 pr-4",children:[(0,d.jsx)("div",{className:"truncate font-medium text-text-main",title:a.apiKeyName||a.apiKeyId||"-",children:a.apiKeyName||a.apiKeyId||"-"}),a.apiKeyOwner?(0,d.jsx)("div",{className:"truncate text-xs text-text-muted",title:a.apiKeyOwner,children:a.apiKeyOwner}):null]}),(0,d.jsx)("td",{className:"py-3 pr-4",children:(0,d.jsx)("div",{className:"flex max-w-[320px] flex-wrap gap-1.5",children:(a.filters||[]).slice(0,4).map(a=>(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-0.5 text-xs text-text-muted",children:a},a))})}),(0,d.jsxs)("td",{className:"py-3 pr-4 text-right font-semibold text-emerald-600 dark:text-emerald-300",children:[h(a.bytesSaved),(0,d.jsx)("div",{className:"text-xs font-normal text-text-muted",children:i(a.savedPct)})]}),(0,d.jsx)("td",{className:"py-3 text-right font-mono text-xs text-text-muted",title:a.requestId,children:j(a.requestId)})]},`${a.requestId||b}-${a.timestamp}`)):(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:7,className:"py-6 text-center text-text-muted",children:"Chưa c\xf3 request n\xe0o được RTK n\xe9n th\xe0nh c\xf4ng."})})})]})})]})}function q({rows:a,showEmpty:b=!0}){let c=b?a:(a||[]).filter(a=>Number(a.hitCount||0)>0);return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsx)("div",{className:"mb-4 flex items-center justify-between gap-3",children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"vpn_key"}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:"Top API keys"})]})}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"min-w-full text-sm",children:[(0,d.jsx)("thead",{className:"text-left text-xs uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{className:"border-b border-border",children:[(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"API key"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Owner"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Requests"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Hits"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Saved"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",title:"bytesSaved / bytesBefore tr\xean to\xe0n bộ text đ\xe3 scan (kể cả kh\xf4ng match filter)",children:"Saved / scanned"}),(0,d.jsx)("th",{className:"pb-2 text-right font-semibold",title:"bytesSaved / bytesBefore CHỈ t\xednh tr\xean request c\xf3 hit (applied=true) — hiệu quả n\xe9n thực sự của RTK",children:"Saved / applied"})]})}),(0,d.jsx)("tbody",{children:c?.length?c.map(a=>{let b=Number(a.appliedRequests||0),c=Number(a.hitCount||0);return(0,d.jsxs)("tr",{className:"border-b border-border/60 last:border-0",children:[(0,d.jsxs)("td",{className:"max-w-[260px] py-3 pr-4 font-medium text-text-main",children:[(0,d.jsx)("div",{className:"truncate",title:a.apiKeyName||a.apiKeyId||a.key,children:a.apiKeyName||a.apiKeyId||a.key}),a.apiKeyId?(0,d.jsx)("div",{className:"truncate font-mono text-xs text-text-muted",title:a.apiKeyId,children:j(a.apiKeyId)}):null]}),(0,d.jsx)("td",{className:"max-w-[200px] py-3 pr-4 text-text-muted",children:(0,d.jsx)("div",{className:"truncate",title:a.apiKeyOwner||"-",children:a.apiKeyOwner||"-"})}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.requests||a.appliedRequests)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.hitCount)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right font-semibold text-emerald-600 dark:text-emerald-300",children:h(a.bytesSaved)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:i(a.savedPct)}),(0,d.jsx)("td",{className:"py-3 text-right font-semibold text-primary",children:c>0?(0,d.jsxs)(d.Fragment,{children:[i(a.appliedSavedPct),c>0&&b>0&&b<5?(0,d.jsx)(m,{}):null]}):"—"})]},a.key)}):(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:7,className:"py-6 text-center text-text-muted",children:b?"Chưa c\xf3 API key n\xe0o c\xf3 RTK stats.":"Kh\xf4ng c\xf3 API key n\xe0o c\xf3 hit trong khoảng thời gian n\xe0y."})})})]})})]})}function r(){let[a,b]=(0,e.useState)("today"),[c,j]=(0,e.useState)(null),[m,r]=(0,e.useState)(!0),[s,t]=(0,e.useState)(""),[u,v]=(0,e.useState)(!1),w=(0,e.useMemo)(()=>{let b=new URLSearchParams;return b.set("period",a),b.toString()},[a]),x=(0,e.useCallback)(async()=>{r(!0),t("");try{let a=await fetch(`/api/dashboard/token-saver?${w}`,{cache:"no-store"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b?.error||`HTTP ${a.status}`);j(b)}catch(a){t(a?.message||"Kh\xf4ng tải được Token Saver Analytics"),j(null)}finally{r(!1)}},[w]),y=c?.summary||{},z=y.measuredRequests>0;return(0,d.jsx)("main",{className:"space-y-6 p-6",children:(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-background shadow-sm",children:[(0,d.jsx)("div",{className:"border-b border-border bg-gradient-to-r from-primary/10 via-background to-background p-6",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"rounded-full border border-emerald-500/20 bg-emerald-500/10 px-3 py-1 text-xs font-semibold text-emerald-700 dark:text-emerald-300",children:"Read-only"}),c?.viewerScope==="own"?(0,d.jsx)("span",{className:"rounded-full border border-amber-500/20 bg-amber-500/10 px-3 py-1 text-xs font-semibold text-amber-700 dark:text-amber-300",children:"Chỉ hiển thị API key của bạn"}):(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-3 py-1 text-xs font-semibold text-text-muted",children:"To\xe0n hệ thống"}),(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-3 py-1 text-xs font-semibold text-text-muted",children:"No routing change"})]}),(0,d.jsx)("h1",{className:"text-2xl font-bold text-text-main",children:"Token Saver Analytics"}),(0,d.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-text-muted",children:"Theo d\xf5i hiệu quả RTK Token Saver tr\xean request thật: byte tiết kiệm, filter n\xe0o hoạt động, source tool/provider/model n\xe0o tiết kiệm nhiều nhất."})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("div",{className:"flex rounded-2xl border border-border bg-surface p-1",children:f.map(c=>(0,d.jsx)("button",{type:"button",onClick:()=>b(c.value),className:`rounded-xl px-3 py-2 text-sm font-semibold transition ${a===c.value?"bg-primary text-white":"text-text-muted hover:bg-background hover:text-text-main"}`,children:c.label},c.value))}),(0,d.jsxs)("button",{type:"button",onClick:()=>v(a=>!a),className:`inline-flex items-center gap-2 rounded-2xl border px-4 py-2 text-sm font-semibold transition ${u?"border-primary/40 bg-primary/10 text-primary":"border-border bg-background text-text-muted hover:bg-surface"}`,title:"Bật để hiển thị cả những provider/model/api-key/source-tool kh\xf4ng c\xf3 hit RTK n\xe0o",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:u?"visibility":"visibility_off"}),u?"Ẩn 0-hit":"Hiện 0-hit"]}),(0,d.jsxs)("button",{type:"button",onClick:x,disabled:m,className:"inline-flex items-center gap-2 rounded-2xl border border-border bg-background px-4 py-2 text-sm font-semibold text-text-main transition hover:bg-surface disabled:opacity-50",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[18px] ${m?"animate-spin":""}`,children:"refresh"}),"Refresh"]})]})]})}),s?(0,d.jsx)("div",{className:"m-6 rounded-2xl border border-red-500/20 bg-red-500/10 p-4 text-sm text-red-700 dark:text-red-300",children:"Authentication required"===s?"Vui l\xf2ng đăng nhập lại để xem Token Saver Analytics.":s}):null,m&&!c?(0,d.jsxs)("div",{className:"flex min-h-[320px] 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 Token Saver Analytics..."]}):(0,d.jsxs)("div",{className:"space-y-6 p-6",children:[c?.unavailable?(0,d.jsx)("div",{className:"rounded-2xl border border-amber-500/20 bg-amber-500/10 p-4 text-sm text-amber-700 dark:text-amber-300",children:"MySQL observability chưa sẵn s\xe0ng, kh\xf4ng đọc được dữ liệu Token Saver."}):null,c?.summary?.truncated?(0,d.jsxs)("div",{className:"rounded-2xl border border-amber-500/20 bg-amber-500/10 p-4 text-sm text-amber-700 dark:text-amber-300",children:["Đang hiển thị mẫu ",g(y.sampledRows)," / ",g(y.totalRows)," rows. Tăng TOKEN_SAVER_ANALYTICS_MAX_ROWS nếu cần thống k\xea chi tiết hơn."]}):null,(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-4",children:[(0,d.jsx)(k,{icon:"compress",label:"Measured requests",value:g(y.measuredRequests),hint:`${g(y.enabledRequests)} request c\xf3 RTK enabled`}),(0,d.jsx)(k,{icon:"savings",label:"Estimated tokens saved",value:`~${g(y.estimatedTokensSaved)}`,hint:`${h(y.bytesSaved)} saved / ${h(y.bytesBefore)} scanned`,tone:"success"}),(0,d.jsx)(k,{icon:"bolt",label:"Hit rate",value:i(y.hitRate),hint:`${g(y.appliedRequests)} request c\xf3 n\xe9n th\xe0nh c\xf4ng`}),(0,d.jsx)(k,{icon:"speed",label:"Avg saved / hit",value:h(y.avgBytesSavedPerAppliedRequest),hint:`${g(y.hitCount)} total filter hits`})]}),(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"font-bold text-text-main",children:"RTK efficiency"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tỷ lệ byte giảm sau khi RTK n\xe9n tool output."})]}),(0,d.jsxs)("div",{className:"flex items-center gap-6 text-right",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-2xl font-bold text-text-main",children:i(y.savedPct)}),(0,d.jsx)("div",{className:"text-xs text-text-muted",title:"bytesSaved / bytesBefore tr\xean to\xe0n bộ text đ\xe3 scan (kể cả kh\xf4ng match filter)",children:"Saved / scanned"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-2xl font-bold text-primary",children:i(y.appliedSavedPct)}),(0,d.jsx)("div",{className:"text-xs text-text-muted",title:"bytesSaved / bytesBefore CHỈ t\xednh tr\xean request thực sự c\xf3 hit — hiệu quả n\xe9n thật của RTK",children:"Saved / applied"})]})]})]}),(0,d.jsx)(l,{value:y.savedPct})]}),z?null:(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface/60 p-8 text-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-4xl text-text-muted",children:"compress"}),(0,d.jsx)("div",{className:"mt-3 font-semibold text-text-main",children:"Chưa c\xf3 rtkStats"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Dữ liệu sẽ xuất hiện sau khi c\xf3 request đi qua RTK-enabled route v\xe0 được ghi v\xe0o usage_events/request_details."})]}),(0,d.jsx)(o,{rows:c?.timeSeries||[]}),(0,d.jsxs)("div",{className:"grid gap-6 xl:grid-cols-2",children:[(0,d.jsx)(n,{title:"Top RTK filters",icon:"filter_alt",rows:c?.byFilter||[],columns:"filter",showEmpty:u}),(0,d.jsx)(n,{title:"Top source tools",icon:"terminal",rows:c?.bySourceTool||[],showEmpty:u})]}),(0,d.jsxs)("div",{className:"grid gap-6 xl:grid-cols-2",children:[(0,d.jsx)(n,{title:"Top providers",icon:"dns",rows:c?.byProvider||[],showEmpty:u}),(0,d.jsx)(n,{title:"Top models",icon:"memory",rows:c?.byModel||[],showEmpty:u})]}),(0,d.jsx)(q,{rows:c?.byApiKey||[],showEmpty:u}),(0,d.jsx)(p,{rows:c?.recentHits||[]})]})]})})}},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")},59239:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g,metadata:()=>f});var d=c(5735),e=c(23784);let f={title:"Token Saver Analytics"};function g(){return(0,d.jsx)(e.default,{})}},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")},66403:(a,b,c)=>{Promise.resolve().then(c.bind(c,23784))},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},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")},80475:(a,b,c)=>{Promise.resolve().then(c.bind(c,50774))},81787:a=>{"use strict";a.exports=require("bun:sqlite")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},89768:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(c(91986));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},91645:a=>{"use strict";a.exports=require("net")},92305:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return k},throwForSearchParamsAccessInUseCache:function(){return j},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(15693),g=c(19121),h=c(3295);function i(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function j(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function k(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},94735:a=>{"use strict";a.exports=require("events")}};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=11550));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=9839,a.ids=[9839],a.modules={1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11550:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>w,handler:()=>y,routeModule:()=>x});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.t.bind(c,95547,23))),u={children:["",{children:["(dashboard)",{children:["dashboard",{children:["token-saver",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,59239))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\token-saver\\page.js"]}]},{"global-error":[t,"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,v=(0,e.H)({tree:u,page:"/(dashboard)/dashboard/token-saver/page",pathname:"/dashboard/token-saver",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),w=v.__next_app__,x=v.routeModule,y=v.handler},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")},20503:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={MutableRequestCookiesAdapter:function(){return o},ReadonlyRequestCookiesError:function(){return j},RequestCookiesAdapter:function(){return k},appendMutableCookies:function(){return n},areCookiesMutableInCurrentPhase:function(){return q},createCookiesWithMutableAccessCheck:function(){return p},getModifiedCookieValues:function(){return m},responseCookiesToRequestCookies:function(){return s}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(91488),g=c(20445),h=c(29294),i=c(43014);class j extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1180",enumerable:!1,configurable:!0})}static callable(){throw new j}}class k{static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"clear":case"delete":case"set":return j.callable;default:return g.ReflectAdapter.get(a,b,c)}}})}static fresh(a){return new Proxy(a,{get:(a,b,c)=>g.ReflectAdapter.get(a,b,c)})}}let l=Symbol.for("next.mutated.cookies");function m(a){let b=a[l];return b&&Array.isArray(b)&&0!==b.length?b:[]}function n(a,b){let c=m(b);if(0===c.length)return!1;let d=new f.ResponseCookies(a),e=d.getAll();for(let a of c)d.set(a);for(let a of e)d.set(a);return!0}class o{static wrap(a,b){let c=new f.ResponseCookies(new Headers);for(let b of a.getAll())c.set(b);let d=[],e=new Set,j=()=>{let a=h.workAsyncStorage.getStore();if(a&&(a.pathWasRevalidated=i.ActionDidRevalidateStaticAndDynamic),d=c.getAll().filter(a=>e.has(a.name)),b){let a=[];for(let b of d){let c=new f.ResponseCookies(new Headers);c.set(b),a.push(c.toString())}b(a)}},k=new Proxy(c,{get(a,b,c){switch(b){case l:return d;case"delete":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.delete(...b),k}finally{j()}};case"set":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.set(...b),k}finally{j()}};default:return g.ReflectAdapter.get(a,b,c)}}});return k}}function p(a){let b=new Proxy(a.mutableCookies,{get(c,d,e){switch(d){case"delete":return function(...d){return r(a,"cookies().delete"),c.delete(...d),b};case"set":return function(...d){return r(a,"cookies().set"),c.set(...d),b};default:return g.ReflectAdapter.get(c,d,e)}}});return b}function q(a){return"action"===a.phase}function r(a,b){if(!q(a))throw new j}function s(a){let b=new f.RequestCookies(new Headers);for(let c of a.getAll())b.set(c);return b}},21820:a=>{"use strict";a.exports=require("os")},23784:(a,b,c)=>{"use strict";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\\\\token-saver\\\\TokenSaverAnalyticsPageClient.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\\token-saver\\TokenSaverAnalyticsPageClient.js","default")},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")},33873:a=>{"use strict";a.exports=require("path")},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")},41204:a=>{"use strict";a.exports=require("string_decoder")},43014:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={ActionDidNotRevalidate:function(){return e},ActionDidRevalidateDynamicOnly:function(){return g},ActionDidRevalidateStaticAndDynamic:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=0,f=1,g=2},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")},50774:(a,b,c)=>{"use strict";c.d(b,{default:()=>r});var d=c(48249),e=c(67484);c(32971);let f=[{value:"today",label:"H\xf4m nay"},{value:"yesterday",label:"H\xf4m qua"},{value:"24h",label:"24h"},{value:"7d",label:"7 ng\xe0y"},{value:"30d",label:"30 ng\xe0y"},{value:"all",label:"Tất cả"}];function g(a){return new Intl.NumberFormat("en-US").format(Number(a||0))}function h(a){let b=Number(a||0);if(b<1024)return`${g(b)} B`;let c=["KB","MB","GB","TB"],d=b/1024,e=0;for(;d>=1024&&e<c.length-1;)d/=1024,e+=1;return`${d>=100?d.toFixed(0):d>=10?d.toFixed(1):d.toFixed(2)} ${c[e]}`}function i(a){let b=Number(a||0);return`${b.toFixed(b>=10?1:2)}%`}function j(a){let b=String(a||"");return b.length<=18?b||"-":`${b.slice(0,10)}…${b.slice(-6)}`}function k({icon:a,label:b,value:c,hint:e,tone:f="default"}){return(0,d.jsxs)("div",{className:`rounded-2xl border p-5 shadow-sm ${"success"===f?"border-emerald-500/20 bg-emerald-500/5 text-emerald-700 dark:text-emerald-300":"warning"===f?"border-amber-500/20 bg-amber-500/5 text-amber-700 dark:text-amber-300":"border-border bg-background text-text-main"}`,children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wide text-text-muted",children:b}),(0,d.jsx)("div",{className:"mt-2 text-2xl font-bold text-text-main",children:c})]}),(0,d.jsx)("span",{className:"material-symbols-outlined rounded-xl bg-surface px-2.5 py-2 text-[22px] text-primary",children:a})]}),e?(0,d.jsx)("div",{className:"mt-3 text-xs text-text-muted",children:e}):null]})}function l({value:a}){let b=Math.max(0,Math.min(100,Number(a||0)));return(0,d.jsx)("div",{className:"h-2 w-full overflow-hidden rounded-full bg-surface",children:(0,d.jsx)("div",{className:"h-full rounded-full bg-primary",style:{width:`${b}%`}})})}function m(){return(0,d.jsx)("span",{className:"ml-1 rounded-full border border-amber-500/30 bg-amber-500/10 px-1.5 py-0.5 text-[10px] font-semibold text-amber-700 dark:text-amber-300",title:"Số request c\xf3 hit < 5 — con số hiệu quả c\xf3 thể chưa đại diện",children:"low sample"})}function n({title:a,icon:b,rows:c,columns:e="default",showEmpty:f=!0}){let j=f?c:(c||[]).filter(a=>Number(a.hitCount||0)>0);return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsx)("div",{className:"mb-4 flex items-center justify-between gap-3",children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:b}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:a})]})}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"min-w-full text-sm",children:[(0,d.jsx)("thead",{className:"text-left text-xs uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{className:"border-b border-border",children:[(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"T\xean"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Requests"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Hits"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Saved"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",title:"filter"===e?"Phần trăm đ\xf3ng g\xf3p v\xe0o tổng saved":"bytesSaved / bytesBefore tr\xean to\xe0n bộ text đ\xe3 scan (kể cả kh\xf4ng match filter)",children:"filter"===e?"Share":"Saved / scanned"}),"filter"===e?null:(0,d.jsx)("th",{className:"pb-2 text-right font-semibold",title:"bytesSaved / bytesBefore CHỈ t\xednh tr\xean request c\xf3 hit (applied=true) — hiệu quả n\xe9n thực sự của RTK",children:"Saved / applied"})]})}),(0,d.jsx)("tbody",{children:j?.length?j.map(a=>{let b=Number(a.appliedRequests||0),c=Number(a.hitCount||0);return(0,d.jsxs)("tr",{className:"border-b border-border/60 last:border-0",children:[(0,d.jsxs)("td",{className:"max-w-[280px] py-3 pr-4 font-medium text-text-main",children:[(0,d.jsx)("div",{className:"truncate",title:a.key,children:a.key}),"filter"===e?(0,d.jsxs)("div",{className:"text-xs text-text-muted",children:[g(a.hitCount)," hit \xb7 ~",g(a.estimatedTokensSaved)," token"]}):null]}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.requests||a.appliedRequests)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.hitCount)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right font-semibold text-emerald-600 dark:text-emerald-300",children:h(a.bytesSaved)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:i(a.savedPct)}),"filter"===e?null:(0,d.jsx)("td",{className:"py-3 text-right font-semibold text-primary",children:c>0?(0,d.jsxs)(d.Fragment,{children:[i(a.appliedSavedPct),c>0&&b>0&&b<5?(0,d.jsx)(m,{}):null]}):"—"})]},a.key)}):(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:"filter"===e?5:6,className:"py-6 text-center text-text-muted",children:f?"Chưa c\xf3 dữ liệu RTK trong khoảng thời gian n\xe0y.":"Kh\xf4ng c\xf3 row n\xe0o c\xf3 hit trong khoảng thời gian n\xe0y."})})})]})})]})}function o({rows:a}){let b=Math.max(1,...(a||[]).map(a=>Number(a.bytesSaved||0))),c=(a||[]).slice(-30);return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"stacked_bar_chart"}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:"Savings trend"})]}),(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Theo bucket thời gian (local)"})]}),c.length?(0,d.jsx)("div",{className:"flex h-56 items-end gap-2 rounded-2xl bg-surface/60 px-4 py-4",children:c.map(a=>{let c=Math.max(4,Math.round(Number(a.bytesSaved||0)/b*100)),e=function(a){if(!a)return{full:"-",short:"-"};let b=String(a);if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/.test(b)){let a=new Date(`${b}:00Z`);return Number.isNaN(a.getTime())?{full:b,short:b.slice(-5)}:{full:a.toLocaleString("vi-VN",{hour12:!1}),short:a.toLocaleTimeString("vi-VN",{hour12:!1,hour:"2-digit",minute:"2-digit"})}}if(/^\d{4}-\d{2}-\d{2}$/.test(b)){let a=new Date(`${b}T00:00:00Z`);return Number.isNaN(a.getTime())?{full:b,short:b.slice(5)}:{full:a.toLocaleDateString("vi-VN"),short:a.toLocaleDateString("vi-VN",{day:"2-digit",month:"2-digit"})}}return{full:b,short:b.slice(-5)}}(a.key);return(0,d.jsxs)("div",{className:"flex h-full min-w-0 flex-1 flex-col items-center gap-2",children:[(0,d.jsxs)("div",{className:"group relative flex min-h-0 w-full flex-1 items-end justify-center",children:[(0,d.jsx)("div",{className:"w-full rounded-t-lg bg-primary/80 transition hover:bg-primary",style:{height:`${c}%`,minHeight:4}}),(0,d.jsxs)("div",{className:"pointer-events-none absolute bottom-full z-10 mb-2 hidden min-w-max rounded-xl border border-border bg-background px-3 py-2 text-xs shadow-lg group-hover:block",children:[(0,d.jsx)("div",{className:"font-semibold text-text-main",children:e.full}),(0,d.jsxs)("div",{className:"text-text-muted",children:["Saved: ",h(a.bytesSaved)]}),(0,d.jsxs)("div",{className:"text-text-muted",children:["Requests: ",g(a.requests)]})]})]}),(0,d.jsx)("div",{className:"w-full truncate text-center text-[10px] text-text-muted",title:e.full,children:e.short})]},a.key)})}):(0,d.jsx)("div",{className:"rounded-2xl bg-surface/60 py-12 text-center text-sm text-text-muted",children:"Chưa c\xf3 trend data."})]})}function p({rows:a}){return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"history"}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:"Recent RTK hits"})]}),(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Kh\xf4ng hiển thị nội dung prompt/tool output"})]}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"min-w-full text-sm",children:[(0,d.jsx)("thead",{className:"text-left text-xs uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{className:"border-b border-border",children:[(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Time"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Source"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Provider / Model"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"API key"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Filters"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Saved"}),(0,d.jsx)("th",{className:"pb-2 text-right font-semibold",children:"Request"})]})}),(0,d.jsx)("tbody",{children:a?.length?a.map((a,b)=>(0,d.jsxs)("tr",{className:"border-b border-border/60 last:border-0",children:[(0,d.jsx)("td",{className:"whitespace-nowrap py-3 pr-4 text-text-muted",children:function(a){if(!a)return"-";let b=new Date(a);return Number.isNaN(b.getTime())?String(a):b.toLocaleString("vi-VN",{hour12:!1})}(a.timestamp)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-text-muted",children:a.sourceTool||"unknown"}),(0,d.jsxs)("td",{className:"max-w-[260px] py-3 pr-4",children:[(0,d.jsx)("div",{className:"font-medium text-text-main",children:a.provider}),(0,d.jsx)("div",{className:"truncate text-xs text-text-muted",title:a.model,children:a.model})]}),(0,d.jsxs)("td",{className:"max-w-[200px] py-3 pr-4",children:[(0,d.jsx)("div",{className:"truncate font-medium text-text-main",title:a.apiKeyName||a.apiKeyId||"-",children:a.apiKeyName||a.apiKeyId||"-"}),a.apiKeyOwner?(0,d.jsx)("div",{className:"truncate text-xs text-text-muted",title:a.apiKeyOwner,children:a.apiKeyOwner}):null]}),(0,d.jsx)("td",{className:"py-3 pr-4",children:(0,d.jsx)("div",{className:"flex max-w-[320px] flex-wrap gap-1.5",children:(a.filters||[]).slice(0,4).map(a=>(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-0.5 text-xs text-text-muted",children:a},a))})}),(0,d.jsxs)("td",{className:"py-3 pr-4 text-right font-semibold text-emerald-600 dark:text-emerald-300",children:[h(a.bytesSaved),(0,d.jsx)("div",{className:"text-xs font-normal text-text-muted",children:i(a.savedPct)})]}),(0,d.jsx)("td",{className:"py-3 text-right font-mono text-xs text-text-muted",title:a.requestId,children:j(a.requestId)})]},`${a.requestId||b}-${a.timestamp}`)):(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:7,className:"py-6 text-center text-text-muted",children:"Chưa c\xf3 request n\xe0o được RTK n\xe9n th\xe0nh c\xf4ng."})})})]})})]})}function q({rows:a,showEmpty:b=!0}){let c=b?a:(a||[]).filter(a=>Number(a.hitCount||0)>0);return(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsx)("div",{className:"mb-4 flex items-center justify-between gap-3",children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"vpn_key"}),(0,d.jsx)("h2",{className:"text-base font-bold text-text-main",children:"Top API keys"})]})}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"min-w-full text-sm",children:[(0,d.jsx)("thead",{className:"text-left text-xs uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{className:"border-b border-border",children:[(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"API key"}),(0,d.jsx)("th",{className:"pb-2 pr-4 font-semibold",children:"Owner"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Requests"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Hits"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",children:"Saved"}),(0,d.jsx)("th",{className:"pb-2 pr-4 text-right font-semibold",title:"bytesSaved / bytesBefore tr\xean to\xe0n bộ text đ\xe3 scan (kể cả kh\xf4ng match filter)",children:"Saved / scanned"}),(0,d.jsx)("th",{className:"pb-2 text-right font-semibold",title:"bytesSaved / bytesBefore CHỈ t\xednh tr\xean request c\xf3 hit (applied=true) — hiệu quả n\xe9n thực sự của RTK",children:"Saved / applied"})]})}),(0,d.jsx)("tbody",{children:c?.length?c.map(a=>{let b=Number(a.appliedRequests||0),c=Number(a.hitCount||0);return(0,d.jsxs)("tr",{className:"border-b border-border/60 last:border-0",children:[(0,d.jsxs)("td",{className:"max-w-[260px] py-3 pr-4 font-medium text-text-main",children:[(0,d.jsx)("div",{className:"truncate",title:a.apiKeyName||a.apiKeyId||a.key,children:a.apiKeyName||a.apiKeyId||a.key}),a.apiKeyId?(0,d.jsx)("div",{className:"truncate font-mono text-xs text-text-muted",title:a.apiKeyId,children:j(a.apiKeyId)}):null]}),(0,d.jsx)("td",{className:"max-w-[200px] py-3 pr-4 text-text-muted",children:(0,d.jsx)("div",{className:"truncate",title:a.apiKeyOwner||"-",children:a.apiKeyOwner||"-"})}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.requests||a.appliedRequests)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:g(a.hitCount)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right font-semibold text-emerald-600 dark:text-emerald-300",children:h(a.bytesSaved)}),(0,d.jsx)("td",{className:"py-3 pr-4 text-right text-text-muted",children:i(a.savedPct)}),(0,d.jsx)("td",{className:"py-3 text-right font-semibold text-primary",children:c>0?(0,d.jsxs)(d.Fragment,{children:[i(a.appliedSavedPct),c>0&&b>0&&b<5?(0,d.jsx)(m,{}):null]}):"—"})]},a.key)}):(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:7,className:"py-6 text-center text-text-muted",children:b?"Chưa c\xf3 API key n\xe0o c\xf3 RTK stats.":"Kh\xf4ng c\xf3 API key n\xe0o c\xf3 hit trong khoảng thời gian n\xe0y."})})})]})})]})}function r(){let[a,b]=(0,e.useState)("today"),[c,j]=(0,e.useState)(null),[m,r]=(0,e.useState)(!0),[s,t]=(0,e.useState)(""),[u,v]=(0,e.useState)(!1),w=(0,e.useMemo)(()=>{let b=new URLSearchParams;return b.set("period",a),b.set("timeZone",function(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch{return"UTC"}}()),b.toString()},[a]),x=(0,e.useCallback)(async()=>{r(!0),t("");try{let a=await fetch(`/api/dashboard/token-saver?${w}`,{cache:"no-store"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b?.error||`HTTP ${a.status}`);j(b)}catch(a){t(a?.message||"Kh\xf4ng tải được Token Saver Analytics"),j(null)}finally{r(!1)}},[w]),y=c?.summary||{},z=y.measuredRequests>0;return(0,d.jsx)("main",{className:"space-y-6 p-6",children:(0,d.jsxs)("section",{className:"overflow-hidden rounded-3xl border border-border bg-background shadow-sm",children:[(0,d.jsx)("div",{className:"border-b border-border bg-gradient-to-r from-primary/10 via-background to-background p-6",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"rounded-full border border-emerald-500/20 bg-emerald-500/10 px-3 py-1 text-xs font-semibold text-emerald-700 dark:text-emerald-300",children:"Read-only"}),c?.viewerScope==="own"?(0,d.jsx)("span",{className:"rounded-full border border-amber-500/20 bg-amber-500/10 px-3 py-1 text-xs font-semibold text-amber-700 dark:text-amber-300",children:"Chỉ hiển thị API key của bạn"}):(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-3 py-1 text-xs font-semibold text-text-muted",children:"To\xe0n hệ thống"}),(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-3 py-1 text-xs font-semibold text-text-muted",children:"No routing change"})]}),(0,d.jsx)("h1",{className:"text-2xl font-bold text-text-main",children:"Token Saver Analytics"}),(0,d.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-text-muted",children:"Theo d\xf5i hiệu quả RTK Token Saver tr\xean request thật: byte tiết kiệm, filter n\xe0o hoạt động, source tool/provider/model n\xe0o tiết kiệm nhiều nhất."})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("div",{className:"flex rounded-2xl border border-border bg-surface p-1",children:f.map(c=>(0,d.jsx)("button",{type:"button",onClick:()=>b(c.value),className:`rounded-xl px-3 py-2 text-sm font-semibold transition ${a===c.value?"bg-primary text-white":"text-text-muted hover:bg-background hover:text-text-main"}`,children:c.label},c.value))}),(0,d.jsxs)("button",{type:"button",onClick:()=>v(a=>!a),className:`inline-flex items-center gap-2 rounded-2xl border px-4 py-2 text-sm font-semibold transition ${u?"border-primary/40 bg-primary/10 text-primary":"border-border bg-background text-text-muted hover:bg-surface"}`,title:"Bật để hiển thị cả những provider/model/api-key/source-tool kh\xf4ng c\xf3 hit RTK n\xe0o",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:u?"visibility":"visibility_off"}),u?"Ẩn 0-hit":"Hiện 0-hit"]}),(0,d.jsxs)("button",{type:"button",onClick:x,disabled:m,className:"inline-flex items-center gap-2 rounded-2xl border border-border bg-background px-4 py-2 text-sm font-semibold text-text-main transition hover:bg-surface disabled:opacity-50",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[18px] ${m?"animate-spin":""}`,children:"refresh"}),"Refresh"]})]})]})}),s?(0,d.jsx)("div",{className:"m-6 rounded-2xl border border-red-500/20 bg-red-500/10 p-4 text-sm text-red-700 dark:text-red-300",children:"Authentication required"===s?"Vui l\xf2ng đăng nhập lại để xem Token Saver Analytics.":s}):null,m&&!c?(0,d.jsxs)("div",{className:"flex min-h-[320px] 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 Token Saver Analytics..."]}):(0,d.jsxs)("div",{className:"space-y-6 p-6",children:[c?.unavailable?(0,d.jsx)("div",{className:"rounded-2xl border border-amber-500/20 bg-amber-500/10 p-4 text-sm text-amber-700 dark:text-amber-300",children:"MySQL observability chưa sẵn s\xe0ng, kh\xf4ng đọc được dữ liệu Token Saver."}):null,c?.summary?.truncated?(0,d.jsxs)("div",{className:"rounded-2xl border border-amber-500/20 bg-amber-500/10 p-4 text-sm text-amber-700 dark:text-amber-300",children:["Đang hiển thị mẫu ",g(y.sampledRows)," / ",g(y.totalRows)," rows. Tăng TOKEN_SAVER_ANALYTICS_MAX_ROWS nếu cần thống k\xea chi tiết hơn."]}):null,(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-4",children:[(0,d.jsx)(k,{icon:"compress",label:"Measured requests",value:g(y.measuredRequests),hint:`${g(y.enabledRequests)} request c\xf3 RTK enabled`}),(0,d.jsx)(k,{icon:"savings",label:"Estimated tokens saved",value:`~${g(y.estimatedTokensSaved)}`,hint:`${h(y.bytesSaved)} saved / ${h(y.bytesBefore)} scanned`,tone:"success"}),(0,d.jsx)(k,{icon:"bolt",label:"Hit rate",value:i(y.hitRate),hint:`${g(y.appliedRequests)} request c\xf3 n\xe9n th\xe0nh c\xf4ng`}),(0,d.jsx)(k,{icon:"speed",label:"Avg saved / hit",value:h(y.avgBytesSavedPerAppliedRequest),hint:`${g(y.hitCount)} total filter hits`})]}),(0,d.jsxs)("section",{className:"rounded-2xl border border-border bg-background p-5 shadow-sm",children:[(0,d.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"font-bold text-text-main",children:"RTK efficiency"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tỷ lệ byte giảm sau khi RTK n\xe9n tool output."})]}),(0,d.jsxs)("div",{className:"flex items-center gap-6 text-right",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-2xl font-bold text-text-main",children:i(y.savedPct)}),(0,d.jsx)("div",{className:"text-xs text-text-muted",title:"bytesSaved / bytesBefore tr\xean to\xe0n bộ text đ\xe3 scan (kể cả kh\xf4ng match filter)",children:"Saved / scanned"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-2xl font-bold text-primary",children:i(y.appliedSavedPct)}),(0,d.jsx)("div",{className:"text-xs text-text-muted",title:"bytesSaved / bytesBefore CHỈ t\xednh tr\xean request thực sự c\xf3 hit — hiệu quả n\xe9n thật của RTK",children:"Saved / applied"})]})]})]}),(0,d.jsx)(l,{value:y.savedPct})]}),z?null:(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface/60 p-8 text-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-4xl text-text-muted",children:"compress"}),(0,d.jsx)("div",{className:"mt-3 font-semibold text-text-main",children:"Chưa c\xf3 rtkStats"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Dữ liệu sẽ xuất hiện sau khi c\xf3 request đi qua RTK-enabled route v\xe0 được ghi v\xe0o usage_events/request_details."})]}),(0,d.jsx)(o,{rows:c?.timeSeries||[]}),(0,d.jsxs)("div",{className:"grid gap-6 xl:grid-cols-2",children:[(0,d.jsx)(n,{title:"Top RTK filters",icon:"filter_alt",rows:c?.byFilter||[],columns:"filter",showEmpty:u}),(0,d.jsx)(n,{title:"Top source tools",icon:"terminal",rows:c?.bySourceTool||[],showEmpty:u})]}),(0,d.jsxs)("div",{className:"grid gap-6 xl:grid-cols-2",children:[(0,d.jsx)(n,{title:"Top providers",icon:"dns",rows:c?.byProvider||[],showEmpty:u}),(0,d.jsx)(n,{title:"Top models",icon:"memory",rows:c?.byModel||[],showEmpty:u})]}),(0,d.jsx)(q,{rows:c?.byApiKey||[],showEmpty:u}),(0,d.jsx)(p,{rows:c?.recentHits||[]})]})]})})}},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")},59239:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g,metadata:()=>f});var d=c(5735),e=c(23784);let f={title:"Token Saver Analytics"};function g(){return(0,d.jsx)(e.default,{})}},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")},66403:(a,b,c)=>{Promise.resolve().then(c.bind(c,23784))},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},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")},80475:(a,b,c)=>{Promise.resolve().then(c.bind(c,50774))},81787:a=>{"use strict";a.exports=require("bun:sqlite")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},89768:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(c(91986));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},91645:a=>{"use strict";a.exports=require("net")},92305:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return k},throwForSearchParamsAccessInUseCache:function(){return j},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(15693),g=c(19121),h=c(3295);function i(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function j(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function k(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},94735:a=>{"use strict";a.exports=require("events")}};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=11550));module.exports=c})();
|