zevairouter 1.0.111 → 1.0.113
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/CHANGELOG.md +10 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +6 -6
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/prerender-manifest.json +3 -3
- 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- 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 +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- 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 +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 +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 +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 +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 +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 +4 -4
- 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 +2 -2
- 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 +2 -2
- 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 +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 +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 +2 -2
- 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 +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 +2 -2
- 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 +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 +2 -2
- 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 +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +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 +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/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/init/route.js +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]/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/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 +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 +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 +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 +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 +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 +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 +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/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/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 +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 +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 +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 +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 +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 +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 +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 +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 +1 -17
- 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 +1 -17
- 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 +1 -17
- 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 +2 -18
- 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 +1 -17
- 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 +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 +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 +2 -2
- 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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.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 +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- 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 +6 -6
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
- 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 +3 -3
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +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 +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- 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.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 +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- 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 +3 -3
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- 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.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 +6 -6
- package/cli/app/.next-cli-build/server/chunks/1939.js +12 -4
- package/cli/app/.next-cli-build/server/chunks/2478.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/2540.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3110.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/3155.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/318.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3593.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/3831.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4055.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/412.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4650.js +17 -0
- package/cli/app/.next-cli-build/server/chunks/4739.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4780.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/507.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/5217.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/5258.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/698.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/7965.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8450.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8520.js +1 -9
- package/cli/app/.next-cli-build/server/chunks/8895.js +3 -3
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/middleware.js +10 -2
- 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/server/server-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/cli/app/.next-cli-build/static/chunks/{3702-9ca011a83b15d8d8.js → 3702-66e1931cc3b6f8a5.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/{5497-3ba9ab4bf3a9facb.js → 5497-54c8b503897135ae.js} +2 -2
- package/cli/app/CHANGELOG.md +10 -0
- package/cli/app/package.json +1 -1
- package/cli/app/src/lib/db/adapters/betterSqliteAdapter.js +1 -1
- package/cli/app/src/lib/db/adapters/bunSqliteAdapter.js +1 -1
- package/cli/app/src/lib/db/adapters/nodeSqliteAdapter.js +1 -1
- package/cli/app/src/lib/db/adapters/sqljsAdapter.js +23 -25
- package/cli/app/src/lib/db/migrate.js +19 -14
- package/cli/app/src/mitm/server.js +3 -3
- package/cli/package.json +1 -1
- package/open-sse/executors/base.js +2 -1
- package/open-sse/handlers/chatCore/sseToJsonHandler.js +11 -3
- package/open-sse/handlers/chatCore.js +3 -2
- package/open-sse/transformer/streamToJsonConverter.js +5 -1
- package/open-sse/utils/requestLogger.js +9 -18
- package/package.json +1 -1
- package/src/app/api/auth/oidc/test/route.js +4 -2
- package/src/app/api/oauth/[provider]/[action]/route.js +29 -32
- package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -0
- package/src/app/api/terminal/session/[id]/input/route.js +4 -1
- package/src/app/api/terminal/session/[id]/resize/route.js +4 -1
- package/src/app/api/terminal/session/[id]/route.js +9 -4
- package/src/app/api/terminal/session/[id]/stream/route.js +10 -2
- package/src/app/api/terminal/session/route.js +8 -3
- package/src/dashboardGuard.js +1 -1
- package/src/lib/auth/oidc.js +76 -7
- package/src/lib/auth/terminalSession.js +27 -1
- package/src/lib/db/adapters/betterSqliteAdapter.js +1 -1
- package/src/lib/db/adapters/bunSqliteAdapter.js +1 -1
- package/src/lib/db/adapters/nodeSqliteAdapter.js +1 -1
- package/src/lib/db/adapters/sqljsAdapter.js +23 -25
- package/src/lib/db/backup.js +2 -1
- package/src/lib/db/index.js +19 -1
- package/src/lib/db/migrate.js +19 -14
- package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +14 -4
- package/src/lib/terminal/sessionManager.js +21 -15
- package/src/mitm/server.js +13 -1
- package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +17 -2
- package/src/shared/components/OAuthModal.js +24 -16
- /package/cli/app/.next-cli-build/static/{BEit7P9cwXUO_ME79G3cB → QlR7VAPyBa5sEyFouxrTT}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{BEit7P9cwXUO_ME79G3cB → QlR7VAPyBa5sEyFouxrTT}/_ssgManifest.js +0 -0
package/cli/app/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# v1.0.113 (2026-07-23)
|
|
2
|
+
|
|
3
|
+
## Fixes
|
|
4
|
+
- **Full-code audit — security, durability, cancellation, and streaming fixes**: closes verified auth bypasses and credential leaks, hardens OIDC against SSRF and DNS rebinding, isolates terminal sessions per owner, makes SQLite backups/imports and sql.js writes durable and transactional, stops retries and MITM requests after cancellation, and rejects malformed or truncated SSE responses.
|
|
5
|
+
|
|
6
|
+
# v1.0.112 (2026-07-21)
|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
- **CodeBuddy CN bulk import — manual proxy URL**: the automation previously only accepted proxies from DB proxy pools (`proxyPoolMode` + `proxyPoolId`). The register modal now has a "Manual Proxy URL" field — paste any `http(s)://` or `socks4/5://` proxy (e.g. a sticky residential URL you haven't added to a pool) and it takes precedence over pool selection (dropdown auto-disables). The manager validates the scheme, marks the job `proxyPoolMode: "manual"`, and every account in the job runs through that proxy.
|
|
10
|
+
|
|
1
11
|
# v1.0.111 (2026-07-21)
|
|
2
12
|
|
|
3
13
|
## Fixes
|
package/cli/app/package.json
CHANGED
|
@@ -45,7 +45,7 @@ export function createBetterSqliteAdapter(filePath) {
|
|
|
45
45
|
all(sql, params = []) { return prepare(sql).all(params); },
|
|
46
46
|
exec(sql) { return db.exec(sql); },
|
|
47
47
|
transaction(fn) { return db.transaction(fn)(); },
|
|
48
|
-
checkpoint() {
|
|
48
|
+
checkpoint() { db.pragma("wal_checkpoint(TRUNCATE)"); },
|
|
49
49
|
close() {
|
|
50
50
|
clearInterval(checkpointTimer);
|
|
51
51
|
gracefulClose();
|
|
@@ -53,7 +53,7 @@ export async function createBunSqliteAdapter(filePath) {
|
|
|
53
53
|
const tx = db.transaction(fn);
|
|
54
54
|
return tx();
|
|
55
55
|
},
|
|
56
|
-
checkpoint() {
|
|
56
|
+
checkpoint() { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); },
|
|
57
57
|
close() {
|
|
58
58
|
clearInterval(checkpointTimer);
|
|
59
59
|
gracefulClose();
|
|
@@ -74,7 +74,7 @@ export async function createNodeSqliteAdapter(filePath) {
|
|
|
74
74
|
throw e;
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
|
-
checkpoint() {
|
|
77
|
+
checkpoint() { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); },
|
|
78
78
|
close() {
|
|
79
79
|
clearInterval(checkpointTimer);
|
|
80
80
|
gracefulClose();
|
|
@@ -13,29 +13,25 @@ async function loadSql() {
|
|
|
13
13
|
export async function createSqlJsAdapter(filePath) {
|
|
14
14
|
const SQLLib = await loadSql();
|
|
15
15
|
const buf = fs.existsSync(filePath) ? fs.readFileSync(filePath) : null;
|
|
16
|
-
|
|
16
|
+
let db = new SQLLib.Database(buf);
|
|
17
17
|
db.exec(PRAGMA_SQL);
|
|
18
18
|
// Schema is created/synced by migrate.js after adapter init
|
|
19
19
|
|
|
20
20
|
let dirty = false;
|
|
21
|
-
let
|
|
22
|
-
const SAVE_DEBOUNCE_MS = 100;
|
|
21
|
+
let transactionDepth = 0;
|
|
23
22
|
|
|
24
23
|
function persist() {
|
|
25
24
|
const data = db.export();
|
|
26
|
-
|
|
27
|
-
dirty = false;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function scheduleSave() {
|
|
25
|
+
const tempPath = `${filePath}.tmp-${process.pid}`;
|
|
31
26
|
dirty = true;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
27
|
+
try {
|
|
28
|
+
fs.writeFileSync(tempPath, Buffer.from(data));
|
|
29
|
+
fs.renameSync(tempPath, filePath);
|
|
30
|
+
dirty = false;
|
|
31
|
+
} catch (error) {
|
|
32
|
+
try { fs.rmSync(tempPath, { force: true }); } catch {}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
39
35
|
}
|
|
40
36
|
|
|
41
37
|
function paramsObj(params) {
|
|
@@ -50,7 +46,7 @@ export async function createSqlJsAdapter(filePath) {
|
|
|
50
46
|
stmt.step();
|
|
51
47
|
const changes = db.getRowsModified();
|
|
52
48
|
const lastInsertRowid = db.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0] ?? null;
|
|
53
|
-
|
|
49
|
+
if (transactionDepth === 0) persist();
|
|
54
50
|
return { changes, lastInsertRowid };
|
|
55
51
|
} finally {
|
|
56
52
|
stmt.free();
|
|
@@ -82,34 +78,36 @@ export async function createSqlJsAdapter(filePath) {
|
|
|
82
78
|
|
|
83
79
|
function exec(sql) {
|
|
84
80
|
db.exec(sql);
|
|
85
|
-
|
|
81
|
+
if (transactionDepth === 0) persist();
|
|
86
82
|
}
|
|
87
83
|
|
|
88
84
|
function transaction(fn) {
|
|
89
85
|
const sp = `sp_${Math.random().toString(36).slice(2)}`;
|
|
86
|
+
const snapshot = transactionDepth === 0 ? db.export() : null;
|
|
90
87
|
db.exec(`SAVEPOINT ${sp}`);
|
|
88
|
+
transactionDepth++;
|
|
91
89
|
try {
|
|
92
90
|
const result = fn();
|
|
93
91
|
db.exec(`RELEASE ${sp}`);
|
|
94
|
-
|
|
92
|
+
transactionDepth--;
|
|
93
|
+
if (transactionDepth === 0) persist();
|
|
95
94
|
return result;
|
|
96
95
|
} catch (e) {
|
|
96
|
+
transactionDepth--;
|
|
97
97
|
try { db.exec(`ROLLBACK TO ${sp}`); db.exec(`RELEASE ${sp}`); } catch {}
|
|
98
|
+
if (snapshot) {
|
|
99
|
+
db.close();
|
|
100
|
+
db = new SQL.Database(snapshot);
|
|
101
|
+
dirty = false;
|
|
102
|
+
}
|
|
98
103
|
throw e;
|
|
99
104
|
}
|
|
100
105
|
}
|
|
101
106
|
|
|
102
107
|
function close() {
|
|
103
|
-
if (saveTimer) clearTimeout(saveTimer);
|
|
104
108
|
if (dirty) persist();
|
|
105
109
|
db.close();
|
|
106
110
|
}
|
|
107
111
|
|
|
108
|
-
// Flush on shutdown
|
|
109
|
-
const flush = () => { if (dirty) try { persist(); } catch {} };
|
|
110
|
-
process.on("beforeExit", flush);
|
|
111
|
-
process.on("SIGINT", flush);
|
|
112
|
-
process.on("SIGTERM", flush);
|
|
113
|
-
|
|
114
112
|
return { driver: "sql.js", run, get, all, exec, transaction, close, raw: db };
|
|
115
113
|
}
|
|
@@ -215,11 +215,22 @@ function importLegacyDetails(adapter, data) {
|
|
|
215
215
|
// ─── Main entry ──────────────────────────────────────────────────────────
|
|
216
216
|
export async function runMigrationOnce(adapter) {
|
|
217
217
|
if (_migratedAdapters.has(adapter)) return;
|
|
218
|
-
_migratedAdapters.add(adapter);
|
|
219
218
|
|
|
220
219
|
// Capture freshness BEFORE migrations stamp _meta (otherwise we'd misclassify
|
|
221
220
|
// a brand-new DB as non-fresh once schemaVersion is written).
|
|
222
221
|
const fresh = isFreshDb(adapter);
|
|
222
|
+
const oldSchemaVersion = Number(getMetaSync(adapter, "schemaVersion", 0));
|
|
223
|
+
const oldAppVersion = getMetaSync(adapter, "appVersion", null);
|
|
224
|
+
const newAppVersion = getAppVersion();
|
|
225
|
+
let preMigrationBackup = null;
|
|
226
|
+
if (!fresh && (oldSchemaVersion < latestVersion() || (oldAppVersion && oldAppVersion !== newAppVersion))) {
|
|
227
|
+
preMigrationBackup = makeBackupDir(
|
|
228
|
+
oldSchemaVersion < latestVersion()
|
|
229
|
+
? `schema-${oldSchemaVersion}-to-${latestVersion()}`
|
|
230
|
+
: `upgrade-${oldAppVersion}-to-${newAppVersion}`
|
|
231
|
+
);
|
|
232
|
+
backupFile(DATA_FILE, preMigrationBackup, null, adapter);
|
|
233
|
+
}
|
|
223
234
|
|
|
224
235
|
// 1. Always run versioned migrations chain (skip-version safe)
|
|
225
236
|
const migInfo = runVersionedMigrations(adapter);
|
|
@@ -260,27 +271,21 @@ export async function runMigrationOnce(adapter) {
|
|
|
260
271
|
try { fs.writeFileSync(MIGRATED_MARKER, new Date().toISOString()); } catch {}
|
|
261
272
|
pruneOldBackups();
|
|
262
273
|
console.log(`[DB][migrate] JSON → SQLite in ${Date.now() - t0}ms | legacy JSON kept at DATA_DIR | backup: ${backupDir}`);
|
|
274
|
+
_migratedAdapters.add(adapter);
|
|
263
275
|
return;
|
|
264
276
|
}
|
|
265
277
|
|
|
266
278
|
if (fresh) {
|
|
267
279
|
setMetaSync(adapter, "appVersion", getAppVersion());
|
|
280
|
+
_migratedAdapters.add(adapter);
|
|
268
281
|
return;
|
|
269
282
|
}
|
|
270
283
|
|
|
271
|
-
// 4.
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
if (oldVer && oldVer !== newVer) {
|
|
275
|
-
const backupDir = makeBackupDir(`upgrade-${oldVer}-to-${newVer}`);
|
|
276
|
-
try { backupFile(DATA_FILE, backupDir); } catch {}
|
|
277
|
-
setMetaSync(adapter, "appVersion", newVer);
|
|
278
|
-
pruneOldBackups();
|
|
279
|
-
console.log(`[DB][migrate] App ${oldVer} → ${newVer} | schema ${migInfo.from} → ${migInfo.to} | backup: ${backupDir}`);
|
|
280
|
-
} else if (migInfo.applied > 0) {
|
|
281
|
-
// Schema upgrade without app version bump — still backup
|
|
282
|
-
const backupDir = makeBackupDir(`schema-${migInfo.from}-to-${migInfo.to}`);
|
|
283
|
-
try { backupFile(DATA_FILE, backupDir); } catch {}
|
|
284
|
+
// 4. Record the app version after the pre-migration backup and successful migration.
|
|
285
|
+
if (oldAppVersion !== newAppVersion) setMetaSync(adapter, "appVersion", newAppVersion);
|
|
286
|
+
if (preMigrationBackup) {
|
|
284
287
|
pruneOldBackups();
|
|
288
|
+
console.log(`[DB][migrate] App ${oldAppVersion} → ${newAppVersion} | schema ${migInfo.from} → ${migInfo.to} | backup: ${preMigrationBackup}`);
|
|
285
289
|
}
|
|
290
|
+
_migratedAdapters.add(adapter);
|
|
286
291
|
}
|
|
@@ -56,7 +56,7 @@ ${pu}`});Ln.set(e,r),t(null,r)}catch(a){ot(`SNI error for ${e}: ${a.message}`),t
|
|
|
56
56
|
[ERROR h2] ${g.message}
|
|
57
57
|
`),i.end()),t.headersSent||t.writeHead(502),t.writableEnded||t.end("Bad Gateway");try{f.close()}catch{}l()});let c=f.request(u,{endStream:a.length===0});a.length>0&&c.end(a),c.once("response",g=>{let v=g[":status"],y={};for(let[S,I]of Object.entries(g))S.startsWith(":")||S==="connection"||S==="keep-alive"||S==="transfer-encoding"||(y[S]=I);t.writeHead(v,y),i&&i.writeHeader(v,y);let x=[];c.on("data",S=>{i&&i.writeChunk(S),s&&x.push(S),t.write(S)}),c.on("end",()=>{if(i&&i.end(),t.writableEnded||t.end(),s)try{s(Buffer.concat(x),y)}catch{}try{f.close()}catch{}l()})}),c.once("error",g=>{ot(`[mitm] http2 stream error: ${g.message}`),i&&(i.writeChunk(`
|
|
58
58
|
[ERROR h2-stream] ${g.message}
|
|
59
|
-
`),i.end()),t.headersSent||t.writeHead(502),t.writableEnded||t.end();try{f.close()}catch{}l()})})}async function Zd(e,t,a,r,n,s,i){let o=await Pn(n),u=fu.request({hostname:o,port:443,path:e.url,method:e.method,headers:r,servername:n,rejectUnauthorized:!1},
|
|
60
|
-
[ERROR] ${
|
|
61
|
-
`),i.end()),t.headersSent||t.writeHead(502),t.end("Bad Gateway")}),a.length>0&&
|
|
59
|
+
`),i.end()),t.headersSent||t.writeHead(502),t.writableEnded||t.end();try{f.close()}catch{}l()})})}async function Zd(e,t,a,r,n,s,i){let o=await Pn(n),u=new AbortController,l=()=>u.abort();e.once("aborted",l),t.once("close",l);let f=fu.request({hostname:o,port:443,path:e.url,method:e.method,headers:r,servername:n,rejectUnauthorized:!1,signal:u.signal},g=>{if(t.writeHead(g.statusCode,g.headers),i&&i.writeHeader(g.statusCode,g.headers),!s&&!i){g.pipe(t);return}let v=[];g.on("data",y=>{i&&i.writeChunk(y),s&&v.push(y),t.write(y)}),g.on("end",()=>{if(i&&i.end(),t.end(),s)try{s(Buffer.concat(v),g.headers)}catch{}})}),c=()=>{e.removeListener("aborted",l),t.removeListener("close",l)};f.once("close",c),f.on("error",g=>{c(),!u.signal.aborted&&(ot(`Passthrough error: ${g.message}`),i&&(i.writeChunk(`
|
|
60
|
+
[ERROR] ${g.message}
|
|
61
|
+
`),i.end()),t.headersSent||t.writeHead(502),t.end("Bad Gateway"))}),a.length>0&&f.write(a),f.end()}var On=fu.createServer(gu,async(e,t)=>{try{if(e.url==="/_mitm_health"){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({ok:!0,pid:process.pid}));return}let a=await Yd(e);if(hu&&Rd(e,a,"raw"),e.headers[ou.name]===ou.value)return er(e,t,a);let r=du(e.headers.host);if(!r||!(Od[r]||[]).some(u=>e.url.includes(u)))return er(e,t,a);if(r==="cursor")return uu[r].intercept(e,t,a,null,er);let i=$d(e.url,a);if(i&&(Kd[r]||[]).some(u=>u.test(i)))return er(e,t,a);let o=Wd(r,i);return o?uu[r].intercept(e,t,a,o,er):er(e,t,a)}catch(a){ot(`Unhandled error: ${a.message}`),t.headersSent||t.writeHead(500,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:{message:a.message,type:"mitm_error"}}))}});function eh(e){try{let t=[];if(su){let a=`powershell -NonInteractive -WindowStyle Hidden -Command "Get-NetTCPConnection -LocalPort ${e} -State Listen -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess"`,r=Rn(a,{encoding:"utf-8",windowsHide:!0}).trim();if(!r)return;t=r.split(/\r?\n/).map(n=>n.trim()).filter(n=>n&&Number(n)!==process.pid&&Number(n)>4)}else{let a=Rn(`${Ud} -nP -iTCP:${e} -sTCP:LISTEN -t`,{encoding:"utf-8",windowsHide:!0}).trim();if(!a)return;t=a.split(`
|
|
62
62
|
`).filter(r=>r&&Number(r)!==process.pid)}if(t.length===0)return;t.forEach(a=>{try{su?Rn(`taskkill /F /PID ${a}`,{windowsHide:!0}):process.kill(Number(a),"SIGKILL")}catch(r){ot(`Failed to kill PID ${a}: ${r.message}`)}}),Un(`Killed ${t.length} process(es) on port ${e}`)}catch(t){if(t.status!==1)throw t}}try{eh(Cr)}catch(e){ot(`Cannot kill process on port ${Cr}: ${e.message}`),process.exit(1)}On.listen(Cr,()=>Un(`\u{1F680} Server ready on :${Cr}`));On.on("error",e=>{e.code==="EADDRINUSE"?ot(`Port ${Cr} already in use`):e.code==="EACCES"?ot(`Permission denied for port ${Cr}`):ot(e.message),process.exit(1)});var{removeAllDNSEntriesSync:th}=ru(),lu=!1,Vn=()=>{if(lu)return;lu=!0,th();let e=setTimeout(()=>process.exit(0),1500);On.close(()=>{clearTimeout(e),process.exit(0)})};process.on("SIGTERM",Vn);process.on("SIGINT",Vn);process.platform==="win32"&&process.on("SIGBREAK",Vn);
|
package/cli/package.json
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
1
2
|
import { HTTP_STATUS, RETRY_CONFIG, DEFAULT_RETRY_CONFIG, resolveRetryEntry, FETCH_CONNECT_TIMEOUT_MS } from "../config/runtimeConfig.js";
|
|
2
3
|
import { shouldRefreshCredentials } from "../services/oauthCredentialManager.js";
|
|
3
4
|
import { proxyAwareFetch } from "../utils/proxyFetch.js";
|
|
@@ -115,7 +116,7 @@ export class BaseExecutor {
|
|
|
115
116
|
if (attempts <= 0 || retryAttemptsByUrl[urlIndex] >= attempts) return false;
|
|
116
117
|
retryAttemptsByUrl[urlIndex]++;
|
|
117
118
|
log?.debug?.("RETRY", `${reason} retry ${retryAttemptsByUrl[urlIndex]}/${attempts} after ${delayMs / 1000}s`);
|
|
118
|
-
await
|
|
119
|
+
await delay(delayMs, undefined, { signal });
|
|
119
120
|
return true;
|
|
120
121
|
};
|
|
121
122
|
|
|
@@ -36,16 +36,24 @@ function pickAssistantMessageForChatCompletion(output) {
|
|
|
36
36
|
*/
|
|
37
37
|
export function parseSSEToOpenAIResponse(rawSSE, fallbackModel) {
|
|
38
38
|
const chunks = [];
|
|
39
|
+
let terminated = false;
|
|
39
40
|
|
|
40
41
|
for (const line of String(rawSSE || "").split("\n")) {
|
|
41
42
|
const trimmed = line.trim();
|
|
42
43
|
if (!trimmed.startsWith("data:")) continue;
|
|
43
44
|
const payload = trimmed.slice(5).trim();
|
|
44
|
-
if (!payload
|
|
45
|
-
|
|
45
|
+
if (!payload) continue;
|
|
46
|
+
if (payload === "[DONE]") {
|
|
47
|
+
terminated = true;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
let chunk;
|
|
51
|
+
try { chunk = JSON.parse(payload); } catch { return null; }
|
|
52
|
+
chunks.push(chunk);
|
|
53
|
+
if (chunk?.choices?.some((choice) => choice?.finish_reason)) terminated = true;
|
|
46
54
|
}
|
|
47
55
|
|
|
48
|
-
if (chunks.length === 0) return null;
|
|
56
|
+
if (chunks.length === 0 || !terminated) return null;
|
|
49
57
|
|
|
50
58
|
const first = chunks[0];
|
|
51
59
|
const contentParts = [];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
1
2
|
import { detectFormat, getTargetFormat } from "../services/provider.js";
|
|
2
3
|
import { translateRequest } from "../translator/index.js";
|
|
3
4
|
import { FORMATS } from "../translator/formats.js";
|
|
@@ -267,13 +268,13 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
|
|
|
267
268
|
lastResult = result;
|
|
268
269
|
const backoff = retryBaseMs * Math.pow(2, attempt);
|
|
269
270
|
log?.info?.("RETRY", `${provider.toUpperCase()} | ${model} | HTTP ${result.response.status}, retry ${attempt + 1}/${maxRetries} in ${backoff}ms`);
|
|
270
|
-
await
|
|
271
|
+
await delay(backoff, undefined, { signal: streamController.signal });
|
|
271
272
|
} catch (e) {
|
|
272
273
|
lastErr = e;
|
|
273
274
|
if (!isRetryableError(e) || attempt === maxRetries) throw e;
|
|
274
275
|
const backoff = retryBaseMs * Math.pow(2, attempt);
|
|
275
276
|
log?.info?.("RETRY", `${provider.toUpperCase()} | ${model} | ${e.name}, retry ${attempt + 1}/${maxRetries} in ${backoff}ms`);
|
|
276
|
-
await
|
|
277
|
+
await delay(backoff, undefined, { signal: streamController.signal });
|
|
277
278
|
}
|
|
278
279
|
}
|
|
279
280
|
if (lastResult) return lastResult;
|
|
@@ -20,7 +20,7 @@ function processSSEMessage(msg, state) {
|
|
|
20
20
|
|
|
21
21
|
let parsed;
|
|
22
22
|
try { parsed = JSON.parse(dataStr); }
|
|
23
|
-
catch {
|
|
23
|
+
catch { throw new Error(`Malformed SSE data for ${eventType}`); }
|
|
24
24
|
|
|
25
25
|
if (eventType === "response.created") {
|
|
26
26
|
state.responseId = parsed.response?.id || state.responseId;
|
|
@@ -85,6 +85,10 @@ export async function convertResponsesStreamToJson(stream) {
|
|
|
85
85
|
reader.releaseLock();
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
if (state.status !== "completed") {
|
|
89
|
+
throw new Error(`Responses SSE ended without successful termination (status: ${state.status})`);
|
|
90
|
+
}
|
|
91
|
+
|
|
88
92
|
// Build output array from accumulated items (ordered by index)
|
|
89
93
|
const output = [];
|
|
90
94
|
const maxIndex = state.items.size > 0 ? Math.max(...state.items.keys()) : -1;
|
|
@@ -69,25 +69,16 @@ function writeJsonFile(sessionPath, filename, data) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
// Mask
|
|
72
|
+
// Mask credentials while preserving non-sensitive headers for debugging
|
|
73
73
|
function maskSensitiveHeaders(headers) {
|
|
74
74
|
if (!headers) return {};
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// const lowerKey = key.toLowerCase();
|
|
83
|
-
// if (sensitiveKeys.some(sk => lowerKey.includes(sk))) {
|
|
84
|
-
// const value = masked[key];
|
|
85
|
-
// if (value && value.length > 20) {
|
|
86
|
-
// masked[key] = value.slice(0, 10) + "..." + value.slice(-5);
|
|
87
|
-
// }
|
|
88
|
-
// }
|
|
89
|
-
// }
|
|
90
|
-
// return masked;
|
|
75
|
+
const masked = { ...headers };
|
|
76
|
+
const sensitiveKeys = ["authorization", "proxy-authorization", "x-api-key", "cookie", "set-cookie"];
|
|
77
|
+
|
|
78
|
+
for (const key of Object.keys(masked)) {
|
|
79
|
+
if (sensitiveKeys.includes(key.toLowerCase())) masked[key] = "[REDACTED]";
|
|
80
|
+
}
|
|
81
|
+
return masked;
|
|
91
82
|
}
|
|
92
83
|
|
|
93
84
|
// No-op logger when logging is disabled
|
|
@@ -170,7 +161,7 @@ export async function createRequestLogger(sourceFormat, targetFormat, model) {
|
|
|
170
161
|
timestamp: new Date().toISOString(),
|
|
171
162
|
status,
|
|
172
163
|
statusText,
|
|
173
|
-
headers: headers ? (typeof headers.entries === "function" ? Object.fromEntries(headers.entries()) : headers) : {},
|
|
164
|
+
headers: maskSensitiveHeaders(headers ? (typeof headers.entries === "function" ? Object.fromEntries(headers.entries()) : headers) : {}),
|
|
174
165
|
body
|
|
175
166
|
});
|
|
176
167
|
},
|
package/package.json
CHANGED
|
@@ -22,13 +22,15 @@ export async function POST(request) {
|
|
|
22
22
|
const body = await request.json().catch(() => ({}));
|
|
23
23
|
const settings = await getSettings();
|
|
24
24
|
|
|
25
|
-
const
|
|
25
|
+
const requestedIssuer = String(body.issuerUrl || "").trim();
|
|
26
|
+
const issuerUrl = requestedIssuer || String(settings.oidcIssuerUrl || "").trim();
|
|
26
27
|
const clientId = String(body.clientId || settings.oidcClientId || "").trim();
|
|
27
28
|
const scopes = String(body.scopes || settings.oidcScopes || "openid profile email").trim() || "openid profile email";
|
|
29
|
+
const sameIssuer = issuerUrl.replace(/\/+$/, "") === String(settings.oidcIssuerUrl || "").trim().replace(/\/+$/, "");
|
|
28
30
|
const clientSecret = String(
|
|
29
31
|
Object.prototype.hasOwnProperty.call(body, "clientSecret")
|
|
30
32
|
? body.clientSecret
|
|
31
|
-
: settings.oidcClientSecret || ""
|
|
33
|
+
: sameIssuer ? settings.oidcClientSecret || "" : ""
|
|
32
34
|
).trim();
|
|
33
35
|
|
|
34
36
|
if (!issuerUrl) {
|
|
@@ -81,29 +81,6 @@ export async function GET(request, { params }) {
|
|
|
81
81
|
return NextResponse.json(authData);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
if (action === "start-proxy") {
|
|
85
|
-
if (!["codex", "xai"].includes(provider)) {
|
|
86
|
-
return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
|
|
87
|
-
}
|
|
88
|
-
const appPort = searchParams.get("app_port");
|
|
89
|
-
if (!appPort) {
|
|
90
|
-
return NextResponse.json({ error: "Missing app_port" }, { status: 400 });
|
|
91
|
-
}
|
|
92
|
-
const state = searchParams.get("state");
|
|
93
|
-
const codeVerifier = searchParams.get("code_verifier");
|
|
94
|
-
const redirectUri = searchParams.get("redirect_uri");
|
|
95
|
-
const result = provider === "xai"
|
|
96
|
-
? await startXaiProxy(Number(appPort))
|
|
97
|
-
: await startCodexProxy(Number(appPort));
|
|
98
|
-
let serverSide = false;
|
|
99
|
-
if (result.success && state && codeVerifier && redirectUri) {
|
|
100
|
-
serverSide = provider === "xai"
|
|
101
|
-
? registerXaiSession({ state, codeVerifier, redirectUri })
|
|
102
|
-
: registerCodexSession({ state, codeVerifier, redirectUri });
|
|
103
|
-
}
|
|
104
|
-
return NextResponse.json({ ...result, serverSide });
|
|
105
|
-
}
|
|
106
|
-
|
|
107
84
|
if (action === "poll-status") {
|
|
108
85
|
if (!["codex", "xai"].includes(provider)) {
|
|
109
86
|
return NextResponse.json({ error: "Poll only supported for codex/xai" }, { status: 400 });
|
|
@@ -123,15 +100,6 @@ export async function GET(request, { params }) {
|
|
|
123
100
|
return NextResponse.json({ status: session.status });
|
|
124
101
|
}
|
|
125
102
|
|
|
126
|
-
if (action === "stop-proxy") {
|
|
127
|
-
if (!["codex", "xai"].includes(provider)) {
|
|
128
|
-
return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
|
|
129
|
-
}
|
|
130
|
-
if (provider === "xai") stopXaiProxy();
|
|
131
|
-
else stopCodexProxy();
|
|
132
|
-
return NextResponse.json({ success: true });
|
|
133
|
-
}
|
|
134
|
-
|
|
135
103
|
if (action === "device-code") {
|
|
136
104
|
const providerData = getProvider(provider);
|
|
137
105
|
if (providerData.flowType !== "device_code") {
|
|
@@ -187,6 +155,35 @@ export async function POST(request, { params }) {
|
|
|
187
155
|
return NextResponse.json({ error: "Invalid or empty request body" }, { status: 400 });
|
|
188
156
|
}
|
|
189
157
|
|
|
158
|
+
if (action === "start-proxy") {
|
|
159
|
+
if (!["codex", "xai"].includes(provider)) {
|
|
160
|
+
return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
|
|
161
|
+
}
|
|
162
|
+
const { appPort, state, codeVerifier, redirectUri } = body;
|
|
163
|
+
if (!appPort) {
|
|
164
|
+
return NextResponse.json({ error: "Missing app_port" }, { status: 400 });
|
|
165
|
+
}
|
|
166
|
+
const result = provider === "xai"
|
|
167
|
+
? await startXaiProxy(Number(appPort))
|
|
168
|
+
: await startCodexProxy(Number(appPort));
|
|
169
|
+
let serverSide = false;
|
|
170
|
+
if (result.success && state && codeVerifier && redirectUri) {
|
|
171
|
+
serverSide = provider === "xai"
|
|
172
|
+
? registerXaiSession({ state, codeVerifier, redirectUri })
|
|
173
|
+
: registerCodexSession({ state, codeVerifier, redirectUri });
|
|
174
|
+
}
|
|
175
|
+
return NextResponse.json({ ...result, serverSide });
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (action === "stop-proxy") {
|
|
179
|
+
if (!["codex", "xai"].includes(provider)) {
|
|
180
|
+
return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
|
|
181
|
+
}
|
|
182
|
+
if (provider === "xai") stopXaiProxy();
|
|
183
|
+
else stopCodexProxy();
|
|
184
|
+
return NextResponse.json({ success: true });
|
|
185
|
+
}
|
|
186
|
+
|
|
190
187
|
if (action === "exchange") {
|
|
191
188
|
const { code, redirectUri, codeVerifier, state, meta } = body;
|
|
192
189
|
|
|
@@ -44,6 +44,7 @@ export async function POST(request) {
|
|
|
44
44
|
engine: body?.engine,
|
|
45
45
|
proxyPoolMode: body?.proxyPoolMode,
|
|
46
46
|
proxyPoolId: body?.proxyPoolId,
|
|
47
|
+
manualProxyUrl: typeof body?.manualProxyUrl === "string" && body.manualProxyUrl.trim() ? body.manualProxyUrl.trim() : null,
|
|
47
48
|
region,
|
|
48
49
|
});
|
|
49
50
|
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { NextResponse } from "next/server";
|
|
2
|
+
import { getTerminalOwner } from "@/lib/auth/terminalSession";
|
|
2
3
|
import { writeTerminalInput } from "@/lib/terminal/sessionManager";
|
|
3
4
|
|
|
4
5
|
export const dynamic = "force-dynamic";
|
|
5
6
|
export const runtime = "nodejs";
|
|
6
7
|
|
|
7
8
|
export async function POST(request, { params }) {
|
|
9
|
+
const owner = await getTerminalOwner(request);
|
|
10
|
+
if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
8
11
|
const { id } = await params;
|
|
9
12
|
let data = "";
|
|
10
13
|
|
|
@@ -21,7 +24,7 @@ export async function POST(request, { params }) {
|
|
|
21
24
|
return NextResponse.json({ error: "Input too large" }, { status: 413 });
|
|
22
25
|
}
|
|
23
26
|
|
|
24
|
-
const result = writeTerminalInput(id, data);
|
|
27
|
+
const result = writeTerminalInput(id, owner, data);
|
|
25
28
|
if (!result.ok) {
|
|
26
29
|
return NextResponse.json({ error: result.error || "Write failed" }, { status: 404 });
|
|
27
30
|
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { NextResponse } from "next/server";
|
|
2
|
+
import { getTerminalOwner } from "@/lib/auth/terminalSession";
|
|
2
3
|
import { resizeTerminalSession } from "@/lib/terminal/sessionManager";
|
|
3
4
|
|
|
4
5
|
export const dynamic = "force-dynamic";
|
|
5
6
|
export const runtime = "nodejs";
|
|
6
7
|
|
|
7
8
|
export async function POST(request, { params }) {
|
|
9
|
+
const owner = await getTerminalOwner(request);
|
|
10
|
+
if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
8
11
|
const { id } = await params;
|
|
9
12
|
const body = await request.json().catch(() => ({}));
|
|
10
|
-
const result = resizeTerminalSession(id, body?.cols, body?.rows);
|
|
13
|
+
const result = resizeTerminalSession(id, owner, body?.cols, body?.rows);
|
|
11
14
|
if (!result.ok) {
|
|
12
15
|
return NextResponse.json({ error: result.error || "Resize failed" }, { status: 404 });
|
|
13
16
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { NextResponse } from "next/server";
|
|
2
|
+
import { getTerminalOwner } from "@/lib/auth/terminalSession";
|
|
2
3
|
import { getTerminalSession, killTerminalSession } from "@/lib/terminal/sessionManager";
|
|
3
4
|
|
|
4
5
|
export const dynamic = "force-dynamic";
|
|
5
6
|
export const runtime = "nodejs";
|
|
6
7
|
|
|
7
|
-
export async function GET(
|
|
8
|
+
export async function GET(request, { params }) {
|
|
9
|
+
const owner = await getTerminalOwner(request);
|
|
10
|
+
if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
8
11
|
const { id } = await params;
|
|
9
|
-
const session = getTerminalSession(id);
|
|
12
|
+
const session = getTerminalSession(id, owner);
|
|
10
13
|
if (!session) {
|
|
11
14
|
return NextResponse.json({ error: "Session not found" }, { status: 404 });
|
|
12
15
|
}
|
|
@@ -22,9 +25,11 @@ export async function GET(_request, { params }) {
|
|
|
22
25
|
});
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
export async function DELETE(
|
|
28
|
+
export async function DELETE(request, { params }) {
|
|
29
|
+
const owner = await getTerminalOwner(request);
|
|
30
|
+
if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
26
31
|
const { id } = await params;
|
|
27
|
-
const killed = killTerminalSession(id);
|
|
32
|
+
const killed = killTerminalSession(id, owner);
|
|
28
33
|
if (!killed) {
|
|
29
34
|
return NextResponse.json({ error: "Session not found" }, { status: 404 });
|
|
30
35
|
}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
+
import { getTerminalOwner } from "@/lib/auth/terminalSession";
|
|
1
2
|
import { getTerminalSession, subscribeTerminalOutput } from "@/lib/terminal/sessionManager";
|
|
2
3
|
|
|
3
4
|
export const dynamic = "force-dynamic";
|
|
4
5
|
export const runtime = "nodejs";
|
|
5
6
|
|
|
6
7
|
export async function GET(request, { params }) {
|
|
8
|
+
const owner = await getTerminalOwner(request);
|
|
9
|
+
if (!owner) {
|
|
10
|
+
return new Response(JSON.stringify({ error: "Unauthorized" }), {
|
|
11
|
+
status: 401,
|
|
12
|
+
headers: { "Content-Type": "application/json" },
|
|
13
|
+
});
|
|
14
|
+
}
|
|
7
15
|
const { id } = await params;
|
|
8
|
-
const session = getTerminalSession(id);
|
|
16
|
+
const session = getTerminalSession(id, owner);
|
|
9
17
|
|
|
10
18
|
if (!session) {
|
|
11
19
|
return new Response(JSON.stringify({ error: "Session not found" }), {
|
|
@@ -54,7 +62,7 @@ export async function GET(request, { params }) {
|
|
|
54
62
|
alive: session.alive,
|
|
55
63
|
});
|
|
56
64
|
|
|
57
|
-
state.unsubscribe = subscribeTerminalOutput(id, {
|
|
65
|
+
state.unsubscribe = subscribeTerminalOutput(id, owner, {
|
|
58
66
|
onData: (text) => send({ type: "data", data: text }),
|
|
59
67
|
onExit: (info) => {
|
|
60
68
|
send({ type: "exit", ...info });
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { NextResponse } from "next/server";
|
|
2
|
+
import { getTerminalOwner } from "@/lib/auth/terminalSession";
|
|
2
3
|
import { createTerminalSession, listTerminalSessions } from "@/lib/terminal/sessionManager";
|
|
3
4
|
|
|
4
5
|
export const dynamic = "force-dynamic";
|
|
5
6
|
export const runtime = "nodejs";
|
|
6
7
|
|
|
7
|
-
export async function GET() {
|
|
8
|
-
|
|
8
|
+
export async function GET(request) {
|
|
9
|
+
const owner = await getTerminalOwner(request);
|
|
10
|
+
if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
11
|
+
return NextResponse.json({ sessions: listTerminalSessions(owner) });
|
|
9
12
|
}
|
|
10
13
|
|
|
11
14
|
export async function POST(request) {
|
|
12
15
|
try {
|
|
16
|
+
const owner = await getTerminalOwner(request);
|
|
17
|
+
if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
13
18
|
const body = await request.json().catch(() => ({}));
|
|
14
19
|
const cols = Number(body?.cols) || 120;
|
|
15
20
|
const rows = Number(body?.rows) || 40;
|
|
16
|
-
const session = createTerminalSession({ cols, rows });
|
|
21
|
+
const session = createTerminalSession({ cols, rows, owner });
|
|
17
22
|
return NextResponse.json({ ok: true, session });
|
|
18
23
|
} catch (error) {
|
|
19
24
|
const status = error?.code === "MAX_SESSIONS" ? 429 : 500;
|
package/src/dashboardGuard.js
CHANGED
|
@@ -44,6 +44,7 @@ const ALWAYS_PROTECTED = [
|
|
|
44
44
|
"/api/oauth/cursor/auto-import",
|
|
45
45
|
"/api/oauth/kiro/auto-import",
|
|
46
46
|
"/api/terminal",
|
|
47
|
+
"/api/headroom/proxy",
|
|
47
48
|
];
|
|
48
49
|
|
|
49
50
|
// Require auth, but allow through if requireLogin is disabled
|
|
@@ -132,7 +133,6 @@ async function hasValidApiKey(request) {
|
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
async function canAccessPublicLlmApi(request) {
|
|
135
|
-
if (isLocalRequest(request)) return true;
|
|
136
136
|
if (await hasValidCliToken(request)) return true;
|
|
137
137
|
return await hasValidApiKey(request);
|
|
138
138
|
}
|