9router-imagefix 0.5.144 → 0.5.146
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/README.md +143 -215
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +12 -14
- package/app/.next-cli-build/build-manifest.json +3 -3
- package/app/.next-cli-build/prerender-manifest.json +21 -21
- package/app/.next-cli-build/required-server-files.json +4 -5
- package/app/.next-cli-build/routes-manifest.json +0 -12
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +8 -12
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +5 -5
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js +2 -2
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +2 -2
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/connections/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/connections/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/connections/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/device/poll/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/device/poll/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/device/poll/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/device/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/device/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/device/start/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/export/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/export/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/gate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/gate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/gate/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/generate-txt/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/generate-txt/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/generate-txt/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/import-lines/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/import-lines/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/import-lines/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/jobs/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/jobs/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/jobs/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/jobs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/jobs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/jobs/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/overview/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/overview/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/overview/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/providers/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/run/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/run/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/run/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/test-prompt/route.js +1 -1
- package/app/.next-cli-build/server/app/api/automation/test-prompt/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/automation/test-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +29 -5
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codewhale-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/codewhale-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codewhale-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/crush-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/crush-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/crush-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/forge-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/forge-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/forge-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +26 -2
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/omp-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/omp-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/omp-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/smelt-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/smelt-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/smelt-settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/presets/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/presets/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/presets/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/start/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/status/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/overrides/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/overrides/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/overrides/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/backup/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/backup/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/backup/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...model]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/systemone/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +7 -7
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/automation.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +7 -7
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login/page.js +1 -1
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/page.js +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +12 -14
- package/app/.next-cli-build/server/chunks/1731.js +1 -0
- package/app/.next-cli-build/server/chunks/1998.js +1 -1
- package/app/.next-cli-build/server/chunks/2132.js +1 -1
- package/app/.next-cli-build/server/chunks/2147.js +1 -0
- package/app/.next-cli-build/server/chunks/{2578.js → 2329.js} +1 -1
- package/app/.next-cli-build/server/chunks/238.js +1 -1
- package/app/.next-cli-build/server/chunks/24.js +1 -1
- package/app/.next-cli-build/server/chunks/2430.js +4 -4
- package/app/.next-cli-build/server/chunks/3535.js +1 -1
- package/app/.next-cli-build/server/chunks/3558.js +1 -1
- package/app/.next-cli-build/server/chunks/3593.js +2 -2
- package/app/.next-cli-build/server/chunks/3683.js +1 -0
- package/app/.next-cli-build/server/chunks/3943.js +1 -1
- package/app/.next-cli-build/server/chunks/3966.js +2 -2
- package/app/.next-cli-build/server/chunks/4044.js +1 -0
- package/app/.next-cli-build/server/chunks/4055.js +2 -2
- package/app/.next-cli-build/server/chunks/412.js +5 -5
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/4613.js +1 -1
- package/app/.next-cli-build/server/chunks/4730.js +3 -3
- package/app/.next-cli-build/server/chunks/4739.js +2 -2
- package/app/.next-cli-build/server/chunks/4780.js +2 -2
- package/app/.next-cli-build/server/chunks/4884.js +27 -0
- package/app/.next-cli-build/server/chunks/507.js +2 -2
- package/app/.next-cli-build/server/chunks/5217.js +2 -2
- package/app/.next-cli-build/server/chunks/5258.js +2 -2
- package/app/.next-cli-build/server/chunks/5260.js +1 -1
- package/app/.next-cli-build/server/chunks/5299.js +20 -28
- package/app/.next-cli-build/server/chunks/5330.js +9 -9
- package/app/.next-cli-build/server/chunks/5335.js +1 -1
- package/app/.next-cli-build/server/chunks/5615.js +2 -2
- package/app/.next-cli-build/server/chunks/5670.js +1 -0
- package/app/.next-cli-build/server/chunks/6070.js +1 -1
- package/app/.next-cli-build/server/chunks/615.js +1 -1
- package/app/.next-cli-build/server/chunks/6249.js +2 -2
- package/app/.next-cli-build/server/chunks/6763.js +1 -1
- package/app/.next-cli-build/server/chunks/6795.js +1 -1
- package/app/.next-cli-build/server/chunks/6818.js +1 -1
- package/app/.next-cli-build/server/chunks/6877.js +1 -1
- package/app/.next-cli-build/server/chunks/6922.js +1 -1
- package/app/.next-cli-build/server/chunks/698.js +2 -2
- package/app/.next-cli-build/server/chunks/700.js +1 -0
- package/app/.next-cli-build/server/chunks/7150.js +1 -1
- package/app/.next-cli-build/server/chunks/7153.js +1 -0
- package/app/.next-cli-build/server/chunks/7211.js +1 -1
- package/app/.next-cli-build/server/chunks/7220.js +1 -0
- package/app/.next-cli-build/server/chunks/7247.js +1 -1
- package/app/.next-cli-build/server/chunks/7525.js +1 -1
- package/app/.next-cli-build/server/chunks/7557.js +1 -1
- package/app/.next-cli-build/server/chunks/7616.js +1 -1
- package/app/.next-cli-build/server/chunks/7716.js +1 -1
- package/app/.next-cli-build/server/chunks/7828.js +1 -1
- package/app/.next-cli-build/server/chunks/7965.js +2 -2
- package/app/.next-cli-build/server/chunks/8005.js +1 -1
- package/app/.next-cli-build/server/chunks/827.js +1 -0
- package/app/.next-cli-build/server/chunks/8402.js +1 -1
- package/app/.next-cli-build/server/chunks/8416.js +1 -1
- package/app/.next-cli-build/server/chunks/{3641.js → 8499.js} +4 -8
- package/app/.next-cli-build/server/chunks/8520.js +2 -2
- package/app/.next-cli-build/server/chunks/8532.js +3 -0
- package/app/.next-cli-build/server/chunks/8635.js +1 -2
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/8895.js +5 -5
- package/app/.next-cli-build/server/chunks/8907.js +1 -0
- package/app/.next-cli-build/server/chunks/8910.js +1 -1
- package/app/.next-cli-build/server/chunks/8920.js +1 -1
- package/app/.next-cli-build/server/chunks/8967.js +1 -0
- package/app/.next-cli-build/server/chunks/9128.js +1 -0
- package/app/.next-cli-build/server/chunks/915.js +2 -2
- package/app/.next-cli-build/server/chunks/9229.js +2 -2
- package/app/.next-cli-build/server/chunks/9609.js +1 -1
- package/app/.next-cli-build/server/chunks/9718.js +1 -1
- package/app/.next-cli-build/server/chunks/9927.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +12 -12
- package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/preview-props.json +3 -3
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/JeNiwU4I8DCKmp8e-fGws/_buildManifest.js +1 -0
- package/app/.next-cli-build/static/chunks/1321-f1fc289df5b87323.js +1 -0
- package/app/.next-cli-build/static/chunks/5497-d7f72e154832bdf0.js +7 -0
- package/app/.next-cli-build/static/chunks/6192-e619092a4b4322ee.js +3 -0
- package/app/.next-cli-build/static/chunks/{761-c9086970fe03f4a1.js → 761-e9b6cac333988ecf.js} +18 -26
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-a62ee92496ec9b50.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-e6459a62eaccc98a.js → page-e2d54f7276df5cc6.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-b6155aa6236f017d.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-1becf050fbd060b7.js → page-83dd1a0cd9727650.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-ca65ed1d064100f8.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-50ac4d6838787e6f.js → page-cd6c0582b5669bc0.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-389565a5031d8567.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-c566eb267d9f7f9b.js → page-03da39b881470c70.js} +11 -15
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-9ad5df38ff8c0f31.js → page-82cefe332f93798b.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-d1028eedd004d698.js → page-8285f95db903e99a.js} +2 -2
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-c7bd46a65d222b83.js → page-c5d691a0e93c8d33.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-5b4ff58f676e7a57.js → page-3a00d92bdb15b682.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-d0f0779baa1fce23.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-03836fce18889089.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-976fe28aafc1f48b.js +27 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-10a096b2d28d6adc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-407132614e8bc7da.js → page-59290aa99bc89a35.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-c194199b158e7630.js +4 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/page-a093f983a75198fa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-e2f03d354562d0c3.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/{page-3f686bcf6cfd259c.js → page-5d409830ead0e1a7.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-ff5bfef3a1bf2707.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-cfbd343f049abf36.js → page-7959b3bf0fbb988a.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-212b397072db4c7d.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-92a8397b9cbc49d1.js → layout-c6f71557fbd79106.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/_not-found/page-8a7ca5d7e601b968.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/connections/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/device/poll/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/device/start/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/export/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/gate/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/generate-txt/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/import-lines/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/jobs/[id]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/jobs/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/overview/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/providers/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/run/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/automation/test-prompt/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codewhale-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-profiles/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/crush-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/forge-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/omp-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/smelt-settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/presets/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/catalog-sync/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/login/start/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/login/status/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/overrides/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/claude-reset/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/backup/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[...model]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/systemone/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/callback/page-02af401f9d2b8b84.js +1 -0
- package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-fa7edddf50ac0e74.js +1 -0
- package/app/.next-cli-build/static/chunks/app/landing/page-e693f695308b9715.js +1 -0
- package/app/.next-cli-build/static/chunks/app/{layout-3d49e40fc8d8cacd.js → layout-2fac2cdc1fedc23c.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/login/{page-fd7a99bb9330b562.js → page-fec0d16f4876d5d8.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/{main-app-351d7626fb9f72a6.js → main-app-d46170adc33b3938.js} +1 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/global-error-b10cedea4d9636e6.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-0ac4b40b0e422dd4.js +1 -0
- package/app/.next-cli-build/static/css/7467f33ff02b82a7.css +1 -0
- package/app/package.json +68 -71
- package/app/server.js +1 -1
- package/app/src/mitm/server.js +3 -3
- package/app/src/shared/services/quotaAutoPing.js +25 -57
- package/cli.js +1053 -1056
- package/package.json +48 -51
- package/src/cli/api/client.js +4 -17
- package/src/cli/commands/connect.js +269 -409
- package/src/cli/commands/connectTools.js +338 -558
- package/src/cli/menus/cliTools.js +17 -116
- package/src/cli/menus/combos.js +2 -9
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-profiles/route.js +0 -45
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-profiles/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-profiles/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/netlify-deploy/route.js +0 -68
- package/app/.next-cli-build/server/app/api/proxy-pools/netlify-deploy/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/netlify-deploy/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/chunks/1757.js +0 -45
- package/app/.next-cli-build/server/chunks/2365.js +0 -1
- package/app/.next-cli-build/server/chunks/2533.js +0 -1
- package/app/.next-cli-build/server/chunks/2809.js +0 -1
- package/app/.next-cli-build/server/chunks/3618.js +0 -5
- package/app/.next-cli-build/server/chunks/410.js +0 -1
- package/app/.next-cli-build/server/chunks/4957.js +0 -1
- package/app/.next-cli-build/server/chunks/5546.js +0 -1
- package/app/.next-cli-build/server/chunks/6724.js +0 -1
- package/app/.next-cli-build/server/chunks/6969.js +0 -1
- package/app/.next-cli-build/server/chunks/7066.js +0 -1
- package/app/.next-cli-build/server/chunks/8251.js +0 -1
- package/app/.next-cli-build/server/chunks/8276.js +0 -1
- package/app/.next-cli-build/server/chunks/9100.js +0 -27
- package/app/.next-cli-build/server/chunks/936.js +0 -1
- package/app/.next-cli-build/server/chunks/9659.js +0 -1
- package/app/.next-cli-build/server/chunks/9696.js +0 -7
- package/app/.next-cli-build/static/KowzXHpnH9DhxUO_ZLAot/_buildManifest.js +0 -1
- package/app/.next-cli-build/static/chunks/1321-a339b4f1740051ce.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-e31d3044590886be.js +0 -7
- package/app/.next-cli-build/static/chunks/8783-3428d5d70efdc129.js +0 -5
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/page-3abd55282648197d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-690bc2d9b442bd39.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-f35f73e7d7c4fc5b.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-e9b97134420d788f.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-e681eb4fae8a6109.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-1fe8a388ed68c3b8.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e44deb80a6388751.js +0 -27
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-06fbb7eea0e460ec.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-4703b14c963fe906.js +0 -4
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/page-df7b8b3a90e2d439.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-56bda37b918d9415.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-707bc4a40e7e6e1f.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-57e3f535340e0bf1.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_not-found/page-ce24efa248b68919.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/connections/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/device/poll/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/device/start/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/export/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/gate/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/generate-txt/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/import-lines/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/jobs/[id]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/jobs/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/overview/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/providers/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/run/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/automation/test-prompt/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codewhale-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-profiles/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/crush-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/forge-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-profiles/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/omp-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/smelt-settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/presets/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/catalog-sync/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/login/start/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/login/status/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/overrides/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/netlify-deploy/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/claude-reset/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/backup/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[...model]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/systemone/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/callback/page-3b1cb2b5e376c88d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-da1f3d2fb1b50dd9.js +0 -1
- package/app/.next-cli-build/static/chunks/app/landing/page-7f3d45d15c4ae83d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/global-error-97ea42b332c01c15.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-799d367b1ee270b5.js +0 -1
- package/app/.next-cli-build/static/css/bf34d1b2f3f362c1.css +0 -1
- package/app/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js +0 -131
- package/app/node_modules/@aws/lambda-invoke-store/package.json +0 -55
- package/app/node_modules/@aws-sdk/core/client.js +0 -5
- package/app/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +0 -984
- package/app/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +0 -358
- package/app/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +0 -2949
- package/app/node_modules/@aws-sdk/core/httpAuthSchemes.js +0 -5
- package/app/node_modules/@aws-sdk/core/package.json +0 -146
- package/app/node_modules/@aws-sdk/core/protocols.js +0 -5
- package/app/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js +0 -202
- package/app/node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/loadCognitoIdentity-v413cIIq.js +0 -4
- package/app/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json +0 -59
- package/app/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +0 -39
- package/app/node_modules/@aws-sdk/credential-provider-env/package.json +0 -63
- package/app/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js +0 -179
- package/app/node_modules/@aws-sdk/credential-provider-http/package.json +0 -75
- package/app/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +0 -229
- package/app/node_modules/@aws-sdk/credential-provider-ini/package.json +0 -73
- package/app/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js +0 -290
- package/app/node_modules/@aws-sdk/credential-provider-login/package.json +0 -66
- package/app/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +0 -166
- package/app/node_modules/@aws-sdk/credential-provider-node/package.json +0 -71
- package/app/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +0 -76
- package/app/node_modules/@aws-sdk/credential-provider-process/package.json +0 -63
- package/app/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +0 -192
- package/app/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BGYXHf8s.js +0 -3
- package/app/node_modules/@aws-sdk/credential-provider-sso/package.json +0 -67
- package/app/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +0 -58
- package/app/node_modules/@aws-sdk/credential-provider-web-identity/package.json +0 -71
- package/app/node_modules/@aws-sdk/credential-providers/dist-cjs/index.js +0 -284
- package/app/node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts-C4jOcYxJ.js +0 -3
- package/app/node_modules/@aws-sdk/credential-providers/package.json +0 -85
- package/app/node_modules/@aws-sdk/nested-clients/cognito-identity.js +0 -5
- package/app/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +0 -626
- package/app/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +0 -595
- package/app/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +0 -473
- package/app/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +0 -686
- package/app/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +0 -889
- package/app/node_modules/@aws-sdk/nested-clients/package.json +0 -121
- package/app/node_modules/@aws-sdk/nested-clients/signin.js +0 -5
- package/app/node_modules/@aws-sdk/nested-clients/sso-oidc.js +0 -5
- package/app/node_modules/@aws-sdk/nested-clients/sso.js +0 -5
- package/app/node_modules/@aws-sdk/nested-clients/sts.js +0 -5
- package/app/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js +0 -155
- package/app/node_modules/@aws-sdk/signature-v4-multi-region/package.json +0 -60
- package/app/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +0 -158
- package/app/node_modules/@aws-sdk/token-providers/package.json +0 -69
- package/app/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +0 -372
- package/app/node_modules/@aws-sdk/xml-builder/package.json +0 -63
- package/app/node_modules/@smithy/core/cbor.js +0 -5
- package/app/node_modules/@smithy/core/checksum.js +0 -5
- package/app/node_modules/@smithy/core/client.js +0 -5
- package/app/node_modules/@smithy/core/config.js +0 -5
- package/app/node_modules/@smithy/core/dist-cjs/index.js +0 -344
- package/app/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +0 -2550
- package/app/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.js +0 -577
- package/app/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +0 -1200
- package/app/node_modules/@smithy/core/dist-cjs/submodules/config/index.js +0 -779
- package/app/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +0 -879
- package/app/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +0 -924
- package/app/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +0 -2791
- package/app/node_modules/@smithy/core/dist-cjs/submodules/retry/index.js +0 -848
- package/app/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +0 -709
- package/app/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +0 -1765
- package/app/node_modules/@smithy/core/dist-cjs/submodules/transport/index.js +0 -189
- package/app/node_modules/@smithy/core/endpoints.js +0 -5
- package/app/node_modules/@smithy/core/event-streams.js +0 -5
- package/app/node_modules/@smithy/core/package.json +0 -259
- package/app/node_modules/@smithy/core/protocols.js +0 -5
- package/app/node_modules/@smithy/core/retry.js +0 -5
- package/app/node_modules/@smithy/core/schema.js +0 -5
- package/app/node_modules/@smithy/core/serde.js +0 -5
- package/app/node_modules/@smithy/core/transport.js +0 -5
- package/app/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +0 -370
- package/app/node_modules/@smithy/credential-provider-imds/package.json +0 -57
- package/app/node_modules/@smithy/node-http-handler/dist-cjs/index.js +0 -859
- package/app/node_modules/@smithy/node-http-handler/package.json +0 -56
- package/app/node_modules/@smithy/signature-v4/dist-cjs/index.js +0 -585
- package/app/node_modules/@smithy/signature-v4/package.json +0 -53
- package/app/node_modules/@smithy/types/dist-cjs/index.js +0 -96
- package/app/node_modules/@smithy/types/package.json +0 -50
- package/app/node_modules/bowser/es5.js +0 -1
- package/app/node_modules/bowser/package.json +0 -93
- package/app/public/providers/bedrock-xai.png +0 -0
- package/app/public/providers/bedrock.png +0 -0
- package/app/public/providers/nous.png +0 -0
- package/src/cli/commands/show.js +0 -101
- package/src/cli/utils/comboModelId.js +0 -10
- /package/app/.next-cli-build/static/{KowzXHpnH9DhxUO_ZLAot → JeNiwU4I8DCKmp8e-fGws}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8593],{64881:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>I});var s=a(95155),n=a(12115),r=a(35497);function l({onUnlock:e}){let[t,a]=(0,n.useState)(""),[i,o]=(0,n.useState)(""),[d,c]=(0,n.useState)(!1),[u,x]=(0,n.useState)(0),m=async s=>{if(s.preventDefault(),t&&!d){c(!0),o("");try{let s=await fetch("/api/automation/gate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:t})}),n=await s.json().catch(()=>({}));if(!s.ok){o(n?.error||`Gagal membuka (HTTP ${s.status})`),a(""),x(e=>e+1);return}e()}catch(e){o(e.message||"Tidak bisa menghubungi server")}finally{c(!1)}}};return(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-md flex-col gap-4 py-10",children:[(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("span",{className:"material-symbols-outlined mt-0.5 text-[22px] text-primary","aria-hidden":"true",children:"lock"}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-lg font-semibold text-text-main",children:"Automation"}),(0,s.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Halaman ini bisa menambah akun provider dan mengekspor kredensialnya ke berkas. Masukkan password automation untuk melanjutkan."})]})]}),(0,s.jsxs)("form",{onSubmit:m,className:"flex flex-col gap-3",children:[(0,s.jsx)(r.pd,{label:"Password",id:"automation-password",type:"password",value:t,onChange:e=>a(e.target.value),placeholder:"••••••••",autoComplete:"off",disabled:d,autoFocus:!0,"aria-invalid":i?"true":void 0,"aria-describedby":i?"automation-password-error":void 0},u),i?(0,s.jsx)("p",{id:"automation-password-error",role:"alert",className:"text-xs font-medium text-error",children:i}):null,(0,s.jsx)(r.$n,{type:"submit",disabled:d||!t,children:d?"Memeriksa…":"Buka"})]})]})}function i({onPick:e}){let[t,a]=(0,n.useState)(null),[r,l]=(0,n.useState)("");if((0,n.useEffect)(()=>{let e=!1;return fetch("/api/automation/overview",{cache:"no-store"}).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{e||a(t.providers||[])}).catch(t=>{e||l(t.message||"Gagal memuat provider")}),()=>{e=!0}},[]),r)return(0,s.jsx)("p",{role:"alert",className:"rounded-lg border border-error/20 bg-error/10 px-3 py-2 text-xs font-medium text-error",children:r});if(!t)return(0,s.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","aria-busy":"true",children:[0,1,2,3,4,5].map(e=>(0,s.jsx)("div",{className:"h-32 animate-pulse rounded-[14px] bg-border-subtle/60"},e))});let d=t.reduce((e,t)=>e+t.counts.total,0);return(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("h2",{className:"text-sm font-medium text-text-main",children:"Pilih provider"}),(0,s.jsxs)("p",{className:"text-xs text-text-muted",children:[d," akun di ",t.length," provider. Membuka salah satu akan menampilkan fitur yang tersedia untuknya."]})]}),(0,s.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:t.map(t=>(0,s.jsxs)("button",{type:"button",onClick:()=>e(t.id),className:"group flex flex-col gap-3 rounded-[14px] border border-border bg-surface p-4 text-left transition-colors hover:border-primary/40 hover:bg-bg-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:[(0,s.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("div",{className:"truncate text-sm font-semibold text-text-main",children:t.label}),(0,s.jsx)("div",{className:"truncate font-mono text-[10px] text-text-subtle",children:t.source})]}),(0,s.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[18px] text-text-subtle transition-colors group-hover:text-primary","aria-hidden":"true",children:"chevron_right"})]}),(0,s.jsxs)("div",{className:"flex items-baseline gap-3",children:[(0,s.jsx)("span",{className:"tabular-nums text-2xl font-semibold text-text-main",children:t.counts.total}),(0,s.jsx)("span",{className:"text-xs text-text-muted",children:"akun"})]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs",children:[(0,s.jsxs)("span",{className:"text-success",children:[t.counts.active," aktif"]}),t.counts.problem>0?(0,s.jsxs)("span",{className:"text-error",children:[t.counts.problem," bermasalah"]}):null,t.counts.unknown>0?(0,s.jsxs)("span",{className:"text-text-subtle",children:[t.counts.unknown," perlu ditinjau"]}):null]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-1",children:[t.kinds.quota?(0,s.jsx)(o,{children:"Cek kuota"}):null,t.kinds.test?(0,s.jsx)(o,{children:"Tes koneksi"}):null,t.kinds.prompt?(0,s.jsx)(o,{children:"Tes prompt"}):null,"device"===t.kinds.calls?(0,s.jsx)(o,{children:"Login device"}):null]})]},t.id))})]})}function o({children:e}){return(0,s.jsx)("span",{className:"rounded-md bg-bg-subtle px-1.5 py-0.5 text-[10px] font-medium text-text-muted",children:e})}let d="automation:activeJob",c={quota:"Cek kuota",test:"Test koneksi",delete:"Hapus akun",refresh:"Refresh token",verify:"Verifikasi key",deactivate:"Nonaktifkan akun"};function u({job:e}){if(!e||"idle"===e.status)return null;let t=e.total>0?Math.round(e.done/e.total*100):0,a="running"===e.status;return(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[14px] border border-border bg-surface p-4",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,s.jsxs)("p",{className:"text-sm font-medium text-text-main",children:[c[e.kind]||e.label||"Memproses",(0,s.jsxs)("span",{className:"ml-2 tabular-nums text-text-muted",children:[e.done,"/",e.total]})]}),a?(0,s.jsx)(r.$n,{size:"sm",variant:"ghost",onClick:e.cancel,children:"Hentikan"}):(0,s.jsx)("span",{className:"text-xs text-text-muted",children:"cancelled"===e.status?"Dihentikan":"Selesai"})]}),(0,s.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":t,"aria-label":"Kemajuan",className:"h-1.5 w-full overflow-hidden rounded-full bg-surface-3",children:(0,s.jsx)("div",{className:"h-full rounded-full bg-primary transition-[width] duration-300 ease-out",style:{width:`${t}%`}})}),(0,s.jsxs)("p",{className:"text-xs text-text-muted",children:[(0,s.jsxs)("span",{className:"text-success",children:[e.ok," berhasil"]}),e.failed>0?(0,s.jsxs)(s.Fragment,{children:[" \xb7 ",(0,s.jsxs)("span",{className:"text-error",children:[e.failed," gagal"]})]}):null,e.error?` \xb7 ${e.error}`:""]})]})}function x({connection:e,onClose:t}){let[a,l]=(0,n.useState)("Balas dalam satu kalimat singkat: siapa kamu dan model apa ini?"),[i,o]=(0,n.useState)(e?.model||""),[d,c]=(0,n.useState)(200),[u,m]=(0,n.useState)(!1),[p,h]=(0,n.useState)(null),[b,f]=(0,n.useState)(""),g=async()=>{m(!0),f(""),h(null);try{let t=await fetch("/api/automation/test-prompt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionId:e.id,prompt:a,model:i||void 0,maxTokens:Number(d)||200})}),s=await t.json().catch(()=>({}));if(!t.ok)return void f(s?.error||`HTTP ${t.status}`);h(s)}catch(e){f(e.message||"Permintaan gagal")}finally{m(!1)}};return(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-black/40 p-0 sm:items-center sm:p-4",role:"dialog","aria-modal":"true","aria-label":"Tes prompt",onClick:e=>{e.target===e.currentTarget&&t()},children:(0,s.jsxs)("div",{className:"flex max-h-[90vh] w-full max-w-2xl flex-col gap-4 overflow-y-auto rounded-t-[14px] bg-bg p-5 sm:rounded-[14px]",children:[(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Tes prompt"}),(0,s.jsx)("p",{className:"mt-0.5 truncate font-mono text-xs text-text-muted",children:e.email||e.name||e.id})]}),(0,s.jsx)("button",{type:"button",onClick:t,"aria-label":"Tutup",className:"shrink-0 rounded-md p-1 text-text-muted transition-colors hover:bg-bg-hover hover:text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:"close"})})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row",children:[(0,s.jsx)("div",{className:"flex-1",children:(0,s.jsx)(r.pd,{label:"Model (opsional)",value:i,onChange:e=>o(e.target.value),placeholder:"kosongkan = model bawaan"})}),(0,s.jsx)("div",{className:"sm:w-32",children:(0,s.jsx)(r.pd,{label:"Max token",type:"number",value:d,onChange:e=>c(e.target.value)})})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,s.jsx)("label",{htmlFor:"tp-prompt",className:"text-sm font-medium text-text-main",children:"Prompt"}),(0,s.jsx)("textarea",{id:"tp-prompt",value:a,onChange:e=>l(e.target.value),disabled:u,className:"min-h-[80px] w-full resize-y rounded-[10px] border border-border bg-surface-2 p-3 text-sm text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45 disabled:opacity-50"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(r.$n,{onClick:g,disabled:u||!a.trim(),loading:u,icon:"send",children:"Kirim"}),p?(0,s.jsxs)("span",{className:"tabular-nums text-xs text-text-muted",children:[p.elapsedMs," ms \xb7 ",p.servedModel||"—"]}):null]}),b?(0,s.jsx)("p",{role:"alert",className:"rounded-lg border border-error/20 bg-error/10 px-3 py-2 text-xs font-medium text-error",children:b}):null,p&&!p.ok?(0,s.jsxs)("div",{className:"rounded-lg border border-error/20 bg-error/10 px-3 py-2",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-error",children:["HTTP ",p.status]}),(0,s.jsx)("p",{className:"mt-1 break-words text-xs text-text-main",children:p.error})]}):null,p?.ok?(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)("div",{className:"whitespace-pre-wrap break-words rounded-[10px] border border-border bg-surface p-3 text-sm text-text-main",children:p.reply||"(balasan kosong)"}),p.usage?(0,s.jsx)("p",{className:"tabular-nums text-xs text-text-muted",children:[null!=p.usage.prompt_tokens?`${p.usage.prompt_tokens} in`:null,null!=p.usage.completion_tokens?`${p.usage.completion_tokens} out`:null].filter(Boolean).join(" \xb7 ")}):null]}):null]})})}var m=a(11059);function p(e){let t=e?.providerSpecificData?.nodeName;return t&&t!==e.provider&&!/^openai-compatible-chat-/.test(t)?t:e?.provider||e?.providerLabel||"?"}let h={mati:"MATI (kredensial ditolak)",limit:"LIMIT (429 laju)",error:"ERROR (jaringan/server)",expired:"EXPIRED (token kedaluwarsa)"};function b({providerId:e,info:t,rows:a=[],visible:n=[],scanResults:l=[],running:i,runOp:o,onDelete:d,onChanged:c}){let u=t?.kinds||{};return u.selective||u.refresh||u.verify||u.cleanup||u.patternDelete||u.blocked||u.expiryOps||u.inactive||u.deviceBulk||t?.script||"antigravity"===e||"kiro"===e?(0,s.jsxs)("div",{className:"flex flex-col gap-3 rounded-[14px] border border-border bg-surface p-4",children:[(0,s.jsxs)("h3",{className:"text-xs font-semibold uppercase tracking-wide text-text-subtle",children:["Operasi ",t?.label||e]}),t?.script?(0,s.jsx)(f,{info:t}):null,u.deviceBulk?(0,s.jsx)(g,{providerId:e,onChanged:c}):null,u.selective?(0,s.jsx)(v,{rows:n.length?n:a,running:i,runOp:o}):null,"antigravity"===e?(0,s.jsx)(k,{scanResults:l,running:i,onDelete:d}):null,"kiro"===e?(0,s.jsx)(N,{scanResults:l}):null,u.refresh?(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"autorenew",disabled:i||!a?.length,onClick:()=>o("refresh").then(e=>e&&c?.()),title:"Perbarui access token semua akun provider ini tanpa login ulang (menu 6 skrip cline)",children:"Refresh token"}),(0,s.jsx)("span",{className:"text-[11px] text-text-subtle",children:"Tanpa login ulang; token mati dilaporkan per akun."})]}):null,u.verify?(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"verified",disabled:i||!a?.length,onClick:()=>o("verify"),title:"Uji setiap key dengan inferensi nyata — 401/402/429 dibedakan (check_key_quota_live)",children:"Verifikasi key"}),(0,s.jsx)("span",{className:"text-[11px] text-text-subtle",children:"Inferensi nyata per key: valid / ditolak / habis / laju."})]}):null,u.cleanup?(0,s.jsx)(w,{rows:a,running:i,onDelete:d}):null,u.blocked?(0,s.jsx)(S,{rows:a,running:i,onDelete:d}):null,u.patternDelete?(0,s.jsx)(C,{rows:n.length?n:a,running:i,onDelete:d}):null,u.expiryOps?(0,s.jsx)(T,{rows:a,running:i,runOp:o,onDelete:d,onChanged:c}):null,u.inactive?(0,s.jsx)($,{rows:a,running:i,onDelete:d}):null,(0,s.jsx)(M,{providerId:e,accountsFile:t?.script?.accountsFile})]}):null}function f({info:e}){let t=e?.script,[a,l]=(0,n.useState)(!1),{copied:i,copy:o}=(0,m.C)();return t?(0,s.jsxs)("details",{className:"rounded-[10px] border border-border-subtle bg-bg-subtle/50",open:!0,children:[(0,s.jsx)("summary",{className:"cursor-pointer px-3 py-2 text-xs font-medium text-text-main",children:"Tambah akun baru via script — salin perintah, jalan lokal"}),(0,s.jsxs)("div",{className:"flex flex-col gap-2 px-3 pb-3",children:[(0,s.jsxs)("ol",{className:"flex list-decimal flex-col gap-1 pl-5 text-[11px] text-text-muted",children:[(0,s.jsxs)("li",{children:["Buat berkas ",(0,s.jsx)("code",{className:"font-mono text-text-main",children:t.accountsFile})," di bawah (paste email + 1 password → Unduh) — bentuk ",(0,s.jsx)("code",{className:"font-mono text-text-main",children:t.format}),"."]}),(0,s.jsxs)("li",{children:["Jalankan di terminal, di folder scriptnya (",(0,s.jsx)("code",{className:"font-mono text-text-main",children:"C:\\Users\\Developer\\cliproxyapi"}),"):"]})]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-lg border border-border bg-surface px-2 py-1.5",children:[(0,s.jsx)("code",{className:"min-w-0 flex-1 break-all font-mono text-[11px] text-text-main",children:t.command}),(0,s.jsxs)("button",{type:"button",onClick:()=>o(t.command,"script-cmd"),className:"flex shrink-0 items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] font-medium text-text-muted transition-colors hover:bg-bg-hover hover:text-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[13px]","aria-hidden":"true",children:"script-cmd"===i?"check":"content_copy"}),"script-cmd"===i?"Tersalin":"Salin"]})]}),t.extra?(0,s.jsxs)("p",{className:"text-[11px] text-text-subtle",children:["Flag berguna: ",(0,s.jsx)("code",{className:"font-mono",children:t.extra})]}):null,(0,s.jsx)("ol",{className:"flex list-decimal flex-col gap-1 pl-5 text-[11px] text-text-muted",start:3,children:(0,s.jsx)("li",{children:"Script membuka browser dan login otomatis per akun. Setelah selesai, tekan Muat ulang — akun yang dipanen langsung muncul di tabel bawah (DB-nya sama, tanpa impor ulang)."})}),(0,s.jsx)("div",{className:"flex items-center gap-2",children:(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"refresh",onClick:()=>{window.location.reload(),l(!0)},children:a?"Memuat…":"Muat ulang"})})]})]}):null}function g({providerId:e,onChanged:t}){let[a,l]=(0,n.useState)(3),[i,o]=(0,n.useState)("idle"),[d,c]=(0,n.useState)(null),[u,x]=(0,n.useState)([]),[p,h]=(0,n.useState)(0),[b,f]=(0,n.useState)(""),[v,j]=(0,n.useState)(()=>Date.now()),k=(0,n.useRef)(0),N=(0,n.useRef)(!1),y=(0,n.useRef)(null),{copied:w,copy:S}=(0,m.C)(),C=u.length+p+1;(0,n.useEffect)(()=>()=>{N.current=!0,y.current&&clearTimeout(y.current)},[]),(0,n.useEffect)(()=>{if("waiting"!==i)return;let e=setInterval(()=>j(Date.now()),1e3);return()=>clearInterval(e)},[i]);let T=async()=>{let t=await fetch("/api/automation/device/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e})}),a=await t.json().catch(()=>({}));if(!t.ok)throw Error(a?.error||`HTTP ${t.status}`);let s=a.verificationUriComplete||a.verificationUri;return s&&window.open(s,"_blank","noopener,noreferrer"),{deviceCode:a.deviceCode,codeVerifier:a.codeVerifier,extraData:a.extraData,userCode:a.userCode,verificationUri:a.verificationUri,verificationUriComplete:a.verificationUriComplete,interval:a.interval||5,deadline:Date.now()+(a.expiresIn?1e3*a.expiresIn:9e5)}},$=(a,s)=>new Promise(n=>{let r=null,l=e=>{y.current&&clearTimeout(y.current),n(e)},i=async()=>{if(N.current||k.current!==a)return l("stopped");if(!r){try{r=await T()}catch(e){if(k.current!==a||N.current)return l("stopped");return f(e?.message||"Gagal meminta kode"),l("stopped")}if(k.current!==a||N.current)return l("stopped");c({...r,index:s}),f("")}let n={};try{let t=await fetch("/api/automation/device/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,deviceCode:r.deviceCode,codeVerifier:r.codeVerifier,extraData:r.extraData})});n=await t.json().catch(()=>({}))}catch{if(k.current!==a||N.current)return l("stopped");y.current=setTimeout(i,5e3);return}return k.current!==a||N.current?l("stopped"):n.success?(x(e=>[...e,n.connection]),t?.(),l("ok")):n.pending?Date.now()>r.deadline?(f("Waktu habis — kode kedaluwarsa. Antrean berhenti di sini."),l("stopped")):void(y.current=setTimeout(i,1e3*(r.interval||5))):(f(n.errorDescription||n.error||"Gagal menukar token"),l("stopped"))};i()}),M=async()=>{let e=Math.max(1,Math.min(50,Number(a)||1)),t=k.current+1;k.current=t,N.current=!1,x([]),h(0),f(""),c(null),o("waiting");for(let a=0;a<e&&"ok"===await $(t,a+1);a++);c(null),o("done")},D="waiting"===i,_=d?.deadline?Math.max(0,Math.floor((d.deadline-v)/1e3)):0;return(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Tambah bulk via device",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"sepenuhnya via web — kamu yang menyetujui di browser"})]}),"idle"===i||"done"===i?(0,s.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-end",children:[(0,s.jsx)("div",{className:"w-32",children:(0,s.jsx)(r.pd,{label:"Jumlah akun",type:"number",value:a,onChange:e=>l(e.target.value),disabled:D})}),(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"login",disabled:D,onClick:M,children:"Mulai antrean"}),u.length>0||p>0?(0,s.jsxs)("span",{className:"pb-2 text-[11px] tabular-nums text-text-muted",children:["Terakhir: ",u.length," tersimpan",p?`, ${p} dilewati`:"","."]}):null]}):null,b?(0,s.jsx)("p",{role:"alert",className:"text-[11px] font-medium text-error",children:b}):null,D&&d?(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-border bg-surface p-3",children:[(0,s.jsxs)("p",{className:"text-[11px] tabular-nums text-text-muted",children:["Akun ",d.index||C," — setujui di browser, lalu otomatis lanjut.",_>0?` Kode kedaluwarsa dalam ${Math.floor(_/60)}:${String(_%60).padStart(2,"0")}.`:""]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)("code",{className:"rounded-lg bg-bg-subtle px-3 py-1.5 font-mono text-base font-semibold tracking-wider text-text-main",children:d.userCode||"—"}),(0,s.jsxs)("button",{type:"button",onClick:()=>S(d.userCode||"","bulk-code"),className:"flex items-center gap-1 rounded-lg border border-border px-2 py-1.5 text-xs font-medium text-text-muted transition-colors hover:bg-bg-hover hover:text-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[15px]","aria-hidden":"true",children:"bulk-code"===w?"check":"content_copy"}),"bulk-code"===w?"Tersalin":"Salin"]}),d.verificationUri?(0,s.jsx)("a",{href:d.verificationUriComplete||d.verificationUri,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary underline decoration-dotted underline-offset-2",children:"Buka verifikasi"}):null]}),(0,s.jsxs)("p",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,s.jsx)("span",{className:"size-1.5 animate-pulse rounded-full bg-primary","aria-hidden":"true"}),"Menunggu persetujuan… (tab verifikasi sudah dibuka otomatis)"]}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(r.$n,{size:"sm",variant:"ghost",onClick:()=>{k.current+=1,y.current&&clearTimeout(y.current),h(e=>e+1),c(null),f(""),(async()=>{let e=k.current,t=u.length+p+1;"ok"!==await $(e,t)&&(c(null),o("done"))})()},children:"Lewati akun ini"}),(0,s.jsx)(r.$n,{size:"sm",variant:"ghost",onClick:()=>{N.current=!0,k.current+=1,y.current&&clearTimeout(y.current),c(null),o("done")},children:"Hentikan antrean"})]})]}):null,"done"!==i||D?null:(0,s.jsxs)("p",{className:"rounded-lg border border-success/20 bg-success/10 px-3 py-2 text-xs font-medium text-success",children:["Selesai: ",u.length," akun tersimpan",p?`, ${p} dilewati`:"",". Tabel di bawah sudah dimuat ulang."]})]})}function v({rows:e,running:t,runOp:a}){let[l,i]=(0,n.useState)(""),[o,d]=(0,n.useState)(""),c=(0,n.useMemo)(()=>l.trim()?function(e,t){let a=Array.isArray(e)?e:[],s=String(t||"").trim().toLowerCase();if(!s||"all"===s)return a;let n=new Set;for(let e of s.split(",").map(e=>e.trim()).filter(Boolean))if(e.includes("-")){let[t,s]=e.split("-",2).map(e=>Number(e.trim()));if(!Number.isFinite(t)||!Number.isFinite(s))continue;let r=Math.max(1,Math.min(t,s)),l=Math.min(a.length,Math.max(t,s));for(let e=r;e<=l;e++)n.add(e-1)}else{let t=Number(e);Number.isFinite(t)&&t>=1&&t<=a.length&&n.add(t-1)}return[...n].sort((e,t)=>e-t).map(e=>a[e])}(e,l):null,[e,l]),u=e=>{if(d(""),!l.trim())return void d("Isi dulu nomornya — kosong berarti semua (pakai tombol di atas).");let t=(c||[]).map(e=>e.id);t.length?a(e,{ids:t}):d("Tidak ada nomor valid yang cocok.")};return(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Cek akun tertentu",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"menu 5 skrip: nomor, koma, rentang, atau all"})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-end",children:[(0,s.jsx)("div",{className:"flex-1",children:(0,s.jsx)(r.pd,{value:l,onChange:e=>i(e.target.value),placeholder:"mis. 50 \xb7 1, 5, 12 \xb7 1-10 \xb7 all",disabled:t})}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",disabled:t||!e?.length,onClick:()=>u("quota"),children:"Kuota pilihan"}),(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",disabled:t||!e?.length,onClick:()=>u("test"),children:"Tes pilihan"})]})]}),c?(0,s.jsxs)("p",{className:"text-[11px] tabular-nums text-text-muted",children:[c.length," dari ",e.length," akun cocok."]}):null,o?(0,s.jsx)("p",{role:"alert",className:"text-[11px] font-medium text-error",children:o}):null]})}let j=[{value:"claude",label:"Claude & GPT 0%"},{value:"gemini",label:"Gemini 0%"},{value:"both",label:"Keduanya 0%"}];function k({scanResults:e,running:t,onDelete:a}){let[l,i]=(0,n.useState)("both"),o=(0,n.useMemo)(()=>(function(e,t){let a=[];for(let s of Array.isArray(e)?e:[]){if(!s)continue;let e=s.groups||{},n="number"==typeof e.claudeGpt&&e.claudeGpt<1,r="number"==typeof e.gemini&&e.gemini<1;("claude"===t?n:"gemini"===t?r:n&&r)&&a.push({...s,deleteReason:"claude"===t?"Claude & GPT habis (< 1%)":"gemini"===t?"Gemini habis (< 1%)":"Keduanya habis (< 1%)"})}return a})(e,l),[e,l]);if(!e?.length)return null;let d=j.find(e=>e.value===l)?.label||l;return(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Hapus kuota 0% per grup",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"menu 7 skrip ag — dari hasil pindaian terakhir"})]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)("div",{className:"flex gap-1",role:"group","aria-label":"Kriteria grup",children:j.map(e=>(0,s.jsx)("button",{type:"button",onClick:()=>i(e.value),"aria-pressed":l===e.value,className:`h-7 shrink-0 rounded-[8px] px-2.5 text-[11px] font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45 ${l===e.value?"bg-primary-strong text-white":"bg-surface-2 text-text-muted hover:text-text-main"}`,children:e.label},e.value))}),(0,s.jsxs)(r.$n,{size:"sm",variant:"danger",icon:"delete_sweep",disabled:t||!o.length,onClick:()=>{confirm(`Hapus permanen ${o.length} akun (${d})?`)&&a(o.map(e=>e.id))},children:["Hapus ",o.length," akun"]})]})]})}function N({scanResults:e}){let t=(0,n.useMemo)(()=>{let t=(e||[]).filter(e=>e?.pool&&Number.isFinite(e.pool.total)&&e.pool.total>0);if(!t.length)return null;let a=t.reduce((e,t)=>e+t.pool.used,0),s=t.reduce((e,t)=>e+t.pool.total,0);return{used:a,total:s,remaining:Math.max(0,s-a),accounts:t.length}},[e]);if(!t)return null;let a=t.total>0?Math.round(t.remaining/t.total*100):0;return(0,s.jsxs)("p",{className:"rounded-[10px] border border-border-subtle bg-bg-subtle/50 px-3 py-2 text-xs tabular-nums text-text-main",children:["Total pool kuota: ",(0,s.jsx)("strong",{children:t.remaining.toLocaleString("en-US")})," / ",t.total.toLocaleString("en-US")," tersisa",(0,s.jsxs)("span",{className:"ml-2 text-text-muted",children:["(",a,"% \xb7 ",t.accounts," akun terbaca)"]})]})}let y=["mati","limit","error","expired"];function w({rows:e,running:t,onDelete:a}){let[l,i]=(0,n.useState)("mati"),o=(0,n.useMemo)(()=>(function(e,t,a=Date.now()){let s=[];for(let n of e||[])(function(e,t=Date.now()){if(!e)return null;let a=e.expiresAt?Date.parse(e.expiresAt):0/0;return Number.isFinite(a)&&a<=t?"expired":"invalid"===e.errorState?"mati":"rate_limited"===e.errorState?"limit":"transient"===e.errorState||"other"===e.errorState?"error":null})(n,a)===t&&s.push({...n,id:n.id,email:n.email,name:n.name,provider:p(n),state:t,deleteReason:h[t]||t});return s})(e,l),[e,l]);return(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Bersihkan per kategori",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"menu 5 skrip cline — dibaca dari daftar akun"})]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)("div",{className:"flex flex-wrap gap-1",role:"group","aria-label":"Kategori cline",children:y.map(e=>(0,s.jsx)("button",{type:"button",onClick:()=>i(e),"aria-pressed":l===e,className:`h-7 shrink-0 rounded-[8px] px-2.5 text-[11px] font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45 ${l===e?"bg-primary-strong text-white":"bg-surface-2 text-text-muted hover:text-text-main"}`,children:h[e]},e))}),(0,s.jsxs)(r.$n,{size:"sm",variant:"danger",icon:"delete_sweep",disabled:t||!o.length,onClick:()=>{confirm(`Hapus permanen ${o.length} akun kategori ${h[l]}?`)&&a(o.map(e=>e.id))},children:["Hapus ",o.length," akun"]})]})]})}function S({rows:e,running:t,onDelete:a}){let l=(0,n.useMemo)(()=>(e||[]).filter(e=>{let t=String(e.lastError||"").toLowerCase();return/spending.?limit|personal-team-blocked|team.?blocked|\bblocked\b/.test(t)||"depleted"===e.errorState}),[e]);return l.length?(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Hapus akun BLOCKED",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"menu 6 skrip grok — tim diblokir / spending-limit / kuota habis"})]}),(0,s.jsx)("div",{children:(0,s.jsxs)(r.$n,{size:"sm",variant:"danger",icon:"delete_sweep",disabled:t,onClick:()=>{confirm(`Hapus permanen ${l.length} akun BLOCKED?`)&&a(l.map(e=>e.id))},children:["Hapus ",l.length," akun"]})})]}):null}function C({rows:e,running:t,onDelete:a}){let[l,i]=(0,n.useState)(""),o=(0,n.useMemo)(()=>{let t=l.trim().toLowerCase();return t?(e||[]).filter(e=>[e.email,e.name,e.id].some(e=>String(e||"").toLowerCase().includes(t))):null},[e,l]);return e?.length?(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Hapus by-pattern",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"menu 8 skrip grok — substring email/nama"})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-end",children:[(0,s.jsx)("div",{className:"flex-1",children:(0,s.jsx)(r.pd,{value:l,onChange:e=>i(e.target.value),placeholder:"mis. @gmaoiil.com",disabled:t})}),(0,s.jsxs)(r.$n,{size:"sm",variant:"danger",icon:"delete_sweep",disabled:t||!o?.length,onClick:()=>{!o?.length||confirm(`Hapus permanen ${o.length} akun yang cocok "${l.trim()}"?`)&&(a(o.map(e=>e.id)),i(""))},children:["Hapus",o?.length?` ${o.length}`:""," akun"]})]}),o?(0,s.jsxs)("div",{className:"text-[11px] text-text-muted",children:[(0,s.jsxs)("p",{className:"tabular-nums",children:[o.length," cocok."]}),o.slice(0,10).map(e=>(0,s.jsx)("p",{className:"truncate font-mono",children:e.email||e.name||e.id},e.id)),o.length>10?(0,s.jsxs)("p",{children:["…dan ",o.length-10," lainnya."]}):null]}):null]}):null}function T({rows:e,running:t,runOp:a,onDelete:l,onChanged:i}){let[o,d]=(0,n.useState)(0),c=(0,n.useMemo)(()=>(function(e,{hoursAhead:t=0,nowMs:a=Date.now()}={}){let s=[];for(let n of e||[]){if(!n||!1===n.isActive)continue;let e=n.expiresAt??n?.data?.expiresAt??n?.providerSpecificData?.expiresAt;if(null==e||""===e||"None"===e||"null"===e)continue;let r=Date.parse(e);if(!Number.isFinite(r))continue;let l=r-a;l<=36e5*t&&s.push({...n,id:n.id,email:n.email,name:n.name,provider:p(n),state:l<=0?"expired":"expiring",expiresAt:new Date(r).toISOString(),remainingMs:l,deleteReason:l<=0?"Masa berlaku habis":"Segera kedaluwarsa"})}return s.sort((e,t)=>e.remainingMs-t.remainingMs),s})(e,{hoursAhead:Number(o)||0}),[e,o]);return(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Kedaluwarsa",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"menu 5-6 skrip tokenharbor — gagal parse = permanen"})]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-end gap-2",children:[(0,s.jsx)("div",{className:"w-32",children:(0,s.jsx)(r.pd,{label:"Lihat N jam ke depan",type:"number",value:o,onChange:e=>d(e.target.value),disabled:t})}),(0,s.jsxs)("span",{className:"pb-2 text-[11px] tabular-nums text-text-muted",children:[c.length," akun",Number(o)>0?` (kedaluwarsa + ${o}j ke depan)`:" kedaluwarsa","."]})]}),c.length>0?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("ul",{className:"flex max-h-40 flex-col gap-1 overflow-y-auto",children:[c.slice(0,20).map(e=>(0,s.jsxs)("li",{className:"flex items-baseline justify-between gap-2 text-[11px]",children:[(0,s.jsx)("span",{className:"min-w-0 truncate font-mono text-text-main",children:e.email||e.name||e.id}),(0,s.jsx)("span",{className:"shrink-0 tabular-nums text-text-muted",children:function(e){if(e<=0)return"kedaluwarsa";let t=Math.floor(e/6e4);if(t<60)return`${t}m lagi`;let a=Math.floor(t/60);return a<48?`${a}j lagi`:`${Math.floor(a/24)}h lagi`}(e.remainingMs)})]},e.id)),c.length>20?(0,s.jsxs)("li",{className:"text-[11px] text-text-subtle",children:["…dan ",c.length-20," lainnya."]}):null]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsxs)(r.$n,{size:"sm",variant:"secondary",icon:"pause_circle",disabled:t,onClick:()=>a("deactivate",{ids:c.map(e=>e.id)}).then(e=>e&&i?.()),title:"UPDATE isActive=0 — perilaku default skrip; baris tetap ada dan bisa diaktifkan lagi",children:["Nonaktifkan ",c.length]}),(0,s.jsxs)(r.$n,{size:"sm",variant:"danger",icon:"delete_sweep",disabled:t,onClick:()=>{confirm(`Hapus permanen ${c.length} akun kedaluwarsa?`)&&l(c.map(e=>e.id))},title:"Hapus baris permanen — --delete-expired di skrip",children:["Hapus ",c.length]})]})]}):null]})}function $({rows:e,running:t,onDelete:a}){let[l,i]=(0,n.useState)(!1),o=(0,n.useMemo)(()=>(function(e){let t=[];for(let a of e||[]){if(!a||!1!==a.isActive)continue;let e=function(e){let t=String(e?.lastError||""),a=Number(e?.errorCode);if(/invalid_grant|revoked/i.test(t))return"invalid_grant";let s=/domain_dead:([^\s,;]+)/i.exec(t);return s?`domain_dead:${s[1]}`:401===a||/\b401\b/.test(t)?"auth_401":e?.testStatus==="error"||a>=400?"error_status":t?"lainnya":"tanpa_alasan"}(a);t.push({...a,id:a.id,email:a.email,name:a.name,provider:p(a),state:"inactive",inactiveReason:e,deleteReason:`Nonaktif (${e})`})}return t})(e),[e]),d=(0,n.useMemo)(()=>l?function(e){let t={};for(let a of e||[]){let e=String(a?.email||""),s=e.includes("@")?e.split("@").pop().toLowerCase():"(tanpa email)",n=t[s]||={domain:s,total:0,active:0,inactive:0};n.total++,!1===a.isActive?n.inactive++:n.active++}let a=Object.values(t).sort((e,t)=>t.total-e.total);for(let e of a)e.dead=e.total>0&&0===e.active;return a}(e):[],[l,e]);return(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[10px] border border-border-subtle bg-bg-subtle/50 p-3",children:[(0,s.jsxs)("p",{className:"text-xs font-medium text-text-main",children:["Akun nonaktif",(0,s.jsx)("span",{className:"ml-2 font-normal text-text-subtle",children:"menu 12 skrip ag — dry-run dulu, hapus sesudahnya"})]}),(0,s.jsxs)("p",{className:"text-[11px] tabular-nums text-text-muted",children:[o.length," nonaktif dari ",e?.length||0," akun. Alasan per akun terlihat di bawah."]}),o.length>0?(0,s.jsxs)("ul",{className:"flex max-h-40 flex-col gap-1 overflow-y-auto",children:[o.slice(0,20).map(e=>(0,s.jsxs)("li",{className:"flex items-baseline justify-between gap-2 text-[11px]",children:[(0,s.jsx)("span",{className:"min-w-0 truncate font-mono text-text-main",children:e.email||e.name||e.id}),(0,s.jsx)("span",{className:"shrink-0 font-mono text-text-subtle",children:e.inactiveReason})]},e.id)),o.length>20?(0,s.jsxs)("li",{className:"text-[11px] text-text-subtle",children:["…dan ",o.length-20," lainnya."]}):null]}):null,(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)(r.$n,{size:"sm",variant:"ghost",onClick:()=>i(e=>!e),"aria-expanded":l,children:l?"Sembunyikan":"Sebaran domain"}),(0,s.jsxs)(r.$n,{size:"sm",variant:"danger",icon:"delete_sweep",disabled:t||!o.length,onClick:()=>{confirm(`Hapus permanen ${o.length} akun nonaktif?`)&&a(o.map(e=>e.id))},children:["Hapus ",o.length," nonaktif"]})]}),l?(0,s.jsx)("ul",{className:"flex flex-col gap-1",children:d.map(e=>(0,s.jsxs)("li",{className:"flex items-baseline justify-between gap-2 text-[11px] tabular-nums",children:[(0,s.jsx)("span",{className:"min-w-0 truncate font-mono text-text-main",children:e.domain}),(0,s.jsxs)("span",{className:"shrink-0 text-text-muted",children:[e.total," akun \xb7 ",e.active," aktif",e.dead?" \xb7 domain mati total":""]})]},e.domain))}):null]})}function M({providerId:e,accountsFile:t}){let[a,l]=(0,n.useState)(""),[i,o]=(0,n.useState)(""),d="cline"===e||"kiro"===e||"bai"===e?"|":":",c=(0,n.useMemo)(()=>{let e=new Set,t=[];for(let s of a.split("\n")){let a=s.trim();if(!a||!a.includes("@"))continue;let n=a.toLowerCase();e.has(n)||(e.add(n),t.push(`${a}${d}${i}`))}return t},[a,i,d]);return(0,s.jsxs)("details",{className:"rounded-[10px] border border-border-subtle bg-bg-subtle/50",children:[(0,s.jsx)("summary",{className:"cursor-pointer px-3 py-2 text-xs font-medium text-text-main",children:"Buat berkas akun — paste email + 1 password"}),(0,s.jsxs)("div",{className:"flex flex-col gap-2 px-3 pb-3",children:[(0,s.jsxs)("p",{className:"text-[11px] text-text-muted",children:["Keluaran ",(0,s.jsxs)("code",{className:"font-mono",children:["email",d,"password"]})," per baris →"," ",(0,s.jsx)("code",{className:"font-mono",children:t||`accounts_${e||"bulk"}.txt`})," — bentuk yang dimakan skrip tambah-akun. Tidak dikirim ke mana pun; berkas dibuat di browser."]}),(0,s.jsx)("textarea",{value:a,onChange:e=>l(e.target.value),spellCheck:!1,"aria-label":"Daftar email, satu per baris",placeholder:"satu email per baris\nbaris tanpa @ dilewati, duplikat dibuang",className:"min-h-[80px] w-full resize-y rounded-lg border border-border bg-surface p-2 font-mono text-xs text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45"}),(0,s.jsx)(r.pd,{label:"Satu password untuk semua",type:"text",value:i,onChange:e=>o(e.target.value),placeholder:"password seragam"}),(0,s.jsx)("div",{className:"flex items-center gap-2",children:(0,s.jsxs)(r.$n,{size:"sm",variant:"secondary",icon:"description",disabled:!c.length||!i,onClick:()=>{if(!c.length||!i)return;let a=new Blob([c.join("\n")+"\n"],{type:"text/plain; charset=utf-8"}),s=URL.createObjectURL(a),n=document.createElement("a");n.href=s,n.download=t||`accounts_${e||"bulk"}.txt`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(s)},children:["Unduh ",c.length," baris"]})})]})]})}let D=[{value:"all",label:"Semua"},{value:"active",label:"Aktif"},{value:"problem",label:"Bermasalah"}];function _({providerId:e,onBack:t}){let[a,l]=(0,n.useState)(null),[i,o]=(0,n.useState)(null),[c,m]=(0,n.useState)(""),[p,h]=(0,n.useState)("all"),[f,g]=(0,n.useState)(()=>new Set),[v,j]=(0,n.useState)(""),[k,N]=(0,n.useState)(""),[y,w]=(0,n.useState)(0),[S,C]=(0,n.useState)(null),T=function(){let[e,t]=(0,n.useState)(()=>{let e=localStorage.getItem(d);return e?{id:e,seq:0}:null}),[a,s]=(0,n.useState)({status:"idle",results:[],done:0,total:0}),r=(0,n.useRef)(0);(0,n.useEffect)(()=>{if(!e?.id)return;let t=!1,a=null;r.current=0;let n=async()=>{if(!t)try{let l=await fetch(`/api/automation/jobs/${e.id}?since=${r.current}`,{cache:"no-store"});if(t)return;if(404===l.status){localStorage.removeItem(d),s({status:"idle",results:[],done:0,total:0});return}let i=await l.json();if(t)return;r.current=i.nextSince??r.current,s(e=>({...e,...i,results:[...e.results||[],...i.results||[]]})),"running"===i.status?a=setTimeout(n,700):localStorage.removeItem(d)}catch{t||(a=setTimeout(n,2e3))}};return queueMicrotask(n),()=>{t=!0,a&&clearTimeout(a)}},[e]);let l=(0,n.useCallback)((e,a={})=>{localStorage.setItem(d,e),s({id:e,status:"running",results:[],done:0,total:a.total??0,ok:0,failed:0,kind:a.kind??null,label:a.label??""}),t(t=>({id:e,seq:(t?.seq??0)+1}))},[]),i=(0,n.useCallback)(async()=>{a.id&&await fetch(`/api/automation/jobs/${a.id}`,{method:"DELETE"}).catch(()=>{})},[a.id]),o=(0,n.useCallback)(()=>{localStorage.removeItem(d),t(null),s({status:"idle",results:[],done:0,total:0})},[]);return{...a,watch:l,cancel:i,reset:o}}(),$=(0,n.useCallback)(async()=>{let[t,a]=await Promise.all([fetch("/api/automation/overview",{cache:"no-store"}),fetch(`/api/automation/connections?provider=${encodeURIComponent(e)}&catalogueId=${encodeURIComponent(e)}`,{cache:"no-store"})]);if(!t.ok)throw Error(`HTTP ${t.status}`);if(!a.ok)throw Error(`HTTP ${a.status}`);let s=await t.json(),n=await a.json();l(s.providers?.find(t=>t.id===e)||null),o(n.connections||[])},[e]);(0,n.useEffect)(()=>{let e=!1;return queueMicrotask(async()=>{if(!e){j("");try{await $()}catch(t){e||j(t.message||"Gagal memuat akun")}}}),()=>{e=!0}},[$,y]);let M=(0,n.useMemo)(()=>{let e={};for(let t of T.results||[])t?.id&&(e[t.id]=t);return e},[T.results]),z=(0,n.useMemo)(()=>{if(!i)return[];let e=c.trim().toLowerCase();return i.filter(t=>{if(e&&![t.email,t.name,t.id].some(t=>String(t||"").toLowerCase().includes(e)))return!1;let a=M[t.id];return"active"===p?"active"===t.status:"problem"!==p||a&&["depleted","critical","low"].includes(a.state)||"invalid"===t.errorState||"depleted"===t.errorState||"cooling"===t.status})},[i,c,p,M]),H=async(t,a={})=>{j(""),N("");let s=await fetch("/api/automation/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:t,provider:e,...a})}),n=await s.json().catch(()=>({}));return s.ok?(n.jobId&&T.watch(n.jobId,{total:n.total,kind:t}),n):(j(n?.error||`HTTP ${s.status}`),null)},U=async e=>{!e.length||await H("delete",{ids:e,reason:"manual"})&&(g(new Set),w(e=>e+1))},E=(0,n.useMemo)(()=>i?i.map(e=>({...e,...M[e.id]||{}})).filter(e=>"depleted"===e.state||"invalid"===e.errorState||"depleted"===e.errorState):[],[i,M]),I="running"===T.status;return v&&!i?(0,s.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,s.jsx)(r.$n,{size:"sm",variant:"ghost",icon:"arrow_back",onClick:t,children:"Kembali"}),(0,s.jsx)("p",{role:"alert",className:"rounded-lg border border-error/20 bg-error/10 px-3 py-2 text-xs font-medium text-error",children:v})]}):(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:(0,s.jsxs)("div",{className:"flex min-w-0 items-start gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:t,"aria-label":"Kembali ke daftar provider",className:"mt-0.5 rounded-md p-1 text-text-muted transition-colors hover:bg-bg-hover hover:text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:"arrow_back"})}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-text-main",children:[a?.label||e,(0,s.jsxs)("span",{className:"ml-2 font-normal tabular-nums text-text-muted",children:[i?.length??0," akun"]})]}),a?.note?(0,s.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:a.note}):null]})]})}),k?(0,s.jsx)("p",{className:"rounded-lg border border-success/20 bg-success/10 px-3 py-2 text-xs font-medium text-success",children:k}):null,v?(0,s.jsx)("p",{role:"alert",className:"rounded-lg border border-error/20 bg-error/10 px-3 py-2 text-xs font-medium text-error",children:v}):null,(0,s.jsxs)("div",{className:"flex flex-col gap-3 rounded-[14px] border border-border bg-surface p-4",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[a?.kinds.quota?(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"data_usage",disabled:I||!i?.length,onClick:()=>H("quota"),children:"Cek kuota"}):null,a?.kinds.test?(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"network_check",disabled:I||!i?.length,onClick:()=>H("test"),children:"Tes koneksi"}):null,a?.kinds.prompt?(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"chat",disabled:!i?.length,onClick:()=>C(z[0]||i[0]),children:"Tes prompt"}):null,a?.kinds.calls==="device"?(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",icon:"login",onClick:()=>{t()},title:"Login device ada di tab Tambah via OAuth",children:"Login device"}):null,(0,s.jsxs)("a",{href:`/api/automation/generate-txt?provider=${encodeURIComponent(e)}`,className:"inline-flex h-7 items-center gap-1.5 rounded-[8px] border border-border px-3 text-xs font-semibold text-text-main transition-colors hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:"description"}),"Generate TXT"]}),f.size>0?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("span",{className:"text-xs text-text-muted",children:[f.size," dipilih"]}),(0,s.jsx)(r.$n,{size:"sm",variant:"ghost",onClick:()=>g(new Set),children:"Batal"}),(0,s.jsx)(r.$n,{size:"sm",variant:"danger",icon:"delete",disabled:I,onClick:()=>{confirm(`Hapus permanen ${f.size} akun? Tidak bisa dibatalkan.`)&&U([...f])},children:"Hapus"})]}):null]}),(0,s.jsx)(P,{providerId:e,info:a,onDone:e=>{N(e),w(e=>e+1)}}),(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-end",children:[(0,s.jsx)("div",{className:"flex-1",children:(0,s.jsx)(r.pd,{label:"Cari",value:c,onChange:e=>m(e.target.value),placeholder:"email, nama, atau id"})}),(0,s.jsx)("div",{className:"flex gap-1",children:D.map(e=>(0,s.jsx)("button",{type:"button",onClick:()=>h(e.value),"aria-pressed":p===e.value,className:`h-9 shrink-0 rounded-[10px] px-3 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45 ${p===e.value?"bg-primary-strong text-white":"bg-surface-2 text-text-muted hover:text-text-main"}`,children:e.label},e.value))})]})]}),(0,s.jsx)(b,{providerId:e,info:a,rows:i||[],visible:z,scanResults:T.results||[],running:I,runOp:H,onDelete:U,onChanged:()=>w(e=>e+1)}),"idle"!==T.status?(0,s.jsx)(u,{job:T}):null,!I&&E.length>0?(0,s.jsxs)("div",{className:"flex flex-col gap-2 rounded-[14px] border border-warning/30 bg-warning/10 p-4",children:[(0,s.jsxs)("p",{className:"text-sm font-medium text-text-main",children:[E.length," akun layak dipertimbangkan untuk dihapus"]}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"Kuota habis atau kredensial ditolak provider. Kesalahan jaringan, laju, dan prompt kepanjangan sengaja TIDAK masuk daftar ini."}),(0,s.jsx)("div",{children:(0,s.jsxs)(r.$n,{size:"sm",variant:"danger",icon:"delete_sweep",onClick:()=>{confirm(`Hapus permanen ${E.length} akun?`)&&U(E.map(e=>e.id))},children:["Hapus ",E.length," akun"]})})]}):null,(0,s.jsx)("div",{className:"overflow-x-auto rounded-[14px] border border-border bg-surface",children:(0,s.jsxs)("table",{className:"w-full text-left text-xs",children:[(0,s.jsxs)("caption",{className:"sr-only",children:["Akun ",a?.label||e]}),(0,s.jsx)("thead",{className:"bg-bg-subtle text-[10px] uppercase tracking-wide text-text-muted",children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{scope:"col",className:"w-8 px-3 py-2",children:(0,s.jsx)("input",{type:"checkbox","aria-label":"Pilih semua yang terlihat",checked:z.length>0&&f.size>=z.length,onChange:e=>g(e.target.checked?new Set(z.map(e=>e.id)):new Set),className:"size-3.5 accent-[var(--color-primary)]"})}),(0,s.jsx)("th",{scope:"col",className:"px-3 py-2 font-medium",children:"Akun"}),(0,s.jsx)("th",{scope:"col",className:"px-3 py-2 font-medium",children:"Status"}),(0,s.jsx)("th",{scope:"col",className:"px-3 py-2 font-medium",children:"Kuota"}),(0,s.jsx)("th",{scope:"col",className:"px-3 py-2 text-right font-medium",children:"Aksi"})]})}),(0,s.jsx)("tbody",{className:"divide-y divide-border-subtle",children:null===i?(0,s.jsx)("tr",{children:(0,s.jsx)("td",{colSpan:5,className:"px-3 py-6 text-center text-text-muted",children:"Memuat…"})}):0===z.length?(0,s.jsx)("tr",{children:(0,s.jsx)("td",{colSpan:5,className:"px-3 py-6 text-center text-text-muted",children:i.length?"Tidak ada akun yang cocok.":"Belum ada akun."})}):z.map(e=>{var t;let a=M[e.id];return(0,s.jsxs)("tr",{className:"transition-colors hover:bg-bg-hover",children:[(0,s.jsx)("td",{className:"px-3 py-2",children:(0,s.jsx)("input",{type:"checkbox","aria-label":`Pilih ${e.email||e.name||e.id}`,checked:f.has(e.id),onChange:()=>g(t=>{let a=new Set(t);return a.has(e.id)?a.delete(e.id):a.add(e.id),a}),className:"size-3.5 accent-[var(--color-primary)]"})}),(0,s.jsxs)("td",{className:"px-3 py-2",children:[(0,s.jsx)("div",{className:"font-medium text-text-main",children:e.email||e.name||`${e.id.slice(0,8)}…`}),(0,s.jsx)("div",{className:"font-mono text-[10px] text-text-subtle",children:e.keyPreview||e.model||"—"})]}),(0,s.jsxs)("td",{className:"px-3 py-2",children:[(0,s.jsx)("span",{className:"active"===e.status?"text-success":"cooling"===e.status?"text-warning":"text-text-muted",children:"active"===e.status?"aktif":"cooling"===e.status?"cooldown":"nonaktif"}),e.errorReasonCode&&"request_too_large"!==e.errorState?(0,s.jsx)("div",{className:"max-w-[14rem] truncate text-[10px] text-text-subtle",title:String(e.lastError||""),children:e.errorReasonCode}):null]}),(0,s.jsx)("td",{className:"px-3 py-2 tabular-nums",children:a?.remaining!=null?(0,s.jsxs)("span",{className:"depleted"===a.state?"text-error":"low"===a.state?"text-warning":"text-success",children:[a.remaining,"%"]}):a?.state?(0,s.jsx)("span",{className:"text-text-muted",children:{healthy:"Sehat",low:"Menipis",critical:"Kritis",depleted:"Habis",unlimited:"Tanpa batas",unsupported:"Tidak ada cek",unknown:"Tidak terbaca"}[t=a.state]||t}):(0,s.jsx)("span",{className:"text-text-subtle",children:"—"})}),(0,s.jsxs)("td",{className:"px-3 py-2 text-right",children:[(0,s.jsx)("button",{type:"button",onClick:()=>C(e),"aria-label":`Tes prompt pada ${e.email||e.name||e.id}`,className:"rounded-md p-1 text-text-subtle transition-colors hover:bg-bg-hover hover:text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]","aria-hidden":"true",children:"chat"})}),(0,s.jsx)("button",{type:"button",onClick:()=>{confirm(`Hapus ${e.email||e.name||e.id}?`)&&U([e.id])},"aria-label":`Hapus ${e.email||e.name||e.id}`,className:"rounded-md p-1 text-text-subtle transition-colors hover:bg-error/10 hover:text-error focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]","aria-hidden":"true",children:"delete"})})]})]},e.id)})})]})}),(0,s.jsxs)("p",{className:"text-xs text-text-muted",children:["Menampilkan ",z.length," dari ",i?.length??0," akun."]}),S?(0,s.jsx)(x,{connection:S,onClose:()=>C(null)}):null]})}function P({providerId:e,info:t,onDone:a}){let[l,i]=(0,n.useState)(""),[o,d]=(0,n.useState)(!1),[c,u]=(0,n.useState)(""),x={antigravity:"email:refreshToken","grok-cli":"email:refreshToken",cline:"email:accessToken:refreshToken",freebuff:"email:accessToken",bai:"email:sk-...",tokenharbour:"email:thk_...",kiro:"email:refreshToken"}[e]||"email:token",m=async()=>{let t=l.split("\n").map(e=>e.trim()).filter(e=>e&&!e.startsWith("#"));if(t.length){d(!0),u("");try{let s=await fetch("/api/automation/import-lines",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,lines:t})}),n=await s.json().catch(()=>({}));if(!s.ok)return void u(n?.error||`HTTP ${s.status}`);i(""),a(`${n.success} akun diimpor${n.skipped?`, ${n.skipped} dilewati (sudah ada)`:""}${n.failed?`, ${n.failed} gagal`:""}`)}catch(e){u(e.message||"Impor gagal")}finally{d(!1)}}},p=async e=>{let t=e.target.files?.[0];t&&(i(await t.text()),e.target.value="")};return(0,s.jsxs)("details",{className:"rounded-[10px] border border-border-subtle bg-bg-subtle/50",children:[(0,s.jsxs)("summary",{className:"cursor-pointer px-3 py-2 text-xs font-medium text-text-main",children:["Impor kredensial — bentuk ",(0,s.jsx)("code",{className:"font-mono",children:x})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-2 px-3 pb-3",children:[(0,s.jsx)("textarea",{value:l,onChange:e=>i(e.target.value),disabled:o,spellCheck:!1,"aria-label":"Baris kredensial",placeholder:x,className:"min-h-[90px] w-full resize-y rounded-lg border border-border bg-surface p-2 font-mono text-xs text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45 disabled:opacity-50"}),c?(0,s.jsx)("p",{role:"alert",className:"text-xs font-medium text-error",children:c}):null,(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)(r.$n,{size:"sm",variant:"secondary",onClick:m,disabled:o||!l.trim(),loading:o,children:"Impor"}),(0,s.jsxs)("label",{className:"flex h-7 cursor-pointer items-center gap-1 rounded-[8px] border border-border px-3 text-xs font-medium text-text-muted transition-colors hover:bg-bg-hover hover:text-text",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:"upload_file"}),"Pilih berkas",(0,s.jsx)("input",{type:"file",accept:".txt,.json,text/plain",onChange:p,className:"hidden"})]})]})]})]})}function z(){let[e,t]=(0,n.useState)(null),[a,l]=(0,n.useState)(""),[i,o]=(0,n.useState)(""),[d,c]=(0,n.useState)("idle"),[u,x]=(0,n.useState)(null),[p,h]=(0,n.useState)(null),[b,f]=(0,n.useState)(""),[g,v]=(0,n.useState)(null),{copied:j,copy:k}=(0,m.C)();(0,n.useEffect)(()=>{let e=!1;return fetch("/api/automation/providers").then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(a=>{e||(t(a.providers||[]),l(e=>e||a.providers?.[0]?.id||""))}).catch(t=>{e||f(t.message)}),()=>{e=!0}},[]),(0,n.useEffect)(()=>{if(!p)return;let e=!1,t=null,a=async()=>{if(!e)try{let s=await fetch("/api/automation/device/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:p.provider,deviceCode:p.deviceCode,codeVerifier:p.codeVerifier,extraData:p.extraData})}),n=await s.json().catch(()=>({}));if(e)return;if(n.success){c("done"),v(n.connection),h(null);return}if(n.pending){if(Date.now()>p.deadline){c("error"),f("Waktu habis sebelum kamu menyetujui di browser. Coba mulai lagi."),h(null);return}t=setTimeout(a,1e3*(p.interval||5));return}c("error"),f(n.errorDescription||n.error||"Gagal menukar token"),h(null)}catch(t){if(e)return;c("error"),f(t.message||"Polling gagal"),h(null)}};return a(),()=>{e=!0,t&&clearTimeout(t)}},[p]);let N=e?.find(e=>e.id===a)||null,y=async()=>{if(a){c("starting"),f(""),v(null),x(null),h(null);try{let e=await fetch("/api/automation/device/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,startUrl:i||void 0})}),t=await e.json().catch(()=>({}));if(!e.ok){c("error"),f(t?.error||`HTTP ${e.status}`);return}x(t),c("waiting");let s=t.verificationUriComplete||t.verificationUri;s&&window.open(s,"_blank","noopener,noreferrer"),h({provider:a,deviceCode:t.deviceCode,codeVerifier:t.codeVerifier,extraData:t.extraData,interval:t.interval||5,deadline:Date.now()+(t.expiresIn?1e3*t.expiresIn:9e5)})}catch(e){c("error"),f(e.message||"Tidak bisa memulai alur")}}},w="starting"===d||"waiting"===d;return(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 rounded-[14px] border border-border bg-surface p-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,s.jsx)("label",{htmlFor:"automation-provider",className:"text-sm font-medium text-text-main",children:"Provider"}),(0,s.jsx)("select",{id:"automation-provider",value:a,onChange:e=>l(e.target.value),disabled:w,className:"w-full rounded-[10px] border border-border bg-surface px-3 py-2 text-sm text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45 disabled:opacity-50",children:(e||[]).map(e=>(0,s.jsx)("option",{value:e.id,children:e.label},e.id))})]}),N?.hint?(0,s.jsx)("p",{className:"text-xs text-text-muted",children:N.hint}):null,N?.needsStartUrl?(0,s.jsx)(r.pd,{label:"Start URL (IDC)",value:i,onChange:e=>o(e.target.value),placeholder:"https://d-xxxxxxxxxx.awsapps.com/start",hint:"Kosongkan kalau memakai AWS Builder ID biasa.",disabled:w}):null,(0,s.jsx)("div",{children:(0,s.jsx)(r.$n,{onClick:y,disabled:!a||w,loading:"starting"===d,children:"waiting"===d?"Menunggu persetujuan…":"Mulai"})})]}),b&&"error"===d?(0,s.jsx)("p",{role:"alert",className:"rounded-lg border border-error/20 bg-error/10 px-3 py-2 text-xs font-medium text-error",children:b}):null,u&&"done"!==d?(0,s.jsxs)("div",{className:"flex flex-col gap-3 rounded-[14px] border border-border bg-surface p-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,s.jsx)("span",{className:"text-sm font-medium text-text-main",children:"Kode verifikasi"}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)("code",{className:"rounded-lg bg-bg-subtle px-3 py-1.5 font-mono text-base font-semibold tracking-wider text-text-main",children:u.userCode||"—"}),(0,s.jsxs)("button",{type:"button",onClick:()=>k(u.userCode||"","userCode"),className:"flex items-center gap-1 rounded-lg border border-border px-2 py-1.5 text-xs font-medium text-text-muted transition-colors hover:bg-bg-hover hover:text-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[15px]","aria-hidden":"true",children:"userCode"===j?"check":"content_copy"}),"userCode"===j?"Tersalin":"Salin"]})]})]}),u.verificationUri?(0,s.jsxs)("p",{className:"text-xs text-text-muted",children:["Buka"," ",(0,s.jsx)("a",{href:u.verificationUriComplete||u.verificationUri,target:"_blank",rel:"noopener noreferrer",className:"break-all text-primary underline decoration-dotted underline-offset-2",children:u.verificationUri})," ","lalu masukkan kode di atas."]}):null,"waiting"===d?(0,s.jsxs)("p",{className:"flex items-center gap-2 text-xs text-text-muted",children:[(0,s.jsx)("span",{className:"size-1.5 animate-pulse rounded-full bg-primary","aria-hidden":"true"}),"Menunggu kamu menyetujui di browser. Halaman ini lanjut sendiri."]}):null]}):null,"done"===d&&g?(0,s.jsxs)("p",{className:"flex items-center gap-2 rounded-lg border border-success/20 bg-success/10 px-3 py-2 text-sm font-medium text-success",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:"check_circle"}),"Akun ",g.provider," tersimpan. Tambah lagi kapan saja, atau lihat di halaman Providers."]}):null]})}function H(){let[e,t]=(0,n.useState)(""),[a,l]=(0,n.useState)([]),[i,o]=(0,n.useState)("");(0,n.useEffect)(()=>{fetch("/api/automation/providers").then(e=>e.ok?e.json():null).then(e=>{e?.providers&&l(e.providers)}).catch(()=>{})},[]);let d=async t=>{o(t);try{let a=new URLSearchParams({format:t});e&&a.set("provider",e);let s=await fetch(`/api/automation/export?${a.toString()}`);if(!s.ok)throw Error(`HTTP ${s.status}`);let n=await s.blob(),r=URL.createObjectURL(n),l=document.createElement("a");l.href=r;let i=s.headers.get("content-disposition")||"",o=/filename="([^"]+)"/.exec(i);l.download=o?.[1]||`9router-accounts.${"txt"===t?"txt":"json"}`,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(r)}catch(e){alert(`Export gagal: ${e.message}`)}finally{o("")}};return(0,s.jsx)("div",{className:"flex flex-col gap-4",children:(0,s.jsxs)("div",{className:"flex flex-col gap-3 rounded-[14px] border border-border bg-surface p-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,s.jsx)("label",{htmlFor:"automation-export-provider",className:"text-sm font-medium text-text-main",children:"Provider"}),(0,s.jsxs)("select",{id:"automation-export-provider",value:e,onChange:e=>t(e.target.value),className:"w-full rounded-[10px] border border-border bg-surface px-3 py-2 text-sm text-text-main focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:[(0,s.jsx)("option",{value:"",children:"Semua provider"}),a.map(e=>(0,s.jsx)("option",{value:e.id,children:e.label},e.id))]})]}),(0,s.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-warning/25 bg-warning/10 px-3 py-2",children:[(0,s.jsx)("span",{className:"material-symbols-outlined mt-0.5 text-[16px] text-warning","aria-hidden":"true",children:"warning"}),(0,s.jsxs)("p",{className:"text-xs text-text-main",children:["Berkasnya berisi ",(0,s.jsx)("strong",{children:"token akses penuh"})," ke akun-akun itu. Jangan di-commit ke git, dan jangan taruh di folder yang tersinkron ke cloud."]})]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)(r.$n,{variant:"secondary",icon:"download",onClick:()=>d("json"),loading:"json"===i,disabled:!!i,children:"Unduh JSON"}),(0,s.jsx)(r.$n,{variant:"secondary",icon:"description",onClick:()=>d("txt"),loading:"txt"===i,disabled:!!i,children:"Unduh TXT"})]}),(0,s.jsx)("p",{className:"text-xs text-text-muted",children:"JSON bisa diimpor kembali lewat tab Bulk import, di mesin ini atau di mesin lain. TXT berbentuk tab (provider, authType, email, nama, token, refreshToken) untuk dibaca atau diolah skrip."})]})})}let U=[{value:"manage",label:"Kelola akun"},{value:"oauth",label:"Login device"},{value:"export",label:"Export semua"}];function E({onLock:e}){let[t,a]=(0,n.useState)("manage"),[l,o]=(0,n.useState)(null),[d,c]=(0,n.useState)(!1),u=async()=>{c(!0);try{await fetch("/api/automation/gate",{method:"DELETE"})}finally{e()}};return(0,s.jsxs)("div",{className:"flex min-w-0 flex-col gap-5",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-lg font-semibold text-text-main",children:"Automation"}),(0,s.jsx)("p",{className:"mt-0.5 text-sm text-text-muted",children:"Kelola akun provider: kuota, tes koneksi, tes prompt, impor, dan export."})]}),(0,s.jsxs)("button",{type:"button",onClick:u,disabled:d,className:"flex shrink-0 items-center gap-1.5 self-start rounded-lg border border-border bg-bg-subtle px-2.5 py-1.5 text-xs font-medium text-text-muted transition-colors hover:bg-bg-hover hover:text-text disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/45",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[15px]","aria-hidden":"true",children:"lock"}),(0,s.jsx)("span",{children:"Kunci lagi"})]})]}),(0,s.jsx)(r.Iz,{options:U,value:t,onChange:a,className:"w-full sm:w-auto"}),"manage"===t?l?(0,s.jsx)(_,{providerId:l,onBack:()=>o(null)}):(0,s.jsx)(i,{onPick:o}):null,"oauth"===t?(0,s.jsx)(z,{}):null,"export"===t?(0,s.jsx)(H,{}):null]})}function I(){let[e,t]=(0,n.useState)(null);return((0,n.useEffect)(()=>{let e=!1;return fetch("/api/automation/gate",{cache:"no-store"}).then(e=>e.ok?e.json():{unlocked:!1}).then(a=>{e||t(!!a.unlocked)}).catch(()=>{e||t(!1)}),()=>{e=!0}},[]),null===e)?(0,s.jsxs)("div",{className:"flex flex-col gap-3 py-10","aria-busy":"true",children:[(0,s.jsx)("div",{className:"h-6 w-40 animate-pulse rounded-lg bg-border-subtle/60"}),(0,s.jsx)("div",{className:"h-24 w-full max-w-md animate-pulse rounded-[14px] bg-border-subtle/60"})]}):e?(0,s.jsx)(E,{onLock:()=>t(!1)}):(0,s.jsx)(l,{onUnlock:()=>t(!0)})}},87825:(e,t,a)=>{Promise.resolve().then(a.bind(a,64881))}},e=>{e.O(0,[8474,6355,1321,705,5497,8441,3794,7358],()=>e(e.s=87825)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4465],{44594:(e,t,r)=>{Promise.resolve().then(r.bind(r,88512))},88512:(e,t,r)=>{"use strict";r.d(t,{default:()=>g});var s=r(95155),a=r(12115),i=r(35497),l=r(28777),n=r(88105);let o="basic-chat.sessions",d="basic-chat.activeSessionId",c="basic-chat.activeProviderId",m="basic-chat.draft";function u(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function p(e){if("string"==typeof e)return e;if(null==e)return"";if(Array.isArray(e))return e.map(p).filter(Boolean).join(" ");if("object"==typeof e){if("string"==typeof e.message)return e.message;if("string"==typeof e.error)return e.error;try{return JSON.stringify(e)}catch{return String(e)}}return String(e)}function h(e=""){let t=p(e).replace(/\s+/g," ").trim();return t?t.length>52?`${t.slice(0,52).trimEnd()}…`:t:"New chat"}async function x(e){return await new Promise((t,r)=>{let s=new FileReader;s.onload=()=>t(String(s.result||"")),s.onerror=()=>r(s.error||Error("Failed to read file")),s.readAsDataURL(e)})}function f(e){return e?.name||function(e=""){return String(e).replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase()).trim()||"Unknown"}(e?.provider||e?.id||"provider")}function g(){let[e,t]=(0,a.useState)([]),[r,g]=(0,a.useState)(!0),[w,v]=(0,a.useState)(""),[b,N]=(0,a.useState)(()=>{try{let e=function(e,t){try{return JSON.parse(e)}catch{return t}}(globalThis.localStorage.getItem(o),[]);return Array.isArray(e)?e.map(e=>({...e,messages:Array.isArray(e.messages)?e.messages:[]})):[]}catch{return[]}}),[y,j]=(0,a.useState)(()=>globalThis.localStorage.getItem(d)||""),[S,I]=(0,a.useState)(()=>globalThis.localStorage.getItem(c)||""),[A,k]=(0,a.useState)(""),[D,O]=(0,a.useState)(()=>globalThis.localStorage.getItem(m)||""),[$,C]=(0,a.useState)([]),[_,M]=(0,a.useState)(!1),[E,T]=(0,a.useState)(""),[U,R]=(0,a.useState)(""),[z,q]=(0,a.useState)(!1),[P,J]=(0,a.useState)(!1),[B,F]=(0,a.useState)(!1),K=(0,a.useRef)(null),L=(0,a.useRef)(null),W=(0,a.useRef)(!1),H=(0,a.useRef)(null),Y=(0,a.useRef)(null);(0,a.useEffect)(()=>{q(!0)},[]),(0,a.useEffect)(()=>{let e=!1;return async function(){g(!0),v("");try{let r=await fetch("/api/providers",{cache:"no-store"}),s=await r.json().catch(()=>({})),a=Array.isArray(s.connections)?s.connections.filter(e=>e?.isActive!==!1):[];if(0===a.length){e||(t([]),v("No providers connected yet."));return}let i=new Map;for(let e of a){let t=e.provider||e.id,r=f(e),s=(0,n.mq)(t)?"openai-compatible":(0,n.gb)(t)?"anthropic-compatible":t;i.has(t)||i.set(t,{providerId:t,providerName:r,providerType:s,connections:[],models:[]});let a=i.get(t);a.providerName=a.providerName||r,a.providerType=a.providerType||s,a.connections.push(e);let o=(0,l.KC)(t).map(t=>t?.id?{id:`${e.provider}/${t.id}`,requestModel:`${e.provider}/${t.id}`,name:t.name||t.id,providerId:e.provider,providerName:f(e),source:"static"}:null).filter(Boolean);a.models.push(...o)}for(let e of(await Promise.all(a.map(async e=>{try{let t=await fetch(`/api/providers/${e.id}/models`,{cache:"no-store"}),r=await t.json().catch(()=>({}));if(!t.ok)return{connection:e,models:[]};let s=(Array.isArray(r?.models)?r.models:Array.isArray(r?.data)?r.data:Array.isArray(r?.results)?r.results:Array.isArray(r)?r:[]).map(t=>(function(e,t){let r="string"==typeof e?e:e?.id||e?.name||e?.model||"";if(!r)return null;let s="string"==typeof e?e:e?.name||e?.displayName||r,a=r;return((0,n.mq)(t.provider)||(0,n.gb)(t.provider))&&!r.includes("/")&&(a=`${t.provider}/${r}`),{id:a,requestModel:a,name:s,providerId:t.provider,providerName:f(t),source:"live"}})(t,e)).filter(Boolean);return{connection:e,models:s}}catch{return{connection:e,models:[]}}})))){let t=e.connection.provider||e.connection.id,r=i.get(t);r&&r.models.push(...e.models)}let o=Array.from(i.values()).map(e=>({...e,models:(function(e){let t=new Map;for(let r of e)r?.id&&(t.has(r.id)||t.set(r.id,r));return Array.from(t.values())})(e.models).sort((e,t)=>e.name.localeCompare(t.name))})).filter(e=>e.models.length>0).sort((e,t)=>e.providerName.localeCompare(t.providerName));e||(t(o),0===o.length&&v("Providers connected but no models available."))}catch(r){e||(v(p(r?.message)||"Failed to load providers/models."),t([]))}finally{e||g(!1)}}(),()=>{e=!0}},[]),(0,a.useEffect)(()=>{let e=e=>{H.current&&!H.current.contains(e.target)&&J(!1),Y.current&&!Y.current.contains(e.target)&&F(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let G=(0,a.useMemo)(()=>{let t=new Map;for(let r of e)for(let e of r.models)t.set(e.id,{...e,providerId:r.providerId,providerName:r.providerName});return t},[e]),Q=(0,a.useMemo)(()=>e.find(e=>e.providerId===S)||e[0]||null,[e,S]),V=(0,a.useMemo)(()=>{if(A&&G.has(A))return G.get(A);if(y){let e=b.find(e=>e.id===y);if(e?.modelId&&G.has(e.modelId))return G.get(e.modelId)}return Q?.models?.[0]||null},[A,G,Q,b,y]),X=(0,a.useMemo)(()=>b.find(e=>e.id===y)||null,[b,y]),Z=X?.messages||[],ee=(0,a.useMemo)(()=>[...b].sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()),[b]),et=!_&&!!V&&(D.trim().length>0||$.length>0);(0,a.useEffect)(()=>{if(z)try{globalThis.localStorage.setItem(o,JSON.stringify(b)),globalThis.localStorage.setItem(d,y),globalThis.localStorage.setItem(c,S),globalThis.localStorage.setItem(m,D)}catch{}},[z,b,y,S,D]),(0,a.useEffect)(()=>{if(!z||r||W.current||0===e.length)return;let t=e.find(e=>e.providerId===S)||e[0],s=A&&G.has(A)?G.get(A):t.models[0];if(b.length>0){let e=b.find(e=>e.id===y)||b[0],r=e?.modelId&&G.has(e.modelId)?G.get(e.modelId):s;W.current=!0,j(e.id),I(r?.providerId||t.providerId),k(r?.id||s.id);return}let a={id:u(),title:"New chat",providerId:t.providerId,providerName:t.providerName,modelId:s.id,modelName:s.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]};W.current=!0,N([a]),j(a.id),I(t.providerId),k(s.id)},[z,r,e,G,b,y,S,A]);let er=(e,t)=>{N(r=>r.map(r=>r.id===e?t({...r,messages:Array.isArray(r.messages)?r.messages.map(e=>({...e})):[]}):r))},es=e=>e?{id:u(),title:"New chat",providerId:e.providerId,providerName:e.providerName,modelId:e.id,modelName:e.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]}:null,ea=async e=>{let t=Array.from(e.target.files||[]);if(0===t.length)return;let r=t.filter(e=>e.type.startsWith("image/"));if(0===r.length){e.target.value="";return}let s=await Promise.all(r.map(async e=>({id:u(),name:e.name,type:e.type,size:e.size,dataUrl:await x(e)})));C(e=>[...e,...s]),e.target.value=""},ei=async()=>{let e=V||Q?.models?.[0]||null;if(!e)return;let t=D.trim();if(!t&&0===$.length)return;let r=y,s=b.find(e=>e.id===r);if(!s){if(!(s=es(e)))return;r=s.id,N(e=>[s,...e]),j(r)}let a={id:u(),role:"user",content:t,attachments:$.map(e=>({id:e.id,name:e.name,type:e.type,dataUrl:e.dataUrl})),createdAt:new Date().toISOString()},i=u(),l={id:i,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},n=[...s.messages||[],a,l];N(s=>s.map(s=>s.id===r?{...s,providerId:e.providerId,providerName:e.providerName,modelId:e.id,modelName:e.name,messages:n,updatedAt:new Date().toISOString(),title:"New chat"===s.title?h(t):s.title}:s)),O(""),C([]),M(!0),T(i),R(""),L.current?.abort(),L.current=new AbortController;let o=n.filter(e=>"assistant"!==e.role||e.id!==i).map(e=>({role:e.role,content:"user"===e.role?function(e){let t=p(e.content).trim(),r=Array.isArray(e.attachments)?e.attachments:[];if(0===r.length)return t;let s=[];for(let e of(t&&s.push({type:"text",text:t}),r))e?.dataUrl&&s.push({type:"image_url",image_url:{url:e.dataUrl}});return s.length>0?s:t}(e):e.content}));try{var d;let s,a=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:e.requestModel||e.id,messages:o,stream:!0}),signal:L.current.signal});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(p(e.error||e.message||`Request failed (${a.status})`))}let l=a.body?.getReader();if(!l){let e=await a.json().catch(()=>({})),t=p(e?.choices?.[0]?.message?.content||e?.output_text||e?.error||e?.message||"");er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:t,status:"done"}:e),updatedAt:new Date().toISOString()}));return}let n=new TextDecoder,c="",m="";for(;;){let{value:e,done:t}=await l.read();if(t)break;let s=(c+=n.decode(e,{stream:!0})).split(/\r?\n/);for(let e of(c=s.pop()||"",s)){let t=e.trim();if(!t.startsWith("data:"))continue;let s=t.slice(5).trim();if(s&&"[DONE]"!==s)try{let e=JSON.parse(s),t=function(e){if(!e||"object"!=typeof e)return"";let t=e.choices?.[0];return[(t?.delta||{}).content,t?.message?.content,e.output_text,e.text].map(p).filter(Boolean)[0]||""}(e);if(!t)continue;m+=t,R(m),er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:m,status:"streaming"}:e),updatedAt:new Date().toISOString()}))}catch{}}}er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:m||e.content,status:"done"}:e),updatedAt:new Date().toISOString()})),d=r,s=h(t),er(d,e=>({...e,title:"New chat"===e.title?s:e.title,updatedAt:new Date().toISOString()}))}catch(e){if("AbortError"!==e.name){let t=p(e?.message||e);er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:e.content||`Error: ${t}`,status:"error"}:e),updatedAt:new Date().toISOString()})),v(t||"Failed to send message.")}}finally{M(!1),T(""),R(""),L.current=null}},el=V?`${V.name}`:"Select model",en=V?V.requestModel:"Choose from connected providers";return(0,s.jsx)("div",{className:"relative flex-1 flex flex-col h-full min-h-0 min-w-0 bg-[#212121] text-white overflow-hidden",children:(0,s.jsxs)("div",{className:"relative mx-auto flex flex-1 h-full min-h-0 w-full max-w-4xl flex-col",children:[(0,s.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 px-4 py-3 lg:px-6",children:[(0,s.jsxs)("div",{ref:H,className:"relative",children:[(0,s.jsx)("button",{type:"button",onClick:()=>J(e=>!e),className:"flex items-center gap-3 rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-left transition hover:bg-white/8",children:(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"text-sm font-semibold text-white",children:el}),(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] text-white/70",children:"expand_more"})]}),(0,s.jsx)("p",{className:"truncate text-xs text-white/55",children:en})]})}),P?(0,s.jsxs)("div",{className:"absolute left-0 top-[calc(100%+10px)] z-30 w-[min(520px,calc(100vw-2rem))] overflow-hidden rounded-[20px] border border-white/10 bg-[#262626] shadow-2xl shadow-black/50",children:[(0,s.jsxs)("div",{className:"border-b border-white/10 px-4 py-3",children:[(0,s.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Models"}),(0,s.jsx)("p",{className:"text-sm text-white/75",children:"Only from connected providers"})]}),(0,s.jsx)("div",{className:"max-h-[60vh] overflow-y-auto p-2 custom-scrollbar",children:e.map(e=>(0,s.jsxs)("div",{className:"mb-2 rounded-[16px] border border-white/10 bg-black/20 p-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between px-2 py-2",children:[(0,s.jsx)("p",{className:"text-sm font-semibold text-white",children:e.providerName}),(0,s.jsx)(i.Ex,{size:"sm",variant:"default",children:e.models.length})]}),(0,s.jsx)("div",{className:"grid gap-2 sm:grid-cols-2",children:e.models.map(e=>{let t=e.id===A;return(0,s.jsx)("button",{type:"button",onClick:()=>(e=>{let t=G.get(e);if(!t)return;let r=b.find(e=>e.id===y);if(r&&r.messages.length>0){let e=es(t);if(!e)return;N(t=>[e,...t]),j(e.id)}else if(r)N(e=>e.map(e=>e.id===r.id?{...e,providerId:t.providerId,providerName:t.providerName,modelId:t.id,modelName:t.name}:e)),j(r.id);else{let e=es(t);if(!e)return;N(t=>[e,...t]),j(e.id)}I(t.providerId),k(t.id),J(!1)})(e.id),className:`rounded-[14px] border px-3 py-3 text-left transition ${t?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"truncate text-sm font-medium text-white",children:e.name}),(0,s.jsx)("p",{className:"truncate text-[11px] text-white/45",children:e.requestModel})]}),t?(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] text-blue-300",children:"check_circle"}):null]})},e.id)})})]},e.providerId))})]}):null]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>F(e=>!e),className:"rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-sm text-white/80 transition hover:bg-white/8",children:"History"}),(0,s.jsx)(i.$n,{variant:"ghost",size:"sm",icon:"delete",onClick:()=>{if(!y)return;let e=b.filter(e=>e.id!==y),t=e[0]||null;N(e),t?(j(t.id),I(t.providerId),k(t.modelId)):(j(""),I(""),k(""))},disabled:!y||0===b.length,children:"Clear"})]})]}),B?(0,s.jsxs)("div",{ref:Y,className:"absolute right-4 top-[72px] z-20 w-[min(360px,calc(100vw-2rem))] rounded-[20px] border border-white/10 bg-[#262626] p-2 shadow-2xl shadow-black/50 lg:right-6",children:[(0,s.jsx)("div",{className:"px-3 py-2",children:(0,s.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Recent chats"})}),(0,s.jsx)("div",{className:"max-h-[48vh] space-y-2 overflow-y-auto p-1 custom-scrollbar",children:0===ee.length?(0,s.jsx)("div",{className:"rounded-[16px] border border-dashed border-white/10 bg-white/5 p-4 text-sm text-white/55",children:"No conversations yet."}):ee.map(e=>{let t=e.id===y,r=[...e.messages||[]].reverse().find(e=>"user"===e.role)||e.messages?.[0];return(0,s.jsx)("button",{type:"button",onClick:()=>{var t;let r;return t=e.id,void((r=b.find(e=>e.id===t))&&(j(t),I(r.providerId||S),k(r.modelId||A),F(!1)))},className:`w-full rounded-[16px] border px-3 py-3 text-left transition ${t?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("p",{className:"truncate text-sm font-medium text-white",children:e.title}),(0,s.jsx)("p",{className:"mt-1 truncate text-xs text-white/50",children:p(r?.content)||"Empty chat"})]}),(0,s.jsx)("span",{className:"text-[10px] text-white/40 shrink-0",children:function(e){if(!e)return"Now";let t=new Date(e).getTime();if(Number.isNaN(t))return"Now";let r=Math.max(1,Math.round((Date.now()-t)/6e4));if(r<60)return`${r}m`;let s=Math.round(r/60);return s<24?`${s}h`:`${Math.round(s/24)}d`}(e.updatedAt)})]})},e.id)})})]}):null,w?(0,s.jsx)("div",{className:"mt-4 rounded-[18px] border border-rose-500/20 bg-rose-500/10 px-4 py-3 text-rose-100",children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"error"}),(0,s.jsx)("p",{className:"text-sm leading-6",children:w})]})}):null,(0,s.jsxs)("div",{className:"flex flex-1 flex-col min-h-0",children:[(0,s.jsxs)("div",{className:"flex-1 overflow-y-auto py-4 custom-scrollbar",children:[0===Z.length?(0,s.jsx)("div",{className:"flex min-h-[50vh] items-center justify-center px-4 text-center",children:(0,s.jsxs)("div",{className:"max-w-xl space-y-4",children:[(0,s.jsx)("div",{className:"mx-auto flex size-16 items-center justify-center rounded-[20px] border border-white/10 bg-white/5 text-white/80",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[30px]",children:"chat"})}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("h2",{className:"text-2xl font-semibold text-white",children:"Start a conversation"}),(0,s.jsx)("p",{className:"text-sm leading-6 text-white/60",children:"Simple chat interface to interact with any AI model from connected providers. Select a model and start chatting!"})]})]})}):null,(0,s.jsx)("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-4 px-4",children:Z.map(e=>{let t="user"===e.role,r="assistant"===e.role,a=r&&e.id===E&&"streaming"===e.status,i=p(e.content)||(r?U:"");return(0,s.jsx)("div",{className:`flex w-full ${t?"justify-end":"justify-start"} mb-6`,children:(0,s.jsxs)("div",{className:`max-w-[min(88%,42rem)] ${t?"rounded-3xl bg-[#2f2f2f] px-5 py-3.5 text-white":"text-white/90"}`,children:[(0,s.jsx)("div",{className:"mb-1 flex items-center justify-between gap-3",children:(0,s.jsx)("span",{className:"text-xs font-semibold",children:t?"You":V?.name||"Assistant"})}),e.attachments?.length?(0,s.jsx)("div",{className:"mb-3 grid grid-cols-2 gap-2 sm:grid-cols-3 mt-2",children:e.attachments.map(e=>(0,s.jsx)("a",{href:e.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-[18px] border border-white/10 bg-black/20",children:(0,s.jsx)("img",{src:e.dataUrl,alt:e.name,className:"h-28 w-full object-cover",loading:"lazy",decoding:"async"})},e.id))}):null,(0,s.jsxs)("div",{className:"whitespace-pre-wrap break-words text-[15px] leading-7",children:[i,r&&a&&!U?(0,s.jsx)("span",{className:"inline-block animate-pulse",children:"▋"}):null]})]})},e.id)})})]}),(0,s.jsxs)("div",{className:"shrink-0 pt-2",children:[$.length>0?(0,s.jsx)("div",{className:"mx-auto mb-3 flex w-full max-w-3xl flex-wrap gap-2 px-4",children:$.map(e=>(0,s.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-2",children:[(0,s.jsx)("span",{className:"text-xs text-white/80 max-w-[12rem] truncate",children:e.name}),(0,s.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.id,void C(e=>e.filter(e=>e.id!==t))},className:"text-white/55 hover:text-white","aria-label":"Remove attachment",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]},e.id))}):null,(0,s.jsx)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-2",children:(0,s.jsxs)("div",{className:"rounded-[26px] bg-[#2f2f2f] px-3 pt-3 pb-2 shadow-[0_0_15px_rgba(0,0,0,0.10)] ring-1 ring-white/5",children:[(0,s.jsx)("textarea",{value:D,onChange:e=>O(e.target.value),onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),et&&ei())},placeholder:"Message AI",rows:1,className:"w-full resize-none bg-transparent px-2 text-[15px] leading-6 text-white outline-none placeholder:text-white/40 custom-scrollbar max-h-[25vh] overflow-y-auto"}),(0,s.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>K.current?.click(),disabled:!V||r,className:"p-2 text-white/50 hover:text-white transition rounded-full hover:bg-white/5",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"attach_file"})}),(0,s.jsx)("input",{ref:K,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ea}),(0,s.jsx)("span",{className:"text-xs font-medium text-white/30 truncate max-w-[120px]",children:V?V.name:"No model"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[_?(0,s.jsx)("button",{type:"button",onClick:()=>{L.current?.abort()},className:"p-2 text-white bg-white/10 hover:bg-white/20 transition rounded-full h-8 w-8 flex items-center justify-center",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop"})}):null,(0,s.jsx)("button",{onClick:ei,disabled:!et,className:`h-8 w-8 rounded-full flex items-center justify-center transition ${et?"bg-white text-black hover:opacity-90":"bg-white/10 text-white/30 cursor-not-allowed"}`,children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})})]})]})]})})]}),(0,s.jsx)("p",{className:"mx-auto mt-2 max-w-3xl px-4 pb-4 text-center text-[11px] text-white/30",children:"Model list is filtered from connected providers."})]})]})})}}},e=>{e.O(0,[8474,6355,1321,705,5497,8441,3794,7358],()=>e(e.s=44594)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4465],{65959:(e,t,r)=>{Promise.resolve().then(r.bind(r,88512))},88512:(e,t,r)=>{"use strict";r.d(t,{default:()=>g});var s=r(95155),a=r(12115),i=r(35497),l=r(28777),n=r(88105);let o="basic-chat.sessions",d="basic-chat.activeSessionId",c="basic-chat.activeProviderId",m="basic-chat.draft";function u(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function p(e){if("string"==typeof e)return e;if(null==e)return"";if(Array.isArray(e))return e.map(p).filter(Boolean).join(" ");if("object"==typeof e){if("string"==typeof e.message)return e.message;if("string"==typeof e.error)return e.error;try{return JSON.stringify(e)}catch{return String(e)}}return String(e)}function h(e=""){let t=p(e).replace(/\s+/g," ").trim();return t?t.length>52?`${t.slice(0,52).trimEnd()}…`:t:"New chat"}async function x(e){return await new Promise((t,r)=>{let s=new FileReader;s.onload=()=>t(String(s.result||"")),s.onerror=()=>r(s.error||Error("Failed to read file")),s.readAsDataURL(e)})}function f(e){return e?.name||function(e=""){return String(e).replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase()).trim()||"Unknown"}(e?.provider||e?.id||"provider")}function g(){let[e,t]=(0,a.useState)([]),[r,g]=(0,a.useState)(!0),[w,v]=(0,a.useState)(""),[b,N]=(0,a.useState)(()=>{try{let e=function(e,t){try{return JSON.parse(e)}catch{return t}}(globalThis.localStorage.getItem(o),[]);return Array.isArray(e)?e.map(e=>({...e,messages:Array.isArray(e.messages)?e.messages:[]})):[]}catch{return[]}}),[y,j]=(0,a.useState)(()=>globalThis.localStorage.getItem(d)||""),[S,I]=(0,a.useState)(()=>globalThis.localStorage.getItem(c)||""),[A,k]=(0,a.useState)(""),[D,O]=(0,a.useState)(()=>globalThis.localStorage.getItem(m)||""),[$,C]=(0,a.useState)([]),[_,M]=(0,a.useState)(!1),[E,T]=(0,a.useState)(""),[U,R]=(0,a.useState)(""),[z,q]=(0,a.useState)(!1),[P,J]=(0,a.useState)(!1),[B,F]=(0,a.useState)(!1),K=(0,a.useRef)(null),L=(0,a.useRef)(null),W=(0,a.useRef)(!1),H=(0,a.useRef)(null),Y=(0,a.useRef)(null);(0,a.useEffect)(()=>{q(!0)},[]),(0,a.useEffect)(()=>{let e=!1;return async function(){g(!0),v("");try{let r=await fetch("/api/providers",{cache:"no-store"}),s=await r.json().catch(()=>({})),a=Array.isArray(s.connections)?s.connections.filter(e=>e?.isActive!==!1):[];if(0===a.length){e||(t([]),v("No providers connected yet."));return}let i=new Map;for(let e of a){let t=e.provider||e.id,r=f(e),s=(0,n.mq)(t)?"openai-compatible":(0,n.gb)(t)?"anthropic-compatible":t;i.has(t)||i.set(t,{providerId:t,providerName:r,providerType:s,connections:[],models:[]});let a=i.get(t);a.providerName=a.providerName||r,a.providerType=a.providerType||s,a.connections.push(e);let o=(0,l.KC)(t).map(t=>t?.id?{id:`${e.provider}/${t.id}`,requestModel:`${e.provider}/${t.id}`,name:t.name||t.id,providerId:e.provider,providerName:f(e),source:"static"}:null).filter(Boolean);a.models.push(...o)}for(let e of(await Promise.all(a.map(async e=>{try{let t=await fetch(`/api/providers/${e.id}/models`,{cache:"no-store"}),r=await t.json().catch(()=>({}));if(!t.ok)return{connection:e,models:[]};let s=(Array.isArray(r?.models)?r.models:Array.isArray(r?.data)?r.data:Array.isArray(r?.results)?r.results:Array.isArray(r)?r:[]).map(t=>(function(e,t){let r="string"==typeof e?e:e?.id||e?.name||e?.model||"";if(!r)return null;let s="string"==typeof e?e:e?.name||e?.displayName||r,a=r;return((0,n.mq)(t.provider)||(0,n.gb)(t.provider))&&!r.includes("/")&&(a=`${t.provider}/${r}`),{id:a,requestModel:a,name:s,providerId:t.provider,providerName:f(t),source:"live"}})(t,e)).filter(Boolean);return{connection:e,models:s}}catch{return{connection:e,models:[]}}})))){let t=e.connection.provider||e.connection.id,r=i.get(t);r&&r.models.push(...e.models)}let o=Array.from(i.values()).map(e=>({...e,models:(function(e){let t=new Map;for(let r of e)r?.id&&(t.has(r.id)||t.set(r.id,r));return Array.from(t.values())})(e.models).sort((e,t)=>e.name.localeCompare(t.name))})).filter(e=>e.models.length>0).sort((e,t)=>e.providerName.localeCompare(t.providerName));e||(t(o),0===o.length&&v("Providers connected but no models available."))}catch(r){e||(v(p(r?.message)||"Failed to load providers/models."),t([]))}finally{e||g(!1)}}(),()=>{e=!0}},[]),(0,a.useEffect)(()=>{let e=e=>{H.current&&!H.current.contains(e.target)&&J(!1),Y.current&&!Y.current.contains(e.target)&&F(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let G=(0,a.useMemo)(()=>{let t=new Map;for(let r of e)for(let e of r.models)t.set(e.id,{...e,providerId:r.providerId,providerName:r.providerName});return t},[e]),Q=(0,a.useMemo)(()=>e.find(e=>e.providerId===S)||e[0]||null,[e,S]),V=(0,a.useMemo)(()=>{if(A&&G.has(A))return G.get(A);if(y){let e=b.find(e=>e.id===y);if(e?.modelId&&G.has(e.modelId))return G.get(e.modelId)}return Q?.models?.[0]||null},[A,G,Q,b,y]),X=(0,a.useMemo)(()=>b.find(e=>e.id===y)||null,[b,y]),Z=X?.messages||[],ee=(0,a.useMemo)(()=>[...b].sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()),[b]),et=!_&&!!V&&(D.trim().length>0||$.length>0);(0,a.useEffect)(()=>{if(z)try{globalThis.localStorage.setItem(o,JSON.stringify(b)),globalThis.localStorage.setItem(d,y),globalThis.localStorage.setItem(c,S),globalThis.localStorage.setItem(m,D)}catch{}},[z,b,y,S,D]),(0,a.useEffect)(()=>{if(!z||r||W.current||0===e.length)return;let t=e.find(e=>e.providerId===S)||e[0],s=A&&G.has(A)?G.get(A):t.models[0];if(b.length>0){let e=b.find(e=>e.id===y)||b[0],r=e?.modelId&&G.has(e.modelId)?G.get(e.modelId):s;W.current=!0,j(e.id),I(r?.providerId||t.providerId),k(r?.id||s.id);return}let a={id:u(),title:"New chat",providerId:t.providerId,providerName:t.providerName,modelId:s.id,modelName:s.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]};W.current=!0,N([a]),j(a.id),I(t.providerId),k(s.id)},[z,r,e,G,b,y,S,A]);let er=(e,t)=>{N(r=>r.map(r=>r.id===e?t({...r,messages:Array.isArray(r.messages)?r.messages.map(e=>({...e})):[]}):r))},es=e=>e?{id:u(),title:"New chat",providerId:e.providerId,providerName:e.providerName,modelId:e.id,modelName:e.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]}:null,ea=async e=>{let t=Array.from(e.target.files||[]);if(0===t.length)return;let r=t.filter(e=>e.type.startsWith("image/"));if(0===r.length){e.target.value="";return}let s=await Promise.all(r.map(async e=>({id:u(),name:e.name,type:e.type,size:e.size,dataUrl:await x(e)})));C(e=>[...e,...s]),e.target.value=""},ei=async()=>{let e=V||Q?.models?.[0]||null;if(!e)return;let t=D.trim();if(!t&&0===$.length)return;let r=y,s=b.find(e=>e.id===r);if(!s){if(!(s=es(e)))return;r=s.id,N(e=>[s,...e]),j(r)}let a={id:u(),role:"user",content:t,attachments:$.map(e=>({id:e.id,name:e.name,type:e.type,dataUrl:e.dataUrl})),createdAt:new Date().toISOString()},i=u(),l={id:i,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},n=[...s.messages||[],a,l];N(s=>s.map(s=>s.id===r?{...s,providerId:e.providerId,providerName:e.providerName,modelId:e.id,modelName:e.name,messages:n,updatedAt:new Date().toISOString(),title:"New chat"===s.title?h(t):s.title}:s)),O(""),C([]),M(!0),T(i),R(""),L.current?.abort(),L.current=new AbortController;let o=n.filter(e=>"assistant"!==e.role||e.id!==i).map(e=>({role:e.role,content:"user"===e.role?function(e){let t=p(e.content).trim(),r=Array.isArray(e.attachments)?e.attachments:[];if(0===r.length)return t;let s=[];for(let e of(t&&s.push({type:"text",text:t}),r))e?.dataUrl&&s.push({type:"image_url",image_url:{url:e.dataUrl}});return s.length>0?s:t}(e):e.content}));try{var d;let s,a=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:e.requestModel||e.id,messages:o,stream:!0}),signal:L.current.signal});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(p(e.error||e.message||`Request failed (${a.status})`))}let l=a.body?.getReader();if(!l){let e=await a.json().catch(()=>({})),t=p(e?.choices?.[0]?.message?.content||e?.output_text||e?.error||e?.message||"");er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:t,status:"done"}:e),updatedAt:new Date().toISOString()}));return}let n=new TextDecoder,c="",m="";for(;;){let{value:e,done:t}=await l.read();if(t)break;let s=(c+=n.decode(e,{stream:!0})).split(/\r?\n/);for(let e of(c=s.pop()||"",s)){let t=e.trim();if(!t.startsWith("data:"))continue;let s=t.slice(5).trim();if(s&&"[DONE]"!==s)try{let e=JSON.parse(s),t=function(e){if(!e||"object"!=typeof e)return"";let t=e.choices?.[0];return[(t?.delta||{}).content,t?.message?.content,e.output_text,e.text].map(p).filter(Boolean)[0]||""}(e);if(!t)continue;m+=t,R(m),er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:m,status:"streaming"}:e),updatedAt:new Date().toISOString()}))}catch{}}}er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:m||e.content,status:"done"}:e),updatedAt:new Date().toISOString()})),d=r,s=h(t),er(d,e=>({...e,title:"New chat"===e.title?s:e.title,updatedAt:new Date().toISOString()}))}catch(e){if("AbortError"!==e.name){let t=p(e?.message||e);er(r,e=>({...e,messages:e.messages.map(e=>e.id===i?{...e,content:e.content||`Error: ${t}`,status:"error"}:e),updatedAt:new Date().toISOString()})),v(t||"Failed to send message.")}}finally{M(!1),T(""),R(""),L.current=null}},el=V?`${V.name}`:"Select model",en=V?V.requestModel:"Choose from connected providers";return(0,s.jsx)("div",{className:"relative flex-1 flex flex-col h-full min-h-0 min-w-0 bg-[#212121] text-white overflow-hidden",children:(0,s.jsxs)("div",{className:"relative mx-auto flex flex-1 h-full min-h-0 w-full max-w-4xl flex-col",children:[(0,s.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 px-4 py-3 lg:px-6",children:[(0,s.jsxs)("div",{ref:H,className:"relative",children:[(0,s.jsx)("button",{type:"button",onClick:()=>J(e=>!e),className:"flex items-center gap-3 rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-left transition hover:bg-white/8",children:(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"text-sm font-semibold text-white",children:el}),(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] text-white/70",children:"expand_more"})]}),(0,s.jsx)("p",{className:"truncate text-xs text-white/55",children:en})]})}),P?(0,s.jsxs)("div",{className:"absolute left-0 top-[calc(100%+10px)] z-30 w-[min(520px,calc(100vw-2rem))] overflow-hidden rounded-[20px] border border-white/10 bg-[#262626] shadow-2xl shadow-black/50",children:[(0,s.jsxs)("div",{className:"border-b border-white/10 px-4 py-3",children:[(0,s.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Models"}),(0,s.jsx)("p",{className:"text-sm text-white/75",children:"Only from connected providers"})]}),(0,s.jsx)("div",{className:"max-h-[60vh] overflow-y-auto p-2 custom-scrollbar",children:e.map(e=>(0,s.jsxs)("div",{className:"mb-2 rounded-[16px] border border-white/10 bg-black/20 p-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between px-2 py-2",children:[(0,s.jsx)("p",{className:"text-sm font-semibold text-white",children:e.providerName}),(0,s.jsx)(i.Ex,{size:"sm",variant:"default",children:e.models.length})]}),(0,s.jsx)("div",{className:"grid gap-2 sm:grid-cols-2",children:e.models.map(e=>{let t=e.id===A;return(0,s.jsx)("button",{type:"button",onClick:()=>(e=>{let t=G.get(e);if(!t)return;let r=b.find(e=>e.id===y);if(r&&r.messages.length>0){let e=es(t);if(!e)return;N(t=>[e,...t]),j(e.id)}else if(r)N(e=>e.map(e=>e.id===r.id?{...e,providerId:t.providerId,providerName:t.providerName,modelId:t.id,modelName:t.name}:e)),j(r.id);else{let e=es(t);if(!e)return;N(t=>[e,...t]),j(e.id)}I(t.providerId),k(t.id),J(!1)})(e.id),className:`rounded-[14px] border px-3 py-3 text-left transition ${t?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"truncate text-sm font-medium text-white",children:e.name}),(0,s.jsx)("p",{className:"truncate text-[11px] text-white/45",children:e.requestModel})]}),t?(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px] text-blue-300",children:"check_circle"}):null]})},e.id)})})]},e.providerId))})]}):null]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>F(e=>!e),className:"rounded-2xl border border-white/10 bg-white/5 px-4 py-3 text-sm text-white/80 transition hover:bg-white/8",children:"History"}),(0,s.jsx)(i.$n,{variant:"ghost",size:"sm",icon:"delete",onClick:()=>{if(!y)return;let e=b.filter(e=>e.id!==y),t=e[0]||null;N(e),t?(j(t.id),I(t.providerId),k(t.modelId)):(j(""),I(""),k(""))},disabled:!y||0===b.length,children:"Clear"})]})]}),B?(0,s.jsxs)("div",{ref:Y,className:"absolute right-4 top-[72px] z-20 w-[min(360px,calc(100vw-2rem))] rounded-[20px] border border-white/10 bg-[#262626] p-2 shadow-2xl shadow-black/50 lg:right-6",children:[(0,s.jsx)("div",{className:"px-3 py-2",children:(0,s.jsx)("p",{className:"text-xs uppercase tracking-[0.22em] text-white/45",children:"Recent chats"})}),(0,s.jsx)("div",{className:"max-h-[48vh] space-y-2 overflow-y-auto p-1 custom-scrollbar",children:0===ee.length?(0,s.jsx)("div",{className:"rounded-[16px] border border-dashed border-white/10 bg-white/5 p-4 text-sm text-white/55",children:"No conversations yet."}):ee.map(e=>{let t=e.id===y,r=[...e.messages||[]].reverse().find(e=>"user"===e.role)||e.messages?.[0];return(0,s.jsx)("button",{type:"button",onClick:()=>{var t;let r;return t=e.id,void((r=b.find(e=>e.id===t))&&(j(t),I(r.providerId||S),k(r.modelId||A),F(!1)))},className:`w-full rounded-[16px] border px-3 py-3 text-left transition ${t?"border-blue-400/40 bg-blue-500/15":"border-white/10 bg-white/5 hover:bg-white/8"}`,children:(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("p",{className:"truncate text-sm font-medium text-white",children:e.title}),(0,s.jsx)("p",{className:"mt-1 truncate text-xs text-white/50",children:p(r?.content)||"Empty chat"})]}),(0,s.jsx)("span",{className:"text-[10px] text-white/40 shrink-0",children:function(e){if(!e)return"Now";let t=new Date(e).getTime();if(Number.isNaN(t))return"Now";let r=Math.max(1,Math.round((Date.now()-t)/6e4));if(r<60)return`${r}m`;let s=Math.round(r/60);return s<24?`${s}h`:`${Math.round(s/24)}d`}(e.updatedAt)})]})},e.id)})})]}):null,w?(0,s.jsx)("div",{className:"mt-4 rounded-[18px] border border-rose-500/20 bg-rose-500/10 px-4 py-3 text-rose-100",children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"error"}),(0,s.jsx)("p",{className:"text-sm leading-6",children:w})]})}):null,(0,s.jsxs)("div",{className:"flex flex-1 flex-col min-h-0",children:[(0,s.jsxs)("div",{className:"flex-1 overflow-y-auto py-4 custom-scrollbar",children:[0===Z.length?(0,s.jsx)("div",{className:"flex min-h-[50vh] items-center justify-center px-4 text-center",children:(0,s.jsxs)("div",{className:"max-w-xl space-y-4",children:[(0,s.jsx)("div",{className:"mx-auto flex size-16 items-center justify-center rounded-[20px] border border-white/10 bg-white/5 text-white/80",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[30px]",children:"chat"})}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("h2",{className:"text-2xl font-semibold text-white",children:"Start a conversation"}),(0,s.jsx)("p",{className:"text-sm leading-6 text-white/60",children:"Simple chat interface to interact with any AI model from connected providers. Select a model and start chatting!"})]})]})}):null,(0,s.jsx)("div",{className:"mx-auto flex w-full max-w-3xl flex-col gap-4 px-4",children:Z.map(e=>{let t="user"===e.role,r="assistant"===e.role,a=r&&e.id===E&&"streaming"===e.status,i=p(e.content)||(r?U:"");return(0,s.jsx)("div",{className:`flex w-full ${t?"justify-end":"justify-start"} mb-6`,children:(0,s.jsxs)("div",{className:`max-w-[min(88%,42rem)] ${t?"rounded-3xl bg-[#2f2f2f] px-5 py-3.5 text-white":"text-white/90"}`,children:[(0,s.jsx)("div",{className:"mb-1 flex items-center justify-between gap-3",children:(0,s.jsx)("span",{className:"text-xs font-semibold",children:t?"You":V?.name||"Assistant"})}),e.attachments?.length?(0,s.jsx)("div",{className:"mb-3 grid grid-cols-2 gap-2 sm:grid-cols-3 mt-2",children:e.attachments.map(e=>(0,s.jsx)("a",{href:e.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-[18px] border border-white/10 bg-black/20",children:(0,s.jsx)("img",{src:e.dataUrl,alt:e.name,className:"h-28 w-full object-cover",loading:"lazy",decoding:"async"})},e.id))}):null,(0,s.jsxs)("div",{className:"whitespace-pre-wrap break-words text-[15px] leading-7",children:[i,r&&a&&!U?(0,s.jsx)("span",{className:"inline-block animate-pulse",children:"▋"}):null]})]})},e.id)})})]}),(0,s.jsxs)("div",{className:"shrink-0 pt-2",children:[$.length>0?(0,s.jsx)("div",{className:"mx-auto mb-3 flex w-full max-w-3xl flex-wrap gap-2 px-4",children:$.map(e=>(0,s.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-2",children:[(0,s.jsx)("span",{className:"text-xs text-white/80 max-w-[12rem] truncate",children:e.name}),(0,s.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.id,void C(e=>e.filter(e=>e.id!==t))},className:"text-white/55 hover:text-white","aria-label":"Remove attachment",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]},e.id))}):null,(0,s.jsx)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-2",children:(0,s.jsxs)("div",{className:"rounded-[26px] bg-[#2f2f2f] px-3 pt-3 pb-2 shadow-[0_0_15px_rgba(0,0,0,0.10)] ring-1 ring-white/5",children:[(0,s.jsx)("textarea",{value:D,onChange:e=>O(e.target.value),onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),et&&ei())},placeholder:"Message AI",rows:1,className:"w-full resize-none bg-transparent px-2 text-[15px] leading-6 text-white outline-none placeholder:text-white/40 custom-scrollbar max-h-[25vh] overflow-y-auto"}),(0,s.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>K.current?.click(),disabled:!V||r,className:"p-2 text-white/50 hover:text-white transition rounded-full hover:bg-white/5",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"attach_file"})}),(0,s.jsx)("input",{ref:K,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ea}),(0,s.jsx)("span",{className:"text-xs font-medium text-white/30 truncate max-w-[120px]",children:V?V.name:"No model"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[_?(0,s.jsx)("button",{type:"button",onClick:()=>{L.current?.abort()},className:"p-2 text-white bg-white/10 hover:bg-white/20 transition rounded-full h-8 w-8 flex items-center justify-center",children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop"})}):null,(0,s.jsx)("button",{onClick:ei,disabled:!et,className:`h-8 w-8 rounded-full flex items-center justify-center transition ${et?"bg-white text-black hover:opacity-90":"bg-white/10 text-white/30 cursor-not-allowed"}`,children:(0,s.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})})]})]})]})})]}),(0,s.jsx)("p",{className:"mx-auto mt-2 max-w-3xl px-4 pb-4 text-center text-[11px] text-white/30",children:"Model list is filtered from connected providers."})]})]})})}}},e=>{e.O(0,[8474,6355,1321,705,5497,8441,3794,7358],()=>e(e.s=65959)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3554],{85309:(e,a,t)=>{"use strict";t.d(a,{default:()=>x});var s=t(95155),l=t(12115),i=t(98500),r=t.n(i),d=t(35497),o=t(3534),c=t(28777),n=t(10761);let u=t(41463).env.NEXT_PUBLIC_CLOUD_URL;function x({toolId:e,machineId:a}){let t=o.dM[e],[i,v]=(0,l.useState)([]),[m,h]=(0,l.useState)(!0),[p,f]=(0,l.useState)({}),[b,E]=(0,l.useState)(!1),[j,P]=(0,l.useState)(!1),[g,w]=(0,l.useState)(""),[k,N]=(0,l.useState)(!1),[S,_]=(0,l.useState)(""),[y,A]=(0,l.useState)([]);(0,l.useEffect)(()=>{let e=!0;return(async()=>{try{let[a,t,s,l]=await Promise.all([fetch("/api/providers"),fetch("/api/settings"),fetch("/api/tunnel/status"),fetch("/api/keys")]);if(!e)return;if(a.ok){let e=await a.json();v(e.connections||[])}if(t.ok){let e=await t.json();E(e.cloudEnabled||!1)}if(s.ok){let e=await s.json();P(!!(e.tunnel?.enabled||e.tunnel?.settingsEnabled)),w(e.tunnel?.publicUrl||""),N(!!(e.tailscale?.enabled||e.tailscale?.settingsEnabled)),_(e.tailscale?.tunnelUrl||"")}if(l.ok){let e=await l.json();A(e.keys||[])}}catch(e){console.log("Error loading tool data:",e)}finally{e&&h(!1)}})(),()=>{e=!1}},[]);let C=()=>i.filter(e=>!1!==e.isActive),M=(0,l.useCallback)((e,a,t)=>{f(s=>s[e]?.[a]===t?s:{...s,[e]:{...s[e],[a]:t}})},[]);return t?(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:px-0",children:[(0,s.jsxs)(r(),{href:"/dashboard/cli-tools",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary w-fit",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"arrow_back"}),"Back to CLI Tools"]}),(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("h1",{className:"text-xl font-semibold text-text-main sm:text-2xl",children:t.name}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:t.description})]}),m?(0,s.jsx)(d.Qv,{}):(()=>{let a,l,i,r=(a=C(),l=[],i=new Set,a.forEach(e=>{let a=c.Xg[e.provider]||e.provider,t=(0,c.KC)(e.provider);if(t.forEach(t=>{let s=`${a}/${t.id}`;i.has(s)||(i.add(s),l.push({value:s,label:`${a}/${t.id}`,provider:e.provider,alias:a,connectionName:e.name,modelId:t.id}))}),0===t.length){let t=e.providerSpecificData?.prefix||a,s=[];e.defaultModel&&s.push({id:e.defaultModel,name:e.defaultModel}),(e.providerSpecificData?.customModels||[]).forEach(e=>{e?.id&&!s.some(a=>a.id===e.id)&&s.push({id:e.id,name:e.name||e.id})}),0===s.length&&"active"===e.testStatus&&s.push({id:"model-id",name:`${t}/model-id`}),s.forEach(a=>{let s=`${t}/${a.id}`;i.has(s)||(i.add(s),l.push({value:s,label:`${t}/${a.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:a.id}))})}}),l).length>0,d={tool:t,isExpanded:!0,onToggle:()=>{},baseUrl:j&&g?g:b&&u?u:window.location.origin,apiKeys:y,tunnelEnabled:j,tunnelPublicUrl:g,tailscaleEnabled:k,tailscaleUrl:S};switch(e){case"claude":return(0,s.jsx)(n.Tk,{...d,activeProviders:C(),modelMappings:p[e]||{},onModelMappingChange:(a,t)=>M(e,a,t),hasActiveProviders:r,cloudEnabled:b});case"codex":return(0,s.jsx)(n.Ah,{...d,activeProviders:C(),cloudEnabled:b});case"opencode":return(0,s.jsx)(n.qO,{...d,activeProviders:C(),cloudEnabled:b});case"cowork":return(0,s.jsx)(n.Q6,{...d,activeProviders:C(),hasActiveProviders:r,cloudEnabled:b,cloudUrl:u,tunnelEnabled:j,tunnelPublicUrl:g,tailscaleEnabled:k,tailscaleUrl:S});case"droid":return(0,s.jsx)(n.ZM,{...d,activeProviders:C(),hasActiveProviders:r,cloudEnabled:b});case"openclaw":return(0,s.jsx)(n.yZ,{...d,activeProviders:C(),hasActiveProviders:r,cloudEnabled:b});case"hermes":return(0,s.jsx)(n.RF,{...d,activeProviders:C(),hasActiveProviders:r,cloudEnabled:b});case"cline":return(0,s.jsx)(n.aG,{...d,activeProviders:C(),cloudEnabled:b});case"kilo":return(0,s.jsx)(n.c9,{...d,activeProviders:C(),cloudEnabled:b});case"deepseek-tui":return(0,s.jsx)(n.lF,{...d,activeProviders:C(),hasActiveProviders:r,cloudEnabled:b});case"jcode":return(0,s.jsx)(n.mW,{...d,activeProviders:C(),hasActiveProviders:r,cloudEnabled:b});case"grok-build":return(0,s.jsx)(n.E_,{...d,activeProviders:C(),hasActiveProviders:r,cloudEnabled:b});case"pi":case"omp":case"crush":case"forge":case"smelt":case"codewhale":return(0,s.jsx)(n.WE,{...d,activeProviders:C(),cloudEnabled:b});default:return(0,s.jsx)(n.a7,{toolId:e,...d,activeProviders:C(),cloudEnabled:b,tunnelEnabled:j})}})()]}):(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:px-0",children:[(0,s.jsxs)(r(),{href:"/dashboard/cli-tools",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary w-fit",children:[(0,s.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"arrow_back"}),"Back to CLI Tools"]}),(0,s.jsx)("p",{className:"text-sm text-text-muted",children:"Tool not found or disabled."})]})}},98907:(e,a,t)=>{Promise.resolve().then(t.bind(t,85309))}},e=>{e.O(0,[8474,6355,5772,1321,705,5497,761,8441,3794,7358],()=>e(e.s=98907)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{50843:(e,s,l)=>{Promise.resolve().then(l.bind(l,75882))},75882:(e,s,l)=>{"use strict";l.d(s,{default:()=>g});var t=l(95155),a=l(12115),i=l(35497),r=l(3534),c=l(47590),n=l(10761),o=l(98500),d=l.n(o),x=l(5772);function m({toolId:e,tool:s,status:l}){let a=s?.configType==="guide"?{label:"Guide",cls:"bg-blue-500/10 text-blue-600 dark:text-blue-400"}:l?l.installed?l.has9Router?{label:"Connected",cls:"bg-green-500/10 text-green-600 dark:text-green-400"}:{label:"Not configured",cls:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400"}:{label:"Not installed",cls:"bg-gray-500/10 text-gray-500"}:{label:"Unknown",cls:"bg-gray-500/10 text-gray-500"};return(0,t.jsx)(d(),{href:`/dashboard/cli-tools/${e}`,className:"block",children:(0,t.jsx)(i.Zp,{padding:"sm",className:"h-full overflow-hidden hover:border-primary/50 transition-colors cursor-pointer",children:(0,t.jsx)("div",{className:"flex h-full flex-col gap-2",children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:s.image?(0,t.jsx)(x.A,{src:s.image,alt:s.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"},loading:"lazy",decoding:"async"}):s.icon?(0,t.jsx)("span",{className:"material-symbols-outlined text-[28px]",style:{color:s.color},children:s.icon}):null}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"font-medium text-sm truncate",children:s.name}),(0,t.jsx)("span",{className:`inline-block mt-1 px-1.5 py-0.5 text-[10px] font-medium rounded-full ${a.cls}`,children:a.label})]}),(0,t.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[18px] shrink-0",children:"chevron_right"})]})})})})}function g({machineId:e}){let[s,l]=(0,a.useState)(!0),[o,d]=(0,a.useState)({});if((0,a.useEffect)(()=>{let e=!0;return(async()=>{try{let s=await fetch("/api/cli-tools/all-statuses");s.ok&&e&&d(await s.json())}catch(e){console.log("Error fetching tool statuses:",e)}finally{e&&l(!1)}})(),()=>{e=!1}},[]),s)return(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:[(0,t.jsx)(i.Qv,{}),(0,t.jsx)(i.Qv,{}),(0,t.jsx)(i.Qv,{}),(0,t.jsx)(i.Qv,{}),(0,t.jsx)(i.Qv,{}),(0,t.jsx)(i.Qv,{})]});let x=Object.entries(r.dM),h=Object.entries(r.wn);return(0,t.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-1 sm:px-0",children:[(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:x.map(([e,s])=>(0,t.jsx)(m,{toolId:e,tool:s,status:o[e]},e))}),(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:gap-4",children:[(0,t.jsxs)(c.gN,{className:"flex items-center gap-2 px-1",children:[(0,t.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary",children:"security"}),(0,t.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"MITM Tools"})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:h.map(([e,s])=>(0,t.jsx)(c.Cq,{children:(0,t.jsx)(n.gY,{tool:s})},e))})]})]})}}},e=>{e.O(0,[8474,6355,5772,1321,705,5497,761,8441,3794,7358],()=>e(e.s=50843)),_N_E=e.O()}]);
|
package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-ca65ed1d064100f8.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3649],{80191:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>w});var l=s(95155),a=s(12115),r=s(44923),i=s(87256),n=s(39768),o=s(5020),d=s(35497),c=s(11059),m=s(929);s(88105);var x=s(67899),u=s(96035),h=s(47590);let p=/^[a-zA-Z0-9_.\-]+$/,f=[{key:"vision",label:"Vision",icon:"visibility",desc:"images (png, jpg, webp, …)"},{key:"audioInput",label:"Audio",icon:"graphic_eq",desc:"audio input"}],b="oc/mimo-v2.6-flash-free",g={enabled:!0,roundRobin:!1,models:[]},j={vision:{...g},pdf:{...g},audioInput:{...g},videoInput:{...g}},y=e=>"oc/mimo-v2.5-free"===e?b:e,v=[{value:"fallback",label:"Fallback — try in order"},{value:"round-robin",label:"Round Robin — rotate"},{value:"fusion",label:"Fusion — panel + judge"}];function w(){let e,[t,s]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[n,o]=(0,a.useState)(!1),[x,p]=(0,a.useState)(null),[b,w]=(0,a.useState)([]),[N,S]=(0,a.useState)({}),[$,M]=(0,a.useState)(j),{getCaps:D}=(0,m.y)(),[A,O]=(0,a.useState)(null),[P,F]=(0,a.useState)(null),[T,R]=(0,a.useState)([]),[_,q]=(0,a.useState)(!1),{copied:z,copy:I}=(0,c.C)();(0,a.useEffect)(()=>{Y()},[]),(0,a.useEffect)(()=>{let e=new Set(t.map(e=>e.id));R(t=>t.filter(t=>e.has(t)))},[t]);let B=t.filter(e=>T.includes(e.id)),J=t.length>0&&T.length===t.length,L=T.length>0,V=()=>R([]),G=async e=>{let t="cursor"===e?"Cursor Default":"Claude Default";F(e);try{let s=await fetch(`/api/combos/presets?source=${e}`),l=await s.json();if(!s.ok)return void alert(l.error||`Failed to preview ${t}`);let a=l.toCreate??(l.items||[]).filter(e=>!e.exists).length,r=l.toSkip??(l.items||[]).filter(e=>e.exists).length,i=(l.items||[]).length;if(0===i)return void alert(`No ${t} models available to generate.`);if(0===a)return void alert(`All ${i} ${t} combos already exist. Nothing to create.`);O({title:`Generate ${t}`,message:`Create ${a} combo${1===a?"":"s"} named like ${"cursor"===e?"Cursor":"Claude"} model IDs (seeded with cu/… or cc/…). ${r} already exist and will be skipped. You can edit any combo afterward to add fallbacks.`,confirmText:"Generate",variant:"primary",onConfirm:async()=>{O(e=>e?{...e,loading:!0}:null);try{let s=await fetch("/api/combos/presets",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:e})}),l=await s.json();if(!s.ok)return void alert(l.error||`Failed to generate ${t}`);await Y(),O(null)}catch(e){console.log(`Error generating ${t}:`,e),alert(`Failed to generate ${t}`),O(e=>e?{...e,loading:!1}:null)}}})}catch(e){console.log(`Error previewing ${t}:`,e),alert(`Failed to preview ${t}`)}finally{F(null)}},Y=async()=>{try{let[t,l,a]=await Promise.all([fetch("/api/combos"),fetch("/api/providers"),fetch("/api/settings")]),r=await t.json(),i=await l.json(),n=a.ok?await a.json():{};t.ok&&s((r.combos||[]).filter(e=>!e.kind||"llm"===e.kind)),l.ok&&w(i.connections||[]),S(n.comboStrategies||{});let o=n.capacityAdapter||{},d={};for(let t of f){var e;d[t.key]=(e=o[t.key],Array.isArray(e)?{enabled:!0,roundRobin:!1,models:e.map(e=>y(e?.model||e)).filter(Boolean)}:e&&"object"==typeof e?{enabled:!1!==e.enabled,roundRobin:!!e.roundRobin,models:Array.isArray(e.models)?e.models.map(y).filter(Boolean):[]}:{...g})}M(d)}catch(e){console.log("Error fetching data:",e)}finally{i(!1)}},W=async e=>{M(e);try{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({capacityAdapter:e})})}catch(e){console.log("Error updating capacity adapter:",e)}},K=async e=>{try{let t=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(t.ok)await Y(),o(!1);else{let e=await t.json();alert(e.error||"Failed to create combo")}}catch(e){console.log("Error creating combo:",e)}},Q=async(e,t)=>{try{let s=await fetch(`/api/combos/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(s.ok)await Y(),p(null);else{let e=await s.json();alert(e.error||"Failed to update combo")}}catch(e){console.log("Error updating combo:",e)}},Z=(e,t=N)=>{let s={...t};for(let t of e)delete s[t];return s},U=async e=>{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:e})}),S(e)},H=async e=>{let l=t.find(t=>t.id===e);O({title:"Delete Combo",message:l?`Delete combo "${l.name}"?`:"Delete this combo?",onConfirm:async()=>{O(e=>e?{...e,loading:!0}:null);try{(await fetch(`/api/combos/${e}`,{method:"DELETE"})).ok&&(l?.name&&await U(Z([l.name])),s(t=>t.filter(t=>t.id!==e)),R(t=>t.filter(t=>t!==e))),O(null)}catch(e){console.log("Error deleting combo:",e),O(e=>e?{...e,loading:!1}:null)}}})},X=async(e,t)=>{try{let s={...N},l={...s[e]||{},...t};l.fallbackStrategy&&"fallback"!==l.fallbackStrategy?s[e]=l:delete s[e],await U(s)}catch(e){console.log("Error updating combo strategy:",e)}},ee=async e=>{if(0!==B.length&&e){q(!0);try{let t={...N};for(let s of B)e&&"fallback"!==e?t[s.name]={...t[s.name]||{},fallbackStrategy:e}:delete t[s.name];await U(t)}catch(e){console.log("Error bulk updating combo strategy:",e),alert("Failed to update strategy for selected combos")}finally{q(!1)}}};return r?(0,l.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,l.jsx)(d.Qv,{}),(0,l.jsx)(d.Qv,{})]}):(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,l.jsxs)(u.qK,{subtitleClassName:"text-sm text-text-muted mt-1",subtitle:"Group models under one name, then pick a strategy per combo:",actions:(0,l.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:items-stretch",children:[(0,l.jsx)(d.$n,{icon:"add",onClick:()=>o(!0),className:"w-full sm:w-auto whitespace-nowrap",children:"Create Combo"}),(0,l.jsxs)("div",{className:"hidden",children:[(0,l.jsx)(d.$n,{variant:"secondary",size:"sm",icon:"edit_note",loading:"cursor"===P,disabled:!!P,onClick:()=>G("cursor"),className:"w-full whitespace-nowrap",children:"Cursor Default"}),(0,l.jsx)(d.$n,{variant:"secondary",size:"sm",icon:"smart_toy",loading:"claude"===P,disabled:!!P,onClick:()=>G("claude"),className:"w-full whitespace-nowrap",children:"Claude Default"})]})]}),children:[(0,l.jsxs)("ul",{className:"text-sm text-text-muted mt-2 flex flex-col gap-1",children:[(0,l.jsxs)("li",{children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Fallback"})," — tries models in order (next on failure)"]}),(0,l.jsxs)("li",{children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Round Robin"})," — rotates models across requests to spread load"]}),(0,l.jsxs)("li",{children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Fusion"})," — queries all models in parallel, then a judge synthesizes one answer. Best quality, but costs the most: every request bills all panel models + the judge (N+1 calls)"]})]}),(0,l.jsxs)("p",{className:"hidden text-xs text-text-muted mt-3 max-w-2xl",children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Cursor / Claude Default"})," create combos named exactly like those clients' model IDs (e.g. ",(0,l.jsx)("code",{className:"font-mono",children:"composer-2.5"}),", ",(0,l.jsx)("code",{className:"font-mono",children:"opus"}),"), seeded with the matching ",(0,l.jsx)("code",{className:"font-mono",children:"cu/…"})," or ",(0,l.jsx)("code",{className:"font-mono",children:"cc/…"})," route so traffic can hit 9router without the prefix."," ",'Note: Cursor IDE itself often blocks built-in Composer / Grok from Override OpenAI Base URL ("model does not support custom API"); add them via Cursor\'s ',(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Add Custom Model"})," using the combo name, or pick a model Cursor allows through the custom endpoint."]})]}),0===t.length?(0,l.jsx)(d.Zp,{children:(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:"layers"})}),(0,l.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No combos yet"}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create model combos with fallback support"}),(0,l.jsx)(d.$n,{icon:"add",onClick:()=>o(!0),className:"w-full sm:w-auto",children:"Create Combo"})]})}):(0,l.jsx)("div",{className:"flex flex-col gap-4",children:(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-2 rounded-lg border border-black/5 bg-black/[0.015] px-3 py-2 dark:border-white/5 dark:bg-white/[0.02] sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-xs text-text-muted hover:text-primary select-none",children:[(0,l.jsx)("input",{type:"checkbox",checked:J,ref:e=>{e&&(e.indeterminate=L&&!J)},onChange:()=>{R(J?[]:t.map(e=>e.id))},className:"h-3.5 w-3.5 rounded border-gray-300 text-primary focus:ring-primary"}),(0,l.jsx)("span",{children:L?`${T.length} selected`:`Select all (${t.length})`})]}),(0,l.jsx)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:L&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"w-full min-w-[160px] sm:w-[200px]",children:(0,l.jsx)(d.l6,{options:v,value:"",placeholder:"Set strategy…",disabled:_,onChange:e=>{let t=e.target.value;t&&ee(t)},selectClassName:"py-1.5 text-xs"})}),(0,l.jsxs)(d.$n,{size:"sm",variant:"danger",icon:"delete",disabled:_,loading:_,onClick:()=>{if(0===B.length)return;let e=B.length;O({title:"Delete Selected Combos",message:`Delete ${e} selected combo${1===e?"":"s"}? This cannot be undone.`,confirmText:"Delete",variant:"danger",onConfirm:async()=>{O(e=>e?{...e,loading:!0}:null),q(!0);try{let e=B.map(e=>e.id),t=B.map(e=>e.name),l=(await Promise.all(e.map(e=>fetch(`/api/combos/${e}`,{method:"DELETE"})))).filter(e=>!e.ok).length;await U(Z(t)),s(t=>t.filter(t=>!e.includes(t.id))),V(),O(null),l>0&&alert(`Deleted with ${l} failure${1===l?"":"s"}.`)}catch(e){console.log("Error bulk deleting combos:",e),alert("Failed to delete selected combos"),O(e=>e?{...e,loading:!1}:null)}finally{q(!1)}}})},className:"whitespace-nowrap",children:["Delete (",T.length,")"]}),(0,l.jsx)(d.$n,{size:"sm",variant:"ghost",onClick:V,disabled:_,children:"Clear"})]})})]}),(0,l.jsx)("div",{className:"flex flex-col gap-3",children:(e=Object.fromEntries(t.map(e=>[e.name,e.models])),t.map(t=>(0,l.jsx)(h.Cq,{children:(0,l.jsx)(k,{combo:t,getCaps:D,comboByName:e,activeProviders:b,copied:z,onCopy:I,onEdit:()=>p(t),onDelete:()=>H(t.id),strategy:N[t.name]||{},onSetStrategy:e=>X(t.name,e),selected:T.includes(t.id),onToggleSelect:()=>{var e;return e=t.id,void R(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}})},t.id)))})]})}),(0,l.jsx)(C,{capacityAdapter:$,onChange:W,activeProviders:b,getCaps:D}),n&&(0,l.jsx)(E,{isOpen:n,onClose:()=>o(!1),onSave:K,activeProviders:b},"create"),x&&(0,l.jsx)(E,{isOpen:!!x,combo:x,onClose:()=>p(null),onSave:e=>Q(x.id,e),activeProviders:b},x.id),(0,l.jsx)(d.uo,{isOpen:!!A,onClose:()=>!A?.loading&&O(null),onConfirm:A?.onConfirm,title:A?.title||"Confirm",message:A?.message,confirmText:A?.confirmText||"Confirm",variant:A?.variant||"danger",loading:!!A?.loading})]})}let N=e=>{if(!e)return"?";if(e>=1e6){let t=e/1e6;return`${Number.isInteger(t)?t:t.toFixed(1)}M`}return`${Math.round(e/1e3)}k`};function k({combo:e,getCaps:t,comboByName:s={},activeProviders:r=[],copied:i,onCopy:n,onEdit:o,onDelete:c,strategy:m={},onSetStrategy:u,selected:h=!1,onToggleSelect:p}){let[f,b]=(0,a.useState)(!1),g=m.fallbackStrategy||"fallback",j=m.judgeModel||"",y=(0,x.Q5)(e.models,s,t);return(0,l.jsxs)(d.Zp,{padding:"sm",className:`group ${h?"ring-1 ring-primary/40 bg-primary/[0.03]":""}`,children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-3 sm:items-center",children:[(0,l.jsx)("label",{className:"flex shrink-0 items-center pt-1 sm:pt-0 cursor-pointer",title:"Select combo",children:(0,l.jsx)("input",{type:"checkbox",checked:h,onChange:p,onClick:e=>e.stopPropagation(),className:"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary","aria-label":`Select ${e.name}`})}),(0,l.jsx)("div",{className:"size-8 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"})}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("code",{className:"block truncate font-mono text-sm font-medium",children:e.name}),(0,l.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===e.models.length?(0,l.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):e.models.slice(0,3).map((e,a)=>(0,l.jsxs)("code",{className:"inline-flex items-center gap-1 rounded bg-black/5 px-1.5 py-0.5 font-mono text-xs text-text-muted dark:bg-white/5",children:[(0,l.jsx)("span",{children:e}),(0,l.jsx)(d.nh,{caps:s[e]?(0,x.Q5)(s[e],s,t):t?.(e)})]},a)),e.models.length>3&&(0,l.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",e.models.length-3," more"]})]}),y&&(0,l.jsxs)("div",{className:"mt-1 flex items-center gap-2 text-[10px] text-text-muted",children:[(0,l.jsxs)("span",{children:["ctx ",N(y.contextWindow)]}),(0,l.jsx)("span",{className:"opacity-40",children:"\xb7"}),(0,l.jsxs)("span",{children:["max ",N(y.maxOutput)]})]}),"fusion"===g&&(0,l.jsxs)("div",{className:"mt-2 flex min-w-0 flex-wrap items-center gap-1.5",children:[(0,l.jsx)("span",{className:"text-[11px] font-medium text-text-muted",children:"Judge"}),(0,l.jsxs)("button",{onClick:()=>b(!0),className:"inline-flex max-w-full items-center gap-1 rounded border border-dashed border-primary/40 px-1.5 py-0.5 font-mono text-[11px] text-primary hover:border-primary hover:bg-primary/5 transition-colors",title:"Pick the model that fuses panel answers",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"gavel"}),(0,l.jsx)("span",{className:"truncate",children:j||`Auto — ${e.models[0]||"first model"}`})]}),j&&(0,l.jsx)("button",{onClick:()=>u({judgeModel:""}),className:"p-0.5 rounded text-text-muted hover:text-red-500 hover:bg-red-500/10 transition-colors",title:"Reset judge to Auto",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"close"})})]})]})]}),(0,l.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,l.jsx)("div",{className:"w-full sm:w-[200px]",children:(0,l.jsx)(d.l6,{options:v,value:g,onChange:e=>u({fallbackStrategy:e.target.value}),selectClassName:"py-1.5 text-xs"})}),(0,l.jsxs)("div",{className:"grid grid-cols-3 gap-1 sm:flex",children:[(0,l.jsxs)("button",{onClick:t=>{t.stopPropagation(),n(e.name,`combo-${e.id}`)},className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Copy combo name",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:i===`combo-${e.id}`?"check":"content_copy"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Copy"})]}),(0,l.jsxs)("button",{onClick:o,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Edit",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,l.jsxs)("button",{onClick:c,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 transition-colors hover:bg-red-500/10",title:"Delete",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]})]})]}),f&&(0,l.jsx)(d.rq,{isOpen:f,onClose:()=>b(!1),onSelect:e=>{u({judgeModel:e?.value||""}),b(!1)},activeProviders:r,title:"Select Judge Model",addedModelValues:j?[j]:[],closeOnSelect:!0})]})}function C({capacityAdapter:e,onChange:t,activeProviders:s,getCaps:a}){return(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsx)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("p",{className:"text-sm font-medium",children:"Vision Adapter"}),(0,l.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"Your model can't read image/audio? Auto-switches to a model in the pool below."})]})}),(0,l.jsx)("div",{className:"flex flex-col gap-4",children:f.map(r=>(0,l.jsx)(S,{cap:r,entry:e[r.key]||g,onChange:s=>t({...e,[r.key]:s}),activeProviders:s,getCaps:a},r.key))})]})}function S({cap:e,entry:t,onChange:s,activeProviders:r,getCaps:i}){let[n,o]=(0,a.useState)(!1),{enabled:c,roundRobin:m,models:x}=t,u=e=>s({...t,...e}),h=(e,t)=>{let s=e+t;if(s<0||s>=x.length)return;let l=[...x];[l[e],l[s]]=[l[s],l[e]],u({models:l})};return(0,l.jsxs)(d.Zp,{padding:"sm",className:`group ${!c?"opacity-50":""}`,children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-2.5 sm:items-center",children:[(0,l.jsx)(d.lM,{checked:c,onChange:e=>u({enabled:e}),"aria-label":`Enable ${e.label} adapter`}),(0,l.jsx)("div",{className:"size-8 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:e.icon})}),(0,l.jsx)("div",{className:"min-w-0 flex-1",children:(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("code",{className:"font-mono text-sm font-medium",children:e.label}),(0,l.jsxs)("span",{className:"text-[10px] text-text-muted",children:["— ",e.desc]})]})})]}),(0,l.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,l.jsxs)("label",{className:"flex items-center gap-1.5 text-xs text-text-muted cursor-pointer select-none",children:[(0,l.jsx)(d.lM,{checked:m,onChange:e=>u({roundRobin:e}),disabled:!c,"aria-label":`Round-robin ${e.label} adapter`}),(0,l.jsx)("span",{children:"Round"})]}),(0,l.jsx)(d.$n,{icon:"add",variant:"ghost",size:"sm",onClick:()=>o(!0),disabled:!c,title:`Add ${e.label} model`,children:"Add Model"})]})]}),0===x.length?(0,l.jsxs)("div",{className:"mt-3 py-2 text-center text-xs text-text-muted italic",children:["No models in pool (will fallback to ",b,")"]}):(0,l.jsx)("div",{className:"mt-3 overflow-hidden rounded-lg border border-border/50",children:(0,l.jsxs)("table",{className:"w-full text-left text-xs",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{className:"border-b border-border/40 bg-black/[0.02] text-text-muted dark:bg-white/[0.02]",children:[(0,l.jsx)("th",{className:"w-12 px-3 py-1.5 font-medium text-center",children:"#"}),(0,l.jsx)("th",{className:"px-3 py-1.5 font-medium",children:"Model"}),(0,l.jsx)("th",{className:"w-24 px-3 py-1.5 font-medium text-center",children:"Order"}),(0,l.jsx)("th",{className:"w-12 px-3 py-1.5 font-medium text-right"})]})}),(0,l.jsx)("tbody",{className:"divide-y divide-border/30 font-mono",children:x.map((e,t)=>(0,l.jsxs)("tr",{className:"hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors",children:[(0,l.jsxs)("td",{className:"px-3 py-2 text-center text-text-muted text-[11px] font-sans",children:["#",t+1]}),(0,l.jsx)("td",{className:"px-3 py-2 text-text-main",children:(0,l.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[(0,l.jsx)("span",{className:"truncate",children:e}),(0,l.jsx)(d.nh,{caps:i?.(e)}),e===b&&(0,l.jsx)("span",{className:"rounded bg-emerald-500/10 px-1.5 py-0.5 font-sans text-[10px] font-medium text-emerald-600 dark:text-emerald-400",children:"free default"})]})}),(0,l.jsx)("td",{className:"px-3 py-2 text-center",children:(0,l.jsxs)("div",{className:"inline-flex items-center gap-1",children:[(0,l.jsx)("button",{type:"button",onClick:()=>h(t,-1),disabled:!c||0===t,className:`p-1 rounded transition-colors ${!c||0===t?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move up",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px] leading-none",children:"arrow_upward"})}),(0,l.jsx)("button",{type:"button",onClick:()=>h(t,1),disabled:!c||t===x.length-1,className:`p-1 rounded transition-colors ${!c||t===x.length-1?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move down",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px] leading-none",children:"arrow_downward"})})]})}),(0,l.jsx)("td",{className:"px-3 py-2 text-right",children:(0,l.jsx)("button",{type:"button",onClick:()=>{let e;u({models:0===(e=x.filter((e,s)=>s!==t)).length?[b]:e})},disabled:!c,className:`p-1 rounded transition-colors ${!c?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-red-500 hover:bg-red-500/10"}`,title:"Remove model",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px] leading-none",children:"close"})})})]},`${e}-${t}`))})]})}),n&&(0,l.jsx)(d.rq,{isOpen:n,onClose:()=>o(!1),onSelect:e=>{let t=e?.value||e?.name||e;!t||x.includes(t)||u({models:[...x,t]})},onDeselect:e=>{let t=e?.value||e?.name||e,s=x.filter(e=>e!==t);u({models:0===s.length?[b]:s})},activeProviders:r,title:`Add ${e.label} Model`,addedModelValues:x,capFilter:e.key,closeOnSelect:!1})]})}function $({id:e,index:t,model:s,isFirst:r,isLast:o,onEdit:d,onMoveUp:c,onMoveDown:m,onRemove:x}){let{attributes:u,listeners:h,setNodeRef:p,transform:f,isDragging:b}=(0,i.gl)({id:e}),g={transform:n.Ks.Transform.toString(f),opacity:b?.4:1,zIndex:b?999:void 0},[j,y]=(0,a.useState)(!1),[v,w]=(0,a.useState)(s),N=()=>{let e=v.trim();e&&e!==s?d(e):w(s),y(!1)};return(0,l.jsxs)("div",{ref:p,style:g,className:`group flex min-w-0 items-center gap-1.5 rounded-md px-2 py-1 bg-black/[0.02] hover:bg-black/[0.04] dark:bg-white/[0.02] dark:hover:bg-white/[0.04] transition-colors ${b?"shadow-md ring-1 ring-primary/30":""}`,children:[(0,l.jsx)("button",{...u,...h,type:"button",className:"cursor-grab touch-none p-0.5 rounded text-text-muted hover:text-primary active:cursor-grabbing shrink-0",title:"Drag to reorder",children:(0,l.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,l.jsx)("circle",{cx:"9",cy:"4",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"4",r:"2"}),(0,l.jsx)("circle",{cx:"9",cy:"12",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"12",r:"2"}),(0,l.jsx)("circle",{cx:"9",cy:"20",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"20",r:"2"})]})}),(0,l.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-3 text-center shrink-0",children:t+1}),j?(0,l.jsx)("input",{autoFocus:!0,value:v,onChange:e=>w(e.target.value),onBlur:N,onKeyDown:e=>{"Enter"===e.key&&N(),"Escape"===e.key&&(w(s),y(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-white px-1.5 py-0.5 font-mono text-xs text-text-main outline-none dark:bg-black/20"}):(0,l.jsx)("div",{className:"min-w-0 flex-1 cursor-text truncate rounded px-1.5 py-0.5 font-mono text-xs text-text-main hover:bg-black/5 dark:hover:bg-white/5",onClick:()=>y(!0),title:"Click to edit",children:s}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[(0,l.jsx)("button",{onClick:c,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move up",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_upward"})}),(0,l.jsx)("button",{onClick:m,disabled:o,className:`p-0.5 rounded ${o?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move down",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_downward"})})]}),(0,l.jsx)("button",{onClick:x,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 transition-all",title:"Remove",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]})}function E({isOpen:e,combo:t,onClose:s,onSave:n,activeProviders:c,kindFilter:m=null}){let[x,u]=(0,a.useState)(t?.name||""),[h,f]=(0,a.useState)(t?.models||[]),[b,g]=(0,a.useState)(!1),[j,y]=(0,a.useState)(!1),[v,w]=(0,a.useState)(""),[N,k]=(0,a.useState)({}),C=(0,r.FR)((0,r.MS)(r.AN,{activationConstraint:{distance:5}}),(0,r.MS)(r.uN,{coordinateGetter:i.JR})),S=h.map((e,t)=>({uid:`item-${t}`,model:e})),M=async()=>{try{let e=await fetch("/api/models/alias");if(!e.ok)return;let t=await e.json();k(t.aliases||{})}catch(e){console.error("Error fetching modal data:",e)}};(0,a.useEffect)(()=>{e&&M()},[e]);let D=e=>e.trim()?p.test(e)?(w(""),!0):(w("Only letters, numbers, -, _ and . allowed"),!1):(w("Name is required"),!1),A=async()=>{D(x)&&(y(!0),await n({name:x.trim(),models:h}),y(!1))},O=!!t;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(d.aF,{isOpen:e,onClose:s,title:O?"Edit Combo":"Create Combo",children:(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(d.pd,{label:"Combo Name",value:x,onChange:e=>{let t=e.target.value;u(t),t?D(t):w("")},placeholder:"my-combo",error:v}),(0,l.jsx)("p",{className:"text-[10px] text-text-muted mt-0.5",children:"Only letters, numbers, -, _ and . allowed"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Models"}),0===h.length?(0,l.jsxs)("div",{className:"text-center py-4 border border-dashed border-black/10 dark:border-white/10 rounded-lg bg-black/[0.01] dark:bg-white/[0.01]",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-xl mb-1",children:"layers"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"No models added yet"})]}):(0,l.jsx)(r.Mp,{sensors:C,collisionDetection:r.fp,onDragEnd:e=>{let{active:t,over:s}=e;if(s&&t.id!==s.id){let e=S.findIndex(e=>e.uid===t.id),l=S.findIndex(e=>e.uid===s.id);-1!==e&&-1!==l&&f(t=>(0,i.be)(t,e,l))}},modifiers:[o.FN,o.gj],children:(0,l.jsx)(i.gB,{items:S.map(e=>e.uid),strategy:i._G,children:(0,l.jsx)("div",{className:"flex max-h-[55vh] min-w-0 flex-col gap-1 overflow-y-auto sm:max-h-[350px]",children:S.map(({uid:e,model:t},s)=>(0,l.jsx)($,{id:e,index:s,model:t,isFirst:0===s,isLast:s===S.length-1,onEdit:e=>{let t=[...h];t[s]=e,f(t)},onMoveUp:()=>(e=>{if(0===e)return;let t=[...h];[t[e-1],t[e]]=[t[e],t[e-1]],f(t)})(s),onMoveDown:()=>(e=>{if(e===h.length-1)return;let t=[...h];[t[e],t[e+1]]=[t[e+1],t[e]],f(t)})(s),onRemove:()=>{f(h.filter((e,t)=>t!==s))}},e))})})}),(0,l.jsxs)("button",{onClick:()=>g(!0),className:"w-full mt-2 py-2 border border-dashed border-black/10 dark:border-white/10 rounded-lg text-xs text-primary font-medium hover:text-primary hover:border-primary/50 transition-colors flex items-center justify-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,l.jsx)(d.$n,{onClick:s,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,l.jsx)(d.$n,{onClick:A,fullWidth:!0,size:"sm",disabled:!x.trim()||!!v||j,children:j?"Saving...":O?"Save":"Create"})]})]})}),b&&(0,l.jsx)(d.rq,{isOpen:b,onClose:()=>g(!1),onSelect:e=>{h.includes(e.value)||f([...h,e.value])},onDeselect:e=>{f(h.filter(t=>t!==e.value))},activeProviders:c,modelAliases:N,title:"Add Model to Combo",kindFilter:m,addedModelValues:h,closeOnSelect:!1})]})}},84680:(e,t,s)=>{"use strict";s.d(t,{PM:()=>l.PM,Sj:()=>l.Sj,Vy:()=>l.Vy,fF:()=>l.fF,sl:()=>l.sl,vL:()=>l.vL,y$:()=>l.y$,zM:()=>l.zM});var l=s(44923)},96035:(e,t,s)=>{"use strict";s.d(t,{qK:()=>n});var l=s(95155),a=s(18310),r=s(71451),i=s(47590);function n({title:e,subtitle:t,actions:s,children:o,className:d="",titleAs:c="h1",titleClassName:m="text-lg font-semibold text-text-main",subtitleClassName:x="mt-0.5 text-sm text-text-muted"}){let u=(0,a.I)(),h=r.PY1[c]||r.PY1.h1;if(u)return(0,l.jsxs)("div",{className:d,children:[(e||s)&&(0,l.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[e?(0,l.jsx)(c,{className:m,children:e}):null,t?(0,l.jsx)("p",{className:x,children:t}):null]}),(0,l.jsx)("div",{className:"w-full sm:w-auto",children:s})]}),o]});let p=e=>({initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:i.qW.base,delay:e,ease:i.Le}});return(0,l.jsxs)("div",{className:d,children:[(e||s)&&(0,l.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[e?(0,l.jsx)(h,{...p(0),className:m,children:e}):null,t?(0,l.jsx)(r.PY1.p,{...p(.05),className:x,children:t}):null]}),s?(0,l.jsx)(r.PY1.div,{...p(.1),className:"w-full sm:w-auto",children:s}):null]}),o]})}i.qW.base,i.Le},97277:(e,t,s)=>{Promise.resolve().then(s.bind(s,80191))}},e=>{e.O(0,[8474,6355,5353,1321,705,5497,8441,3794,7358],()=>e(e.s=97277)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[712],{44493:(e,t,l)=>{"use strict";l.d(t,{default:()=>o});var s=l(95155),n=l(12115),r=l(35497),a=l(90620);let c={LOG:"text-green-400",INFO:"text-blue-400",WARN:"text-yellow-400",ERROR:"text-red-400",DEBUG:"text-purple-400"};function o(){let[e,t]=(0,n.useState)([]),[l,o]=(0,n.useState)(!1),i=(0,n.useRef)(null),u=async()=>{try{await fetch("/api/translator/console-logs",{method:"DELETE"})}catch(e){console.error("Failed to clear console logs:",e)}};return(0,n.useEffect)(()=>{let e=new EventSource("/api/translator/console-logs/stream");return e.onopen=()=>o(!0),e.onmessage=e=>{let l=JSON.parse(e.data);"init"===l.type?t(l.logs.slice(-a.UY.maxLines)):"line"===l.type?t(e=>{let t=[...e,l.line];return t.length>a.UY.maxLines?t.slice(-a.UY.maxLines):t}):"lines"===l.type?t(e=>{let t=[...e,...l.lines];return t.length>a.UY.maxLines?t.slice(-a.UY.maxLines):t}):"clear"===l.type&&t([])},e.onerror=()=>o(!1),()=>e.close()},[]),(0,n.useEffect)(()=>{i.current&&(i.current.scrollTop=i.current.scrollHeight)},[e]),(0,s.jsx)("div",{className:"",children:(0,s.jsxs)(r.Zp,{children:[(0,s.jsx)("div",{className:"flex items-center justify-end px-4 pt-3 pb-2",children:(0,s.jsx)(r.$n,{size:"sm",variant:"outline",icon:"delete",onClick:u,children:"Clear"})}),(0,s.jsx)("div",{ref:i,className:"bg-black rounded-b-lg p-4 text-xs font-mono h-[calc(100vh-220px)] overflow-y-auto",children:0===e.length?(0,s.jsx)("span",{className:"text-text-muted",children:"No console logs yet."}):(0,s.jsx)("div",{className:"space-y-0.5",children:e.map((e,t)=>{let l,n;return(0,s.jsx)("div",{children:(n=c[(l=e.match(/\[(\w+)\]/g))?l[1]?.replace(/\[|\]/g,""):null]||"text-green-400",(0,s.jsx)("span",{className:n,children:e}))},t)})})})]})})}},
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[712],{44493:(e,t,l)=>{"use strict";l.d(t,{default:()=>o});var s=l(95155),n=l(12115),r=l(35497),a=l(90620);let c={LOG:"text-green-400",INFO:"text-blue-400",WARN:"text-yellow-400",ERROR:"text-red-400",DEBUG:"text-purple-400"};function o(){let[e,t]=(0,n.useState)([]),[l,o]=(0,n.useState)(!1),i=(0,n.useRef)(null),u=async()=>{try{await fetch("/api/translator/console-logs",{method:"DELETE"})}catch(e){console.error("Failed to clear console logs:",e)}};return(0,n.useEffect)(()=>{let e=new EventSource("/api/translator/console-logs/stream");return e.onopen=()=>o(!0),e.onmessage=e=>{let l=JSON.parse(e.data);"init"===l.type?t(l.logs.slice(-a.UY.maxLines)):"line"===l.type?t(e=>{let t=[...e,l.line];return t.length>a.UY.maxLines?t.slice(-a.UY.maxLines):t}):"lines"===l.type?t(e=>{let t=[...e,...l.lines];return t.length>a.UY.maxLines?t.slice(-a.UY.maxLines):t}):"clear"===l.type&&t([])},e.onerror=()=>o(!1),()=>e.close()},[]),(0,n.useEffect)(()=>{i.current&&(i.current.scrollTop=i.current.scrollHeight)},[e]),(0,s.jsx)("div",{className:"",children:(0,s.jsxs)(r.Zp,{children:[(0,s.jsx)("div",{className:"flex items-center justify-end px-4 pt-3 pb-2",children:(0,s.jsx)(r.$n,{size:"sm",variant:"outline",icon:"delete",onClick:u,children:"Clear"})}),(0,s.jsx)("div",{ref:i,className:"bg-black rounded-b-lg p-4 text-xs font-mono h-[calc(100vh-220px)] overflow-y-auto",children:0===e.length?(0,s.jsx)("span",{className:"text-text-muted",children:"No console logs yet."}):(0,s.jsx)("div",{className:"space-y-0.5",children:e.map((e,t)=>{let l,n;return(0,s.jsx)("div",{children:(n=c[(l=e.match(/\[(\w+)\]/g))?l[1]?.replace(/\[|\]/g,""):null]||"text-green-400",(0,s.jsx)("span",{className:n,children:e}))},t)})})})]})})}},66438:(e,t,l)=>{Promise.resolve().then(l.bind(l,44493))}},e=>{e.O(0,[8474,6355,1321,705,5497,8441,3794,7358],()=>e(e.s=66438)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6099],{},_=>{_.O(0,[8474,6355,1321,705,5497,6192,8441,3794,7358],()=>_(_.s=86192)),_N_E=_.O()}]);
|