@amir83nasr/10router 0.1.0 → 0.1.1
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +2 -2
- package/.next/build-manifest.json +3 -3
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +4 -4
- package/.next/required-server-files.json +5 -5
- package/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
- package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page.js +2 -2
- package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
- package/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +6 -6
- package/.next/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/oidc/callback/route.js +1 -1
- package/.next/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/oidc/start/route.js +1 -1
- package/.next/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/oidc/test/route.js +1 -1
- package/.next/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/reset-password/route.js +1 -1
- package/.next/server/app/api/auth/reset-password/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/saml/acs/route.js +1 -1
- package/.next/server/app/api/auth/saml/acs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/saml/metadata/route.js +2 -2
- package/.next/server/app/api/auth/saml/metadata/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/saml/start/route.js +2 -2
- package/.next/server/app/api/auth/saml/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/saml/test/route.js +2 -2
- package/.next/server/app/api/auth/saml/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/changelog/route.js +1 -1
- package/.next/server/app/api/changelog/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/all-statuses/route.js +1 -1
- package/.next/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
- package/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/.next/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/.next/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/.next/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/dsh-settings/route.js +1 -1
- package/.next/server/app/api/cli-tools/dsh-settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/combos/[id]/route.js +1 -1
- package/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/combos/route.js +1 -1
- package/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/headroom/extras/route.js +1 -1
- package/.next/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/.next/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/headroom/restart/route.js +1 -1
- package/.next/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/headroom/start/route.js +1 -1
- package/.next/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/headroom/status/route.js +1 -1
- package/.next/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/headroom/stop/route.js +1 -1
- package/.next/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/health/route.js +1 -1
- package/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/keys/[id]/route.js +1 -1
- package/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/keys/route.js +1 -1
- package/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/locale/route.js +1 -1
- package/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/[plugin]/message/route.js +2 -2
- package/.next/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/[plugin]/sse/route.js +2 -2
- package/.next/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/.next/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/.next/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/.next/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/.next/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/.next/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/alias/route.js +1 -1
- package/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/availability/route.js +1 -1
- package/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/catalog-sync/route.js +1 -1
- package/.next/server/app/api/models/catalog-sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/custom/route.js +1 -1
- package/.next/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/disabled/route.js +1 -1
- package/.next/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/test/route.js +1 -1
- package/.next/server/app/api/models/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/.next/server/app/api/oauth/codex/bulk-import/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/.next/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/.next/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
- package/.next/server/app/api/oauth/grok-cli/bulk-import/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/.next/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
- package/.next/server/app/api/oauth/xiaomi-mimo/api-key/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +2 -2
- package/.next/server/app/api/oauth/xiaomi-mimo/auto-import/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pricing/route.js +1 -1
- package/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/provider-nodes/route.js +1 -1
- package/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/[id]/route.js +1 -1
- package/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/client/route.js +1 -1
- package/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/.next/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/route.js +1 -1
- package/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/suggested-models/route.js +1 -1
- package/.next/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/providers/validate/route.js +1 -1
- package/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/.next/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/.next/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
- package/.next/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/.next/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/proxy-pools/route.js +1 -1
- package/.next/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/.next/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/health/route.js +2 -2
- package/.next/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/install/route.js +1 -1
- package/.next/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/logs/route.js +1 -1
- package/.next/server/app/api/pxpipe/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/restart/route.js +2 -2
- package/.next/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/start/route.js +1 -1
- package/.next/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/stats/route.js +2 -2
- package/.next/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/status/route.js +1 -1
- package/.next/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pxpipe/stop/route.js +2 -2
- package/.next/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/database/route.js +1 -1
- package/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/.next/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/require-login/route.js +1 -1
- package/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/shutdown/route.js +1 -1
- package/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tags/route.js +1 -1
- package/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/.next/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/.next/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/translator/load/route.js +1 -1
- package/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/translator/save/route.js +1 -1
- package/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/translator/send/route.js +1 -1
- package/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/translator/translate/route.js +1 -1
- package/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tunnel/disable/route.js +1 -1
- package/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tunnel/enable/route.js +1 -1
- package/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tunnel/status/route.js +1 -1
- package/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-install/route.js +1 -1
- package/.next/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/chart/route.js +1 -1
- package/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/history/route.js +1 -1
- package/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/logs/route.js +1 -1
- package/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/providers/route.js +1 -1
- package/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/request-details/route.js +1 -1
- package/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/stats/route.js +1 -1
- package/.next/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/usage/stream/route.js +2 -2
- package/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/audio/voices/route.js +1 -1
- package/.next/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/images/generations/route.js +2 -2
- package/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/messages/route.js +1 -1
- package/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/models/[...model]/route.js +1 -1
- package/.next/server/app/api/v1/models/[...model]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/models/info/route.js +1 -1
- package/.next/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/models/route.js +1 -1
- package/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/responses/compact/route.js +1 -1
- package/.next/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/responses/route.js +1 -1
- package/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/route.js +1 -1
- package/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/search/route.js +1 -1
- package/.next/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/systemone/route.js +1 -1
- package/.next/server/app/api/v1/systemone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/videos/[id]/route.js +1 -1
- package/.next/server/app/api/v1/videos/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/videos/edits/route.js +1 -1
- package/.next/server/app/api/v1/videos/edits/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/videos/extensions/route.js +1 -1
- package/.next/server/app/api/v1/videos/extensions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/videos/generations/route.js +1 -1
- package/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1/web/fetch/route.js +1 -1
- package/.next/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/v1beta/models/route.js +1 -1
- package/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/version/shutdown/route.js +1 -1
- package/.next/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/version/update/route.js +1 -1
- package/.next/server/app/api/version/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/callback/page.js +1 -1
- package/.next/server/app/callback/page.js.nft.json +1 -1
- package/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/.next/server/app/callback.html +1 -1
- package/.next/server/app/callback.rsc +7 -7
- package/.next/server/app/callback.segments/_full.segment.rsc +7 -7
- package/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +7 -7
- package/.next/server/app/dashboard/basic-chat.html +1 -1
- package/.next/server/app/dashboard/basic-chat.rsc +8 -8
- package/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/cli-tools.html +1 -1
- package/.next/server/app/dashboard/cli-tools.rsc +9 -9
- package/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +9 -9
- package/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/combos.html +1 -1
- package/.next/server/app/dashboard/combos.rsc +8 -8
- package/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/endpoint.html +1 -1
- package/.next/server/app/dashboard/endpoint.rsc +9 -9
- package/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +9 -9
- package/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/media-providers/systemone.html +1 -1
- package/.next/server/app/dashboard/media-providers/systemone.rsc +8 -8
- package/.next/server/app/dashboard/media-providers/systemone.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/systemone/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/media-providers/systemone.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/media-providers/systemone.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/profile.html +1 -1
- package/.next/server/app/dashboard/profile.rsc +8 -8
- package/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/providers/new.html +1 -1
- package/.next/server/app/dashboard/providers/new.rsc +8 -8
- package/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/providers.html +1 -1
- package/.next/server/app/dashboard/providers.rsc +8 -8
- package/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/proxy-pools.html +1 -1
- package/.next/server/app/dashboard/proxy-pools.rsc +8 -8
- package/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/pxpipe.html +1 -1
- package/.next/server/app/dashboard/pxpipe.rsc +8 -8
- package/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/quota.html +2 -2
- package/.next/server/app/dashboard/quota.rsc +9 -9
- package/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
- package/.next/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
- package/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/settings/pricing/page.js +1 -1
- package/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/.next/server/app/dashboard/settings/pricing.rsc +7 -7
- package/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
- package/.next/server/app/dashboard/token-saver.html +1 -1
- package/.next/server/app/dashboard/token-saver.rsc +8 -8
- package/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard/usage.html +2 -2
- package/.next/server/app/dashboard/usage.rsc +8 -8
- package/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
- package/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/dashboard.html +1 -1
- package/.next/server/app/dashboard.rsc +9 -9
- package/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
- package/.next/server/app/dashboard.segments/_full.segment.rsc +9 -9
- package/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +6 -6
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/index.segments/_full.segment.rsc +6 -6
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/landing/page.js +1 -1
- package/.next/server/app/landing/page.js.nft.json +1 -1
- package/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/.next/server/app/landing.html +1 -1
- package/.next/server/app/landing.rsc +7 -7
- package/.next/server/app/landing.segments/_full.segment.rsc +7 -7
- package/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +7 -7
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +7 -7
- package/.next/server/app/login.segments/_full.segment.rsc +7 -7
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
- package/.next/server/app/manifest.webmanifest/route.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +2 -2
- package/.next/server/chunks/1011.js +1 -1
- package/.next/server/chunks/1194.js +1 -1
- package/.next/server/chunks/1289.js +1 -0
- package/.next/server/chunks/1633.js +1 -1
- package/.next/server/chunks/1985.js +1 -1
- package/.next/server/chunks/2339.js +1 -1
- package/.next/server/chunks/2801.js +1 -0
- package/.next/server/chunks/3425.js +1 -1
- package/.next/server/chunks/5351.js +67 -0
- package/.next/server/chunks/6056.js +1 -1
- package/.next/server/chunks/{3336.js → 7348.js} +1 -1
- package/.next/server/chunks/7459.js +9 -9
- package/.next/server/chunks/7963.js +5 -5
- package/.next/server/chunks/8569.js +1 -1
- package/.next/server/chunks/9429.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +3 -3
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1278-7a48cdafd69414e5.js +1 -0
- package/.next/static/chunks/1699-13ee6864a8a31a96.js +67 -0
- package/.next/static/chunks/208-521a3242b62d6c07.js +1 -0
- package/.next/static/chunks/{9590-0d0b3dd0530b2b7b.js → 2836-38406d658ad8caa9.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-ce1364b2b9589785.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-2ff675120416e925.js → page-93cc9fc8f8ab938b.js} +2 -2
- package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1c54f83c69f02add.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-55bc39e30923938a.js → page-853f4e08f4982dbe.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-619bc87666df1d5a.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-13abc5b934c960d3.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/[id]/page-fb90d8451f40b8b3.js +10 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/page-49b3b4867d06cbe0.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/page-85118ef708c624e6.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-53158d30b5643b05.js → page-65b2c7989dbe2663.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-fd2615fea8932fd5.js → page-36659d3f8756c897.js} +2 -2
- package/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-56de365bce9dfc77.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-7cc2c66e63fce4ab.js → page-b9dafab69096fa76.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-5e1fb41bd7b555a6.js → page-247f59d088891437.js} +2 -2
- package/.next/static/chunks/app/(dashboard)/dashboard/pxpipe/{page-1ec35dafa18e5d24.js → page-696cb5c2703ca1ec.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/quota/{page-11d5ca23d18d596e.js → page-5d2e8d9a126c2769.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-bcc37fc2b4089f2f.js +1 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/usage/page-cf503287fe99e910.js +1 -0
- package/.next/static/chunks/app/(dashboard)/{layout-e1e5bead272b5c82.js → layout-667f17706a5e1896.js} +1 -1
- package/.next/static/chunks/app/_not-found/{page-d66f1e17185e98d1.js → page-fe54ae510d932bb2.js} +1 -1
- package/.next/static/chunks/app/callback/{page-f4019bfc06b9a21c.js → page-f714c2306a1e9004.js} +1 -1
- package/.next/static/chunks/app/dashboard/settings/pricing/page-86197107690a0580.js +1 -0
- package/.next/static/chunks/app/landing/page-7a83d1be493ddc8c.js +1 -0
- package/.next/static/chunks/app/layout-777e294953f692c4.js +1 -0
- package/.next/static/chunks/app/login/page-7a4c84e8310a0487.js +1 -0
- package/.next/static/chunks/main-app-2ecba5da1d59188c.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-f9ac464a7c99aea5.js +1 -0
- package/.next/static/css/7698ede81d1862e2.css +1 -0
- package/bin/10router.mjs +73 -70
- package/bin/update-check.mjs +93 -0
- package/custom-server.js +6 -36
- package/next.config.mjs +1 -1
- package/package.json +5 -22
- package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.tsx +20 -6
- package/src/app/api/proxy-pools/[id]/test/route.js +1 -2
- package/src/lib/consoleLogBuffer.js +2 -1
- package/src/shared/components/AddCustomEmbeddingModal.tsx +0 -14
- package/src/shared/components/ChangelogModal.tsx +0 -6
- package/src/shared/components/CursorAuthModal.tsx +0 -7
- package/src/shared/components/EditConnectionModal.tsx +0 -22
- package/src/shared/components/GitLabAuthModal.tsx +0 -8
- package/src/shared/components/Header.tsx +0 -6
- package/src/shared/components/HeaderMenu.tsx +0 -5
- package/src/shared/components/IFlowCookieModal.tsx +0 -7
- package/src/shared/components/ModelSelectModal.tsx +0 -19
- package/src/shared/components/NoAuthProxyCard.tsx +0 -5
- package/src/shared/components/OAuthModal.tsx +0 -11
- package/src/shared/components/ProviderIcon.tsx +0 -11
- package/src/shared/components/XiaomiMimoAuthModal.tsx +0 -7
- package/src/shared/utils/cn.ts +3 -4
- package/src/sse/utils/logger.ts +62 -13
- package/.next/server/chunks/1157.js +0 -1
- package/.next/server/chunks/257.js +0 -67
- package/.next/server/chunks/3533.js +0 -1
- package/.next/static/chunks/1278-d7d5375869132de1.js +0 -1
- package/.next/static/chunks/208-fcb6c54f9db5664f.js +0 -1
- package/.next/static/chunks/3153-fde052e626cc6d40.js +0 -67
- package/.next/static/chunks/6817-449f7a2452845c74.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-c074ab1b76a6c8ba.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-654e770c4dca90e8.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-aac9a9397d3f7f17.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-d60651b77028b014.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/[id]/page-3d78f5834ef97b82.js +0 -10
- package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/page-e41bf53886195393.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/page-670583d9f9c104af.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-7c9e30c4985582a6.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-388b616d8c2aa3fc.js +0 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/usage/page-466f7a8f7319ad85.js +0 -1
- package/.next/static/chunks/app/dashboard/settings/pricing/page-b9ee16bd322c018e.js +0 -1
- package/.next/static/chunks/app/landing/page-a088604744d51552.js +0 -1
- package/.next/static/chunks/app/layout-56cb8d3773a70c00.js +0 -1
- package/.next/static/chunks/app/login/page-dd11fb741ed7fda4.js +0 -1
- package/.next/static/chunks/main-app-17abdf14ff64ab69.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-21486667022bd4cf.js +0 -1
- package/.next/static/css/8fbebca0759ae504.css +0 -1
- package/scripts/dev-local.mjs +0 -67
- /package/.next/static/{AiSMDHTT8m1mHG-uAmkFq → SudImSgFkzCy6tK2dH6yg}/_buildManifest.js +0 -0
- /package/.next/static/{AiSMDHTT8m1mHG-uAmkFq → SudImSgFkzCy6tK2dH6yg}/_ssgManifest.js +0 -0
package/bin/10router.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// ── 10ROUTER CLI ────────────────────────────────────────────────────
|
|
3
|
-
// Local lifecycle: start/stop/status/logs/open
|
|
4
|
-
// Stdlib
|
|
3
|
+
// Local lifecycle: start/stop/status/logs/open. No Docker.
|
|
4
|
+
// Stdlib + already-installed `chalk` (colors, NO_COLOR-aware) and `open`.
|
|
5
5
|
|
|
6
6
|
import { spawn, spawnSync } from "node:child_process";
|
|
7
7
|
import fs from "node:fs";
|
|
@@ -9,6 +9,9 @@ import os from "node:os";
|
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import { fileURLToPath } from "node:url";
|
|
11
11
|
|
|
12
|
+
import { checkUpdate } from "./update-check.mjs";
|
|
13
|
+
import chalk from "chalk";
|
|
14
|
+
|
|
12
15
|
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
13
16
|
const DEV_PORT = "20127";
|
|
14
17
|
const PROD_PORT = "20128";
|
|
@@ -64,14 +67,17 @@ async function health(port) {
|
|
|
64
67
|
}
|
|
65
68
|
}
|
|
66
69
|
|
|
70
|
+
// ── UPDATE CHECK (npm mode only, fail-open, cached) ───────────────
|
|
71
|
+
// Logic lives in ./update-check.mjs (side-effect-free, testable).
|
|
72
|
+
|
|
67
73
|
// ── COMMANDS ────────────────────────────────────────────────────────
|
|
68
74
|
async function cmdStart(opts) {
|
|
69
|
-
// npm-installed package has a prebuilt .next —
|
|
70
|
-
const mode =
|
|
75
|
+
// npm-installed package has a prebuilt .next — always prod there.
|
|
76
|
+
const mode = IS_REPO ? "dev" : "prod";
|
|
71
77
|
const port = opts.port || (mode === "prod" ? PROD_PORT : DEV_PORT);
|
|
72
78
|
const st = readState();
|
|
73
79
|
if (st && isAlive(st.pid)) {
|
|
74
|
-
console.log(`already running (pid ${st.pid}, ${st.mode} :${st.port})`);
|
|
80
|
+
console.log(chalk.yellow(`already running (pid ${st.pid}, ${st.mode} :${st.port})`));
|
|
75
81
|
return;
|
|
76
82
|
}
|
|
77
83
|
if (st) fs.rmSync(PID_FILE, { force: true }); // stale pidfile
|
|
@@ -80,7 +86,7 @@ async function cmdStart(opts) {
|
|
|
80
86
|
let cmd, args;
|
|
81
87
|
if (mode === "prod") {
|
|
82
88
|
if (!fs.existsSync(path.join(ROOT, ".next"))) {
|
|
83
|
-
console.error("no .next build found — run `pnpm build` first");
|
|
89
|
+
console.error(chalk.red("no .next build found — run `pnpm build` first"));
|
|
84
90
|
process.exitCode = 1;
|
|
85
91
|
return;
|
|
86
92
|
}
|
|
@@ -93,7 +99,7 @@ async function cmdStart(opts) {
|
|
|
93
99
|
}
|
|
94
100
|
|
|
95
101
|
if (opts.foreground) {
|
|
96
|
-
console.log(`[${mode}] ${baseUrl(port)} (foreground, Ctrl+C to stop)`);
|
|
102
|
+
console.log(chalk.green(`[${mode}] ${baseUrl(port)} (foreground, Ctrl+C to stop)`));
|
|
97
103
|
const child = spawn(cmd, args, { cwd: ROOT, stdio: "inherit", env });
|
|
98
104
|
const stop = () => child.kill();
|
|
99
105
|
process.once("SIGINT", stop);
|
|
@@ -116,8 +122,8 @@ async function cmdStart(opts) {
|
|
|
116
122
|
PID_FILE,
|
|
117
123
|
JSON.stringify({ pid: child.pid, port: String(port), mode, startedAt: Date.now() }),
|
|
118
124
|
);
|
|
119
|
-
console.log(`started ${mode} (pid ${child.pid}) → ${baseUrl(port)}`);
|
|
120
|
-
console.log(`logs: ${LOG_FILE}`);
|
|
125
|
+
console.log(chalk.green(`started ${mode} (pid ${child.pid}) → ${baseUrl(port)}`));
|
|
126
|
+
console.log(chalk.dim(`logs: ${LOG_FILE}`));
|
|
121
127
|
}
|
|
122
128
|
|
|
123
129
|
function killTree(pid) {
|
|
@@ -139,17 +145,17 @@ function killTree(pid) {
|
|
|
139
145
|
function cmdStop() {
|
|
140
146
|
const st = readState();
|
|
141
147
|
if (!st) {
|
|
142
|
-
console.log("not running (no pidfile)");
|
|
148
|
+
console.log(chalk.yellow("not running (no pidfile)"));
|
|
143
149
|
return;
|
|
144
150
|
}
|
|
145
151
|
if (!isAlive(st.pid)) {
|
|
146
152
|
fs.rmSync(PID_FILE, { force: true });
|
|
147
|
-
console.log("stale pidfile removed — was not running");
|
|
153
|
+
console.log(chalk.yellow("stale pidfile removed — was not running"));
|
|
148
154
|
return;
|
|
149
155
|
}
|
|
150
156
|
killTree(st.pid);
|
|
151
157
|
fs.rmSync(PID_FILE, { force: true });
|
|
152
|
-
console.log(`stopped (was pid ${st.pid}, ${st.mode} :${st.port})`);
|
|
158
|
+
console.log(chalk.green(`stopped (was pid ${st.pid}, ${st.mode} :${st.port})`));
|
|
153
159
|
}
|
|
154
160
|
|
|
155
161
|
async function cmdStatus() {
|
|
@@ -158,17 +164,19 @@ async function cmdStatus() {
|
|
|
158
164
|
if (st && !alive) fs.rmSync(PID_FILE, { force: true }); // clean stale
|
|
159
165
|
const port = st?.port || process.env.PORT;
|
|
160
166
|
const ok = port ? await health(port) : false;
|
|
161
|
-
console.log(
|
|
167
|
+
console.log(
|
|
168
|
+
`running: ${alive ? chalk.green(`yes (pid ${st.pid}, ${st.mode})`) : chalk.red("no")}`,
|
|
169
|
+
);
|
|
162
170
|
console.log(
|
|
163
171
|
port
|
|
164
|
-
? `health: ${ok ? `ok ${baseUrl(port)}/api/health` : `down :${port}`}`
|
|
165
|
-
:
|
|
172
|
+
? `health: ${ok ? chalk.green(`ok ${baseUrl(port)}/api/health`) : chalk.red(`down :${port}`)}`
|
|
173
|
+
: `health: ${chalk.dim("— (nothing started, PORT unset)")}`,
|
|
166
174
|
);
|
|
167
|
-
console.log(`data: ${DATA_DIR}`);
|
|
175
|
+
console.log(`data: ${chalk.dim(DATA_DIR)}`);
|
|
168
176
|
if (!alive) process.exitCode = 1;
|
|
169
177
|
}
|
|
170
178
|
|
|
171
|
-
function cmdLogs(
|
|
179
|
+
function cmdLogs() {
|
|
172
180
|
let text;
|
|
173
181
|
try {
|
|
174
182
|
text = fs.readFileSync(LOG_FILE, "utf8");
|
|
@@ -177,9 +185,7 @@ function cmdLogs(opts) {
|
|
|
177
185
|
return;
|
|
178
186
|
}
|
|
179
187
|
const lines = text.trimEnd().split("\n");
|
|
180
|
-
|
|
181
|
-
process.stdout.write(lines.slice(-n).join("\n") + "\n");
|
|
182
|
-
if (!opts.follow) return;
|
|
188
|
+
process.stdout.write(lines.slice(-50).join("\n") + "\n");
|
|
183
189
|
// follow: poll for appended bytes (cross-platform, no `tail` dep)
|
|
184
190
|
let pos = fs.statSync(LOG_FILE).size;
|
|
185
191
|
const timer = setInterval(() => {
|
|
@@ -208,68 +214,63 @@ async function cmdOpen(opts) {
|
|
|
208
214
|
console.log(url);
|
|
209
215
|
}
|
|
210
216
|
|
|
211
|
-
function cmdDoctor() {
|
|
212
|
-
const fails = [];
|
|
213
|
-
const check = (name, ok, hint = "") => {
|
|
214
|
-
console.log(`${ok ? "ok " : "FAIL"} ${name}${ok ? "" : ` — ${hint}`}`);
|
|
215
|
-
if (!ok) fails.push(name);
|
|
216
|
-
};
|
|
217
|
-
const major = Number(process.versions.node.split(".")[0]);
|
|
218
|
-
check(`node ${process.version}`, major >= 20, "need node >= 20");
|
|
219
|
-
if (IS_REPO) {
|
|
220
|
-
const pnpm = spawnSync("pnpm", ["--version"], { encoding: "utf8" });
|
|
221
|
-
check(`pnpm ${pnpm.stdout?.trim() || "?"}`, pnpm.status === 0, "need pnpm for dev mode");
|
|
222
|
-
}
|
|
223
|
-
try {
|
|
224
|
-
fs.mkdirSync(DATA_DIR, { recursive: true });
|
|
225
|
-
fs.accessSync(DATA_DIR, fs.constants.W_OK);
|
|
226
|
-
check(`DATA_DIR ${DATA_DIR}`, true);
|
|
227
|
-
} catch {
|
|
228
|
-
check(`DATA_DIR ${DATA_DIR}`, false, "not writable");
|
|
229
|
-
}
|
|
230
|
-
check(
|
|
231
|
-
".next build (for start --prod)",
|
|
232
|
-
fs.existsSync(path.join(ROOT, ".next")),
|
|
233
|
-
"run pnpm build",
|
|
234
|
-
);
|
|
235
|
-
if (fails.length) process.exitCode = 1;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
217
|
function help() {
|
|
239
|
-
|
|
218
|
+
const H = chalk.green;
|
|
219
|
+
const C = chalk.blue;
|
|
220
|
+
console.log(`${H.bold("10router")} ${chalk.dim(`— local gateway lifecycle (DATA_DIR=${DATA_DIR})`)}
|
|
240
221
|
|
|
241
|
-
|
|
222
|
+
${H("Usage:")} 10router [OPTIONS] <COMMAND>
|
|
242
223
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
stop
|
|
246
|
-
status
|
|
247
|
-
logs
|
|
248
|
-
open
|
|
249
|
-
doctor node/pnpm/DATA_DIR/build checks
|
|
250
|
-
help | --help this text
|
|
251
|
-
--version package version
|
|
224
|
+
${H("Commands:")}
|
|
225
|
+
${C("start")} Start gateway
|
|
226
|
+
${C("stop")} Stop background gateway
|
|
227
|
+
${C("status")} Show pid, health and paths
|
|
228
|
+
${C("logs")} Tail log (follows)
|
|
229
|
+
${C("open")} Open dashboard in browser
|
|
252
230
|
|
|
253
|
-
|
|
231
|
+
${H("Options:")}
|
|
232
|
+
${C("-p, --port <N>")} Gateway port (default :${PROD_PORT})
|
|
233
|
+
${C(" --foreground")} Run in foreground (Ctrl+C to stop)
|
|
234
|
+
${C("-h, --help")} Show this help
|
|
235
|
+
${C("-V, --version")} Show package version`);
|
|
254
236
|
}
|
|
255
237
|
|
|
256
238
|
// ── ARGS ────────────────────────────────────────────────────────────
|
|
257
|
-
const
|
|
239
|
+
const _all = process.argv.slice(2);
|
|
240
|
+
// Strip --update-preview [ver] before command dispatch (dev preview only).
|
|
241
|
+
const _pv = _all.indexOf("--update-preview");
|
|
242
|
+
const _args =
|
|
243
|
+
_pv >= 0 && _all[_pv + 1] && /^[v\d]/.test(_all[_pv + 1])
|
|
244
|
+
? [..._all.slice(0, _pv), ..._all.slice(_pv + 2)]
|
|
245
|
+
: _pv >= 0
|
|
246
|
+
? [..._all.slice(0, _pv), ..._all.slice(_pv + 1)]
|
|
247
|
+
: _all;
|
|
248
|
+
const [cmd, ...rest] = _args;
|
|
258
249
|
const flag = (s, l) => rest.includes(s) || (l && rest.includes(l));
|
|
259
250
|
const val = (s, l) => {
|
|
260
251
|
const i = rest.findIndex((a) => a === s || a === l);
|
|
261
252
|
return i >= 0 ? rest[i + 1] : undefined;
|
|
262
253
|
};
|
|
263
254
|
const opts = {
|
|
264
|
-
prod: flag("--prod"),
|
|
265
|
-
dev: flag("--dev"),
|
|
266
255
|
foreground: flag("--foreground") || flag("--fg"),
|
|
267
|
-
follow: flag("-f", "--follow"),
|
|
268
256
|
port: val("--port", "-p"),
|
|
269
|
-
n: Number(val("-n", "--lines")) || undefined,
|
|
270
257
|
};
|
|
271
258
|
|
|
272
259
|
const run = async () => {
|
|
260
|
+
// Update notice: stderr only (stdout stays pipeable), fail-open, npm-only.
|
|
261
|
+
// Dev preview: `--update-preview [ver] <cmd>` shows the prod notice in-repo.
|
|
262
|
+
const previewIdx = _all.indexOf("--update-preview");
|
|
263
|
+
const previewArg = previewIdx >= 0 ? _all[previewIdx + 1] : null;
|
|
264
|
+
const previewLatest =
|
|
265
|
+
previewIdx >= 0 ? (previewArg && /^[v\d]/.test(previewArg) ? previewArg : "9.9.9") : null;
|
|
266
|
+
const notice = await checkUpdate({
|
|
267
|
+
root: ROOT,
|
|
268
|
+
dataDir: DATA_DIR,
|
|
269
|
+
isRepo: IS_REPO,
|
|
270
|
+
argv: rest,
|
|
271
|
+
previewLatest,
|
|
272
|
+
});
|
|
273
|
+
if (notice) console.error(chalk.yellow.bold(notice));
|
|
273
274
|
switch (cmd) {
|
|
274
275
|
case "start":
|
|
275
276
|
return cmdStart(opts);
|
|
@@ -278,20 +279,22 @@ const run = async () => {
|
|
|
278
279
|
case "status":
|
|
279
280
|
return cmdStatus();
|
|
280
281
|
case "logs":
|
|
281
|
-
return cmdLogs(
|
|
282
|
+
return cmdLogs();
|
|
282
283
|
case "open":
|
|
283
284
|
return cmdOpen(opts);
|
|
284
|
-
case "
|
|
285
|
-
|
|
286
|
-
case "
|
|
287
|
-
|
|
285
|
+
case "-h":
|
|
286
|
+
case "--help":
|
|
287
|
+
case "help":
|
|
288
|
+
return help();
|
|
289
|
+
case "-V":
|
|
290
|
+
case "--version": {
|
|
288
291
|
const pkg = JSON.parse(fs.readFileSync(path.join(ROOT, "package.json"), "utf8"));
|
|
289
292
|
console.log(pkg.version);
|
|
290
293
|
return;
|
|
291
294
|
}
|
|
292
295
|
default:
|
|
293
296
|
help();
|
|
294
|
-
if (cmd
|
|
297
|
+
if (cmd) process.exitCode = 1;
|
|
295
298
|
}
|
|
296
299
|
};
|
|
297
300
|
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// ── UPDATE CHECK ────────────────────────────────────────────────────
|
|
3
|
+
// Fail-open latest-version notice for npm-installed CLI. Stdlib only,
|
|
4
|
+
// side-effect-free (no top-level run) so tests can import it.
|
|
5
|
+
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
|
|
9
|
+
export const UPDATE_TTL = 24 * 3600 * 1000;
|
|
10
|
+
|
|
11
|
+
export function cmpVer(a, b) {
|
|
12
|
+
const pa = String(a).replace(/^v/, "").split("-")[0].split(".").map(Number);
|
|
13
|
+
const pb = String(b).replace(/^v/, "").split("-")[0].split(".").map(Number);
|
|
14
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
15
|
+
const d = (pa[i] || 0) - (pb[i] || 0);
|
|
16
|
+
if (d) return d < 0 ? -1 : 1;
|
|
17
|
+
}
|
|
18
|
+
// numeric tie: prerelease < release (1.0.0-alpha < 1.0.0)
|
|
19
|
+
const preA = String(a).includes("-") ? 0 : 1;
|
|
20
|
+
const preB = String(b).includes("-") ? 0 : 1;
|
|
21
|
+
return preA === preB ? 0 : preA < preB ? -1 : 1;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export async function fetchLatest(pkgName, fetchFn = fetch) {
|
|
25
|
+
try {
|
|
26
|
+
const r = await fetchFn(`https://registry.npmjs.org/${pkgName.replace("/", "%2F")}/latest`, {
|
|
27
|
+
signal: AbortSignal.timeout(3000),
|
|
28
|
+
});
|
|
29
|
+
if (!r.ok) return null;
|
|
30
|
+
return (await r.json())?.version || null;
|
|
31
|
+
} catch {
|
|
32
|
+
return null; // offline → silent
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Returns the notice string, or null when silent. Never throws.
|
|
37
|
+
export async function checkUpdate({
|
|
38
|
+
root,
|
|
39
|
+
dataDir,
|
|
40
|
+
isRepo,
|
|
41
|
+
argv = [],
|
|
42
|
+
env = process.env,
|
|
43
|
+
fetchFn = fetch,
|
|
44
|
+
now = Date.now(),
|
|
45
|
+
previewLatest = null,
|
|
46
|
+
} = {}) {
|
|
47
|
+
try {
|
|
48
|
+
// previewLatest: dev-only escape hatch (`--update-preview X.Y.Z`) to see
|
|
49
|
+
// the prod notice without network. Still gated by the same opt-outs.
|
|
50
|
+
if (argv.includes("--no-update-check")) return null;
|
|
51
|
+
if (env.NO_UPDATE_CHECK === "1" || env.CI) return null;
|
|
52
|
+
if (!previewLatest && isRepo) return null;
|
|
53
|
+
let pkg;
|
|
54
|
+
try {
|
|
55
|
+
pkg = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf8"));
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
if (!pkg?.name || !pkg?.version) return null;
|
|
60
|
+
const cacheFile = path.join(dataDir, "update-check.json");
|
|
61
|
+
let cached = null;
|
|
62
|
+
try {
|
|
63
|
+
cached = JSON.parse(fs.readFileSync(cacheFile, "utf8"));
|
|
64
|
+
} catch {
|
|
65
|
+
/* no cache */
|
|
66
|
+
}
|
|
67
|
+
let latest = previewLatest;
|
|
68
|
+
if (!latest) {
|
|
69
|
+
latest = cached?.latest && now - (cached.checkedAt || 0) < UPDATE_TTL ? cached.latest : null;
|
|
70
|
+
}
|
|
71
|
+
if (!latest) {
|
|
72
|
+
latest = await fetchLatest(pkg.name, fetchFn);
|
|
73
|
+
if (latest) {
|
|
74
|
+
try {
|
|
75
|
+
fs.mkdirSync(dataDir, { recursive: true });
|
|
76
|
+
fs.writeFileSync(cacheFile, JSON.stringify({ latest, checkedAt: now }));
|
|
77
|
+
} catch {
|
|
78
|
+
/* cache best-effort */
|
|
79
|
+
}
|
|
80
|
+
} else latest = cached?.latest || null; // stale cache beats silence
|
|
81
|
+
}
|
|
82
|
+
if (!latest || cmpVer(pkg.version, latest) >= 0) return null;
|
|
83
|
+
const ua = env.npm_config_user_agent || "";
|
|
84
|
+
const install = ua.startsWith("pnpm")
|
|
85
|
+
? `pnpm add -g ${pkg.name}@latest`
|
|
86
|
+
: `npm install -g ${pkg.name}@latest`;
|
|
87
|
+
// stop first: upgrade replaces running code — stop is idempotent when idle.
|
|
88
|
+
// ponytail: single stop+install line; split per-status messaging when needed.
|
|
89
|
+
return `\nUpdate available: ${pkg.version} → ${latest}\n 10router stop; ${install}\n`;
|
|
90
|
+
} catch {
|
|
91
|
+
return null; // fail-open: update notice never breaks the CLI
|
|
92
|
+
}
|
|
93
|
+
}
|
package/custom-server.js
CHANGED
|
@@ -2,7 +2,6 @@ const http = require("http");
|
|
|
2
2
|
const path = require("path");
|
|
3
3
|
const fs = require("fs");
|
|
4
4
|
const crypto = require("crypto");
|
|
5
|
-
const { pathToFileURL } = require("url");
|
|
6
5
|
|
|
7
6
|
const origCreate = http.createServer.bind(http);
|
|
8
7
|
|
|
@@ -13,38 +12,12 @@ const origCreate = http.createServer.bind(http);
|
|
|
13
12
|
const PEER_TOKEN = crypto.randomBytes(24).toString("hex");
|
|
14
13
|
process.env.TENROUTER_PEER_TOKEN = PEER_TOKEN;
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// — initializeApp also starts the same scheduler when the Next app boots.
|
|
23
|
-
const modPath = path.join(__dirname, "src", "sse", "services", "backgroundTokenRefresh.js");
|
|
24
|
-
import(pathToFileURL(modPath).href)
|
|
25
|
-
.then((m) => {
|
|
26
|
-
try {
|
|
27
|
-
m.startBackgroundTokenRefresh();
|
|
28
|
-
} catch (e) {
|
|
29
|
-
console.error("[BackgroundTokenRefresh] start failed:", e && e.message ? e.message : e);
|
|
30
|
-
}
|
|
31
|
-
const stop = () => {
|
|
32
|
-
try {
|
|
33
|
-
m.stopBackgroundTokenRefresh();
|
|
34
|
-
} catch {
|
|
35
|
-
/* ignore */
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
process.once("SIGINT", stop);
|
|
39
|
-
process.once("SIGTERM", stop);
|
|
40
|
-
})
|
|
41
|
-
.catch((e) => {
|
|
42
|
-
// Expected in published CLI standalone (src/ not on disk). App bootstrap covers it.
|
|
43
|
-
if (process.env.DEBUG_BACKGROUND_TOKEN_REFRESH) {
|
|
44
|
-
console.error("[BackgroundTokenRefresh] import failed:", e && e.message ? e.message : e);
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
15
|
+
// NOTE: background token refresh is started by the app itself
|
|
16
|
+
// (src/shared/services/bootstrap.ts → initializeApp). This entry used to
|
|
17
|
+
// dynamic-import src/sse/services/backgroundTokenRefresh.js, but that path
|
|
18
|
+
// never resolves at runtime (only the .ts source exists on disk) — the import
|
|
19
|
+
// always failed and the bootstrap scheduler covered it. Removed so the server
|
|
20
|
+
// entry has no src/ coupling.
|
|
48
21
|
|
|
49
22
|
// Wrap Next standalone HTTP server: derive client IP from the TCP socket
|
|
50
23
|
// (unspoofable) and strip client-supplied forwarding headers so downstream
|
|
@@ -74,9 +47,6 @@ http.createServer = (...args) => {
|
|
|
74
47
|
return handler(req, res);
|
|
75
48
|
};
|
|
76
49
|
const server = origCreate(...rest, wrapped);
|
|
77
|
-
server.once("listening", () => {
|
|
78
|
-
startBackgroundTokenRefreshFromCustomServer();
|
|
79
|
-
});
|
|
80
50
|
const origEmit = server.emit;
|
|
81
51
|
// JBR 25 sends h2c upgrades that the HTTP/1.1 server would otherwise close.
|
|
82
52
|
server.emit = function (event, ...eventArgs) {
|
package/next.config.mjs
CHANGED
|
@@ -10,7 +10,7 @@ const proxyClientMaxBodySize = process.env.TENROUTER_PROXY_CLIENT_MAX_BODY_SIZE
|
|
|
10
10
|
|
|
11
11
|
/** @type {import('next').NextConfig} */
|
|
12
12
|
const nextConfig = {
|
|
13
|
-
distDir:
|
|
13
|
+
distDir: ".next",
|
|
14
14
|
output: "standalone",
|
|
15
15
|
// `open` must stay external. It derives its own directory from `import.meta.url`, and
|
|
16
16
|
// webpack replaces that with the absolute path of the BUILD machine as a string literal.
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amir83nasr/10router",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/Amir83Nasr/10Router.git"
|
|
7
7
|
},
|
|
8
|
-
"packageManager": "pnpm@12.
|
|
8
|
+
"packageManager": "pnpm@12.6.0",
|
|
9
9
|
"description": "10Router dashboard",
|
|
10
10
|
"bin": {
|
|
11
11
|
"10router": "bin/10router.mjs"
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
"files": [
|
|
14
14
|
"bin/",
|
|
15
15
|
"custom-server.js",
|
|
16
|
-
"scripts/dev-local.mjs",
|
|
17
16
|
"src/",
|
|
18
17
|
"open-sse/",
|
|
19
18
|
"public/",
|
|
@@ -29,13 +28,10 @@
|
|
|
29
28
|
},
|
|
30
29
|
"scripts": {
|
|
31
30
|
"dev": "node scripts/dev-local.mjs",
|
|
32
|
-
"dev:
|
|
31
|
+
"dev:update": "node scripts/test-update-notice.mjs",
|
|
33
32
|
"build": "next build --webpack",
|
|
34
|
-
"start": "node custom-server.js --port
|
|
35
|
-
"
|
|
36
|
-
"dev:ui": "node scripts/dev-local.mjs --ui",
|
|
37
|
-
"build:bun": "bun --bun next build --webpack",
|
|
38
|
-
"start:bun": "bun ./.next/standalone/custom-server.js",
|
|
33
|
+
"start": "node custom-server.js --port 20128",
|
|
34
|
+
"pkg:test": "node scripts/test-pkg.mjs",
|
|
39
35
|
"format": "prettier --write .",
|
|
40
36
|
"format:check": "prettier --check .",
|
|
41
37
|
"lint": "eslint .",
|
|
@@ -59,21 +55,10 @@
|
|
|
59
55
|
"@dnd-kit/utilities": "^3.2.2",
|
|
60
56
|
"@next/third-parties": "^16.2.9",
|
|
61
57
|
"@node-saml/node-saml": "^5.1.0",
|
|
62
|
-
"@radix-ui/react-avatar": "^1.2.6",
|
|
63
|
-
"@radix-ui/react-dialog": "^1.1.23",
|
|
64
|
-
"@radix-ui/react-dropdown-menu": "^2.1.24",
|
|
65
|
-
"@radix-ui/react-label": "^2.1.15",
|
|
66
|
-
"@radix-ui/react-select": "^2.3.7",
|
|
67
|
-
"@radix-ui/react-separator": "^1.1.15",
|
|
68
|
-
"@radix-ui/react-slot": "^1.3.3",
|
|
69
|
-
"@radix-ui/react-switch": "^1.3.7",
|
|
70
|
-
"@radix-ui/react-tabs": "^1.1.21",
|
|
71
|
-
"@radix-ui/react-tooltip": "^1.2.16",
|
|
72
58
|
"@xyflow/react": "^12.10.1",
|
|
73
59
|
"bcryptjs": "^3.0.3",
|
|
74
60
|
"chalk": "^5.6.2",
|
|
75
61
|
"class-variance-authority": "^0.7.1",
|
|
76
|
-
"clsx": "^2.1.1",
|
|
77
62
|
"cn": "^0.3.0",
|
|
78
63
|
"confbox": "^0.2.4",
|
|
79
64
|
"jose": "^6.1.3",
|
|
@@ -83,13 +68,11 @@
|
|
|
83
68
|
"node-machine-id": "^1.1.12",
|
|
84
69
|
"open": "^11.0.0",
|
|
85
70
|
"ora": "^9.1.0",
|
|
86
|
-
"prop-types": "^15.8.1",
|
|
87
71
|
"radix-ui": "^1.6.7",
|
|
88
72
|
"react": "19.2.4",
|
|
89
73
|
"react-dom": "19.2.4",
|
|
90
74
|
"recharts": "^3.8.0",
|
|
91
75
|
"sql.js": "^1.14.1",
|
|
92
|
-
"tailwind-merge": "^3.7.0",
|
|
93
76
|
"tw-animate-css": "^1.4.0",
|
|
94
77
|
"undici": "^7.19.2",
|
|
95
78
|
"uuid": "^13.0.0",
|
|
@@ -21,12 +21,20 @@ import type { LogCategory, LogEntry, LogLevel } from "@/lib/logLine.js";
|
|
|
21
21
|
// ── LEVEL META ───────────────────────────────────────────
|
|
22
22
|
|
|
23
23
|
const LEVEL_BADGE: Record<LogLevel, "default" | "secondary" | "destructive"> = {
|
|
24
|
-
debug: "
|
|
25
|
-
info: "
|
|
24
|
+
debug: "secondary",
|
|
25
|
+
info: "default",
|
|
26
26
|
warn: "secondary",
|
|
27
27
|
error: "destructive",
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
+
// Badge color per level (BADGE variants are limited: default/secondary/destructive).
|
|
31
|
+
const LEVEL_BADGE_CLASS: Record<LogLevel, string> = {
|
|
32
|
+
debug: "bg-muted text-muted-foreground",
|
|
33
|
+
info: "bg-sky-500/15 text-sky-700 dark:text-sky-300",
|
|
34
|
+
warn: "bg-amber-500/15 text-amber-700 dark:text-amber-300",
|
|
35
|
+
error: "",
|
|
36
|
+
};
|
|
37
|
+
|
|
30
38
|
const LEVEL_LABEL: Record<LogLevel, string> = {
|
|
31
39
|
debug: "DEBUG",
|
|
32
40
|
info: "INFO",
|
|
@@ -174,6 +182,7 @@ function LogMessage({ text, isError }: { text: string; isError: boolean }) {
|
|
|
174
182
|
|
|
175
183
|
function LogRow({ entry }: { entry: LogEntry }) {
|
|
176
184
|
const isError = entry.level === "error";
|
|
185
|
+
const isWarn = entry.level === "warn";
|
|
177
186
|
const isDone = entry.category === "done";
|
|
178
187
|
|
|
179
188
|
return (
|
|
@@ -181,15 +190,20 @@ function LogRow({ entry }: { entry: LogEntry }) {
|
|
|
181
190
|
className={`flex items-start gap-2 px-3 py-1.5 leading-relaxed ${
|
|
182
191
|
isError
|
|
183
192
|
? "border-l-2 border-red-500 bg-red-500/5"
|
|
184
|
-
:
|
|
185
|
-
? "border-l-2 border-
|
|
186
|
-
:
|
|
193
|
+
: isWarn
|
|
194
|
+
? "border-l-2 border-amber-500 bg-amber-500/5"
|
|
195
|
+
: isDone
|
|
196
|
+
? "border-l-2 border-green-500 bg-green-500/5"
|
|
197
|
+
: "border-l-2 border-transparent hover:bg-muted/50"
|
|
187
198
|
}`}
|
|
188
199
|
>
|
|
189
200
|
<span className="shrink-0 pt-0.5 text-[11px] text-muted-foreground tabular-nums">
|
|
190
201
|
{formatClock(entry.ts)}
|
|
191
202
|
</span>
|
|
192
|
-
<Badge
|
|
203
|
+
<Badge
|
|
204
|
+
variant={LEVEL_BADGE[entry.level]}
|
|
205
|
+
className={`shrink-0 ${LEVEL_BADGE_CLASS[entry.level]}`}
|
|
206
|
+
>
|
|
193
207
|
{LEVEL_LABEL[entry.level]}
|
|
194
208
|
</Badge>
|
|
195
209
|
<span className="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground uppercase">
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { NextResponse } from "next/server";
|
|
2
2
|
import { getProxyPoolById, updateProxyPool } from "@/models";
|
|
3
3
|
import { testProxyUrl } from "@/lib/network/proxyTest";
|
|
4
|
-
import { fetch as undiciFetch } from "undici";
|
|
5
4
|
|
|
6
5
|
async function testVercelRelay(relayUrl, timeoutMs = 10000) {
|
|
7
6
|
const controller = new AbortController();
|
|
8
7
|
const startedAt = Date.now();
|
|
9
8
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
10
9
|
try {
|
|
11
|
-
const res = await
|
|
10
|
+
const res = await fetch(relayUrl, {
|
|
12
11
|
method: "GET",
|
|
13
12
|
headers: {
|
|
14
13
|
"x-relay-target": "https://httpbin.org",
|
|
@@ -42,7 +42,8 @@ function scheduleFlush() {
|
|
|
42
42
|
state.flushTimer?.unref?.();
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
// Strip ANSI escape codes so terminal
|
|
45
|
+
// Strip ANSI escape codes (colors, bold) so terminal styling doesn't bleed
|
|
46
|
+
// into UI; the viewer applies its own per-level colors.
|
|
46
47
|
const ANSI_RE = /\x1b\[[0-9;]*m/g;
|
|
47
48
|
|
|
48
49
|
function stripAnsi(str) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { useState, useEffect } from "react";
|
|
4
|
-
import PropTypes from "prop-types";
|
|
5
4
|
import Modal from "./Modal";
|
|
6
5
|
import { Input } from "@/components/ui/input";
|
|
7
6
|
import { Button } from "@/components/ui/button";
|
|
@@ -205,16 +204,3 @@ export default function AddCustomEmbeddingModal({
|
|
|
205
204
|
</Modal>
|
|
206
205
|
);
|
|
207
206
|
}
|
|
208
|
-
|
|
209
|
-
AddCustomEmbeddingModal.propTypes = {
|
|
210
|
-
isOpen: PropTypes.bool.isRequired,
|
|
211
|
-
onClose: PropTypes.func.isRequired,
|
|
212
|
-
onCreated: PropTypes.func,
|
|
213
|
-
onSaved: PropTypes.func,
|
|
214
|
-
node: PropTypes.shape({
|
|
215
|
-
id: PropTypes.string,
|
|
216
|
-
name: PropTypes.string,
|
|
217
|
-
prefix: PropTypes.string,
|
|
218
|
-
baseUrl: PropTypes.string,
|
|
219
|
-
}),
|
|
220
|
-
};
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import Icon from "@/shared/components/Icon";
|
|
3
3
|
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
5
|
-
import PropTypes from "prop-types";
|
|
6
5
|
import { marked } from "marked";
|
|
7
6
|
import { GITHUB_CONFIG } from "@/shared/constants/config";
|
|
8
7
|
import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog";
|
|
@@ -75,8 +74,3 @@ export default function ChangelogModal({ isOpen, onClose }: ChangelogModalProps)
|
|
|
75
74
|
</Dialog>
|
|
76
75
|
);
|
|
77
76
|
}
|
|
78
|
-
|
|
79
|
-
ChangelogModal.propTypes = {
|
|
80
|
-
isOpen: PropTypes.bool.isRequired,
|
|
81
|
-
onClose: PropTypes.func.isRequired,
|
|
82
|
-
};
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import Icon from "@/shared/components/Icon";
|
|
3
3
|
|
|
4
4
|
import { useState, useEffect } from "react";
|
|
5
|
-
import PropTypes from "prop-types";
|
|
6
5
|
import Modal from "./Modal";
|
|
7
6
|
import { Input } from "@/components/ui/input";
|
|
8
7
|
import { Button } from "@/components/ui/button";
|
|
@@ -205,9 +204,3 @@ export default function CursorAuthModal({ isOpen, onSuccess, onClose }: CursorAu
|
|
|
205
204
|
</Modal>
|
|
206
205
|
);
|
|
207
206
|
}
|
|
208
|
-
|
|
209
|
-
CursorAuthModal.propTypes = {
|
|
210
|
-
isOpen: PropTypes.bool.isRequired,
|
|
211
|
-
onSuccess: PropTypes.func,
|
|
212
|
-
onClose: PropTypes.func.isRequired,
|
|
213
|
-
};
|