9router 0.2.88 → 0.2.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +33 -32
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/routes-manifest.json +18 -12
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +4 -4
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js +1 -0
- package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/tunnel/enable/route.js +1 -0
- package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/tunnel/status/route.js +1 -0
- package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -0
- package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/stream/route.js +6 -2
- package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +2 -2
- package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +1 -1
- package/app/.next/server/app/dashboard/translator.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.html +1 -1
- package/app/.next/server/app/dashboard.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +2 -2
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +2 -2
- package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +3 -3
- package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/page.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +33 -32
- package/app/.next/server/chunks/3990.js +2 -2
- package/app/.next/server/chunks/412.js +1 -1
- package/app/.next/server/chunks/6084.js +1 -0
- package/app/.next/server/chunks/6943.js +1 -1
- package/app/.next/server/chunks/{5330.js → 7189.js} +3 -3
- package/app/.next/server/chunks/7533.js +1 -0
- package/app/.next/server/chunks/8954.js +1 -1
- package/app/.next/server/chunks/9489.js +2 -2
- package/app/.next/server/chunks/9718.js +1 -1
- package/app/.next/server/chunks/9862.js +2 -2
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/server/webpack-runtime.js +1 -1
- package/app/.next/static/1U2f_RPUnC3Jq3sZbG62b/_buildManifest.js +1 -0
- package/app/.next/static/chunks/1393-1761cc0c24573e2e.js +3 -0
- package/app/.next/static/chunks/5497-bcf7a079d4e9c4a5.js +7 -0
- package/app/.next/static/chunks/{8729-44b4c78e001b2e25.js → 8729-a2b22a201dd986cf.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-f1a3de0e067ff7c4.js +15 -0
- package/app/.next/static/chunks/app/_global-error/page-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/disable/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/enable/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/status/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/app/page-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/c6123951-7611e4563265b257.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-6fc4c655a6c0cae7.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6fc4c655a6c0cae7.js +1 -0
- package/app/package.json +1 -1
- package/cli.js +4 -4
- package/package.json +1 -1
- package/src/cli/api/client.js +33 -0
- package/src/cli/menus/settings.js +38 -27
- package/src/cli/terminalUI.js +8 -10
- package/src/cli/utils/endpoint.js +10 -12
- package/app/.next/server/app/api/sync/cloud/route.js +0 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +0 -1
- package/app/.next/server/app/api/sync/initialize/route.js +0 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +0 -1
- package/app/.next/server/chunks/1638.js +0 -1
- package/app/.next/server/chunks/8647.js +0 -1
- package/app/.next/static/FqoiygD1k3dP5k-yy9CDd/_buildManifest.js +0 -1
- package/app/.next/static/chunks/1393-5b60aa357f848139.js +0 -3
- package/app/.next/static/chunks/5497-825dd88e0a663cfe.js +0 -7
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-d5e2be111394971e.js +0 -15
- package/app/.next/static/chunks/app/_global-error/page-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/sync/cloud/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/sync/initialize/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/app/page-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/c6123951-59125299ca0d7b46.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-d1d78f0818dfa7f5.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d1d78f0818dfa7f5.js +0 -1
- /package/app/.next/server/app/api/{sync/cloud → tunnel/disable}/route.js.nft.json +0 -0
- /package/app/.next/server/app/api/{sync/initialize → tunnel/enable}/route.js.nft.json +0 -0
- /package/app/.next/static/{FqoiygD1k3dP5k-yy9CDd → 1U2f_RPUnC3Jq3sZbG62b}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
exports.id=9862,exports.ids=[9862],exports.modules={14807:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))},43173:(a,b,c)=>{"use strict";c.d(b,{default:()=>
|
|
1
|
+
exports.id=9862,exports.ids=[9862],exports.modules={14807:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))},43173:(a,b,c)=>{"use strict";c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);let j=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];function k({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(""),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(""),[w,x]=(0,e.useState)(""),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)(null),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)(!1),{copied:I,copy:J}=(0,i.C)(),K=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&r(a)}catch(a){console.log("Error updating requireApiKey:",a)}},L=async()=>{try{let a=await fetch("/api/keys"),b=await a.json();a.ok&&c(b.keys||[])}catch(a){console.log("Error fetching data:",a)}finally{g(!1)}},M=async()=>{H(!1),z(!0),D(null),B("Connecting to server...");let a=[{delay:2e3,msg:"Creating tunnel..."},{delay:5e3,msg:"Starting cloudflared..."},{delay:15e3,msg:"Establishing connections..."},{delay:3e4,msg:"Waiting for tunnel ready..."}].map(({delay:a,msg:b})=>setTimeout(()=>B(b),a));try{let b=new AbortController,c=setTimeout(()=>b.abort(),9e4),d=await fetch("/api/tunnel/enable",{method:"POST",signal:b.signal});clearTimeout(c),a.forEach(clearTimeout);let e=await d.json();d.ok?(t(!0),v(e.tunnelUrl||""),x(e.shortId||""),D({type:"success",message:"Tunnel connected!"})):D({type:"error",message:e.error||"Failed to enable tunnel"})}catch(b){a.forEach(clearTimeout),D({type:"error",message:b?.name==="AbortError"?"Tunnel creation timed out":b.message})}finally{z(!1),B("")}},N=async()=>{z(!0),D(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(t(!1),v(""),D({type:"success",message:"Tunnel disabled"}),F(!1)):D({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){D({type:"error",message:a.message})}finally{z(!1)}},O=async()=>{if(m.trim())try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:m})}),b=await a.json();a.ok&&(p(b.key),await L(),n(""),l(!1))}catch(a){console.log("Error creating key:",a)}},P=async a=>{if(confirm("Delete this API key?"))try{(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&c(b.filter(b=>b.id!==a))}catch(a){console.log("Error deleting key:",a)}},Q=async(a,b)=>{try{(await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})})).ok&&c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c))}catch(a){console.log("Error toggling key:",a)}},[R,S]=(0,e.useState)("/v1");if(f)return(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]});let T=s&&u?`${u}/v1`:R;return(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)(h.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"API Endpoint"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:s?"Using Tunnel":"Using Local Server"})]}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:s?(0,d.jsx)(h.$n,{size:"sm",variant:"secondary",icon:"cloud_off",onClick:()=>F(!0),disabled:y,className:"bg-red-500/10! text-red-500! hover:bg-red-500/20! border-red-500/30!",children:"Disable Tunnel"}):(0,d.jsx)(h.$n,{variant:"primary",icon:"cloud_upload",onClick:()=>H(!0),disabled:y,className:"bg-linear-to-r from-primary to-blue-500 hover:from-primary-hover hover:to-blue-600",children:y?(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),A||"Creating tunnel..."]}):"Enable Tunnel"})})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:T,readOnly:!0,className:`flex-1 font-mono text-sm ${s?"animate-border-glow":""}`}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"endpoint_url"===I?"check":"content_copy",onClick:()=>J(T,"endpoint_url"),children:"endpoint_url"===I?"Copied!":"Copy"})]}),C&&(0,d.jsx)("div",{className:`mt-3 p-2 rounded text-sm ${"success"===C.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===C.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:C.message})]}),(0,d.jsxs)(h.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"API Keys"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>l(!0),children:"Create Key"})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between pb-4 mb-4 border-b border-border",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Requests without a valid key will be rejected"})]}),(0,d.jsx)(h.lM,{checked:q,onChange:()=>K(!q)})]}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>l(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"flex flex-col",children:b.map(a=>(0,d.jsxs)("div",{className:`group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono",children:a.key}),(0,d.jsx)("button",{onClick:()=>J(a.key,a.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:I===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]}),!1===a.isActive&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(h.lM,{size:"sm",checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?confirm(`Pause API key "${a.name}"?
|
|
2
2
|
|
|
3
|
-
This key will stop working immediately but can be resumed later.`)&&
|
|
3
|
+
This key will stop working immediately but can be resumed later.`)&&Q(a.id,b):Q(a.id,b)},title:a.isActive?"Pause key":"Resume key"}),(0,d.jsx)("button",{onClick:()=>P(a.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id))})]}),(0,d.jsx)(h.aF,{isOpen:k,title:"Create API Key",onClose:()=>{l(!1),n("")},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Key Name",value:m,onChange:a=>n(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:O,fullWidth:!0,disabled:!m.trim(),children:"Create"}),(0,d.jsx)(h.$n,{onClick:()=>{l(!1),n("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!o,title:"API Key Created",onClose:()=>p(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:o||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===I?"check":"content_copy",onClick:()=>J(o,"created_key"),children:"created_key"===I?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>p(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:G,title:"Enable Tunnel",onClose:()=>H(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200 font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-blue-700 dark:text-blue-300",children:"Expose your local 9Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:j.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:M,fullWidth:!0,className:"bg-linear-to-r from-primary to-blue-500 hover:from-primary-hover hover:to-blue-600 text-white!",children:"Start Tunnel"}),(0,d.jsx)(h.$n,{onClick:()=>H(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:E,title:"Disable Tunnel",onClose:()=>!y&&F(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-red-600 dark:text-red-400",children:"warning"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-red-800 dark:text-red-200 font-medium mb-1",children:"Warning"}),(0,d.jsx)("p",{className:"text-sm text-red-700 dark:text-red-300",children:"The tunnel will be disconnected. Remote access will stop working."})]})]})}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Are you sure you want to disable the tunnel?"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:N,fullWidth:!0,disabled:y,className:"bg-red-500! hover:bg-red-600! text-white!",children:y?(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Disabling..."]}):"Disable Tunnel"}),(0,d.jsx)(h.$n,{onClick:()=>F(!1),variant:"ghost",fullWidth:!0,disabled:y,children:"Cancel"})]})]})})]})}k.propTypes={machineId:g().string.isRequired}},51747:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/Working/router4/app/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/Working/router4/app/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},77855:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},87250:(a,b,c)=>{"use strict";c.d(b,{D1:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--1U2f_RPUnC3Jq3sZbG62b--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/6a76c1062906da03.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-25c43999146c934e.js"/><script src="/_next/static/chunks/4bd1b696-e5d7c65570c947b7.js" async=""></script><script src="/_next/static/chunks/3794-c67589461d449d62.js" async=""></script><script src="/_next/static/chunks/main-app-8803a230dfc5c361.js" async=""></script><script src="/_next/static/chunks/c6123951-7611e4563265b257.js" async=""></script><script src="/_next/static/chunks/600-3e3d52de0d15664e.js" async=""></script><script src="/_next/static/chunks/1672-4ed8fbaefe011b6e.js" async=""></script><script src="/_next/static/chunks/8729-a2b22a201dd986cf.js" async=""></script><script src="/_next/static/chunks/5497-bcf7a079d4e9c4a5.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-66d69a4ba6e79bd5.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap" as="style"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><title>9Router - AI Infrastructure Management</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-25c43999146c934e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"4335\",\"static/chunks/c6123951-7611e4563265b257.js\",\"600\",\"static/chunks/600-3e3d52de0d15664e.js\",\"1672\",\"static/chunks/1672-4ed8fbaefe011b6e.js\",\"8729\",\"static/chunks/8729-a2b22a201dd986cf.js\",\"5497\",\"static/chunks/5497-bcf7a079d4e9c4a5.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-66d69a4ba6e79bd5.js\"],\"ThemeProvider\"]\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[90484,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/6a76c1062906da03.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\u0026display=swap\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"1U2f_RPUnC3Jq3sZbG62b\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/6a76c1062906da03.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[86869,[],\"IconMark\"]\n7:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"9Router - AI Infrastructure Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$Ld\",\"4\",{}]]\n"])</script></body></html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-25c43999146c934e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[90484,[],\"ViewportBoundary\"]\n9:I[90484,[],\"MetadataBoundary\"]\nb:I[27123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
1
|
+
<!DOCTYPE html><!--1U2f_RPUnC3Jq3sZbG62b--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-25c43999146c934e.js"/><script src="/_next/static/chunks/4bd1b696-e5d7c65570c947b7.js" async=""></script><script src="/_next/static/chunks/3794-c67589461d449d62.js" async=""></script><script src="/_next/static/chunks/main-app-8803a230dfc5c361.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-25c43999146c934e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[90484,[],\"ViewportBoundary\"]\n9:I[90484,[],\"MetadataBoundary\"]\nb:I[27123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"1U2f_RPUnC3Jq3sZbG62b\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\"node\":{\"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\"node\":{\"00b830cb3ad8ae488716b54de8f59f7a5dff59a87a\":{\"workers\":{\"app/api/cli-tools/claude-settings/route\":{\"moduleId\":\"48101\",\"async\":false}},\"layer\":{\"app/api/cli-tools/claude-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/claude-settings/route.js\",\"exportedName\":\"GET\"},\"00f0521a01f1371abc196c1a806c7d817aba6f24fd\":{\"workers\":{\"app/api/cli-tools/claude-settings/route\":{\"moduleId\":\"48101\",\"async\":false}},\"layer\":{\"app/api/cli-tools/claude-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/claude-settings/route.js\",\"exportedName\":\"DELETE\"},\"406b5421c0d9278c73508c39a731577bf6ed4d02ca\":{\"workers\":{\"app/api/cli-tools/claude-settings/route\":{\"moduleId\":\"48101\",\"async\":false}},\"layer\":{\"app/api/cli-tools/claude-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/claude-settings/route.js\",\"exportedName\":\"POST\"},\"00abc210d509c2a5babe45934cdf44cae1726962fc\":{\"workers\":{\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"83722\",\"async\":false}},\"layer\":{\"app/api/cli-tools/codex-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"DELETE\"},\"00fef668d38ed6414dbbb7377ecfdac61e74ecd9c2\":{\"workers\":{\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"83722\",\"async\":false}},\"layer\":{\"app/api/cli-tools/codex-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"GET\"},\"401d76d3f257906bfd6662f16431180c76be75d9f0\":{\"workers\":{\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"83722\",\"async\":false}},\"layer\":{\"app/api/cli-tools/codex-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"POST\"},\"0037d08db2fa5d1389469ea6e9a3d0ff9d7423e1c7\":{\"workers\":{\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"49043\",\"async\":false}},\"layer\":{\"app/api/cli-tools/droid-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"DELETE\"},\"009d98e0ae529f78f46e8404a9524e03a3321240f5\":{\"workers\":{\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"49043\",\"async\":false}},\"layer\":{\"app/api/cli-tools/droid-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"GET\"},\"40613914d9a56a3a4950332d356a40550e1766b3c9\":{\"workers\":{\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"49043\",\"async\":false}},\"layer\":{\"app/api/cli-tools/droid-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"POST\"},\"00ae22a114a5e0ea29ffb51186f926f0a14a628651\":{\"workers\":{\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"85589\",\"async\":false}},\"layer\":{\"app/api/cli-tools/openclaw-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"DELETE\"},\"00edbbed331af43249c958f0d2d72f5e24364912a1\":{\"workers\":{\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"85589\",\"async\":false}},\"layer\":{\"app/api/cli-tools/openclaw-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"GET\"},\"40b069e711997d56fd1cd254d764ab93da9bc876b6\":{\"workers\":{\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"85589\",\"async\":false}},\"layer\":{\"app/api/cli-tools/openclaw-settings/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"POST\"},\"4020dc1456d7b92cfc27cdc401d0f2b121fc9377c4\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":{\"moduleId\":\"76200\",\"async\":false}},\"layer\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/antigravity-mitm/alias/route.js\",\"exportedName\":\"GET\"},\"40c6354f22d4b97d20eaf7f65d95101321602958f5\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":{\"moduleId\":\"76200\",\"async\":false}},\"layer\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/antigravity-mitm/alias/route.js\",\"exportedName\":\"PUT\"},\"00dcc02aeae88f74d9ec0124fb371c6b098b79905c\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/route\":{\"moduleId\":\"85298\",\"async\":false}},\"layer\":{\"app/api/cli-tools/antigravity-mitm/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/antigravity-mitm/route.js\",\"exportedName\":\"GET\"},\"400d20ae0577d77ba3f21d96e3193f2eab341eaca1\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/route\":{\"moduleId\":\"85298\",\"async\":false}},\"layer\":{\"app/api/cli-tools/antigravity-mitm/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/antigravity-mitm/route.js\",\"exportedName\":\"DELETE\"},\"40fb22a5994d3f3d53998969358fe69c9b793a2552\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/route\":{\"moduleId\":\"85298\",\"async\":false}},\"layer\":{\"app/api/cli-tools/antigravity-mitm/route\":\"rsc\"},\"filename\":\"app/api/cli-tools/antigravity-mitm/route.js\",\"exportedName\":\"POST\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{"
|
|
1
|
+
{"node":{"00b830cb3ad8ae488716b54de8f59f7a5dff59a87a":{"workers":{"app/api/cli-tools/claude-settings/route":{"moduleId":"48101","async":false}},"layer":{"app/api/cli-tools/claude-settings/route":"rsc"},"filename":"app/api/cli-tools/claude-settings/route.js","exportedName":"GET"},"00f0521a01f1371abc196c1a806c7d817aba6f24fd":{"workers":{"app/api/cli-tools/claude-settings/route":{"moduleId":"48101","async":false}},"layer":{"app/api/cli-tools/claude-settings/route":"rsc"},"filename":"app/api/cli-tools/claude-settings/route.js","exportedName":"DELETE"},"406b5421c0d9278c73508c39a731577bf6ed4d02ca":{"workers":{"app/api/cli-tools/claude-settings/route":{"moduleId":"48101","async":false}},"layer":{"app/api/cli-tools/claude-settings/route":"rsc"},"filename":"app/api/cli-tools/claude-settings/route.js","exportedName":"POST"},"00abc210d509c2a5babe45934cdf44cae1726962fc":{"workers":{"app/api/cli-tools/codex-settings/route":{"moduleId":"83722","async":false}},"layer":{"app/api/cli-tools/codex-settings/route":"rsc"},"filename":"app/api/cli-tools/codex-settings/route.js","exportedName":"DELETE"},"00fef668d38ed6414dbbb7377ecfdac61e74ecd9c2":{"workers":{"app/api/cli-tools/codex-settings/route":{"moduleId":"83722","async":false}},"layer":{"app/api/cli-tools/codex-settings/route":"rsc"},"filename":"app/api/cli-tools/codex-settings/route.js","exportedName":"GET"},"401d76d3f257906bfd6662f16431180c76be75d9f0":{"workers":{"app/api/cli-tools/codex-settings/route":{"moduleId":"83722","async":false}},"layer":{"app/api/cli-tools/codex-settings/route":"rsc"},"filename":"app/api/cli-tools/codex-settings/route.js","exportedName":"POST"},"0037d08db2fa5d1389469ea6e9a3d0ff9d7423e1c7":{"workers":{"app/api/cli-tools/droid-settings/route":{"moduleId":"49043","async":false}},"layer":{"app/api/cli-tools/droid-settings/route":"rsc"},"filename":"app/api/cli-tools/droid-settings/route.js","exportedName":"DELETE"},"009d98e0ae529f78f46e8404a9524e03a3321240f5":{"workers":{"app/api/cli-tools/droid-settings/route":{"moduleId":"49043","async":false}},"layer":{"app/api/cli-tools/droid-settings/route":"rsc"},"filename":"app/api/cli-tools/droid-settings/route.js","exportedName":"GET"},"40613914d9a56a3a4950332d356a40550e1766b3c9":{"workers":{"app/api/cli-tools/droid-settings/route":{"moduleId":"49043","async":false}},"layer":{"app/api/cli-tools/droid-settings/route":"rsc"},"filename":"app/api/cli-tools/droid-settings/route.js","exportedName":"POST"},"00ae22a114a5e0ea29ffb51186f926f0a14a628651":{"workers":{"app/api/cli-tools/openclaw-settings/route":{"moduleId":"85589","async":false}},"layer":{"app/api/cli-tools/openclaw-settings/route":"rsc"},"filename":"app/api/cli-tools/openclaw-settings/route.js","exportedName":"DELETE"},"00edbbed331af43249c958f0d2d72f5e24364912a1":{"workers":{"app/api/cli-tools/openclaw-settings/route":{"moduleId":"85589","async":false}},"layer":{"app/api/cli-tools/openclaw-settings/route":"rsc"},"filename":"app/api/cli-tools/openclaw-settings/route.js","exportedName":"GET"},"40b069e711997d56fd1cd254d764ab93da9bc876b6":{"workers":{"app/api/cli-tools/openclaw-settings/route":{"moduleId":"85589","async":false}},"layer":{"app/api/cli-tools/openclaw-settings/route":"rsc"},"filename":"app/api/cli-tools/openclaw-settings/route.js","exportedName":"POST"},"4020dc1456d7b92cfc27cdc401d0f2b121fc9377c4":{"workers":{"app/api/cli-tools/antigravity-mitm/alias/route":{"moduleId":"76200","async":false}},"layer":{"app/api/cli-tools/antigravity-mitm/alias/route":"rsc"},"filename":"app/api/cli-tools/antigravity-mitm/alias/route.js","exportedName":"GET"},"40c6354f22d4b97d20eaf7f65d95101321602958f5":{"workers":{"app/api/cli-tools/antigravity-mitm/alias/route":{"moduleId":"76200","async":false}},"layer":{"app/api/cli-tools/antigravity-mitm/alias/route":"rsc"},"filename":"app/api/cli-tools/antigravity-mitm/alias/route.js","exportedName":"PUT"},"00dcc02aeae88f74d9ec0124fb371c6b098b79905c":{"workers":{"app/api/cli-tools/antigravity-mitm/route":{"moduleId":"85298","async":false}},"layer":{"app/api/cli-tools/antigravity-mitm/route":"rsc"},"filename":"app/api/cli-tools/antigravity-mitm/route.js","exportedName":"GET"},"400d20ae0577d77ba3f21d96e3193f2eab341eaca1":{"workers":{"app/api/cli-tools/antigravity-mitm/route":{"moduleId":"85298","async":false}},"layer":{"app/api/cli-tools/antigravity-mitm/route":"rsc"},"filename":"app/api/cli-tools/antigravity-mitm/route.js","exportedName":"DELETE"},"40fb22a5994d3f3d53998969358fe69c9b793a2552":{"workers":{"app/api/cli-tools/antigravity-mitm/route":{"moduleId":"85298","async":false}},"layer":{"app/api/cli-tools/antigravity-mitm/route":"rsc"},"filename":"app/api/cli-tools/antigravity-mitm/route.js","exportedName":"POST"}},"edge":{},"encryptionKey":"E6OgI/JOYq7mbTvnRXFd/GnwtbNhE8Dcgo/IQqnzEws="}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var a,b,c,d,e,f,g,h,i={},j={};function k(a){var b=j[a];if(void 0!==b)return b.exports;var c=j[a]={
|
|
1
|
+
(()=>{"use strict";var a,b,c,d,e,f,g,h,i={},j={};function k(a){var b=j[a];if(void 0!==b)return b.exports;var c=j[a]={exports:{}},d=!0;try{i[a].call(c.exports,c,c.exports,k),d=!1}finally{d&&delete j[a]}return c.exports}k.m=i,k.amdO={},a="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",b="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",c="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",d=a=>{a&&a.d<1&&(a.d=1,a.forEach(a=>a.r--),a.forEach(a=>a.r--?a.r++:a()))},k.a=(e,f,g)=>{g&&((h=[]).d=-1);var h,i,j,k,l=new Set,m=e.exports,n=new Promise((a,b)=>{k=b,j=a});n[b]=m,n[a]=a=>(h&&a(h),l.forEach(a),n.catch(a=>{})),e.exports=n,f(e=>{i=e.map(e=>{if(null!==e&&"object"==typeof e){if(e[a])return e;if(e.then){var f=[];f.d=0,e.then(a=>{g[b]=a,d(f)},a=>{g[c]=a,d(f)});var g={};return g[a]=a=>a(f),g}}var h={};return h[a]=a=>{},h[b]=e,h});var f,g=()=>i.map(a=>{if(a[c])throw a[c];return a[b]}),j=new Promise(b=>{(f=()=>b(g)).r=0;var c=a=>a!==h&&!l.has(a)&&(l.add(a),a&&!a.d&&(f.r++,a.push(f)));i.map(b=>b[a](c))});return f.r?j:g()},a=>(a?k(n[c]=a):j(m),d(h))),h&&h.d<0&&(h.d=0)},k.n=a=>{var b=a&&a.__esModule?()=>a.default:()=>a;return k.d(b,{a:b}),b},f=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__,k.t=function(a,b){if(1&b&&(a=this(a)),8&b||"object"==typeof a&&a&&(4&b&&a.__esModule||16&b&&"function"==typeof a.then))return a;var c=Object.create(null);k.r(c);var d={};e=e||[null,f({}),f([]),f(f)];for(var g=2&b&&a;"object"==typeof g&&!~e.indexOf(g);g=f(g))Object.getOwnPropertyNames(g).forEach(b=>d[b]=()=>a[b]);return d.default=()=>a,k.d(c,d),c},k.d=(a,b)=>{for(var c in b)k.o(b,c)&&!k.o(a,c)&&Object.defineProperty(a,c,{enumerable:!0,get:b[c]})},k.f={},k.e=a=>Promise.all(Object.keys(k.f).reduce((b,c)=>(k.f[c](a,b),b),[])),k.u=a=>""+a+".js",k.o=(a,b)=>Object.prototype.hasOwnProperty.call(a,b),k.r=a=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},k.X=(a,b,c)=>{var d=b;c||(b=a,c=()=>k(k.s=d)),b.map(k.e,k);var e=c();return void 0===e?a:e},g={7311:1},h=a=>{var b=a.modules,c=a.ids,d=a.runtime;for(var e in b)k.o(b,e)&&(k.m[e]=b[e]);d&&d(k);for(var f=0;f<c.length;f++)g[c[f]]=1},k.f.require=(a,b)=>{g[a]||(7311!=a?h(require("./chunks/"+k.u(a))):g[a]=1)},module.exports=k,k.C=h})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__BUILD_MANIFEST=function(e,s,t,a,r,i,n){return{__rewrites:{afterFiles:[{has:t,source:"/v1/v1/:path*",destination:a},{has:t,source:"/v1/v1",destination:r},{has:t,source:"/codex/:path*",destination:"/api/v1/responses"},{has:t,source:"/v1/:path*",destination:a},{has:t,source:"/v1",destination:r}],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:74,errorRate:1e-4,numBits:1419,numHashes:14,bitArray:[0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,1,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,1,1,1,1,0,1,1,0,0,0,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,0,0,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,1,1,0,1,0,1,1,0,0,0,0,0,0,1,0,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,1,0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,1,0,1,1,1,0,0,0,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,0,0,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,0,1,0,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,1,1,0,1,1,0,0,0,0,1,0,1,0,0,0,1,0,1,1,0,1,0,1,1,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,0,1,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,1,0,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,1,1,0,0,1,1,1,0,1,0,1,0,1,1,0,1,0,0,1,1,1,1,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,0,1,1,0,1,1,1,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,0,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,1,1,0,1,1,1]},__routerFilterDynamic:{numItems:8,errorRate:1e-4,numBits:154,numHashes:14,bitArray:[1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,1,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,0,0,1,0,1,0,1]},sortedPages:["/_app"]}}(0,0,void 0,"/api/v1/:path*","/api/v1",0,0),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1393],{51393:(e,t,s)=>{Promise.resolve().then(s.bind(s,95907))},95907:(e,t,s)=>{"use strict";s.d(t,{default:()=>c});var l=s(95155),a=s(12115),r=s(14051),i=s.n(r),n=s(35497),o=s(11059);let d=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];function c({machineId:e}){let[t,s]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[c,m]=(0,a.useState)(!1),[x,h]=(0,a.useState)(""),[u,p]=(0,a.useState)(null),[y,b]=(0,a.useState)(!1),[g,f]=(0,a.useState)(!1),[j,k]=(0,a.useState)(""),[v,N]=(0,a.useState)(""),[w,C]=(0,a.useState)(!1),[S,T]=(0,a.useState)(""),[A,E]=(0,a.useState)(null),[P,$]=(0,a.useState)(!1),[_,I]=(0,a.useState)(!1),{copied:O,copy:D}=(0,o.C)();(0,a.useEffect)(()=>{R(),K()},[]);let K=async()=>{try{let[e,t]=await Promise.all([fetch("/api/settings"),fetch("/api/tunnel/status")]);if(e.ok){let t=await e.json();b(t.requireApiKey||!1)}if(t.ok){let e=await t.json();f(e.enabled||!1),k(e.tunnelUrl||""),N(e.shortId||"")}}catch(e){console.log("Error loading settings:",e)}},U=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:e})})).ok&&b(e)}catch(e){console.log("Error updating requireApiKey:",e)}},R=async()=>{try{let e=await fetch("/api/keys"),t=await e.json();e.ok&&s(t.keys||[])}catch(e){console.log("Error fetching data:",e)}finally{i(!1)}},W=async()=>{I(!1),C(!0),E(null),T("Connecting to server...");let e=[{delay:2e3,msg:"Creating tunnel..."},{delay:5e3,msg:"Starting cloudflared..."},{delay:15e3,msg:"Establishing connections..."},{delay:3e4,msg:"Waiting for tunnel ready..."}].map(({delay:e,msg:t})=>setTimeout(()=>T(t),e));try{let t=new AbortController,s=setTimeout(()=>t.abort(),9e4),l=await fetch("/api/tunnel/enable",{method:"POST",signal:t.signal});clearTimeout(s),e.forEach(clearTimeout);let a=await l.json();l.ok?(f(!0),k(a.tunnelUrl||""),N(a.shortId||""),E({type:"success",message:"Tunnel connected!"})):E({type:"error",message:a.error||"Failed to enable tunnel"})}catch(t){e.forEach(clearTimeout),E({type:"error",message:t?.name==="AbortError"?"Tunnel creation timed out":t.message})}finally{C(!1),T("")}},q=async()=>{C(!0),E(null);try{let e=await fetch("/api/tunnel/disable",{method:"POST"}),t=await e.json();e.ok?(f(!1),k(""),E({type:"success",message:"Tunnel disabled"}),$(!1)):E({type:"error",message:t.error||"Failed to disable tunnel"})}catch(e){E({type:"error",message:e.message})}finally{C(!1)}},F=async()=>{if(x.trim())try{let e=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:x})}),t=await e.json();e.ok&&(p(t.key),await R(),h(""),m(!1))}catch(e){console.log("Error creating key:",e)}},L=async e=>{if(confirm("Delete this API key?"))try{(await fetch(`/api/keys/${e}`,{method:"DELETE"})).ok&&s(t.filter(t=>t.id!==e))}catch(e){console.log("Error deleting key:",e)}},J=async(e,t)=>{try{(await fetch(`/api/keys/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&s(s=>s.map(s=>s.id===e?{...s,isActive:t}:s))}catch(e){console.log("Error toggling key:",e)}},[z,M]=(0,a.useState)("/v1");if((0,a.useEffect)(()=>{M(`${window.location.origin}/v1`)},[]),r)return(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,l.jsx)(n.Qv,{}),(0,l.jsx)(n.Qv,{})]});let Q=g&&j?`${j}/v1`:z;return(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,l.jsxs)(n.Zp,{children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-lg font-semibold",children:"API Endpoint"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:g?"Using Tunnel":"Using Local Server"})]}),(0,l.jsx)("div",{className:"flex items-center gap-2",children:g?(0,l.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"cloud_off",onClick:()=>$(!0),disabled:w,className:"bg-red-500/10! text-red-500! hover:bg-red-500/20! border-red-500/30!",children:"Disable Tunnel"}):(0,l.jsx)(n.$n,{variant:"primary",icon:"cloud_upload",onClick:()=>I(!0),disabled:w,className:"bg-linear-to-r from-primary to-blue-500 hover:from-primary-hover hover:to-blue-600",children:w?(0,l.jsxs)("span",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),S||"Creating tunnel..."]}):"Enable Tunnel"})})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(n.pd,{value:Q,readOnly:!0,className:`flex-1 font-mono text-sm ${g?"animate-border-glow":""}`}),(0,l.jsx)(n.$n,{variant:"secondary",icon:"endpoint_url"===O?"check":"content_copy",onClick:()=>D(Q,"endpoint_url"),children:"endpoint_url"===O?"Copied!":"Copy"})]}),A&&(0,l.jsx)("div",{className:`mt-3 p-2 rounded text-sm ${"success"===A.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===A.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:A.message})]}),(0,l.jsxs)(n.Zp,{children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,l.jsx)("h2",{className:"text-lg font-semibold",children:"API Keys"}),(0,l.jsx)(n.$n,{icon:"add",onClick:()=>m(!0),children:"Create Key"})]}),(0,l.jsxs)("div",{className:"flex items-center justify-between pb-4 mb-4 border-b border-border",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Requests without a valid key will be rejected"})]}),(0,l.jsx)(n.lM,{checked:y,onChange:()=>U(!y)})]}),0===t.length?(0,l.jsxs)("div",{className:"text-center py-12",children:[(0,l.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,l.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,l.jsx)(n.$n,{icon:"add",onClick:()=>m(!0),children:"Create Key"})]}):(0,l.jsx)("div",{className:"flex flex-col",children:t.map(e=>(0,l.jsxs)("div",{className:`group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 ${!1===e.isActive?"opacity-60":""}`,children:[(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsx)("p",{className:"text-sm font-medium",children:e.name}),(0,l.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,l.jsx)("code",{className:"text-xs text-text-muted font-mono",children:e.key}),(0,l.jsx)("button",{onClick:()=>D(e.key,e.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:O===e.id?"check":"content_copy"})})]}),(0,l.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(e.createdAt).toLocaleDateString()]}),!1===e.isActive&&(0,l.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(n.lM,{size:"sm",checked:e.isActive??!0,onChange:t=>{e.isActive&&!t?confirm(`Pause API key "${e.name}"?
|
|
2
|
+
|
|
3
|
+
This key will stop working immediately but can be resumed later.`)&&J(e.id,t):J(e.id,t)},title:e.isActive?"Pause key":"Resume key"}),(0,l.jsx)("button",{onClick:()=>L(e.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},e.id))})]}),(0,l.jsx)(n.aF,{isOpen:c,title:"Create API Key",onClose:()=>{m(!1),h("")},children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)(n.pd,{label:"Key Name",value:x,onChange:e=>h(e.target.value),placeholder:"Production Key"}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(n.$n,{onClick:F,fullWidth:!0,disabled:!x.trim(),children:"Create"}),(0,l.jsx)(n.$n,{onClick:()=>{m(!1),h("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,l.jsx)(n.aF,{isOpen:!!u,title:"API Key Created",onClose:()=>p(null),children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,l.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,l.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(n.pd,{value:u||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,l.jsx)(n.$n,{variant:"secondary",icon:"created_key"===O?"check":"content_copy",onClick:()=>D(u,"created_key"),children:"created_key"===O?"Copied!":"Copy"})]}),(0,l.jsx)(n.$n,{onClick:()=>p(null),fullWidth:!0,children:"Done"})]})}),(0,l.jsx)(n.aF,{isOpen:_,title:"Enable Tunnel",onClose:()=>I(!1),children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4",children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"cloud_upload"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200 font-medium mb-1",children:"Cloudflare Tunnel"}),(0,l.jsx)("p",{className:"text-sm text-blue-700 dark:text-blue-300",children:"Expose your local 9Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,l.jsx)("div",{className:"grid grid-cols-2 gap-3",children:d.map(e=>(0,l.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:e.icon}),(0,l.jsx)("p",{className:"text-xs font-semibold",children:e.title}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e.desc})]},e.title))}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(n.$n,{onClick:W,fullWidth:!0,className:"bg-linear-to-r from-primary to-blue-500 hover:from-primary-hover hover:to-blue-600 text-white!",children:"Start Tunnel"}),(0,l.jsx)(n.$n,{onClick:()=>I(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,l.jsx)(n.aF,{isOpen:P,title:"Disable Tunnel",onClose:()=>!w&&$(!1),children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4",children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-red-600 dark:text-red-400",children:"warning"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-sm text-red-800 dark:text-red-200 font-medium mb-1",children:"Warning"}),(0,l.jsx)("p",{className:"text-sm text-red-700 dark:text-red-300",children:"The tunnel will be disconnected. Remote access will stop working."})]})]})}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:"Are you sure you want to disable the tunnel?"}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(n.$n,{onClick:q,fullWidth:!0,disabled:w,className:"bg-red-500! hover:bg-red-600! text-white!",children:w?(0,l.jsxs)("span",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Disabling..."]}):"Disable Tunnel"}),(0,l.jsx)(n.$n,{onClick:()=>$(!1),variant:"ghost",fullWidth:!0,disabled:w,children:"Cancel"})]})]})})]})}c.propTypes={machineId:i().string.isRequired}}}]);
|