zevairouter 1.0.104 → 1.0.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +6 -2
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +7 -7
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +7 -7
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/{3702-71ea2cb15f471160.js → 3702-962a084bda90238f.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/5497-eb7497d94439c4c1.js +7 -0
- package/cli/app/.next-cli-build/static/chunks/9126-2efa8985d72b10b7.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-16cab1ed7e707419.js → page-a2d55f0103564e42.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-a5bcf36367dce737.js +1 -0
- package/cli/app/.next-cli-build/static/css/b2b993ebf3c2ebd5.css +1 -0
- package/cli/app/CHANGELOG.md +39 -0
- package/cli/app/package.json +7 -2
- package/cli/package.json +1 -1
- package/open-sse/handlers/embeddingProviders/gemini.js +4 -1
- package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +4 -1
- package/open-sse/handlers/imageProviders/blackForestLabs.js +4 -1
- package/open-sse/handlers/imageProviders/cloudflareAi.js +4 -1
- package/open-sse/handlers/imageProviders/codex.js +4 -1
- package/open-sse/handlers/imageProviders/comfyui.js +4 -1
- package/open-sse/handlers/imageProviders/falAi.js +4 -1
- package/open-sse/handlers/imageProviders/gemini.js +4 -1
- package/open-sse/handlers/imageProviders/huggingface.js +4 -1
- package/open-sse/handlers/imageProviders/nanobanana.js +4 -1
- package/open-sse/handlers/imageProviders/runwayml.js +4 -1
- package/open-sse/handlers/imageProviders/sdwebui.js +4 -1
- package/open-sse/handlers/imageProviders/stabilityAi.js +4 -1
- package/open-sse/handlers/ttsProviders/edgeTts.js +4 -1
- package/open-sse/handlers/ttsProviders/elevenlabs.js +4 -1
- package/open-sse/handlers/ttsProviders/gemini.js +4 -1
- package/open-sse/handlers/ttsProviders/googleTts.js +4 -1
- package/open-sse/handlers/ttsProviders/localDevice.js +4 -1
- package/open-sse/handlers/ttsProviders/openai.js +4 -1
- package/open-sse/handlers/ttsProviders/openrouter.js +4 -1
- package/open-sse/utils/cursorChecksum.js +4 -1
- package/open-sse/utils/cursorProtobuf.js +4 -1
- package/package.json +7 -2
- package/src/app/(dashboard)/dashboard/automation/page.js +3 -0
- package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +8 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +2 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +7 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +7 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +1 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +5 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +2 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +6 -0
- package/src/app/(dashboard)/dashboard/combos/page.js +3 -0
- package/src/app/(dashboard)/dashboard/context/page.js +1 -0
- package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +7 -0
- package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +10 -0
- package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -0
- package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +4 -0
- package/src/app/(dashboard)/dashboard/profile/page.js +2 -0
- package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +1 -0
- package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +1 -0
- package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +1 -0
- package/src/app/(dashboard)/dashboard/providers/[id]/page.js +4 -0
- package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +8 -6
- package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +2 -0
- package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +1 -0
- package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +1 -0
- package/src/app/(dashboard)/dashboard/providers/page.js +9 -1
- package/src/app/(dashboard)/dashboard/proxy-pools/page.js +4 -1
- package/src/app/(dashboard)/dashboard/pxpipe/PxpipeClient.js +1 -0
- package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +1 -0
- package/src/app/(dashboard)/dashboard/token-saver/TokenSaverClient.js +3 -0
- package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +2 -0
- package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +10 -5
- package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +2 -0
- package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +1 -0
- package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +1 -0
- package/src/app/api/oauth/cursor/auto-import/route.js +0 -1
- package/src/app/callback/page.js +1 -0
- package/src/app/dashboard/settings/pricing/page.js +1 -0
- package/src/lib/db/migrations/001-initial.js +4 -1
- package/src/shared/components/AddCustomEmbeddingModal.js +1 -0
- package/src/shared/components/BulkAccountAutomationModal.js +3 -1
- package/src/shared/components/ChangelogModal.js +1 -0
- package/src/shared/components/CursorAuthModal.js +1 -0
- package/src/shared/components/EditConnectionModal.js +1 -0
- package/src/shared/components/HeaderLanguage.js +1 -0
- package/src/shared/components/KiroAuthModal.js +1 -0
- package/src/shared/components/KiroOAuthWrapper.js +1 -0
- package/src/shared/components/LanguageSwitcher.js +2 -0
- package/src/shared/components/McpMarketplaceModal.js +1 -1
- package/src/shared/components/ModelSelectModal.js +10 -6
- package/src/shared/components/OAuthModal.js +3 -1
- package/src/shared/components/PricingModal.js +1 -0
- package/src/shared/components/ProviderIcon.js +8 -3
- package/src/shared/components/RequestLogger.js +1 -0
- package/src/shared/components/Sidebar.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/5497-667e14237552c864.js +0 -7
- package/cli/app/.next-cli-build/static/chunks/9126-5dc2ccda07a8c55e.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-6621ec8b157e77cc.js +0 -1
- package/cli/app/.next-cli-build/static/css/c7077ef89735a356.css +0 -1
- /package/cli/app/.next-cli-build/static/{CsjKSx0C8GBhUjd-ob2F9 → vT4VEIlvTRBiBLb9aTism}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{CsjKSx0C8GBhUjd-ob2F9 → vT4VEIlvTRBiBLb9aTism}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
/* eslint-disable @next/next/no-img-element -- dynamic/blob/external image src with onError fallback; next/image requires static dims + domain allowlist */
|
|
2
3
|
|
|
3
4
|
import { useMemo, useState, useEffect, useCallback, useRef } from "react";
|
|
4
5
|
import PropTypes from "prop-types";
|
|
@@ -14,6 +15,7 @@ import { AI_PROVIDERS } from "@/shared/constants/providers";
|
|
|
14
15
|
// Force-stop FE animation if a provider stays active longer than this
|
|
15
16
|
const FE_ACTIVE_TIMEOUT_MS = 60000;
|
|
16
17
|
const FE_ACTIVE_TICK_MS = 1000;
|
|
18
|
+
const FIT_OPTS = { padding: 0.2, duration: 200 };
|
|
17
19
|
|
|
18
20
|
function getProviderConfig(providerId) {
|
|
19
21
|
return AI_PROVIDERS[providerId] || { color: "#6b7280", name: providerId };
|
|
@@ -230,18 +232,22 @@ export default function ProviderTopology({ providers = [], activeRequests = [],
|
|
|
230
232
|
}, [rawActiveSet]);
|
|
231
233
|
|
|
232
234
|
const activeSet = useMemo(() => {
|
|
235
|
+
void tick; // tick only re-triggers this memo so time-based expiry is re-evaluated on each interval
|
|
236
|
+
// eslint-disable-next-line react-hooks/purity -- intentional time-window filter: memo is re-evaluated every FE_ACTIVE_TICK_MS via tick, so each evaluation needs the current time
|
|
233
237
|
const now = Date.now();
|
|
234
238
|
const filtered = new Set();
|
|
239
|
+
/* eslint-disable react-hooks/refs -- firstSeenRef is written in an effect and read here only to re-derive a time-windowed view on each tick; intentional */
|
|
235
240
|
for (const p of rawActiveSet) {
|
|
236
241
|
const ts = firstSeenRef.current[p];
|
|
237
242
|
if (!ts || now - ts < FE_ACTIVE_TIMEOUT_MS) filtered.add(p);
|
|
238
243
|
}
|
|
244
|
+
/* eslint-enable react-hooks/refs */
|
|
239
245
|
return filtered;
|
|
240
246
|
}, [rawActiveSet, tick]);
|
|
241
247
|
|
|
242
248
|
const { nodes, edges } = useMemo(
|
|
243
249
|
() => buildLayout(providers, activeSet, lastSet, errorSet),
|
|
244
|
-
[providers, activeSet,
|
|
250
|
+
[providers, activeSet, lastSet, errorSet]
|
|
245
251
|
);
|
|
246
252
|
|
|
247
253
|
// Stable key — only remount when provider list changes
|
|
@@ -252,10 +258,9 @@ export default function ProviderTopology({ providers = [], activeRequests = [],
|
|
|
252
258
|
|
|
253
259
|
const rfInstance = useRef(null);
|
|
254
260
|
const containerRef = useRef(null);
|
|
255
|
-
const fitOpts = { padding: 0.2, duration: 200 };
|
|
256
261
|
const onInit = useCallback((instance) => {
|
|
257
262
|
rfInstance.current = instance;
|
|
258
|
-
setTimeout(() => instance.fitView(
|
|
263
|
+
setTimeout(() => instance.fitView(FIT_OPTS), 50);
|
|
259
264
|
}, []);
|
|
260
265
|
|
|
261
266
|
// Re-fit on container resize
|
|
@@ -263,7 +268,7 @@ export default function ProviderTopology({ providers = [], activeRequests = [],
|
|
|
263
268
|
const el = containerRef.current;
|
|
264
269
|
if (!el) return;
|
|
265
270
|
const ro = new ResizeObserver(() => {
|
|
266
|
-
if (rfInstance.current) rfInstance.current.fitView(
|
|
271
|
+
if (rfInstance.current) rfInstance.current.fitView(FIT_OPTS);
|
|
267
272
|
});
|
|
268
273
|
ro.observe(el);
|
|
269
274
|
return () => ro.disconnect();
|
|
@@ -272,7 +277,7 @@ export default function ProviderTopology({ providers = [], activeRequests = [],
|
|
|
272
277
|
// Re-fit when node count/layout changes
|
|
273
278
|
useEffect(() => {
|
|
274
279
|
if (rfInstance.current) {
|
|
275
|
-
const id = setTimeout(() => rfInstance.current.fitView(
|
|
280
|
+
const id = setTimeout(() => rfInstance.current.fitView(FIT_OPTS), 50);
|
|
276
281
|
return () => clearTimeout(id);
|
|
277
282
|
}
|
|
278
283
|
}, [nodes.length]);
|
|
@@ -144,10 +144,12 @@ export default function RequestDetailsTab() {
|
|
|
144
144
|
}, [pagination.page, pagination.pageSize, filters]);
|
|
145
145
|
|
|
146
146
|
useEffect(() => {
|
|
147
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- mount data fetch; fetchProviders sets state only after await, which the rule flags conservatively
|
|
147
148
|
fetchProviders();
|
|
148
149
|
}, [fetchProviders]);
|
|
149
150
|
|
|
150
151
|
useEffect(() => {
|
|
152
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- data fetch on filter/page change; fetchDetails sets state only after await, which the rule flags conservatively
|
|
151
153
|
fetchDetails();
|
|
152
154
|
}, [fetchDetails]);
|
|
153
155
|
|
|
@@ -43,6 +43,7 @@ export default function UsageChart({ period = "7d" }) {
|
|
|
43
43
|
}, [period]);
|
|
44
44
|
|
|
45
45
|
useEffect(() => {
|
|
46
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- data fetch on period change; fetchData sets state only after await, which the rule flags conservatively
|
|
46
47
|
fetchData();
|
|
47
48
|
}, [fetchData]);
|
|
48
49
|
|
|
@@ -110,6 +110,7 @@ export default function UsageTable({
|
|
|
110
110
|
useEffect(() => {
|
|
111
111
|
try {
|
|
112
112
|
const saved = localStorage.getItem(storageKey);
|
|
113
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- one-time mount initialization from localStorage (external store), intentionally client-only
|
|
113
114
|
if (saved) setExpanded(new Set(JSON.parse(saved)));
|
|
114
115
|
} catch (e) {
|
|
115
116
|
console.error(`Failed to load ${storageKey}:`, e);
|
|
@@ -78,7 +78,6 @@ const normalize = (value) => {
|
|
|
78
78
|
*/
|
|
79
79
|
function extractTokensViaBetterSqlite(dbPath) {
|
|
80
80
|
// Dynamic require so the route stays importable even if native bindings fail
|
|
81
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
82
81
|
const Database = require("better-sqlite3");
|
|
83
82
|
const db = new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
84
83
|
|
package/src/app/callback/page.js
CHANGED
|
@@ -75,6 +75,7 @@ function CallbackContent() {
|
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- OAuth popup relay: status transitions are the entire point of this one-shot callback effect
|
|
78
79
|
setStatus("success");
|
|
79
80
|
setTimeout(() => {
|
|
80
81
|
window.close();
|
|
@@ -12,6 +12,7 @@ export default function PricingSettingsPage() {
|
|
|
12
12
|
const [loading, setLoading] = useState(true);
|
|
13
13
|
|
|
14
14
|
useEffect(() => {
|
|
15
|
+
// eslint-disable-next-line react-hooks/immutability -- false positive: these are local fetch+setState helpers invoked once on effect fire (not during render); defined with const below because all invocations are deferred (effects/events), so no TDZ issue at runtime
|
|
15
16
|
loadPricing();
|
|
16
17
|
}, []);
|
|
17
18
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// For existing DB at version 0 (legacy unstamped), it's idempotent (IF NOT EXISTS).
|
|
3
3
|
import { TABLES, buildCreateTableSql } from "../schema.js";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const M001Initial = {
|
|
6
6
|
version: 1,
|
|
7
7
|
name: "initial",
|
|
8
8
|
up(db) {
|
|
@@ -12,3 +12,6 @@ export default {
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
export default M001Initial;
|
|
@@ -22,6 +22,7 @@ export default function AddCustomEmbeddingModal({ isOpen, onClose, onCreated, on
|
|
|
22
22
|
|
|
23
23
|
useEffect(() => {
|
|
24
24
|
if (!isOpen) return;
|
|
25
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- reset-on-open + sync-from-props hybrid: reinitializes the form whenever the modal opens or the edited node changes
|
|
25
26
|
setValidationResult(null);
|
|
26
27
|
setCheckKey("");
|
|
27
28
|
setCheckModelId("");
|
|
@@ -110,6 +110,7 @@ export default function BulkAccountAutomationModal({
|
|
|
110
110
|
const saved = window.localStorage.getItem(draftKey);
|
|
111
111
|
if (saved) {
|
|
112
112
|
bulkTextRef.current = saved;
|
|
113
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- one-time restore of draft text from localStorage (external store) on mount
|
|
113
114
|
setBulkTextState(saved);
|
|
114
115
|
}
|
|
115
116
|
} catch { /* ignore */ }
|
|
@@ -160,9 +161,10 @@ export default function BulkAccountAutomationModal({
|
|
|
160
161
|
if (typeof window !== "undefined") {
|
|
161
162
|
window.localStorage.removeItem(storageKey);
|
|
162
163
|
}
|
|
163
|
-
}, [storageKey, defaultEngine]);
|
|
164
|
+
}, [storageKey, defaultEngine, setBulkText]);
|
|
164
165
|
|
|
165
166
|
useEffect(() => {
|
|
167
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- sync-from-props: resets engine selection when the provider/default engine changes
|
|
166
168
|
setEngine(defaultEngine || DEFAULT_ENGINE);
|
|
167
169
|
}, [defaultEngine, provider]);
|
|
168
170
|
|
|
@@ -16,6 +16,7 @@ export default function ChangelogModal({ isOpen, onClose }) {
|
|
|
16
16
|
|
|
17
17
|
useEffect(() => {
|
|
18
18
|
if (!isOpen || html) return;
|
|
19
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- fetch-on-open: loading must flip synchronously before the async fetch resolves
|
|
19
20
|
setLoading(true);
|
|
20
21
|
setError("");
|
|
21
22
|
// Prefer the locally-bundled CHANGELOG (works offline + private repos).
|
|
@@ -46,6 +46,7 @@ export default function CursorAuthModal({ isOpen, onSuccess, onClose }) {
|
|
|
46
46
|
// Auto-detect tokens when modal opens
|
|
47
47
|
useEffect(() => {
|
|
48
48
|
if (!isOpen) return;
|
|
49
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- fetch-on-open: runAutoDetect sets state only after await, which the rule flags conservatively
|
|
49
50
|
runAutoDetect();
|
|
50
51
|
}, [isOpen]);
|
|
51
52
|
|
|
@@ -29,6 +29,7 @@ export default function EditConnectionModal({ isOpen, connection, proxyPools, on
|
|
|
29
29
|
|
|
30
30
|
useEffect(() => {
|
|
31
31
|
if (connection) {
|
|
32
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- sync-from-props hybrid: pre-fills form from the connection being edited; user edits fields independently afterwards
|
|
32
33
|
setFormData({
|
|
33
34
|
name: connection.name || "",
|
|
34
35
|
priority: connection.priority || 1,
|
|
@@ -19,6 +19,7 @@ export default function HeaderLanguage() {
|
|
|
19
19
|
const [locale, setLocale] = useState("en");
|
|
20
20
|
|
|
21
21
|
useEffect(() => {
|
|
22
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- syncs locale from cookie (external store) on mount and whenever the language modal closes
|
|
22
23
|
setLocale(getLocaleFromCookie());
|
|
23
24
|
}, [open]);
|
|
24
25
|
|
|
@@ -144,6 +144,7 @@ export default function KiroAuthModal({
|
|
|
144
144
|
useEffect(() => {
|
|
145
145
|
if (!isOpen) return;
|
|
146
146
|
if (!initialSelectedMethod) return;
|
|
147
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- sync-from-props: applies the requested initial auth method when the modal flow changes
|
|
147
148
|
setSelectedMethod(initialSelectedMethod);
|
|
148
149
|
setImportMode(initialImportMode || "single-token");
|
|
149
150
|
setBulkResult(null);
|
|
@@ -27,6 +27,7 @@ export default function KiroOAuthWrapper({
|
|
|
27
27
|
useEffect(() => {
|
|
28
28
|
if (!isOpen || !initialFlow) return;
|
|
29
29
|
if (initialFlow.method === "builder-id") {
|
|
30
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- sync-from-props: restores the requested auth flow when the modal is opened with an initialFlow
|
|
30
31
|
setAuthMethod("builder-id");
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
@@ -71,6 +71,7 @@ export default function LanguageSwitcher({ className = "", isOpen: controlledOpe
|
|
|
71
71
|
};
|
|
72
72
|
|
|
73
73
|
useEffect(() => {
|
|
74
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- one-time mount initialization from locale cookie (external store), intentionally client-only
|
|
74
75
|
setLocale(getLocaleFromCookie());
|
|
75
76
|
}, []);
|
|
76
77
|
|
|
@@ -85,6 +86,7 @@ export default function LanguageSwitcher({ className = "", isOpen: controlledOpe
|
|
|
85
86
|
document.addEventListener("mousedown", handleClickOutside);
|
|
86
87
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
87
88
|
}
|
|
89
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- react only to isOpen; setIsOpen only ever closes (idempotent) so a fresh closure isn't required
|
|
88
90
|
}, [isOpen]);
|
|
89
91
|
|
|
90
92
|
const handleSetLocale = async (nextLocale) => {
|
|
@@ -29,7 +29,7 @@ export default function McpMarketplaceModal({ isOpen, onClose, onAdd, addedNames
|
|
|
29
29
|
})
|
|
30
30
|
.catch((e) => setError(e.message))
|
|
31
31
|
.finally(() => setLoading(false));
|
|
32
|
-
}, [isOpen]);
|
|
32
|
+
}, [isOpen, servers.length]);
|
|
33
33
|
|
|
34
34
|
const addedSet = useMemo(() => new Set(addedNames), [addedNames]);
|
|
35
35
|
|
|
@@ -59,6 +59,7 @@ export default function ModelSelectModal({
|
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
useEffect(() => {
|
|
62
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- fetch-on-open: fetchCombos sets state only after await, which the rule flags conservatively
|
|
62
63
|
if (isOpen) fetchCombos();
|
|
63
64
|
}, [isOpen]);
|
|
64
65
|
|
|
@@ -75,6 +76,7 @@ export default function ModelSelectModal({
|
|
|
75
76
|
};
|
|
76
77
|
|
|
77
78
|
useEffect(() => {
|
|
79
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- fetch-on-open: fetchProviderNodes sets state only after await, which the rule flags conservatively
|
|
78
80
|
if (isOpen) fetchProviderNodes();
|
|
79
81
|
}, [isOpen]);
|
|
80
82
|
|
|
@@ -91,6 +93,7 @@ export default function ModelSelectModal({
|
|
|
91
93
|
};
|
|
92
94
|
|
|
93
95
|
useEffect(() => {
|
|
96
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- fetch-on-open: fetchCustomModels sets state only after await, which the rule flags conservatively
|
|
94
97
|
if (isOpen) fetchCustomModels();
|
|
95
98
|
}, [isOpen]);
|
|
96
99
|
|
|
@@ -107,6 +110,7 @@ export default function ModelSelectModal({
|
|
|
107
110
|
};
|
|
108
111
|
|
|
109
112
|
useEffect(() => {
|
|
113
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- fetch-on-open: fetchDisabledModels sets state only after await, which the rule flags conservatively
|
|
110
114
|
if (isOpen) fetchDisabledModels();
|
|
111
115
|
}, [isOpen]);
|
|
112
116
|
|
|
@@ -319,16 +323,16 @@ export default function ModelSelectModal({
|
|
|
319
323
|
}, [combos, searchQuery, kindFilter]);
|
|
320
324
|
|
|
321
325
|
// Sort models alphabetically, with added models floated to top
|
|
322
|
-
const sortModels = (models) => {
|
|
323
|
-
const added = models.filter(m => addedModelValues.includes(m.value)).sort((a, b) => a.name.localeCompare(b.name));
|
|
324
|
-
const rest = models.filter(m => !addedModelValues.includes(m.value)).sort((a, b) => a.name.localeCompare(b.name));
|
|
325
|
-
return [...added, ...rest];
|
|
326
|
-
};
|
|
327
|
-
|
|
328
326
|
// Filter models by search query
|
|
329
327
|
const filteredGroups = useMemo(() => {
|
|
330
328
|
const query = searchQuery.trim().toLowerCase();
|
|
331
329
|
|
|
330
|
+
const sortModels = (models) => {
|
|
331
|
+
const added = models.filter(m => addedModelValues.includes(m.value)).sort((a, b) => a.name.localeCompare(b.name));
|
|
332
|
+
const rest = models.filter(m => !addedModelValues.includes(m.value)).sort((a, b) => a.name.localeCompare(b.name));
|
|
333
|
+
return [...added, ...rest];
|
|
334
|
+
};
|
|
335
|
+
|
|
332
336
|
const filtered = {};
|
|
333
337
|
Object.entries(groupedModels).forEach(([providerId, group]) => {
|
|
334
338
|
let models = group.models;
|
|
@@ -30,6 +30,7 @@ export default function OAuthModal({ isOpen, provider, providerInfo, onSuccess,
|
|
|
30
30
|
// Detect if running on localhost (client-side only)
|
|
31
31
|
useEffect(() => {
|
|
32
32
|
if (typeof window !== "undefined") {
|
|
33
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- one-time mount initialization from window.location (external source, client-only, avoids hydration mismatch)
|
|
33
34
|
setIsLocalhost(
|
|
34
35
|
window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1"
|
|
35
36
|
);
|
|
@@ -64,7 +65,7 @@ export default function OAuthModal({ isOpen, provider, providerInfo, onSuccess,
|
|
|
64
65
|
setError(err.message);
|
|
65
66
|
setStep("error");
|
|
66
67
|
}
|
|
67
|
-
}, [authData, provider, onSuccess]);
|
|
68
|
+
}, [authData, provider, onSuccess, oauthMeta]);
|
|
68
69
|
|
|
69
70
|
const completeXaiManualCode = useCallback(async (code) => {
|
|
70
71
|
if (!authData?.state) return;
|
|
@@ -310,6 +311,7 @@ export default function OAuthModal({ isOpen, provider, providerInfo, onSuccess,
|
|
|
310
311
|
// Reset state and start OAuth when modal opens
|
|
311
312
|
useEffect(() => {
|
|
312
313
|
if (isOpen && provider) {
|
|
314
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- reset-on-open: clears previous flow state before starting a new OAuth flow
|
|
313
315
|
setAuthData(null);
|
|
314
316
|
setCallbackUrl("");
|
|
315
317
|
setError(null);
|
|
@@ -10,6 +10,7 @@ export default function PricingModal({ isOpen, onClose, onSave }) {
|
|
|
10
10
|
|
|
11
11
|
useEffect(() => {
|
|
12
12
|
if (isOpen) {
|
|
13
|
+
// eslint-disable-next-line react-hooks/immutability -- false positive: these are local fetch+setState helpers invoked once on effect fire (not during render); defined with const below because all invocations are deferred (effects/events), so no TDZ issue at runtime
|
|
13
14
|
loadPricing();
|
|
14
15
|
}
|
|
15
16
|
}, [isOpen]);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
/* eslint-disable @next/next/no-img-element -- dynamic/blob/external image src with onError fallback; next/image requires static dims + domain allowlist */
|
|
2
3
|
|
|
3
|
-
import {
|
|
4
|
+
import { useState } from "react";
|
|
4
5
|
import PropTypes from "prop-types";
|
|
5
6
|
|
|
6
7
|
export default function ProviderIcon({
|
|
@@ -14,10 +15,14 @@ export default function ProviderIcon({
|
|
|
14
15
|
const [errored, setErrored] = useState(false);
|
|
15
16
|
const [imageSrc, setImageSrc] = useState(src);
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
// Reset error/fallback state when `src` changes by adjusting state during
|
|
19
|
+
// render (React docs pattern) instead of an effect + extra re-render.
|
|
20
|
+
const [prevSrc, setPrevSrc] = useState(src);
|
|
21
|
+
if (prevSrc !== src) {
|
|
22
|
+
setPrevSrc(src);
|
|
18
23
|
setErrored(false);
|
|
19
24
|
setImageSrc(src);
|
|
20
|
-
}
|
|
25
|
+
}
|
|
21
26
|
|
|
22
27
|
if (!imageSrc || errored) {
|
|
23
28
|
return (
|
|
@@ -9,6 +9,7 @@ export default function RequestLogger() {
|
|
|
9
9
|
const [autoRefresh, setAutoRefresh] = useState(true);
|
|
10
10
|
|
|
11
11
|
useEffect(() => {
|
|
12
|
+
// eslint-disable-next-line react-hooks/immutability -- false positive: these are local fetch+setState helpers invoked once on effect fire (not during render); defined with const below because all invocations are deferred (effects/events), so no TDZ issue at runtime
|
|
12
13
|
fetchLogs();
|
|
13
14
|
}, []);
|
|
14
15
|
|
|
@@ -84,6 +84,7 @@ export default function Sidebar({ onClose }) {
|
|
|
84
84
|
}, []);
|
|
85
85
|
|
|
86
86
|
useEffect(() => {
|
|
87
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect -- route-driven UI sync: auto-expands the Advanced section when navigating to an advanced page; user can still collapse it
|
|
87
88
|
if (advancedActive) setAdvancedOpen(true);
|
|
88
89
|
}, [advancedActive]);
|
|
89
90
|
|