zevairouter 1.0.142 → 1.0.144
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/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +13 -13
- package/cli/app/.next-cli-build/build-manifest.json +3 -3
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +13 -13
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/318.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5189.js +66 -0
- package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/601.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/8242.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8895.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9071.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/9621.js +1 -0
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/3745-7e7bb6aaf8a63e86.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/523-078802482e95c757.js +3 -0
- package/cli/app/.next-cli-build/static/chunks/5497-276ef7bcaaa911b7.js +7 -0
- package/cli/app/.next-cli-build/static/chunks/620-b227b2e4896911f3.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/9802-1969f16a588b05f6.js +66 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/{page-d55c4e337a98302a.js → page-bf069c081a5ae279.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-b9e61d29da8941f7.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-2361fd82cdac58f9.js → page-f16310d2b403445e.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-0186f028c4f68aa9.js → page-27b7575d0d2d59fa.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-81c25ef219dfc38b.js → page-92aed83e0b2aba47.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-b055dfe6fb0c0172.js → page-eb2a18df1f1f3808.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/context/{page-fb93d56bfaccdc19.js → page-86fa4f45899539b7.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-9762b5d12b9faca6.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-eb43268c6d46f931.js → page-a35d16eda369d68e.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-7b6e1ef525e44bd1.js → page-5317928a78e74942.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-85e7b6f5b4af1dd4.js → page-e7989e6397c3cd28.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-29893b095259085d.js → page-72eb287b8ed78360.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-c03ae64868d6bc4d.js → page-81eaa9fe75830559.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-93b75c738ae813fe.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-35b97573fd86a9fb.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/{page-3daabb58a77d3b0d.js → page-ceb414eddc31fbfc.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-d2cd046c2bea1692.js → page-4f6f0b7c3b3da037.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-c38381db33d5aafc.js → page-8692640e1920d5fd.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-2cedde97aaf3c729.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-eb11e852f7a314c9.js → page-9e3ac0e62a8bba94.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/{page-f1c47c7778f23895.js → page-95719c850f15a0cd.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/{page-ac445dab96ac6223.js → page-6050ac2547c62b54.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/terminal/{page-a3689f5a124bc27a.js → page-e08897cf6cbe1b49.js} +3 -3
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/{page-26d372726ae6df38.js → page-8b89eccb0440a492.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-a408f0954e4812ab.js → page-7027d915ac07c723.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/{page-2de7b12af94b8721.js → page-bc3ada97fab644b3.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-2ae824d2d09c81ea.js → layout-59c5060c7f023ab8.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-06b42dda19642072.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/layout-f01c49fcec50ff21.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/login/{page-b5822dd005b1f5c2.js → page-9ea3f794879db097.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/{webpack-948b910ed7afd0b8.js → webpack-99944d59834ca8f9.js} +1 -1
- package/cli/app/.next-cli-build/static/css/{f0a349c70ab9fca8.css → 081a0afca5a9bd20.css} +1 -1
- package/cli/app/.next-cli-build/static/css/b912482d9fc0b2ed.css +1 -0
- package/cli/app/package.json +1 -1
- package/cli/package.json +1 -1
- package/open-sse/utils/stream.js +6 -2
- package/open-sse/utils/usageTracking.js +6 -2
- package/package.json +1 -1
- package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +80 -55
- package/src/app/(dashboard)/dashboard/providers/page.js +140 -58
- package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +72 -25
- package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +39 -28
- package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +27 -14
- package/src/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/src/app/globals.css +59 -48
- package/src/app/landing/components/HeroSection.js +31 -6
- package/src/app/landing/components/Navigation.js +14 -9
- package/src/app/layout.js +0 -1
- package/src/lib/db/repos/usageRepo.js +25 -24
- package/src/shared/components/Button.js +3 -3
- package/src/shared/components/Header.js +21 -17
- package/src/shared/components/SegmentedControl.js +2 -2
- package/src/shared/components/Sidebar.js +52 -69
- package/src/shared/components/UsageStats.js +89 -21
- package/cli/app/.next-cli-build/server/chunks/4491.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/6269.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/9476.js +0 -66
- package/cli/app/.next-cli-build/static/chunks/4343-ccad00872974a61b.js +0 -66
- package/cli/app/.next-cli-build/static/chunks/523-dd1081e3c6074114.js +0 -3
- package/cli/app/.next-cli-build/static/chunks/5242-bb1a1a7ec3bfb62f.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/5497-471618863a988f25.js +0 -7
- package/cli/app/.next-cli-build/static/chunks/85-527f8960e00da0e4.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-fa9d3452d69f2fc7.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-09e6213a0742752b.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-fd2453044462eb4f.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-13833a8f417b8d7e.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-5ab697596491a658.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-a5bcf36367dce737.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/layout-2aaca42ecdf3a056.js +0 -1
- package/cli/app/.next-cli-build/static/css/62b104778c7fb066.css +0 -1
- /package/cli/app/.next-cli-build/static/{v3XjbfP9HOIoFNp8g293E → NDNBEXS64u-EzzKBoJKXf}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{v3XjbfP9HOIoFNp8g293E → NDNBEXS64u-EzzKBoJKXf}/_ssgManifest.js +0 -0
|
@@ -12,9 +12,9 @@ const variants = {
|
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
const sizes = {
|
|
15
|
-
sm: "h-
|
|
16
|
-
md: "h-
|
|
17
|
-
lg: "h-
|
|
15
|
+
sm: "h-10 px-3 text-xs rounded-[8px] sm:h-7",
|
|
16
|
+
md: "h-11 px-4 text-sm rounded-[10px] sm:h-9",
|
|
17
|
+
lg: "h-12 px-6 text-sm rounded-[10px] sm:h-11",
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
export default function Button({
|
|
@@ -171,7 +171,7 @@ const getPageInfo = (pathname) => {
|
|
|
171
171
|
return {
|
|
172
172
|
title: "Endpoint",
|
|
173
173
|
description: "API endpoint configuration",
|
|
174
|
-
icon: "
|
|
174
|
+
icon: "terminal",
|
|
175
175
|
breadcrumbs: [],
|
|
176
176
|
};
|
|
177
177
|
if (pathname.includes("/profile"))
|
|
@@ -206,7 +206,7 @@ const getPageInfo = (pathname) => {
|
|
|
206
206
|
return {
|
|
207
207
|
title: "Endpoint",
|
|
208
208
|
description: "API endpoint configuration",
|
|
209
|
-
icon: "
|
|
209
|
+
icon: "terminal",
|
|
210
210
|
breadcrumbs: [],
|
|
211
211
|
};
|
|
212
212
|
return { title: "", description: "", breadcrumbs: [] };
|
|
@@ -261,13 +261,15 @@ export default function Header({ onMenuClick, showMenuButton = true }) {
|
|
|
261
261
|
};
|
|
262
262
|
|
|
263
263
|
return (
|
|
264
|
-
<header className="shrink-0 flex min-h-16 flex-wrap items-center justify-between gap-2 px-3 py-2.5 sm:gap-3 sm:px-4 sm:py-3 lg:
|
|
264
|
+
<header className="relative z-20 shrink-0 flex min-h-16 flex-wrap items-center justify-between gap-2 border-b border-border-subtle bg-surface/90 px-3 py-2.5 shadow-[0_12px_35px_-34px_rgba(15,23,42,0.8)] backdrop-blur-xl sm:gap-3 sm:px-4 sm:py-3 lg:min-h-[76px] lg:px-8">
|
|
265
265
|
{/* Mobile menu button */}
|
|
266
266
|
<div className="flex items-center gap-2 lg:hidden shrink-0">
|
|
267
267
|
{showMenuButton && (
|
|
268
268
|
<button
|
|
269
|
+
type="button"
|
|
269
270
|
onClick={onMenuClick}
|
|
270
271
|
className="flex size-10 items-center justify-center rounded-lg text-text-main hover:bg-surface-2 hover:text-primary transition-colors"
|
|
272
|
+
aria-label="Open dashboard navigation"
|
|
271
273
|
>
|
|
272
274
|
<span className="material-symbols-outlined">menu</span>
|
|
273
275
|
</button>
|
|
@@ -315,28 +317,30 @@ export default function Header({ onMenuClick, showMenuButton = true }) {
|
|
|
315
317
|
))}
|
|
316
318
|
</div>
|
|
317
319
|
) : title ? (
|
|
318
|
-
<div>
|
|
319
|
-
<div className="flex items-center gap-
|
|
320
|
+
<div className="flex items-center gap-3">
|
|
321
|
+
<div className="flex min-w-0 flex-1 items-center gap-3">
|
|
320
322
|
{icon && (
|
|
321
|
-
<span className="
|
|
322
|
-
{icon}
|
|
323
|
+
<span className="flex size-8 shrink-0 items-center justify-center rounded-[10px] bg-primary/10 text-primary ring-1 ring-primary/15 lg:size-10 lg:rounded-xl">
|
|
324
|
+
<span className="material-symbols-outlined text-lg lg:text-[22px]">{icon}</span>
|
|
323
325
|
</span>
|
|
324
326
|
)}
|
|
325
|
-
<
|
|
326
|
-
|
|
327
|
-
|
|
327
|
+
<div className="min-w-0">
|
|
328
|
+
<h1 className="truncate text-base font-semibold tracking-tight lg:text-[22px]">
|
|
329
|
+
{translate(title)}
|
|
330
|
+
</h1>
|
|
331
|
+
{description && (
|
|
332
|
+
<p className="hidden truncate text-sm text-text-muted lg:block">
|
|
333
|
+
{translate(description)}
|
|
334
|
+
</p>
|
|
335
|
+
)}
|
|
336
|
+
</div>
|
|
328
337
|
</div>
|
|
329
|
-
{description && (
|
|
330
|
-
<p className="hidden lg:block text-sm text-text-muted truncate">
|
|
331
|
-
{translate(description)}
|
|
332
|
-
</p>
|
|
333
|
-
)}
|
|
334
338
|
</div>
|
|
335
339
|
) : null}
|
|
336
340
|
</div>
|
|
337
341
|
|
|
338
342
|
{/* Right actions */}
|
|
339
|
-
<div className="order-2 flex items-center gap-0.5
|
|
343
|
+
<div className="order-2 flex shrink-0 items-center gap-0.5 sm:order-none sm:gap-1 lg:rounded-xl lg:border lg:border-border-subtle lg:bg-surface-2/60 lg:p-1">
|
|
340
344
|
{displayName && loginMethod === "OIDC" && (
|
|
341
345
|
<div className="hidden sm:flex items-center max-w-[220px] px-3 py-1.5 rounded-full border border-border bg-surface/70 text-xs text-text-muted truncate">
|
|
342
346
|
<span className="material-symbols-outlined text-[14px] mr-1.5 text-primary">person</span>
|
|
@@ -373,7 +377,7 @@ function HeaderSearch() {
|
|
|
373
377
|
value={query}
|
|
374
378
|
onChange={(e) => setQuery(e.target.value)}
|
|
375
379
|
placeholder={placeholder}
|
|
376
|
-
className="
|
|
380
|
+
className="h-9 w-full rounded-xl border border-border bg-surface/80 pl-8 pr-7 text-sm shadow-sm transition-colors focus:border-primary/50 focus:outline-none focus:ring-2 focus:ring-primary/10"
|
|
377
381
|
/>
|
|
378
382
|
{query && (
|
|
379
383
|
<button
|
|
@@ -18,7 +18,7 @@ const COMBINED_WEB_ITEM = { id: "web", label: "Web Fetch & Search", icon: "trave
|
|
|
18
18
|
|
|
19
19
|
// Core forever — everyday router surface
|
|
20
20
|
const coreItems = [
|
|
21
|
-
{ href: "/dashboard/endpoint", label: "Endpoint", icon: "
|
|
21
|
+
{ href: "/dashboard/endpoint", label: "Endpoint", icon: "terminal" },
|
|
22
22
|
{ href: "/dashboard/providers", label: "Providers", icon: "dns" },
|
|
23
23
|
{ href: "/dashboard/playground", label: "Playground", icon: "forum" },
|
|
24
24
|
{ href: "/dashboard/usage", label: "Usage", icon: "bar_chart" },
|
|
@@ -49,6 +49,20 @@ function isPathInItems(pathname, items) {
|
|
|
49
49
|
return items.some((item) => pathname === item.href || pathname.startsWith(`${item.href}/`));
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
const NAV_ITEM_CLASS = "group relative flex min-h-11 items-center gap-3 rounded-xl border border-transparent px-3 py-2 transition-all duration-200 lg:min-h-9 lg:py-1";
|
|
53
|
+
const NAV_ITEM_ACTIVE = "border-primary/15 bg-linear-to-r from-primary/15 to-primary/5 text-primary shadow-[0_12px_26px_-22px_rgba(229,106,74,0.9)]";
|
|
54
|
+
const NAV_ITEM_IDLE = "text-text-muted hover:border-border-subtle hover:bg-surface-2 hover:text-text-main";
|
|
55
|
+
const NAV_ICON_CLASS = "material-symbols-outlined flex size-7 shrink-0 items-center justify-center rounded-lg text-[18px] transition-all duration-200";
|
|
56
|
+
|
|
57
|
+
function getNavIconClass(active) {
|
|
58
|
+
return cn(
|
|
59
|
+
NAV_ICON_CLASS,
|
|
60
|
+
active
|
|
61
|
+
? "fill-1 bg-primary text-white shadow-[0_7px_16px_-8px_rgba(229,106,74,0.9)]"
|
|
62
|
+
: "group-hover:bg-primary/10 group-hover:text-primary"
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
52
66
|
export default function Sidebar({ onClose }) {
|
|
53
67
|
const pathname = usePathname();
|
|
54
68
|
const advancedActive = isPathInItems(pathname, advancedItems);
|
|
@@ -129,7 +143,7 @@ export default function Sidebar({ onClose }) {
|
|
|
129
143
|
|
|
130
144
|
return (
|
|
131
145
|
<>
|
|
132
|
-
<aside className="flex w-[min(18rem,86vw)] flex-col border-r border-border-subtle bg-vibrancy
|
|
146
|
+
<aside className="relative flex min-h-full w-[min(18rem,86vw)] flex-col overflow-hidden border-r border-border-subtle bg-vibrancy shadow-[8px_0_30px_-28px_rgba(0,0,0,0.45)] backdrop-blur-xl transition-colors duration-300 after:pointer-events-none after:absolute after:inset-y-0 after:right-0 after:w-px after:bg-linear-to-b after:from-transparent after:via-primary/25 after:to-transparent lg:w-72">
|
|
133
147
|
{/* Traffic lights */}
|
|
134
148
|
<div className="flex items-center gap-2 px-6 pt-5 pb-2">
|
|
135
149
|
<div className="w-3 h-3 rounded-full bg-[#FF5F56]" />
|
|
@@ -138,7 +152,7 @@ export default function Sidebar({ onClose }) {
|
|
|
138
152
|
</div>
|
|
139
153
|
|
|
140
154
|
{/* Logo */}
|
|
141
|
-
<div className="
|
|
155
|
+
<div className="flex flex-col gap-2 border-b border-border-subtle/70 px-6 py-4">
|
|
142
156
|
<Link href="/dashboard" className="flex items-center gap-3">
|
|
143
157
|
<div className="flex items-center justify-center size-9 rounded-[10px] bg-gradient-to-br from-[#FF9A52] via-[#F56A2A] to-[#D94716] shadow-[var(--shadow-warm)] ring-1 ring-white/20">
|
|
144
158
|
<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" className="w-6 h-6">
|
|
@@ -180,7 +194,7 @@ export default function Sidebar({ onClose }) {
|
|
|
180
194
|
|
|
181
195
|
{/* Navigation */}
|
|
182
196
|
<nav aria-label="Main navigation" className="flex-1 px-4 py-2 space-y-0.5 overflow-y-auto custom-scrollbar">
|
|
183
|
-
<p className="px-3 pt-1 pb-1 text-[10px] font-semibold uppercase tracking-
|
|
197
|
+
<p className="px-3 pt-1 pb-1 text-[10px] font-semibold uppercase tracking-[0.14em] text-text-muted/55">
|
|
184
198
|
Core
|
|
185
199
|
</p>
|
|
186
200
|
{coreItems.map((item) => (
|
|
@@ -190,18 +204,11 @@ export default function Sidebar({ onClose }) {
|
|
|
190
204
|
onClick={onClose}
|
|
191
205
|
aria-current={isActive(item.href) ? "page" : undefined}
|
|
192
206
|
className={cn(
|
|
193
|
-
|
|
194
|
-
isActive(item.href)
|
|
195
|
-
? "bg-primary/10 text-primary"
|
|
196
|
-
: "text-text-muted hover:bg-surface-2 hover:text-text-main"
|
|
207
|
+
NAV_ITEM_CLASS,
|
|
208
|
+
isActive(item.href) ? NAV_ITEM_ACTIVE : NAV_ITEM_IDLE
|
|
197
209
|
)}
|
|
198
210
|
>
|
|
199
|
-
<span
|
|
200
|
-
className={cn(
|
|
201
|
-
"material-symbols-outlined text-[18px]",
|
|
202
|
-
isActive(item.href) ? "fill-1" : "group-hover:text-primary transition-colors"
|
|
203
|
-
)}
|
|
204
|
-
>
|
|
211
|
+
<span className={getNavIconClass(isActive(item.href))}>
|
|
205
212
|
{item.icon}
|
|
206
213
|
</span>
|
|
207
214
|
<span className="text-[13px] font-medium">{item.label}</span>
|
|
@@ -213,14 +220,14 @@ export default function Sidebar({ onClose }) {
|
|
|
213
220
|
type="button"
|
|
214
221
|
onClick={() => setAdvancedOpen((v) => !v)}
|
|
215
222
|
className={cn(
|
|
216
|
-
"w-full
|
|
223
|
+
"group flex min-h-11 w-full items-center gap-2 rounded-xl px-3 py-2 transition-all lg:min-h-9 lg:py-1",
|
|
217
224
|
advancedActive
|
|
218
225
|
? "text-primary"
|
|
219
226
|
: "text-text-muted hover:bg-surface-2 hover:text-text-main"
|
|
220
227
|
)}
|
|
221
228
|
aria-expanded={advancedOpen}
|
|
222
229
|
>
|
|
223
|
-
<p className="flex-1 text-left text-[10px] font-semibold uppercase tracking-
|
|
230
|
+
<p className="flex-1 text-left text-[10px] font-semibold uppercase tracking-[0.14em] text-text-muted/55">
|
|
224
231
|
Advanced
|
|
225
232
|
</p>
|
|
226
233
|
<span className="text-[10px] font-medium text-text-subtle tabular-nums">
|
|
@@ -242,18 +249,11 @@ export default function Sidebar({ onClose }) {
|
|
|
242
249
|
href={item.href}
|
|
243
250
|
onClick={onClose}
|
|
244
251
|
className={cn(
|
|
245
|
-
|
|
246
|
-
isActive(item.href)
|
|
247
|
-
? "bg-primary/10 text-primary"
|
|
248
|
-
: "text-text-muted hover:bg-surface-2 hover:text-text-main"
|
|
252
|
+
NAV_ITEM_CLASS,
|
|
253
|
+
isActive(item.href) ? NAV_ITEM_ACTIVE : NAV_ITEM_IDLE
|
|
249
254
|
)}
|
|
250
255
|
>
|
|
251
|
-
<span
|
|
252
|
-
className={cn(
|
|
253
|
-
"material-symbols-outlined text-[18px]",
|
|
254
|
-
isActive(item.href) ? "fill-1" : "group-hover:text-primary transition-colors"
|
|
255
|
-
)}
|
|
256
|
-
>
|
|
256
|
+
<span className={getNavIconClass(isActive(item.href))}>
|
|
257
257
|
{item.icon}
|
|
258
258
|
</span>
|
|
259
259
|
<span className="text-[13px] font-medium">{item.label}</span>
|
|
@@ -263,21 +263,23 @@ export default function Sidebar({ onClose }) {
|
|
|
263
263
|
|
|
264
264
|
{/* System section */}
|
|
265
265
|
<div className="pt-3 mt-2 space-y-0.5">
|
|
266
|
-
<p className="px-3 text-[10px] font-semibold text-text-muted/55 uppercase tracking-
|
|
266
|
+
<p className="px-3 text-[10px] font-semibold text-text-muted/55 uppercase tracking-[0.14em] mb-1">
|
|
267
267
|
System
|
|
268
268
|
</p>
|
|
269
269
|
|
|
270
270
|
{/* Media Providers accordion */}
|
|
271
271
|
<button
|
|
272
|
+
type="button"
|
|
272
273
|
onClick={() => setMediaOpen((v) => !v)}
|
|
273
274
|
className={cn(
|
|
274
|
-
|
|
275
|
+
NAV_ITEM_CLASS,
|
|
276
|
+
"w-full",
|
|
275
277
|
pathname.startsWith("/dashboard/media-providers")
|
|
276
|
-
?
|
|
277
|
-
:
|
|
278
|
+
? NAV_ITEM_ACTIVE
|
|
279
|
+
: NAV_ITEM_IDLE
|
|
278
280
|
)}
|
|
279
281
|
>
|
|
280
|
-
<span className="
|
|
282
|
+
<span className={getNavIconClass(pathname.startsWith("/dashboard/media-providers"))}>perm_media</span>
|
|
281
283
|
<span className="text-[13px] font-medium flex-1 text-left">Media Providers</span>
|
|
282
284
|
<span className={cn("material-symbols-outlined text-[14px] transition-transform", mediaOpen && "rotate-180")}>
|
|
283
285
|
expand_more
|
|
@@ -291,13 +293,14 @@ export default function Sidebar({ onClose }) {
|
|
|
291
293
|
href={`/dashboard/media-providers/${kind.id}`}
|
|
292
294
|
onClick={onClose}
|
|
293
295
|
className={cn(
|
|
294
|
-
|
|
296
|
+
NAV_ITEM_CLASS,
|
|
297
|
+
"px-4",
|
|
295
298
|
pathname.startsWith(`/dashboard/media-providers/${kind.id}`)
|
|
296
|
-
?
|
|
297
|
-
:
|
|
299
|
+
? NAV_ITEM_ACTIVE
|
|
300
|
+
: NAV_ITEM_IDLE
|
|
298
301
|
)}
|
|
299
302
|
>
|
|
300
|
-
<span className=
|
|
303
|
+
<span className={cn(getNavIconClass(pathname.startsWith(`/dashboard/media-providers/${kind.id}`)), "text-[16px]")}>{kind.icon}</span>
|
|
301
304
|
<span className="text-sm">{kind.label}</span>
|
|
302
305
|
</Link>
|
|
303
306
|
))}
|
|
@@ -306,13 +309,14 @@ export default function Sidebar({ onClose }) {
|
|
|
306
309
|
href={COMBINED_WEB_ITEM.href}
|
|
307
310
|
onClick={onClose}
|
|
308
311
|
className={cn(
|
|
309
|
-
|
|
312
|
+
NAV_ITEM_CLASS,
|
|
313
|
+
"px-4",
|
|
310
314
|
pathname.startsWith(COMBINED_WEB_ITEM.href)
|
|
311
|
-
?
|
|
312
|
-
:
|
|
315
|
+
? NAV_ITEM_ACTIVE
|
|
316
|
+
: NAV_ITEM_IDLE
|
|
313
317
|
)}
|
|
314
318
|
>
|
|
315
|
-
<span className="
|
|
319
|
+
<span className={cn(getNavIconClass(pathname.startsWith(COMBINED_WEB_ITEM.href)), "text-[16px]")}>{COMBINED_WEB_ITEM.icon}</span>
|
|
316
320
|
<span className="text-sm">{COMBINED_WEB_ITEM.label}</span>
|
|
317
321
|
</Link>
|
|
318
322
|
</div>
|
|
@@ -324,18 +328,11 @@ export default function Sidebar({ onClose }) {
|
|
|
324
328
|
href={item.href}
|
|
325
329
|
onClick={onClose}
|
|
326
330
|
className={cn(
|
|
327
|
-
|
|
328
|
-
isActive(item.href)
|
|
329
|
-
? "bg-primary/10 text-primary"
|
|
330
|
-
: "text-text-muted hover:bg-surface-2 hover:text-text-main"
|
|
331
|
+
NAV_ITEM_CLASS,
|
|
332
|
+
isActive(item.href) ? NAV_ITEM_ACTIVE : NAV_ITEM_IDLE
|
|
331
333
|
)}
|
|
332
334
|
>
|
|
333
|
-
<span
|
|
334
|
-
className={cn(
|
|
335
|
-
"material-symbols-outlined text-[18px]",
|
|
336
|
-
isActive(item.href) ? "fill-1" : "group-hover:text-primary transition-colors"
|
|
337
|
-
)}
|
|
338
|
-
>
|
|
335
|
+
<span className={getNavIconClass(isActive(item.href))}>
|
|
339
336
|
{item.icon}
|
|
340
337
|
</span>
|
|
341
338
|
<span className="text-[13px] font-medium">{item.label}</span>
|
|
@@ -351,18 +348,11 @@ export default function Sidebar({ onClose }) {
|
|
|
351
348
|
href={item.href}
|
|
352
349
|
onClick={onClose}
|
|
353
350
|
className={cn(
|
|
354
|
-
|
|
355
|
-
isActive(item.href)
|
|
356
|
-
? "bg-primary/10 text-primary"
|
|
357
|
-
: "text-text-muted hover:bg-surface-2 hover:text-text-main"
|
|
351
|
+
NAV_ITEM_CLASS,
|
|
352
|
+
isActive(item.href) ? NAV_ITEM_ACTIVE : NAV_ITEM_IDLE
|
|
358
353
|
)}
|
|
359
354
|
>
|
|
360
|
-
<span
|
|
361
|
-
className={cn(
|
|
362
|
-
"material-symbols-outlined text-[18px]",
|
|
363
|
-
isActive(item.href) ? "fill-1" : "group-hover:text-primary transition-colors"
|
|
364
|
-
)}
|
|
365
|
-
>
|
|
355
|
+
<span className={getNavIconClass(isActive(item.href))}>
|
|
366
356
|
{item.icon}
|
|
367
357
|
</span>
|
|
368
358
|
<span className="text-[13px] font-medium">{item.label}</span>
|
|
@@ -375,18 +365,11 @@ export default function Sidebar({ onClose }) {
|
|
|
375
365
|
href="/dashboard/profile"
|
|
376
366
|
onClick={onClose}
|
|
377
367
|
className={cn(
|
|
378
|
-
|
|
379
|
-
isActive("/dashboard/profile")
|
|
380
|
-
? "bg-primary/10 text-primary"
|
|
381
|
-
: "text-text-muted hover:bg-surface-2 hover:text-text-main"
|
|
368
|
+
NAV_ITEM_CLASS,
|
|
369
|
+
isActive("/dashboard/profile") ? NAV_ITEM_ACTIVE : NAV_ITEM_IDLE
|
|
382
370
|
)}
|
|
383
371
|
>
|
|
384
|
-
<span
|
|
385
|
-
className={cn(
|
|
386
|
-
"material-symbols-outlined text-[18px]",
|
|
387
|
-
isActive("/dashboard/profile") ? "fill-1" : "group-hover:text-primary transition-colors"
|
|
388
|
-
)}
|
|
389
|
-
>
|
|
372
|
+
<span className={getNavIconClass(isActive("/dashboard/profile"))}>
|
|
390
373
|
settings
|
|
391
374
|
</span>
|
|
392
375
|
<span className="text-[13px] font-medium">Settings</span>
|
|
@@ -18,41 +18,89 @@ import ProviderTopology from "@/app/(dashboard)/dashboard/usage/components/Provi
|
|
|
18
18
|
import UsageChart from "@/app/(dashboard)/dashboard/usage/components/UsageChart";
|
|
19
19
|
|
|
20
20
|
function timeAgo(timestamp) {
|
|
21
|
-
const diff = Math.floor((Date.now() - new Date(timestamp)) / 1000);
|
|
21
|
+
const diff = Math.max(0, Math.floor((Date.now() - new Date(timestamp)) / 1000));
|
|
22
22
|
if (diff < 60) return `${diff}s ago`;
|
|
23
23
|
if (diff < 3600) return `${Math.floor(diff / 60)}m ago`;
|
|
24
24
|
if (diff < 86400) return `${Math.floor(diff / 3600)}h ago`;
|
|
25
25
|
return `${Math.floor(diff / 86400)}d ago`;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
function isSuccessfulStatus(status) {
|
|
29
|
+
if (!status) return true;
|
|
30
|
+
const normalized = String(status).trim().toLowerCase();
|
|
31
|
+
return normalized === "ok"
|
|
32
|
+
|| normalized === "success"
|
|
33
|
+
|| normalized === "succeeded"
|
|
34
|
+
|| /^2\d\d(?:\s|$)/.test(normalized);
|
|
35
|
+
}
|
|
36
|
+
|
|
28
37
|
// Auto-update time display every second without re-rendering parent
|
|
29
38
|
function TimeAgo({ timestamp }) {
|
|
30
39
|
const [, setTick] = useState(0);
|
|
31
|
-
|
|
40
|
+
|
|
32
41
|
useEffect(() => {
|
|
33
42
|
const timer = setInterval(() => setTick(t => t + 1), 1000);
|
|
34
43
|
return () => clearInterval(timer);
|
|
35
44
|
}, []);
|
|
36
|
-
|
|
37
|
-
return
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<time dateTime={timestamp} title={new Date(timestamp).toLocaleString()}>
|
|
48
|
+
{timeAgo(timestamp)}
|
|
49
|
+
</time>
|
|
50
|
+
);
|
|
38
51
|
}
|
|
39
52
|
|
|
40
|
-
|
|
53
|
+
const STREAM_STATUS = {
|
|
54
|
+
live: {
|
|
55
|
+
label: "Live",
|
|
56
|
+
title: "Usage stream connected",
|
|
57
|
+
className: "bg-success/10 text-success",
|
|
58
|
+
dotClassName: "bg-success animate-pulse",
|
|
59
|
+
},
|
|
60
|
+
reconnecting: {
|
|
61
|
+
label: "Reconnecting",
|
|
62
|
+
title: "Usage stream disconnected; reconnecting automatically",
|
|
63
|
+
className: "bg-warning/10 text-warning",
|
|
64
|
+
dotClassName: "bg-warning animate-pulse",
|
|
65
|
+
},
|
|
66
|
+
connecting: {
|
|
67
|
+
label: "Connecting",
|
|
68
|
+
title: "Connecting to the live usage stream",
|
|
69
|
+
className: "bg-primary/10 text-primary",
|
|
70
|
+
dotClassName: "bg-primary animate-pulse",
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
function RecentRequests({ requests = [], streamStatus = "connecting" }) {
|
|
75
|
+
const stream = STREAM_STATUS[streamStatus] || STREAM_STATUS.connecting;
|
|
76
|
+
|
|
41
77
|
return (
|
|
42
|
-
<Card className="flex min-w-0 flex-col overflow-hidden" padding="
|
|
78
|
+
<Card className="flex min-w-0 flex-col overflow-hidden" padding="none" style={{ height: 480 }}>
|
|
43
79
|
{/* Header */}
|
|
44
|
-
<div className="
|
|
45
|
-
<
|
|
80
|
+
<div className="flex shrink-0 items-center justify-between border-b border-border-subtle bg-surface/75 px-4 py-3.5">
|
|
81
|
+
<div className="flex items-center gap-2">
|
|
82
|
+
<span className="material-symbols-outlined text-[17px] text-primary">monitor_heart</span>
|
|
83
|
+
<span className="text-xs font-bold uppercase tracking-[0.08em] text-text-muted">Recent Requests</span>
|
|
84
|
+
</div>
|
|
85
|
+
<span
|
|
86
|
+
className={`inline-flex items-center gap-1.5 rounded-full px-2 py-1 text-[10px] font-semibold ${stream.className}`}
|
|
87
|
+
title={stream.title}
|
|
88
|
+
>
|
|
89
|
+
<span aria-hidden="true" className={`size-1.5 rounded-full ${stream.dotClassName}`} />
|
|
90
|
+
{stream.label}
|
|
91
|
+
</span>
|
|
46
92
|
</div>
|
|
47
93
|
|
|
48
94
|
{!requests.length ? (
|
|
49
95
|
<div className="flex-1 flex items-center justify-center text-text-muted text-sm">No requests yet.</div>
|
|
50
96
|
) : (
|
|
51
|
-
<div className="flex-1 overflow-y-auto">
|
|
97
|
+
<div className="flex-1 overflow-y-auto px-4 pb-3">
|
|
52
98
|
<table className="w-full min-w-[300px] border-collapse text-xs">
|
|
53
|
-
<thead className="sticky top-0 bg-
|
|
99
|
+
<thead className="sticky top-0 z-10 bg-surface/95 backdrop-blur-sm">
|
|
54
100
|
<tr className="border-b border-border">
|
|
55
|
-
<th className="py-1.5 text-left font-semibold text-text-muted
|
|
101
|
+
<th className="w-2 py-1.5 text-left font-semibold text-text-muted">
|
|
102
|
+
<span className="sr-only">Status</span>
|
|
103
|
+
</th>
|
|
56
104
|
<th className="py-1.5 text-left font-semibold text-text-muted">Model</th>
|
|
57
105
|
<th className="py-1.5 text-right font-semibold text-text-muted whitespace-nowrap">In / Out</th>
|
|
58
106
|
<th className="py-1.5 text-right font-semibold text-text-muted">When</th>
|
|
@@ -60,14 +108,28 @@ function RecentRequests({ requests = [] }) {
|
|
|
60
108
|
</thead>
|
|
61
109
|
<tbody className="divide-y divide-border/50">
|
|
62
110
|
{requests.map((r, i) => {
|
|
63
|
-
const ok =
|
|
111
|
+
const ok = isSuccessfulStatus(r.status);
|
|
112
|
+
const statusLabel = ok ? "Succeeded" : "Failed";
|
|
113
|
+
const providerName = AI_PROVIDERS[r.provider]?.name || FREE_PROVIDERS[r.provider]?.name || r.provider || "Unknown provider";
|
|
64
114
|
return (
|
|
65
|
-
<tr
|
|
66
|
-
|
|
67
|
-
|
|
115
|
+
<tr
|
|
116
|
+
key={`${r.timestamp}-${r.model}-${r.provider}-${r.promptTokens}-${r.completionTokens}-${i}`}
|
|
117
|
+
className="transition-colors hover:bg-bg-subtle"
|
|
118
|
+
>
|
|
119
|
+
<td className="py-1.5" title={statusLabel}>
|
|
120
|
+
<span
|
|
121
|
+
role="img"
|
|
122
|
+
aria-label={statusLabel}
|
|
123
|
+
className={`block size-1.5 rounded-full ${ok ? "bg-success" : "bg-error"}`}
|
|
124
|
+
/>
|
|
125
|
+
</td>
|
|
126
|
+
<td className="min-w-0 py-1.5 pr-2">
|
|
127
|
+
<div className="max-w-[132px] truncate font-mono" title={r.model}>{r.model}</div>
|
|
128
|
+
<div className="mt-0.5 max-w-[132px] truncate text-[9px] font-semibold uppercase tracking-[0.08em] text-text-subtle" title={providerName}>
|
|
129
|
+
{providerName}
|
|
130
|
+
</div>
|
|
68
131
|
</td>
|
|
69
|
-
<td className="py-1.5 font-mono
|
|
70
|
-
<td className="py-1.5 text-right whitespace-nowrap">
|
|
132
|
+
<td className="py-1.5 text-right font-mono tabular-nums whitespace-nowrap">
|
|
71
133
|
<span className="text-primary">{fmt(r.promptTokens)}↑</span>
|
|
72
134
|
{" "}
|
|
73
135
|
<span className="text-success">{fmt(r.completionTokens)}↓</span>
|
|
@@ -203,6 +265,7 @@ export default function UsageStats({ period: periodProp, setPeriod: setPeriodPro
|
|
|
203
265
|
const [tableView, setTableView] = useState("model");
|
|
204
266
|
const [viewMode, setViewMode] = useState("costs");
|
|
205
267
|
const [providers, setProviders] = useState([]);
|
|
268
|
+
const [streamStatus, setStreamStatus] = useState("connecting");
|
|
206
269
|
const [periodLocal, setPeriodLocal] = useState("today");
|
|
207
270
|
const isInitialLoad = useRef(true);
|
|
208
271
|
const period = periodProp ?? periodLocal;
|
|
@@ -256,6 +319,8 @@ export default function UsageStats({ period: periodProp, setPeriod: setPeriodPro
|
|
|
256
319
|
useEffect(() => {
|
|
257
320
|
const es = new EventSource("/api/usage/stream");
|
|
258
321
|
|
|
322
|
+
es.onopen = () => setStreamStatus("live");
|
|
323
|
+
|
|
259
324
|
es.onmessage = (e) => {
|
|
260
325
|
try {
|
|
261
326
|
const data = JSON.parse(e.data);
|
|
@@ -273,7 +338,10 @@ export default function UsageStats({ period: periodProp, setPeriod: setPeriodPro
|
|
|
273
338
|
}
|
|
274
339
|
};
|
|
275
340
|
|
|
276
|
-
es.onerror = () =>
|
|
341
|
+
es.onerror = () => {
|
|
342
|
+
setStreamStatus("reconnecting");
|
|
343
|
+
setLoading(false);
|
|
344
|
+
};
|
|
277
345
|
|
|
278
346
|
return () => es.close();
|
|
279
347
|
}, []);
|
|
@@ -415,7 +483,7 @@ export default function UsageStats({ period: periodProp, setPeriod: setPeriodPro
|
|
|
415
483
|
);
|
|
416
484
|
|
|
417
485
|
return (
|
|
418
|
-
<div className="flex min-w-0 flex-col gap-6">
|
|
486
|
+
<div className="flex min-w-0 flex-col gap-6 lg:gap-7">
|
|
419
487
|
{/* Period selector (hidden when controlled by parent) */}
|
|
420
488
|
{!hidePeriodSelector && (
|
|
421
489
|
<div className="flex w-full items-center gap-2 sm:w-auto sm:self-end">
|
|
@@ -442,14 +510,14 @@ export default function UsageStats({ period: periodProp, setPeriod: setPeriodPro
|
|
|
442
510
|
|
|
443
511
|
{/* Provider topology + Recent Requests */}
|
|
444
512
|
{loading ? spinner : (
|
|
445
|
-
<div className="grid min-w-0 grid-cols-1 items-stretch gap-
|
|
513
|
+
<div className="grid min-w-0 grid-cols-1 items-stretch gap-4 lg:grid-cols-[minmax(0,3fr)_minmax(340px,2fr)]">
|
|
446
514
|
<ProviderTopology
|
|
447
515
|
providers={providers}
|
|
448
516
|
activeRequests={stats.activeRequests || []}
|
|
449
517
|
lastProvider={stats.recentRequests?.[0]?.provider || ""}
|
|
450
518
|
errorProvider={stats.errorProvider || ""}
|
|
451
519
|
/>
|
|
452
|
-
<RecentRequests requests={stats.recentRequests || []} />
|
|
520
|
+
<RecentRequests requests={stats.recentRequests || []} streamStatus={streamStatus} />
|
|
453
521
|
</div>
|
|
454
522
|
)}
|
|
455
523
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=4491,exports.ids=[4491],exports.modules={300:(a,b,c)=>{"use strict";c.d(b,{Zr:()=>e});let d=a=>b=>{try{let c=a(b);if(c instanceof Promise)return c;return{then:a=>d(a)(c),catch(a){return this}}}catch(a){return{then(a){return this},catch:b=>d(b)(a)}}},e=(a,b)=>(c,e,f)=>{let g,h={storage:function(a){let b;try{b=a()}catch(a){return}return{getItem:a=>{var c;let d=a=>null===a?null:JSON.parse(a,void 0),e=null!=(c=b.getItem(a))?c:null;return e instanceof Promise?e.then(d):d(e)},setItem:(a,c)=>b.setItem(a,JSON.stringify(c,void 0)),removeItem:a=>b.removeItem(a)}}(()=>window.localStorage),partialize:a=>a,version:0,merge:(a,b)=>({...b,...a}),...b},i=!1,j=0,k=new Set,l=new Set,m=h.storage;if(!m)return a((...a)=>{console.warn(`[zustand persist middleware] Unable to update item '${h.name}', the given storage is currently unavailable.`),c(...a)},e,f);let n=()=>{let a=h.partialize({...e()});return m.setItem(h.name,{state:a,version:h.version})},o=f.setState;f.setState=(a,b)=>(o(a,b),n());let p=a((...a)=>(c(...a),n()),e,f);f.getInitialState=()=>p;let q=()=>{var a,b;if(!m)return;let f=++j;i=!1,k.forEach(a=>{var b;return a(null!=(b=e())?b:p)});let o=(null==(b=h.onRehydrateStorage)?void 0:b.call(h,null!=(a=e())?a:p))||void 0;return d(m.getItem.bind(m))(h.name).then(a=>{if(a)if("number"!=typeof a.version||a.version===h.version)return[!1,a.state];else{if(h.migrate){let b=h.migrate(a.state,a.version);return b instanceof Promise?b.then(a=>[!0,a]):[!0,b]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(a=>{var b;if(f!==j)return;let[d,i]=a;if(c(g=h.merge(i,null!=(b=e())?b:p),!0),d)return n()}).then(()=>{f===j&&(null==o||o(e(),void 0),g=e(),i=!0,l.forEach(a=>a(g)))}).catch(a=>{f===j&&(null==o||o(void 0,a))})};return f.persist={setOptions:a=>{h={...h,...a},a.storage&&(m=a.storage)},clearStorage:()=>{null==m||m.removeItem(h.name)},getOptions:()=>h,rehydrate:()=>q(),hasHydrated:()=>i,onHydrate:a=>(k.add(a),()=>{k.delete(a)}),onFinishHydration:a=>(l.add(a),()=>{l.delete(a)})},h.skipHydration||q(),g||p}},14953:(a,b,c)=>{"use strict";var d=c(68662);function e(){}function f(){}f.resetWarningCache=e,a.exports=function(){function a(a,b,c,e,f,g){if(g!==d){var h=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw h.name="Invariant Violation",h}}function b(){return a}a.isRequired=a;var c={array:a,bigint:a,bool:a,func:a,number:a,object:a,string:a,symbol:a,any:a,arrayOf:b,element:a,elementType:a,instanceOf:b,node:a,objectOf:b,oneOf:b,oneOfType:b,shape:b,exact:b,checkPropTypes:f,resetWarningCache:e};return c.PropTypes=c,c}},19099:(a,b,c)=>{"use strict";var d=c(54839);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"useParams")&&c.d(b,{useParams:function(){return d.useParams}}),c.o(d,"usePathname")&&c.d(b,{usePathname:function(){return d.usePathname}}),c.o(d,"useRouter")&&c.d(b,{useRouter:function(){return d.useRouter}}),c.o(d,"useSearchParams")&&c.d(b,{useSearchParams:function(){return d.useSearchParams}})},31417:(a,b,c)=>{"use strict";c.d(b,{v:()=>g});var d=c(67484);let e=a=>{let b,c=new Set,d=(a,d)=>{let e="function"==typeof a?a(b):a;if(!Object.is(e,b)){let a=b;b=(null!=d?d:"object"!=typeof e||null===e)?e:Object.assign({},b,e),c.forEach(c=>c(b,a))}},e=()=>b,f={setState:d,getState:e,getInitialState:()=>g,subscribe:a=>(c.add(a),()=>c.delete(a))},g=b=a(d,e,f);return f},f=a=>{let b=a?e(a):e,c=a=>(function(a,b=a=>a){let c=d.useSyncExternalStore(a.subscribe,d.useCallback(()=>b(a.getState()),[a,b]),d.useCallback(()=>b(a.getInitialState()),[a,b]));return d.useDebugValue(c),c})(b,a);return Object.assign(c,b),c},g=a=>a?f(a):f},36497:()=>{},49885:(a,b,c)=>{a.exports=c(14953)()},55091:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return f}});let d=c(5735),e=c(22675);function f(){return(0,d.jsx)(e.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},68662:a=>{"use strict";a.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},75329:a=>{a.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_f367f3",variable:"__variable_f367f3"}}};
|