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
|
@@ -11,32 +11,79 @@ export default function OverviewCards({ stats }) {
|
|
|
11
11
|
const hitRate = stats.totalPromptTokens > 0
|
|
12
12
|
? Math.min(100, (cached / stats.totalPromptTokens) * 100)
|
|
13
13
|
: 0;
|
|
14
|
+
|
|
15
|
+
const metrics = [
|
|
16
|
+
{
|
|
17
|
+
label: "Requests",
|
|
18
|
+
value: fmt(stats.totalRequests),
|
|
19
|
+
icon: "send",
|
|
20
|
+
valueClass: "text-text-main",
|
|
21
|
+
iconClass: "bg-primary/10 text-primary ring-primary/15",
|
|
22
|
+
accentClass: "from-primary via-primary/70 to-transparent",
|
|
23
|
+
detail: "All routed calls",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: "Input Tokens",
|
|
27
|
+
value: fmt(stats.totalPromptTokens),
|
|
28
|
+
icon: "input",
|
|
29
|
+
valueClass: "text-primary",
|
|
30
|
+
iconClass: "bg-primary/10 text-primary ring-primary/15",
|
|
31
|
+
accentClass: "from-primary via-primary/70 to-transparent",
|
|
32
|
+
detail: "Prompt and context",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: "Cached Tokens",
|
|
36
|
+
value: fmt(cached),
|
|
37
|
+
icon: "database",
|
|
38
|
+
valueClass: "text-info",
|
|
39
|
+
iconClass: "bg-info/10 text-info ring-info/15",
|
|
40
|
+
accentClass: "from-info via-info/70 to-transparent",
|
|
41
|
+
detail: cached > 0 ? `${hitRate.toFixed(1)}% of input · cache rate` : "No cache hits yet",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
label: "Output Tokens",
|
|
45
|
+
value: fmt(stats.totalCompletionTokens),
|
|
46
|
+
icon: "output",
|
|
47
|
+
valueClass: "text-success",
|
|
48
|
+
iconClass: "bg-success/10 text-success ring-success/15",
|
|
49
|
+
accentClass: "from-success via-success/70 to-transparent",
|
|
50
|
+
detail: "Generated responses",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
label: "Est. Cost",
|
|
54
|
+
value: `~${fmtCost(stats.totalCost)}`,
|
|
55
|
+
icon: "payments",
|
|
56
|
+
valueClass: "text-warning",
|
|
57
|
+
iconClass: "bg-warning/10 text-warning ring-warning/15",
|
|
58
|
+
accentClass: "from-warning via-warning/70 to-transparent",
|
|
59
|
+
detail: "Estimated, not billing",
|
|
60
|
+
className: "col-span-2 sm:col-span-1",
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
|
|
14
64
|
return (
|
|
15
|
-
<div className="grid min-w-0 grid-cols-
|
|
16
|
-
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<span className="truncate text-2xl font-bold text-warning">~{fmtCost(stats.totalCost)}</span>
|
|
38
|
-
<span className="text-[10px] text-text-muted">Estimated, not actual billing</span>
|
|
39
|
-
</Card>
|
|
65
|
+
<div className="grid min-w-0 grid-cols-2 gap-3 md:grid-cols-3 xl:grid-cols-5">
|
|
66
|
+
{metrics.map((metric) => (
|
|
67
|
+
<Card
|
|
68
|
+
key={metric.label}
|
|
69
|
+
padding="none"
|
|
70
|
+
className={`group relative flex min-h-[118px] min-w-0 flex-col overflow-hidden p-3.5 transition-[border-color,box-shadow,transform] duration-200 hover:border-primary/20 sm:min-h-[130px] sm:p-4 ${metric.className || ""}`}
|
|
71
|
+
>
|
|
72
|
+
<span className={`absolute inset-x-0 top-0 h-0.5 bg-linear-to-r ${metric.accentClass}`} aria-hidden="true" />
|
|
73
|
+
<div className="flex items-start justify-between gap-2">
|
|
74
|
+
<span className="pt-0.5 text-[11px] font-bold uppercase tracking-[0.09em] text-text-muted">
|
|
75
|
+
{metric.label}
|
|
76
|
+
</span>
|
|
77
|
+
<span className={`material-symbols-outlined flex size-7 shrink-0 items-center justify-center rounded-lg text-[16px] ring-1 transition-transform duration-300 group-hover:scale-105 ${metric.iconClass}`}>
|
|
78
|
+
{metric.icon}
|
|
79
|
+
</span>
|
|
80
|
+
</div>
|
|
81
|
+
<span className={`mt-1.5 truncate text-[22px] font-bold tracking-[-0.02em] sm:text-2xl xl:text-[25px] ${metric.valueClass}`}>
|
|
82
|
+
{metric.value}
|
|
83
|
+
</span>
|
|
84
|
+
<span className="mt-auto min-h-[30px] text-[11px] leading-[1.35] text-text-muted">{metric.detail}</span>
|
|
85
|
+
</Card>
|
|
86
|
+
))}
|
|
40
87
|
</div>
|
|
41
88
|
);
|
|
42
89
|
}
|
|
@@ -283,35 +283,46 @@ export default function ProviderTopology({ providers = [], activeRequests = [],
|
|
|
283
283
|
}, [nodes.length]);
|
|
284
284
|
|
|
285
285
|
return (
|
|
286
|
-
<div ref={containerRef} className="h-[
|
|
287
|
-
|
|
288
|
-
<div className="
|
|
289
|
-
|
|
286
|
+
<div ref={containerRef} className="flex h-[360px] w-full min-w-0 flex-col overflow-hidden rounded-[14px] border border-border-subtle bg-surface/94 shadow-[0_14px_34px_-26px_rgba(15,23,42,0.28)] sm:h-[480px]">
|
|
287
|
+
<div className="flex shrink-0 items-center justify-between border-b border-border-subtle bg-surface/75 px-4 py-3.5">
|
|
288
|
+
<div className="flex items-center gap-2">
|
|
289
|
+
<span className="material-symbols-outlined text-[17px] text-primary">route</span>
|
|
290
|
+
<span className="text-xs font-bold uppercase tracking-[0.08em] text-text-muted">Routing Map</span>
|
|
290
291
|
</div>
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
292
|
+
<span className="rounded-full bg-primary/[0.08] px-2 py-1 text-[10px] font-semibold text-primary ring-1 ring-primary/15">
|
|
293
|
+
{providers.length} {providers.length === 1 ? "provider" : "providers"}
|
|
294
|
+
</span>
|
|
295
|
+
</div>
|
|
296
|
+
<div className="min-h-0 flex-1 bg-bg/35">
|
|
297
|
+
{providers.length === 0 ? (
|
|
298
|
+
<div className="flex h-full items-center justify-center text-sm text-text-muted">
|
|
299
|
+
No providers connected
|
|
300
|
+
</div>
|
|
301
|
+
) : (
|
|
302
|
+
<ReactFlow
|
|
303
|
+
key={providersKey}
|
|
304
|
+
nodes={nodes}
|
|
305
|
+
edges={edges}
|
|
306
|
+
nodeTypes={nodeTypes}
|
|
307
|
+
fitView
|
|
308
|
+
fitViewOptions={FIT_OPTS}
|
|
309
|
+
minZoom={0.1}
|
|
310
|
+
maxZoom={2}
|
|
311
|
+
onInit={onInit}
|
|
312
|
+
proOptions={{ hideAttribution: true }}
|
|
313
|
+
panOnDrag
|
|
314
|
+
zoomOnScroll
|
|
315
|
+
zoomOnPinch
|
|
316
|
+
zoomOnDoubleClick
|
|
317
|
+
preventScrolling={false}
|
|
318
|
+
nodesDraggable={false}
|
|
319
|
+
nodesConnectable={false}
|
|
320
|
+
elementsSelectable={false}
|
|
321
|
+
>
|
|
322
|
+
<Controls showInteractive={false} className="react-flow-controls-custom" />
|
|
323
|
+
</ReactFlow>
|
|
324
|
+
)}
|
|
325
|
+
</div>
|
|
315
326
|
</div>
|
|
316
327
|
);
|
|
317
328
|
}
|
|
@@ -21,6 +21,13 @@ const fmtTokens = (n) => {
|
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
const fmtCost = (n) => `$${(n || 0).toFixed(4)}`;
|
|
24
|
+
const PERIOD_LABELS = {
|
|
25
|
+
today: "Today",
|
|
26
|
+
"24h": "Last 24 hours",
|
|
27
|
+
"7d": "Last 7 days",
|
|
28
|
+
"30d": "Last 30 days",
|
|
29
|
+
"60d": "Last 60 days",
|
|
30
|
+
};
|
|
24
31
|
|
|
25
32
|
export default function UsageChart({ period = "7d" }) {
|
|
26
33
|
const [data, setData] = useState([]);
|
|
@@ -50,20 +57,26 @@ export default function UsageChart({ period = "7d" }) {
|
|
|
50
57
|
const hasData = data.some((d) => d.tokens > 0 || d.cost > 0);
|
|
51
58
|
|
|
52
59
|
return (
|
|
53
|
-
<Card className="flex min-w-0 flex-col gap-
|
|
54
|
-
<div className="
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
className=
|
|
58
|
-
>
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
<Card className="flex min-w-0 flex-col gap-5 p-4 sm:p-5">
|
|
61
|
+
<div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
|
|
62
|
+
<div>
|
|
63
|
+
<p className="text-sm font-semibold text-text-main">Usage trend</p>
|
|
64
|
+
<p className="mt-0.5 text-[11px] text-text-muted">{PERIOD_LABELS[period] || period} · routed traffic over time</p>
|
|
65
|
+
</div>
|
|
66
|
+
<div className="grid w-full grid-cols-2 items-center gap-1 rounded-lg border border-border bg-bg-subtle p-1 sm:w-auto">
|
|
67
|
+
<button
|
|
68
|
+
onClick={() => setViewMode("tokens")}
|
|
69
|
+
className={`rounded-md px-3 py-1 text-sm font-medium transition-colors ${viewMode === "tokens" ? "bg-primary text-white shadow-sm" : "text-text-muted hover:bg-bg-hover hover:text-text"}`}
|
|
70
|
+
>
|
|
71
|
+
Tokens
|
|
72
|
+
</button>
|
|
73
|
+
<button
|
|
74
|
+
onClick={() => setViewMode("cost")}
|
|
75
|
+
className={`rounded-md px-3 py-1 text-sm font-medium transition-colors ${viewMode === "cost" ? "bg-primary text-white shadow-sm" : "text-text-muted hover:bg-bg-hover hover:text-text"}`}
|
|
76
|
+
>
|
|
77
|
+
Cost
|
|
78
|
+
</button>
|
|
79
|
+
</div>
|
|
67
80
|
</div>
|
|
68
81
|
|
|
69
82
|
{loading ? (
|
|
@@ -40,7 +40,7 @@ function UsageContent() {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
return (
|
|
43
|
-
<div className="flex min-w-0 flex-col gap-6 px-1 sm:px-0">
|
|
43
|
+
<div className="flex min-w-0 flex-col gap-6 px-1 sm:px-0 lg:gap-7">
|
|
44
44
|
{/* Tabs + period selector on same row */}
|
|
45
45
|
<div className="flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between">
|
|
46
46
|
<SegmentedControl
|
package/src/app/globals.css
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
@import "tailwindcss";
|
|
2
2
|
|
|
3
|
+
@font-face {
|
|
4
|
+
font-family: 'Material Symbols Outlined';
|
|
5
|
+
font-style: normal;
|
|
6
|
+
font-weight: 100 700;
|
|
7
|
+
font-display: block;
|
|
8
|
+
src: url('../../node_modules/material-symbols/material-symbols-outlined.woff2') format('woff2');
|
|
9
|
+
}
|
|
10
|
+
|
|
3
11
|
@custom-variant dark (&:where(.dark, .dark *));
|
|
4
12
|
|
|
5
13
|
/* Hide icon ligature text until font is ready */
|
|
@@ -42,8 +50,8 @@
|
|
|
42
50
|
/* Text */
|
|
43
51
|
--color-text: #0a0a0a;
|
|
44
52
|
--color-text-main: #0a0a0a;
|
|
45
|
-
--color-text-muted: #
|
|
46
|
-
--color-text-subtle: #
|
|
53
|
+
--color-text-muted: #606A78;
|
|
54
|
+
--color-text-subtle: #7C8694;
|
|
47
55
|
|
|
48
56
|
/* Status */
|
|
49
57
|
--color-danger: #cf222e;
|
|
@@ -97,8 +105,8 @@
|
|
|
97
105
|
|
|
98
106
|
--color-text: #ededed;
|
|
99
107
|
--color-text-main: #ededed;
|
|
100
|
-
--color-text-muted: #
|
|
101
|
-
--color-text-subtle: #
|
|
108
|
+
--color-text-muted: #a7aeb9;
|
|
109
|
+
--color-text-subtle: #858e9c;
|
|
102
110
|
|
|
103
111
|
--color-danger: #ef4444;
|
|
104
112
|
--color-success: #22c55e;
|
|
@@ -296,26 +304,30 @@ input, textarea {
|
|
|
296
304
|
.traffic-light.yellow { background: #FFBD2E; }
|
|
297
305
|
.traffic-light.green { background: #27C93F; }
|
|
298
306
|
|
|
299
|
-
/*
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
307
|
+
/* Keep icon defaults below Tailwind utilities in the cascade. */
|
|
308
|
+
@layer base {
|
|
309
|
+
.material-symbols-outlined {
|
|
310
|
+
font-family: 'Material Symbols Outlined', sans-serif;
|
|
311
|
+
font-weight: normal;
|
|
312
|
+
font-style: normal;
|
|
313
|
+
font-size: 24px;
|
|
314
|
+
line-height: 1;
|
|
315
|
+
letter-spacing: normal;
|
|
316
|
+
text-transform: none;
|
|
317
|
+
display: inline-block;
|
|
318
|
+
white-space: nowrap;
|
|
319
|
+
word-wrap: normal;
|
|
320
|
+
direction: ltr;
|
|
321
|
+
font-feature-settings: 'liga';
|
|
322
|
+
-webkit-font-feature-settings: 'liga';
|
|
323
|
+
-webkit-font-smoothing: antialiased;
|
|
324
|
+
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
|
|
325
|
+
-webkit-user-select: none;
|
|
326
|
+
user-select: none;
|
|
327
|
+
}
|
|
328
|
+
.material-symbols-outlined.fill-1 {
|
|
329
|
+
font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;
|
|
330
|
+
}
|
|
319
331
|
}
|
|
320
332
|
|
|
321
333
|
/* Disable text selection on buttons */
|
|
@@ -418,13 +430,16 @@ button {
|
|
|
418
430
|
/* Landing-style faint grid overlay (use absolute pos inside relative parent) */
|
|
419
431
|
.landing-grid {
|
|
420
432
|
background-image:
|
|
433
|
+
radial-gradient(circle at 18% 0%, rgba(229, 106, 74, 0.9) 0%, transparent 32%),
|
|
421
434
|
linear-gradient(to right, var(--color-accent) 1px, transparent 1px),
|
|
422
435
|
linear-gradient(to bottom, var(--color-accent) 1px, transparent 1px);
|
|
423
|
-
background-size:
|
|
424
|
-
opacity: 0.
|
|
436
|
+
background-size: auto, 48px 48px, 48px 48px;
|
|
437
|
+
opacity: 0.055;
|
|
438
|
+
-webkit-mask-image: linear-gradient(to bottom, #000 0%, rgba(0, 0, 0, 0.78) 48%, transparent 100%);
|
|
439
|
+
mask-image: linear-gradient(to bottom, #000 0%, rgba(0, 0, 0, 0.78) 48%, transparent 100%);
|
|
425
440
|
}
|
|
426
441
|
.dark .landing-grid {
|
|
427
|
-
opacity: 0.
|
|
442
|
+
opacity: 0.045;
|
|
428
443
|
}
|
|
429
444
|
|
|
430
445
|
/* React Flow controls: match app theme */
|
|
@@ -501,18 +516,17 @@ button {
|
|
|
501
516
|
============================================================ */
|
|
502
517
|
.card-3d {
|
|
503
518
|
position: relative;
|
|
504
|
-
background: color-mix(in srgb, var(--color-surface)
|
|
505
|
-
backdrop-filter: blur(
|
|
506
|
-
-webkit-backdrop-filter: blur(
|
|
519
|
+
background: color-mix(in srgb, var(--color-surface) 94%, transparent);
|
|
520
|
+
backdrop-filter: blur(14px) saturate(118%);
|
|
521
|
+
-webkit-backdrop-filter: blur(14px) saturate(118%);
|
|
507
522
|
border-radius: var(--radius-brand-lg);
|
|
508
523
|
box-shadow:
|
|
509
|
-
inset 0 1px 0 0 rgba(255, 255, 255, 0.
|
|
510
|
-
0 1px 2px rgba(15, 23, 42, 0.
|
|
511
|
-
0
|
|
512
|
-
0 24px 48px -24px rgba(15, 23, 42, 0.22);
|
|
524
|
+
inset 0 1px 0 0 rgba(255, 255, 255, 0.66),
|
|
525
|
+
0 1px 2px rgba(15, 23, 42, 0.045),
|
|
526
|
+
0 14px 34px -26px rgba(15, 23, 42, 0.28);
|
|
513
527
|
transform: translateY(0);
|
|
514
|
-
transition: transform 0.
|
|
515
|
-
box-shadow 0.
|
|
528
|
+
transition: transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
|
|
529
|
+
box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1);
|
|
516
530
|
}
|
|
517
531
|
.card-3d::before {
|
|
518
532
|
content: "";
|
|
@@ -525,12 +539,11 @@ button {
|
|
|
525
539
|
}
|
|
526
540
|
.card-3d > * { position: relative; z-index: 1; }
|
|
527
541
|
.card-3d:hover {
|
|
528
|
-
transform: translateY(
|
|
542
|
+
transform: translateY(0);
|
|
529
543
|
box-shadow:
|
|
530
|
-
inset 0 1px 0 0 rgba(255, 255, 255, 0.
|
|
531
|
-
0 2px 4px rgba(15, 23, 42, 0.
|
|
532
|
-
0
|
|
533
|
-
0 32px 60px -32px rgba(15, 23, 42, 0.24);
|
|
544
|
+
inset 0 1px 0 0 rgba(255, 255, 255, 0.72),
|
|
545
|
+
0 2px 4px rgba(15, 23, 42, 0.05),
|
|
546
|
+
0 18px 40px -28px rgba(229, 106, 74, 0.3);
|
|
534
547
|
}
|
|
535
548
|
.card-3d-elev {
|
|
536
549
|
box-shadow:
|
|
@@ -541,12 +554,11 @@ button {
|
|
|
541
554
|
}
|
|
542
555
|
|
|
543
556
|
.dark .card-3d {
|
|
544
|
-
background: color-mix(in srgb, var(--color-surface)
|
|
557
|
+
background: color-mix(in srgb, var(--color-surface) 90%, transparent);
|
|
545
558
|
box-shadow:
|
|
546
559
|
inset 0 1px 0 0 rgba(255, 255, 255, 0.06),
|
|
547
|
-
0 1px 2px rgba(0, 0, 0, 0.
|
|
548
|
-
0
|
|
549
|
-
0 28px 56px -24px rgba(0, 0, 0, 0.6);
|
|
560
|
+
0 1px 2px rgba(0, 0, 0, 0.34),
|
|
561
|
+
0 16px 36px -26px rgba(0, 0, 0, 0.72);
|
|
550
562
|
}
|
|
551
563
|
.dark .card-3d::before {
|
|
552
564
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.07), transparent 42%);
|
|
@@ -554,9 +566,8 @@ button {
|
|
|
554
566
|
.dark .card-3d:hover {
|
|
555
567
|
box-shadow:
|
|
556
568
|
inset 0 1px 0 0 rgba(255, 255, 255, 0.09),
|
|
557
|
-
0 2px 4px rgba(0, 0, 0, 0.
|
|
558
|
-
0
|
|
559
|
-
0 36px 64px -32px rgba(0, 0, 0, 0.7);
|
|
569
|
+
0 2px 4px rgba(0, 0, 0, 0.42),
|
|
570
|
+
0 20px 44px -30px rgba(229, 106, 74, 0.38);
|
|
560
571
|
}
|
|
561
572
|
.dark .card-3d-elev {
|
|
562
573
|
box-shadow:
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
import Link from "next/link";
|
|
4
|
+
import { APP_CONFIG } from "@/shared/constants/config";
|
|
5
|
+
|
|
6
|
+
const PROOF_POINTS = [
|
|
7
|
+
{ icon: "route", label: "One /v1 endpoint", detail: "OpenAI compatible" },
|
|
8
|
+
{ icon: "hub", label: "20+ providers", detail: "One control plane" },
|
|
9
|
+
{ icon: "shield_lock", label: "Local-first", detail: "Your keys stay yours" },
|
|
10
|
+
];
|
|
11
|
+
|
|
3
12
|
export default function HeroSection() {
|
|
4
13
|
return (
|
|
5
14
|
<section className="relative pt-32 pb-20 px-6 min-h-[90vh] flex flex-col items-center justify-center overflow-hidden">
|
|
6
15
|
{/* Glow effect */}
|
|
7
16
|
<div className="absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-[#f97815]/10 rounded-full blur-[120px] pointer-events-none"></div>
|
|
8
17
|
|
|
9
|
-
<div className="relative z-10 max-w-
|
|
18
|
+
<div className="relative z-10 max-w-5xl w-full text-center flex flex-col items-center gap-8">
|
|
10
19
|
{/* Version badge */}
|
|
11
20
|
<div className="inline-flex items-center gap-2 rounded-full border border-[#3a2f27] bg-[#23180f]/50 px-3 py-1 text-xs font-medium text-[#f97815]">
|
|
12
21
|
<span className="flex h-2 w-2 rounded-full bg-[#f97815] animate-pulse"></span>
|
|
13
|
-
|
|
22
|
+
v{APP_CONFIG.version} is live
|
|
14
23
|
</div>
|
|
15
24
|
|
|
16
25
|
{/* Main heading */}
|
|
@@ -26,22 +35,38 @@ export default function HeroSection() {
|
|
|
26
35
|
|
|
27
36
|
{/* CTA Buttons */}
|
|
28
37
|
<div className="flex flex-wrap items-center justify-center gap-4 w-full">
|
|
29
|
-
<
|
|
38
|
+
<Link
|
|
39
|
+
href="/dashboard"
|
|
40
|
+
className="h-12 px-8 rounded-lg bg-[#f97815] hover:bg-[#ff8a2f] text-[#181411] text-base font-bold transition-all duration-300 shadow-[0_0_15px_rgba(249,120,21,0.4)] hover:-translate-y-0.5 hover:shadow-[0_14px_32px_-12px_rgba(249,120,21,0.8)] flex items-center gap-2"
|
|
41
|
+
>
|
|
30
42
|
<span className="material-symbols-outlined">rocket_launch</span>
|
|
31
43
|
Get Started
|
|
32
|
-
</
|
|
44
|
+
</Link>
|
|
33
45
|
<a
|
|
34
46
|
href="https://github.com/Verifiedlabs/zevairouter"
|
|
35
47
|
target="_blank"
|
|
36
48
|
rel="noopener noreferrer"
|
|
37
|
-
className="h-12 px-8 rounded-lg border border-[#3a2f27] bg-[#23180f] hover:bg-[#3a2f27] text-white text-base font-bold transition-all flex items-center gap-2"
|
|
49
|
+
className="h-12 px-8 rounded-lg border border-[#3a2f27] bg-[#23180f]/90 hover:bg-[#3a2f27] hover:border-[#6a4a34] text-white text-base font-bold transition-all duration-300 hover:-translate-y-0.5 flex items-center gap-2"
|
|
38
50
|
>
|
|
39
51
|
<span className="material-symbols-outlined">code</span>
|
|
40
52
|
View on GitHub
|
|
41
53
|
</a>
|
|
42
54
|
</div>
|
|
55
|
+
|
|
56
|
+
<dl className="hidden md:grid w-full max-w-3xl grid-cols-3 divide-x divide-[#3a2f27] overflow-hidden rounded-2xl border border-[#3a2f27] bg-[#1c1713]/75 p-1 shadow-[0_24px_70px_-45px_rgba(249,120,21,0.75)] backdrop-blur-xl">
|
|
57
|
+
{PROOF_POINTS.map((point) => (
|
|
58
|
+
<div key={point.label} className="flex items-center justify-center gap-3 px-5 py-3 text-left">
|
|
59
|
+
<span className="material-symbols-outlined flex size-9 shrink-0 items-center justify-center rounded-xl bg-[#f97815]/10 text-[19px] text-[#f97815] ring-1 ring-[#f97815]/15">
|
|
60
|
+
{point.icon}
|
|
61
|
+
</span>
|
|
62
|
+
<div>
|
|
63
|
+
<dt className="text-sm font-bold text-white">{point.label}</dt>
|
|
64
|
+
<dd className="mt-0.5 text-[11px] text-gray-500">{point.detail}</dd>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
))}
|
|
68
|
+
</dl>
|
|
43
69
|
</div>
|
|
44
70
|
</section>
|
|
45
71
|
);
|
|
46
72
|
}
|
|
47
|
-
|
|
@@ -23,11 +23,11 @@ export default function Navigation() {
|
|
|
23
23
|
</button>
|
|
24
24
|
|
|
25
25
|
{/* Desktop menu */}
|
|
26
|
-
<div className="hidden md:flex items-center gap-8">
|
|
27
|
-
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors" href="#features">Features</a>
|
|
28
|
-
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors" href="#how-it-works">How it Works</a>
|
|
29
|
-
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors" href="https://github.com/Verifiedlabs/zevairouter#readme" target="_blank" rel="noopener noreferrer">Docs</a>
|
|
30
|
-
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors flex items-center gap-1" href="https://github.com/Verifiedlabs/zevairouter" target="_blank" rel="noopener noreferrer">
|
|
26
|
+
<div className="hidden md:flex items-center gap-1 rounded-full border border-[#3a2f27]/80 bg-[#23180f]/55 p-1 shadow-[0_12px_35px_-25px_rgba(249,120,21,0.8)]">
|
|
27
|
+
<a className="rounded-full px-3 py-1.5 text-gray-300 hover:bg-[#3a2f27]/70 hover:text-white text-sm font-medium transition-colors" href="#features">Features</a>
|
|
28
|
+
<a className="rounded-full px-3 py-1.5 text-gray-300 hover:bg-[#3a2f27]/70 hover:text-white text-sm font-medium transition-colors" href="#how-it-works">How it Works</a>
|
|
29
|
+
<a className="rounded-full px-3 py-1.5 text-gray-300 hover:bg-[#3a2f27]/70 hover:text-white text-sm font-medium transition-colors" href="https://github.com/Verifiedlabs/zevairouter#readme" target="_blank" rel="noopener noreferrer">Docs</a>
|
|
30
|
+
<a className="rounded-full px-3 py-1.5 text-gray-300 hover:bg-[#3a2f27]/70 hover:text-white text-sm font-medium transition-colors flex items-center gap-1" href="https://github.com/Verifiedlabs/zevairouter" target="_blank" rel="noopener noreferrer">
|
|
31
31
|
GitHub <span className="material-symbols-outlined text-[14px]">open_in_new</span>
|
|
32
32
|
</a>
|
|
33
33
|
</div>
|
|
@@ -35,14 +35,19 @@ export default function Navigation() {
|
|
|
35
35
|
{/* CTA + Mobile menu */}
|
|
36
36
|
<div className="flex items-center gap-4">
|
|
37
37
|
<button
|
|
38
|
+
type="button"
|
|
38
39
|
onClick={() => router.push("/dashboard")}
|
|
39
|
-
className="hidden sm:flex h-
|
|
40
|
+
className="hidden sm:flex h-10 items-center justify-center rounded-xl px-5 bg-[#f97815] hover:bg-[#ff8a2f] transition-all text-[#181411] text-sm font-bold shadow-[0_8px_24px_-10px_rgba(249,120,21,0.8)] hover:-translate-y-0.5 hover:shadow-[0_12px_30px_-10px_rgba(249,120,21,0.9)]"
|
|
40
41
|
>
|
|
41
42
|
Get Started
|
|
42
43
|
</button>
|
|
43
44
|
<button
|
|
44
|
-
|
|
45
|
+
type="button"
|
|
46
|
+
className="flex size-10 items-center justify-center rounded-lg text-white transition-colors hover:bg-[#3a2f27] md:hidden"
|
|
45
47
|
onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
|
|
48
|
+
aria-label={mobileMenuOpen ? "Close navigation menu" : "Open navigation menu"}
|
|
49
|
+
aria-expanded={mobileMenuOpen}
|
|
50
|
+
aria-controls="landing-mobile-navigation"
|
|
46
51
|
>
|
|
47
52
|
<span className="material-symbols-outlined">{mobileMenuOpen ? "close" : "menu"}</span>
|
|
48
53
|
</button>
|
|
@@ -51,13 +56,14 @@ export default function Navigation() {
|
|
|
51
56
|
|
|
52
57
|
{/* Mobile menu dropdown */}
|
|
53
58
|
{mobileMenuOpen && (
|
|
54
|
-
<div className="md:hidden border-t border-[#3a2f27] bg-[#181411]/95 backdrop-blur-md">
|
|
59
|
+
<div id="landing-mobile-navigation" className="md:hidden border-t border-[#3a2f27] bg-[#181411]/95 backdrop-blur-md">
|
|
55
60
|
<div className="flex flex-col gap-4 p-6">
|
|
56
61
|
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors" href="#features" onClick={() => setMobileMenuOpen(false)}>Features</a>
|
|
57
62
|
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors" href="#how-it-works" onClick={() => setMobileMenuOpen(false)}>How it Works</a>
|
|
58
63
|
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors" href="https://github.com/Verifiedlabs/zevairouter#readme" target="_blank" rel="noopener noreferrer">Docs</a>
|
|
59
64
|
<a className="text-gray-300 hover:text-white text-sm font-medium transition-colors" href="https://github.com/Verifiedlabs/zevairouter" target="_blank" rel="noopener noreferrer">GitHub</a>
|
|
60
65
|
<button
|
|
66
|
+
type="button"
|
|
61
67
|
onClick={() => router.push("/dashboard")}
|
|
62
68
|
className="h-9 rounded-lg bg-[#f97815] hover:bg-[#e0650a] text-[#181411] text-sm font-bold"
|
|
63
69
|
>
|
|
@@ -69,4 +75,3 @@ export default function Navigation() {
|
|
|
69
75
|
</nav>
|
|
70
76
|
);
|
|
71
77
|
}
|
|
72
|
-
|
package/src/app/layout.js
CHANGED
|
@@ -164,6 +164,27 @@ async function calculateCost(provider, model, tokens) {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
export function dedupeRecentRequests(entries, limit = 20) {
|
|
168
|
+
const seen = new Set();
|
|
169
|
+
return entries
|
|
170
|
+
.filter((entry) => {
|
|
171
|
+
if (entry.promptTokens === 0 && entry.completionTokens === 0) return false;
|
|
172
|
+
// Collapse legacy double-writes only when every persisted field, including
|
|
173
|
+
// the full timestamp, matches. Distinct requests in the same minute survive.
|
|
174
|
+
const key = JSON.stringify([
|
|
175
|
+
entry.timestamp,
|
|
176
|
+
entry.model,
|
|
177
|
+
entry.provider,
|
|
178
|
+
entry.promptTokens,
|
|
179
|
+
entry.completionTokens,
|
|
180
|
+
]);
|
|
181
|
+
if (seen.has(key)) return false;
|
|
182
|
+
seen.add(key);
|
|
183
|
+
return true;
|
|
184
|
+
})
|
|
185
|
+
.slice(0, limit);
|
|
186
|
+
}
|
|
187
|
+
|
|
167
188
|
export function trackPendingRequest(model, provider, connectionId, started, error = false) {
|
|
168
189
|
const modelKey = provider ? `${model} (${provider})` : model;
|
|
169
190
|
const timerKey = `${connectionId}|${modelKey}`;
|
|
@@ -228,8 +249,7 @@ export async function getActiveRequests() {
|
|
|
228
249
|
}
|
|
229
250
|
|
|
230
251
|
await ensureRingInitialized();
|
|
231
|
-
const
|
|
232
|
-
const recentRequests = [...recentRing.items]
|
|
252
|
+
const recentRequests = dedupeRecentRequests([...recentRing.items]
|
|
233
253
|
.sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp))
|
|
234
254
|
.map((e) => {
|
|
235
255
|
const t = e.tokens || {};
|
|
@@ -239,16 +259,7 @@ export async function getActiveRequests() {
|
|
|
239
259
|
completionTokens: t.completion_tokens || t.output_tokens || 0,
|
|
240
260
|
status: e.status || "ok",
|
|
241
261
|
};
|
|
242
|
-
})
|
|
243
|
-
.filter((e) => {
|
|
244
|
-
if (e.promptTokens === 0 && e.completionTokens === 0) return false;
|
|
245
|
-
const minute = e.timestamp ? e.timestamp.slice(0, 16) : "";
|
|
246
|
-
const key = `${e.model}|${e.provider}|${e.promptTokens}|${e.completionTokens}|${minute}`;
|
|
247
|
-
if (seen.has(key)) return false;
|
|
248
|
-
seen.add(key);
|
|
249
|
-
return true;
|
|
250
|
-
})
|
|
251
|
-
.slice(0, 20);
|
|
262
|
+
}));
|
|
252
263
|
|
|
253
264
|
const errorProvider = (Date.now() - lastErrorProvider.ts < 10000) ? lastErrorProvider.provider : "";
|
|
254
265
|
return { activeRequests, recentRequests, errorProvider };
|
|
@@ -361,8 +372,7 @@ export async function getUsageStats(period = "all") {
|
|
|
361
372
|
|
|
362
373
|
// recentRequests from live history (last 100 entries enough for 20 deduped)
|
|
363
374
|
const recentRows = db.all(`SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100`);
|
|
364
|
-
const
|
|
365
|
-
const recentRequests = recentRows
|
|
375
|
+
const recentRequests = dedupeRecentRequests(recentRows
|
|
366
376
|
.map((r) => {
|
|
367
377
|
const t = parseJson(r.tokens, {}) || {};
|
|
368
378
|
return {
|
|
@@ -371,16 +381,7 @@ export async function getUsageStats(period = "all") {
|
|
|
371
381
|
completionTokens: t.completion_tokens || t.output_tokens || 0,
|
|
372
382
|
status: r.status || "ok",
|
|
373
383
|
};
|
|
374
|
-
})
|
|
375
|
-
.filter((e) => {
|
|
376
|
-
if (e.promptTokens === 0 && e.completionTokens === 0) return false;
|
|
377
|
-
const minute = e.timestamp ? e.timestamp.slice(0, 16) : "";
|
|
378
|
-
const key = `${e.model}|${e.provider}|${e.promptTokens}|${e.completionTokens}|${minute}`;
|
|
379
|
-
if (seen.has(key)) return false;
|
|
380
|
-
seen.add(key);
|
|
381
|
-
return true;
|
|
382
|
-
})
|
|
383
|
-
.slice(0, 20);
|
|
384
|
+
}));
|
|
384
385
|
|
|
385
386
|
const stats = {
|
|
386
387
|
totalRequests: 0,
|