claude-code-workflow 7.2.27 → 7.2.28
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/.ccw/specs/architecture-constraints.md +5 -0
- package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
- package/.claude/skills/investigate/SKILL.md +110 -0
- package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
- package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
- package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
- package/.claude/skills/investigate/phases/04-implementation.md +139 -0
- package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
- package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
- package/.claude/skills/investigate/specs/iron-law.md +101 -0
- package/.claude/skills/security-audit/SKILL.md +125 -0
- package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
- package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
- package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
- package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
- package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
- package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
- package/.claude/skills/ship/SKILL.md +105 -0
- package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
- package/.claude/skills/ship/phases/02-code-review.md +137 -0
- package/.claude/skills/ship/phases/03-version-bump.md +171 -0
- package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
- package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
- package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
- package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
- package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
- package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
- package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.claude/skills/team-motion-design/SKILL.md +129 -0
- package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
- package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
- package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
- package/.claude/skills/team-ui-polish/SKILL.md +127 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
- package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
- package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
- package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
- package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.claude/skills/team-uidesign/SKILL.md +6 -1
- package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
- package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
- package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
- package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
- package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
- package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
- package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
- package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
- package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
- package/.claude/skills/team-ux-improve/SKILL.md +3 -0
- package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
- package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
- package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
- package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
- package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
- package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
- package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
- package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
- package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
- package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
- package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
- package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
- package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/.codex/skills/investigate/agents/investigator.md +392 -0
- package/.codex/skills/investigate/orchestrator.md +362 -0
- package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
- package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
- package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
- package/.codex/skills/investigate/phases/04-implementation.md +195 -0
- package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
- package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
- package/.codex/skills/security-audit/orchestrator.md +384 -0
- package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
- package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
- package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
- package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
- package/.codex/skills/ship/agents/ship-operator.md +318 -0
- package/.codex/skills/ship/orchestrator.md +426 -0
- package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
- package/.codex/skills/ship/phases/02-code-review.md +228 -0
- package/.codex/skills/ship/phases/03-version-bump.md +259 -0
- package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
- package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
- package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
- package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
- package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.codex/skills/team-motion-design/SKILL.md +222 -0
- package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
- package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
- package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
- package/.codex/skills/team-ui-polish/SKILL.md +218 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
- package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
- package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
- package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
- package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/README.md +8 -0
- package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
- package/ccw/dist/core/hooks/hook-templates.js +114 -1
- package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +34 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/system-routes.js +2 -2
- package/ccw/dist/core/routes/system-routes.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +105 -105
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{u as W,al as ge,r as i,j as e,e as f,Z as xe,c as Ve,a7 as ie,C as Q,m as ks,k as ze,b as ps,I as N,K as Ms,D as us,d as js,f as vs,g as he,S as cs,h as fs,T as ye,B as ee,x as $e,y as Ge,z as qe,A as Qe,E as We,bu as m,aq as ve,ar as fe,as as Se,at as Ne,au as V,cy as os,ap as ms,bO as Ke,G as Ye,bq as Be,ck as Oe,bp as et,ae as Cs,N as ss,av as st,X as Ds,bf as tt,a2 as at,a3 as it,a4 as Es,a5 as Ts,an as Is,e3 as nt,e4 as lt,da as dt,R as rt}from"./index-Dff4bg3u.js";import{T as ct}from"./TabsNavigation-BGsKy7DO.js";import{S as Z}from"./Switch-BpB9h__9.js";import{u as Ze,a as ot,b as Ss,c as mt,d as ht,e as xt,f as Ls,g as gt,h as Os,i as pt,j as ut,k as jt,l as vt,m as zs,n as ft,o as Bs,p as St,q as Nt,r as yt,s as Rs,t as bt,v as Ct,w as wt,x as Mt,y as Pt}from"./useApiSettings-D23HVEt8.js";import{E as Ns}from"./ellipsis-vertical-CbNlw2gS.js";import{S as ys}from"./square-pen-Bue1chJR.js";import{C as hs,a as xs,b as gs}from"./Collapsible-Wrs87QT7.js";import{E as ts}from"./eye-off-D5uzLZyP.js";import{E as as}from"./eye-yAy69Cnn.js";import{A as _s,a as Hs,b as Us,c as Js,d as Vs,e as $s,f as Gs,g as qs}from"./AlertDialog-Bf1jdqax.js";import{F as kt}from"./file-text-DRkrjie9.js";import{H as Et}from"./hard-drive-AoLGL0z4.js";import{S as Qs}from"./save-D9-CoT3x.js";import{L as Tt}from"./link-5yXdZBch.js";import"./useLocale-DJ62jjFa.js";import"./errorSanitizer-IY9pf5g4.js";function It({provider:a,onEdit:r,onDelete:t,onTest:s,onMultiKeySettings:n,onSyncToCodexLens:h,onManageModels:o,onToggleEnabled:d,isDeleting:M,isTesting:u,isToggling:v}){var k,I;const{formatMessage:j}=W(),P=((k=a.apiKeys)==null?void 0:k.filter(C=>C.enabled).length)||0,F=(((I=a.apiKeys)==null?void 0:I.length)||0)>0,H=()=>{var K;if(!a.enabled)return e.jsx(ee,{variant:"secondary",children:j({id:"apiSettings.common.disabled"})});if(!((K=a.healthCheck)!=null&&K.enabled))return e.jsx(ee,{variant:"outline",children:j({id:"apiSettings.providers.unknown"})});const C=a.apiKeys||[];if(C.length===0)return e.jsx(ee,{variant:"info",children:j({id:"apiSettings.providers.unknown"})});const D=C.filter(g=>g.healthStatus==="healthy").length;return C.filter(g=>g.healthStatus==="unhealthy").length>0?e.jsx(ee,{variant:"destructive",children:j({id:"apiSettings.providers.unhealthy"})}):D===C.length?e.jsx(ee,{variant:"success",children:j({id:"apiSettings.providers.healthy"})}):e.jsx(ee,{variant:"warning",children:j({id:"apiSettings.providers.unknown"})})};return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name}),H()]}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"capitalize",children:a.type}),F&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(xe,{className:"w-3 h-3"}),P," ",j({id:"apiSettings.providers.apiKey"})]}),a.routingStrategy&&e.jsx("span",{className:"capitalize",children:a.routingStrategy.replace("-"," ")})]}),a.apiBase&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1 truncate",children:a.apiBase})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:d,disabled:v}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.edit"})]}),e.jsxs(he,{onClick:s,disabled:u,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.test"})]}),e.jsxs(he,{onClick:o,children:[e.jsx(cs,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.manageModels"})]}),F&&e.jsxs(he,{onClick:n,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.multiKeySettings"})]}),e.jsxs(he,{onClick:h,children:[e.jsx(ze,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.syncToCodexLens"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:M,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.delete"})]})]})]})]})]})})}function Ft({onAddProvider:a,onEditProvider:r,onMultiKeySettings:t,onSyncToCodexLens:s,onManageModels:n}){const{formatMessage:h}=W(),{error:o}=ge(),[d,M]=i.useState(""),[u,v]=i.useState(!1),{providers:j,isLoading:P,refetch:F}=Ze(),{deleteProvider:H,isDeleting:k}=ot(),{updateProvider:I,isUpdating:C}=Ss(),{testProvider:D,isTesting:w}=mt(),{triggerHealthCheck:K}=ht(),g=i.useMemo(()=>j.filter(S=>{const _=S.name.toLowerCase().includes(d.toLowerCase())||S.type.toLowerCase().includes(d.toLowerCase()),b=!u||!S.enabled;return _&&b}),[j,d,u]),c=async(S,_)=>{const b=h({id:"apiSettings.providers.deleteConfirm"},{name:_});if(window.confirm(b))try{await H(S)}catch{o(h({id:"apiSettings.providers.deleteError"}))}},A=async(S,_)=>{try{await I(S,{enabled:_})}catch{o(h({id:"apiSettings.providers.toggleError"}))}},L=async S=>{try{(await D(S)).success&&await K(S)}catch{o(h({id:"apiSettings.providers.testError"}))}},z=j.filter(S=>S.enabled).length,y=j.length;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-foreground",children:h({id:"apiSettings.providers.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"outline",onClick:()=>F(),disabled:P,children:[e.jsx(xe,{className:Ve("w-4 h-4 mr-2",P&&"animate-spin")}),h({id:"common.actions.refresh"})]}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ks,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:y})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.total"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ze,{className:"w-5 h-5 text-success"}),e.jsx("span",{className:"text-2xl font-bold",children:z})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.enabled"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:h({id:"apiSettings.common.searchPlaceholder"}),value:d,onChange:S=>M(S.target.value),className:"pl-9"})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(f,{variant:u?"default":"outline",size:"sm",onClick:()=>v(S=>!S),children:[u?e.jsx(Ms,{className:"w-4 h-4 mr-2"}):e.jsx(ze,{className:"w-4 h-4 mr-2"}),h(u?{id:"apiSettings.providers.actions.hideDisabled"}:{id:"apiSettings.providers.actions.showDisabled"})]})})]}),P?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(S=>e.jsx("div",{className:"h-24 bg-muted animate-pulse rounded-lg"},S))}):g.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(ks,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:h({id:"apiSettings.providers.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:h({id:"apiSettings.providers.emptyState.message"})}),e.jsxs(f,{className:"mt-4",onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]}):e.jsx("div",{className:"space-y-3",children:g.map(S=>e.jsx(It,{provider:S,onEdit:()=>r(S.id),onDelete:()=>c(S.id,S.name),onTest:()=>L(S.id),onMultiKeySettings:()=>t(S.id),onSyncToCodexLens:()=>s(S.id),onManageModels:()=>n(S.id),onToggleEnabled:_=>A(S.id,_),isDeleting:k,isTesting:w,isToggling:C},S.id))})]})}function Kt({entry:a,showKey:r,onToggleShowKey:t,onUpdate:s,onRemove:n}){const{formatMessage:h}=W();return e.jsxs("div",{className:"grid grid-cols-12 gap-2 items-start p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"col-span-3",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyLabel"})}),e.jsx(N,{value:a.label||"",onChange:o=>s({label:o.target.value}),placeholder:"Key 1",className:"mt-1"})]}),e.jsxs("div",{className:"col-span-4",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyValue"})}),e.jsxs("div",{className:"relative mt-1",children:[e.jsx(N,{type:r?"text":"password",value:a.key,onChange:o=>s({key:o.target.value}),placeholder:"sk-...",className:"pr-8"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:t,children:r?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyWeight"})}),e.jsx(N,{type:"number",min:"0",max:"100",value:a.weight??1,onChange:o=>s({weight:parseInt(o.target.value)||1}),className:"mt-1"})]}),e.jsxs("div",{className:"col-span-2 flex items-center gap-2 pt-5",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:o=>s({enabled:o})}),e.jsx("span",{className:"text-sm text-muted-foreground",children:a.enabled?h({id:"apiSettings.common.enabled"}):h({id:"apiSettings.common.disabled"})})]}),e.jsx("div",{className:"col-span-1 flex items-center justify-end pt-5",children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:n,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})})]})}function At({open:a,onClose:r,provider:t}){const{formatMessage:s}=W(),{error:n}=ge(),h=!!t,{createProvider:o,isCreating:d}=xt(),{updateProvider:M,isUpdating:u}=Ss(),[v,j]=i.useState(""),[P,F]=i.useState("openai"),[H,k]=i.useState(""),[I,C]=i.useState(""),[D,w]=i.useState(!0),[K,g]=i.useState(!1),[c,A]=i.useState(300),[L,z]=i.useState(0),[y,S]=i.useState(""),[_,b]=i.useState(""),[p,O]=i.useState(""),[X,ne]=i.useState(),[ue,le]=i.useState(),[be,E]=i.useState(""),[G,q]=i.useState(!1),[te,de]=i.useState([]),[Re,Me]=i.useState(new Set),[_e,Pe]=i.useState("simple-shuffle"),[Ce,we]=i.useState(!1),[ke,Ee]=i.useState(60),[Te,je]=i.useState(300),[Ae,Ie]=i.useState(5),[ce,B]=i.useState(!1),[se,re]=i.useState([]),[ae,oe]=i.useState([]);i.useEffect(()=>{if(t){j(t.name),F(t.type),k(t.apiKey),C(t.apiBase||""),w(t.enabled),Pe(t.routingStrategy||"simple-shuffle"),t.advancedSettings&&(A(t.advancedSettings.timeout||300),z(t.advancedSettings.maxRetries||0),S(t.advancedSettings.organization||""),b(t.advancedSettings.apiVersion||""),O(t.advancedSettings.customHeaders?JSON.stringify(t.advancedSettings.customHeaders,null,2):""),ne(t.advancedSettings.rpm),le(t.advancedSettings.tpm),E(t.advancedSettings.proxy||""));const x=!!(t.apiKeys&&t.apiKeys.length>0);q(x),x&&t.apiKeys&&de(t.apiKeys.map(T=>({id:T.id,key:T.key,label:T.label,weight:T.weight,enabled:T.enabled}))),t.healthCheck&&(we(t.healthCheck.enabled),Ee(t.healthCheck.intervalSeconds),je(t.healthCheck.cooldownSeconds),Ie(t.healthCheck.failureThreshold)),t.llmModels&&re(t.llmModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description}))),t.embeddingModels&&oe(t.embeddingModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description})))}else j(""),F("openai"),k(""),C(""),w(!0),A(300),z(0),S(""),b(""),O(""),ne(void 0),le(void 0),E(""),q(!1),de([]),Pe("simple-shuffle"),we(!1),Ee(60),je(300),Ie(5),re([]),oe([])},[t,a]);const me=()=>{const x={id:`key-${Date.now()}`,key:"",label:`Key ${te.length+1}`,weight:1,enabled:!0};de([...te,x])},De=(x,T)=>{de(te.map((R,U)=>U===x?{...R,...T}:R))},is=x=>{de(te.filter((T,R)=>R!==x))},Xe=x=>{Me(T=>{const R=new Set(T);return R.has(x)?R.delete(x):R.add(x),R})},He=()=>{const x={id:`llm-${Date.now()}`,name:"",series:""};re([...se,x])},ns=x=>{re(se.filter((T,R)=>R!==x))},Fe=(x,T,R)=>{re(se.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ls=()=>{const x={id:`emb-${Date.now()}`,name:"",series:""};oe([...ae,x])},Y=x=>{oe(ae.filter((T,R)=>R!==x))},Le=(x,T,R)=>{oe(ae.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ds=async()=>{try{let x;if(p.trim())try{x=JSON.parse(p)}catch{alert(s({id:"apiSettings.messages.invalidJsonHeaders"}));return}const T=new Date().toISOString(),R={name:v,type:P,apiKey:G?"":H,apiBase:I||void 0,enabled:D,advancedSettings:{timeout:c,maxRetries:L,organization:y||void 0,apiVersion:_||void 0,customHeaders:x,rpm:X,tpm:ue,proxy:be||void 0},apiKeys:G?te.map(U=>({id:U.id,key:U.key,label:U.label,weight:U.weight,enabled:U.enabled})):void 0,routingStrategy:G?_e:void 0,healthCheck:Ce?{enabled:!0,intervalSeconds:ke,cooldownSeconds:Te,failureThreshold:Ae}:void 0,llmModels:se.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"llm",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T})),embeddingModels:ae.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"embedding",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T}))};h&&t?await M(t.id,R):await o(R),r()}catch{n(s({id:"apiSettings.providers.saveError"}))}},Ue=d||u;return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(h?{id:"apiSettings.providers.actions.edit"}:{id:"apiSettings.providers.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.basicInfo"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[s({id:"apiSettings.providers.displayName"})," *"]}),e.jsx(N,{id:"name",value:v,onChange:x=>j(x.target.value),placeholder:"My OpenAI"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"type",children:[s({id:"apiSettings.common.type"})," *"]}),e.jsxs(ve,{value:P,onValueChange:x=>F(x),children:[e.jsx(fe,{id:"type",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"openai",children:"OpenAI"}),e.jsx(V,{value:"anthropic",children:"Anthropic"}),e.jsx(V,{value:"custom",children:"Custom"})]})]})]})]}),!G&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"apiKey",children:[s({id:"apiSettings.providers.apiKey"})," *"]}),e.jsx(N,{id:"apiKey",type:"password",value:H,onChange:x=>k(x.target.value),placeholder:"sk-..."}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.useEnvVar"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiBase",children:s({id:"apiSettings.providers.apiBaseUrl"})}),e.jsx(N,{id:"apiBase",value:I,onChange:x=>C(x.target.value),placeholder:"https://api.openai.com/v1"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:D,onCheckedChange:w}),e.jsx(m,{htmlFor:"enabled",children:s({id:"apiSettings.providers.enableProvider"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"useMultiKey",checked:G,onCheckedChange:q}),e.jsx(m,{htmlFor:"useMultiKey",children:s({id:"apiSettings.providers.multiKeySettings"})})]})]}),G&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.multiKeySettings"})}),e.jsxs(f,{type:"button",size:"sm",onClick:me,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addKey"})]})]}),te.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:te.map((x,T)=>e.jsx(Kt,{entry:x,showKey:Re.has(T),onToggleShowKey:()=>Xe(T),onUpdate:R=>De(T,R),onRemove:()=>is(T)},x.id))}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"routingStrategy",children:s({id:"apiSettings.providers.routingStrategy"})}),e.jsxs(ve,{value:_e,onValueChange:x=>Pe(x),children:[e.jsx(fe,{id:"routingStrategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"simple-shuffle",children:s({id:"apiSettings.providers.simpleShuffle"})}),e.jsx(V,{value:"weighted",children:s({id:"apiSettings.providers.weighted"})}),e.jsx(V,{value:"latency-based",children:s({id:"apiSettings.providers.latencyBased"})}),e.jsx(V,{value:"cost-based",children:s({id:"apiSettings.providers.costBased"})}),e.jsx(V,{value:"least-busy",children:s({id:"apiSettings.providers.leastBusy"})})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{children:s({id:"apiSettings.providers.healthCheck"})}),e.jsx(Z,{checked:Ce,onCheckedChange:we})]}),Ce&&e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"checkInterval",children:s({id:"apiSettings.providers.checkInterval"})}),e.jsx(N,{id:"checkInterval",type:"number",min:"10",value:ke,onChange:x=>Ee(parseInt(x.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cooldownPeriod",children:s({id:"apiSettings.providers.cooldownPeriod"})}),e.jsx(N,{id:"cooldownPeriod",type:"number",min:"10",value:Te,onChange:x=>je(parseInt(x.target.value)||300)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"failureThreshold",children:s({id:"apiSettings.providers.failureThreshold"})}),e.jsx(N,{id:"failureThreshold",type:"number",min:"1",value:Ae,onChange:x=>Ie(parseInt(x.target.value)||5)})]})]})]})]}),e.jsxs(hs,{open:K,onOpenChange:g,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsx("span",{className:"font-semibold",children:s({id:"apiSettings.providers.advancedSettings"})}),K?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"timeout",children:s({id:"apiSettings.providers.timeout"})}),e.jsx(N,{id:"timeout",type:"number",min:"1",value:c,onChange:x=>A(parseInt(x.target.value)||300)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.timeoutHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"maxRetries",children:s({id:"apiSettings.providers.maxRetries"})}),e.jsx(N,{id:"maxRetries",type:"number",min:"0",value:L,onChange:x=>z(parseInt(x.target.value)||0)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"organization",children:s({id:"apiSettings.providers.organization"})}),e.jsx(N,{id:"organization",value:y,onChange:x=>S(x.target.value)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.organizationHint"})})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiVersion",children:s({id:"apiSettings.providers.apiVersion"})}),e.jsx(N,{id:"apiVersion",value:_,onChange:x=>b(x.target.value),placeholder:"2024-02-01"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.apiVersionHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"rpm",children:s({id:"apiSettings.providers.rpm"})}),e.jsx(N,{id:"rpm",type:"number",min:"0",value:X??"",onChange:x=>ne(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"tpm",children:s({id:"apiSettings.providers.tpm"})}),e.jsx(N,{id:"tpm",type:"number",min:"0",value:ue??"",onChange:x=>le(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"proxy",children:s({id:"apiSettings.providers.proxy"})}),e.jsx(N,{id:"proxy",value:be,onChange:x=>E(x.target.value),placeholder:"http://proxy.example.com:8080"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"customHeaders",children:s({id:"apiSettings.providers.customHeaders"})}),e.jsx(Ke,{id:"customHeaders",value:p,onChange:x=>O(x.target.value),placeholder:`{
|
|
1
|
+
import{u as W,al as ge,r as i,j as e,e as f,Z as xe,c as Ve,a7 as ie,C as Q,m as ks,k as ze,b as ps,I as N,K as Ms,D as us,d as js,f as vs,g as he,S as cs,h as fs,T as ye,B as ee,x as $e,y as Ge,z as qe,A as Qe,E as We,bu as m,aq as ve,ar as fe,as as Se,at as Ne,au as V,cy as os,ap as ms,bO as Ke,G as Ye,bq as Be,ck as Oe,bp as et,ae as Cs,N as ss,av as st,X as Ds,bf as tt,a2 as at,a3 as it,a4 as Es,a5 as Ts,an as Is,e3 as nt,e4 as lt,da as dt,R as rt}from"./index-rLgoBCfV.js";import{T as ct}from"./TabsNavigation-DZAAspqR.js";import{S as Z}from"./Switch-Ac6Ov7uy.js";import{u as Ze,a as ot,b as Ss,c as mt,d as ht,e as xt,f as Ls,g as gt,h as Os,i as pt,j as ut,k as jt,l as vt,m as zs,n as ft,o as Bs,p as St,q as Nt,r as yt,s as Rs,t as bt,v as Ct,w as wt,x as Mt,y as Pt}from"./useApiSettings-D0TVgQD_.js";import{E as Ns}from"./ellipsis-vertical-h8xtvw2_.js";import{S as ys}from"./square-pen-CgrHgZSl.js";import{C as hs,a as xs,b as gs}from"./Collapsible-DEm1rJ4h.js";import{E as ts}from"./eye-off-Cy2vkc8p.js";import{E as as}from"./eye-D3NY0bm6.js";import{A as _s,a as Hs,b as Us,c as Js,d as Vs,e as $s,f as Gs,g as qs}from"./AlertDialog-BjP1ydDR.js";import{F as kt}from"./file-text-DwuwPDPi.js";import{H as Et}from"./hard-drive-DTyWXwzf.js";import{S as Qs}from"./save-Byxot0YU.js";import{L as Tt}from"./link-koEYiemK.js";import"./useLocale-B2qhsoTb.js";import"./errorSanitizer-IY9pf5g4.js";function It({provider:a,onEdit:r,onDelete:t,onTest:s,onMultiKeySettings:n,onSyncToCodexLens:h,onManageModels:o,onToggleEnabled:d,isDeleting:M,isTesting:u,isToggling:v}){var k,I;const{formatMessage:j}=W(),P=((k=a.apiKeys)==null?void 0:k.filter(C=>C.enabled).length)||0,F=(((I=a.apiKeys)==null?void 0:I.length)||0)>0,H=()=>{var K;if(!a.enabled)return e.jsx(ee,{variant:"secondary",children:j({id:"apiSettings.common.disabled"})});if(!((K=a.healthCheck)!=null&&K.enabled))return e.jsx(ee,{variant:"outline",children:j({id:"apiSettings.providers.unknown"})});const C=a.apiKeys||[];if(C.length===0)return e.jsx(ee,{variant:"info",children:j({id:"apiSettings.providers.unknown"})});const D=C.filter(g=>g.healthStatus==="healthy").length;return C.filter(g=>g.healthStatus==="unhealthy").length>0?e.jsx(ee,{variant:"destructive",children:j({id:"apiSettings.providers.unhealthy"})}):D===C.length?e.jsx(ee,{variant:"success",children:j({id:"apiSettings.providers.healthy"})}):e.jsx(ee,{variant:"warning",children:j({id:"apiSettings.providers.unknown"})})};return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name}),H()]}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"capitalize",children:a.type}),F&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(xe,{className:"w-3 h-3"}),P," ",j({id:"apiSettings.providers.apiKey"})]}),a.routingStrategy&&e.jsx("span",{className:"capitalize",children:a.routingStrategy.replace("-"," ")})]}),a.apiBase&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1 truncate",children:a.apiBase})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:d,disabled:v}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.edit"})]}),e.jsxs(he,{onClick:s,disabled:u,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.test"})]}),e.jsxs(he,{onClick:o,children:[e.jsx(cs,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.manageModels"})]}),F&&e.jsxs(he,{onClick:n,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.multiKeySettings"})]}),e.jsxs(he,{onClick:h,children:[e.jsx(ze,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.syncToCodexLens"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:M,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.delete"})]})]})]})]})]})})}function Ft({onAddProvider:a,onEditProvider:r,onMultiKeySettings:t,onSyncToCodexLens:s,onManageModels:n}){const{formatMessage:h}=W(),{error:o}=ge(),[d,M]=i.useState(""),[u,v]=i.useState(!1),{providers:j,isLoading:P,refetch:F}=Ze(),{deleteProvider:H,isDeleting:k}=ot(),{updateProvider:I,isUpdating:C}=Ss(),{testProvider:D,isTesting:w}=mt(),{triggerHealthCheck:K}=ht(),g=i.useMemo(()=>j.filter(S=>{const _=S.name.toLowerCase().includes(d.toLowerCase())||S.type.toLowerCase().includes(d.toLowerCase()),b=!u||!S.enabled;return _&&b}),[j,d,u]),c=async(S,_)=>{const b=h({id:"apiSettings.providers.deleteConfirm"},{name:_});if(window.confirm(b))try{await H(S)}catch{o(h({id:"apiSettings.providers.deleteError"}))}},A=async(S,_)=>{try{await I(S,{enabled:_})}catch{o(h({id:"apiSettings.providers.toggleError"}))}},L=async S=>{try{(await D(S)).success&&await K(S)}catch{o(h({id:"apiSettings.providers.testError"}))}},z=j.filter(S=>S.enabled).length,y=j.length;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-foreground",children:h({id:"apiSettings.providers.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"outline",onClick:()=>F(),disabled:P,children:[e.jsx(xe,{className:Ve("w-4 h-4 mr-2",P&&"animate-spin")}),h({id:"common.actions.refresh"})]}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ks,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:y})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.total"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ze,{className:"w-5 h-5 text-success"}),e.jsx("span",{className:"text-2xl font-bold",children:z})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.enabled"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:h({id:"apiSettings.common.searchPlaceholder"}),value:d,onChange:S=>M(S.target.value),className:"pl-9"})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(f,{variant:u?"default":"outline",size:"sm",onClick:()=>v(S=>!S),children:[u?e.jsx(Ms,{className:"w-4 h-4 mr-2"}):e.jsx(ze,{className:"w-4 h-4 mr-2"}),h(u?{id:"apiSettings.providers.actions.hideDisabled"}:{id:"apiSettings.providers.actions.showDisabled"})]})})]}),P?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(S=>e.jsx("div",{className:"h-24 bg-muted animate-pulse rounded-lg"},S))}):g.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(ks,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:h({id:"apiSettings.providers.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:h({id:"apiSettings.providers.emptyState.message"})}),e.jsxs(f,{className:"mt-4",onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]}):e.jsx("div",{className:"space-y-3",children:g.map(S=>e.jsx(It,{provider:S,onEdit:()=>r(S.id),onDelete:()=>c(S.id,S.name),onTest:()=>L(S.id),onMultiKeySettings:()=>t(S.id),onSyncToCodexLens:()=>s(S.id),onManageModels:()=>n(S.id),onToggleEnabled:_=>A(S.id,_),isDeleting:k,isTesting:w,isToggling:C},S.id))})]})}function Kt({entry:a,showKey:r,onToggleShowKey:t,onUpdate:s,onRemove:n}){const{formatMessage:h}=W();return e.jsxs("div",{className:"grid grid-cols-12 gap-2 items-start p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"col-span-3",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyLabel"})}),e.jsx(N,{value:a.label||"",onChange:o=>s({label:o.target.value}),placeholder:"Key 1",className:"mt-1"})]}),e.jsxs("div",{className:"col-span-4",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyValue"})}),e.jsxs("div",{className:"relative mt-1",children:[e.jsx(N,{type:r?"text":"password",value:a.key,onChange:o=>s({key:o.target.value}),placeholder:"sk-...",className:"pr-8"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:t,children:r?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyWeight"})}),e.jsx(N,{type:"number",min:"0",max:"100",value:a.weight??1,onChange:o=>s({weight:parseInt(o.target.value)||1}),className:"mt-1"})]}),e.jsxs("div",{className:"col-span-2 flex items-center gap-2 pt-5",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:o=>s({enabled:o})}),e.jsx("span",{className:"text-sm text-muted-foreground",children:a.enabled?h({id:"apiSettings.common.enabled"}):h({id:"apiSettings.common.disabled"})})]}),e.jsx("div",{className:"col-span-1 flex items-center justify-end pt-5",children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:n,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})})]})}function At({open:a,onClose:r,provider:t}){const{formatMessage:s}=W(),{error:n}=ge(),h=!!t,{createProvider:o,isCreating:d}=xt(),{updateProvider:M,isUpdating:u}=Ss(),[v,j]=i.useState(""),[P,F]=i.useState("openai"),[H,k]=i.useState(""),[I,C]=i.useState(""),[D,w]=i.useState(!0),[K,g]=i.useState(!1),[c,A]=i.useState(300),[L,z]=i.useState(0),[y,S]=i.useState(""),[_,b]=i.useState(""),[p,O]=i.useState(""),[X,ne]=i.useState(),[ue,le]=i.useState(),[be,E]=i.useState(""),[G,q]=i.useState(!1),[te,de]=i.useState([]),[Re,Me]=i.useState(new Set),[_e,Pe]=i.useState("simple-shuffle"),[Ce,we]=i.useState(!1),[ke,Ee]=i.useState(60),[Te,je]=i.useState(300),[Ae,Ie]=i.useState(5),[ce,B]=i.useState(!1),[se,re]=i.useState([]),[ae,oe]=i.useState([]);i.useEffect(()=>{if(t){j(t.name),F(t.type),k(t.apiKey),C(t.apiBase||""),w(t.enabled),Pe(t.routingStrategy||"simple-shuffle"),t.advancedSettings&&(A(t.advancedSettings.timeout||300),z(t.advancedSettings.maxRetries||0),S(t.advancedSettings.organization||""),b(t.advancedSettings.apiVersion||""),O(t.advancedSettings.customHeaders?JSON.stringify(t.advancedSettings.customHeaders,null,2):""),ne(t.advancedSettings.rpm),le(t.advancedSettings.tpm),E(t.advancedSettings.proxy||""));const x=!!(t.apiKeys&&t.apiKeys.length>0);q(x),x&&t.apiKeys&&de(t.apiKeys.map(T=>({id:T.id,key:T.key,label:T.label,weight:T.weight,enabled:T.enabled}))),t.healthCheck&&(we(t.healthCheck.enabled),Ee(t.healthCheck.intervalSeconds),je(t.healthCheck.cooldownSeconds),Ie(t.healthCheck.failureThreshold)),t.llmModels&&re(t.llmModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description}))),t.embeddingModels&&oe(t.embeddingModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description})))}else j(""),F("openai"),k(""),C(""),w(!0),A(300),z(0),S(""),b(""),O(""),ne(void 0),le(void 0),E(""),q(!1),de([]),Pe("simple-shuffle"),we(!1),Ee(60),je(300),Ie(5),re([]),oe([])},[t,a]);const me=()=>{const x={id:`key-${Date.now()}`,key:"",label:`Key ${te.length+1}`,weight:1,enabled:!0};de([...te,x])},De=(x,T)=>{de(te.map((R,U)=>U===x?{...R,...T}:R))},is=x=>{de(te.filter((T,R)=>R!==x))},Xe=x=>{Me(T=>{const R=new Set(T);return R.has(x)?R.delete(x):R.add(x),R})},He=()=>{const x={id:`llm-${Date.now()}`,name:"",series:""};re([...se,x])},ns=x=>{re(se.filter((T,R)=>R!==x))},Fe=(x,T,R)=>{re(se.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ls=()=>{const x={id:`emb-${Date.now()}`,name:"",series:""};oe([...ae,x])},Y=x=>{oe(ae.filter((T,R)=>R!==x))},Le=(x,T,R)=>{oe(ae.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ds=async()=>{try{let x;if(p.trim())try{x=JSON.parse(p)}catch{alert(s({id:"apiSettings.messages.invalidJsonHeaders"}));return}const T=new Date().toISOString(),R={name:v,type:P,apiKey:G?"":H,apiBase:I||void 0,enabled:D,advancedSettings:{timeout:c,maxRetries:L,organization:y||void 0,apiVersion:_||void 0,customHeaders:x,rpm:X,tpm:ue,proxy:be||void 0},apiKeys:G?te.map(U=>({id:U.id,key:U.key,label:U.label,weight:U.weight,enabled:U.enabled})):void 0,routingStrategy:G?_e:void 0,healthCheck:Ce?{enabled:!0,intervalSeconds:ke,cooldownSeconds:Te,failureThreshold:Ae}:void 0,llmModels:se.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"llm",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T})),embeddingModels:ae.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"embedding",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T}))};h&&t?await M(t.id,R):await o(R),r()}catch{n(s({id:"apiSettings.providers.saveError"}))}},Ue=d||u;return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(h?{id:"apiSettings.providers.actions.edit"}:{id:"apiSettings.providers.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.basicInfo"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[s({id:"apiSettings.providers.displayName"})," *"]}),e.jsx(N,{id:"name",value:v,onChange:x=>j(x.target.value),placeholder:"My OpenAI"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"type",children:[s({id:"apiSettings.common.type"})," *"]}),e.jsxs(ve,{value:P,onValueChange:x=>F(x),children:[e.jsx(fe,{id:"type",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"openai",children:"OpenAI"}),e.jsx(V,{value:"anthropic",children:"Anthropic"}),e.jsx(V,{value:"custom",children:"Custom"})]})]})]})]}),!G&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"apiKey",children:[s({id:"apiSettings.providers.apiKey"})," *"]}),e.jsx(N,{id:"apiKey",type:"password",value:H,onChange:x=>k(x.target.value),placeholder:"sk-..."}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.useEnvVar"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiBase",children:s({id:"apiSettings.providers.apiBaseUrl"})}),e.jsx(N,{id:"apiBase",value:I,onChange:x=>C(x.target.value),placeholder:"https://api.openai.com/v1"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:D,onCheckedChange:w}),e.jsx(m,{htmlFor:"enabled",children:s({id:"apiSettings.providers.enableProvider"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"useMultiKey",checked:G,onCheckedChange:q}),e.jsx(m,{htmlFor:"useMultiKey",children:s({id:"apiSettings.providers.multiKeySettings"})})]})]}),G&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.multiKeySettings"})}),e.jsxs(f,{type:"button",size:"sm",onClick:me,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addKey"})]})]}),te.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:te.map((x,T)=>e.jsx(Kt,{entry:x,showKey:Re.has(T),onToggleShowKey:()=>Xe(T),onUpdate:R=>De(T,R),onRemove:()=>is(T)},x.id))}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"routingStrategy",children:s({id:"apiSettings.providers.routingStrategy"})}),e.jsxs(ve,{value:_e,onValueChange:x=>Pe(x),children:[e.jsx(fe,{id:"routingStrategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"simple-shuffle",children:s({id:"apiSettings.providers.simpleShuffle"})}),e.jsx(V,{value:"weighted",children:s({id:"apiSettings.providers.weighted"})}),e.jsx(V,{value:"latency-based",children:s({id:"apiSettings.providers.latencyBased"})}),e.jsx(V,{value:"cost-based",children:s({id:"apiSettings.providers.costBased"})}),e.jsx(V,{value:"least-busy",children:s({id:"apiSettings.providers.leastBusy"})})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{children:s({id:"apiSettings.providers.healthCheck"})}),e.jsx(Z,{checked:Ce,onCheckedChange:we})]}),Ce&&e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"checkInterval",children:s({id:"apiSettings.providers.checkInterval"})}),e.jsx(N,{id:"checkInterval",type:"number",min:"10",value:ke,onChange:x=>Ee(parseInt(x.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cooldownPeriod",children:s({id:"apiSettings.providers.cooldownPeriod"})}),e.jsx(N,{id:"cooldownPeriod",type:"number",min:"10",value:Te,onChange:x=>je(parseInt(x.target.value)||300)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"failureThreshold",children:s({id:"apiSettings.providers.failureThreshold"})}),e.jsx(N,{id:"failureThreshold",type:"number",min:"1",value:Ae,onChange:x=>Ie(parseInt(x.target.value)||5)})]})]})]})]}),e.jsxs(hs,{open:K,onOpenChange:g,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsx("span",{className:"font-semibold",children:s({id:"apiSettings.providers.advancedSettings"})}),K?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"timeout",children:s({id:"apiSettings.providers.timeout"})}),e.jsx(N,{id:"timeout",type:"number",min:"1",value:c,onChange:x=>A(parseInt(x.target.value)||300)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.timeoutHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"maxRetries",children:s({id:"apiSettings.providers.maxRetries"})}),e.jsx(N,{id:"maxRetries",type:"number",min:"0",value:L,onChange:x=>z(parseInt(x.target.value)||0)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"organization",children:s({id:"apiSettings.providers.organization"})}),e.jsx(N,{id:"organization",value:y,onChange:x=>S(x.target.value)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.organizationHint"})})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiVersion",children:s({id:"apiSettings.providers.apiVersion"})}),e.jsx(N,{id:"apiVersion",value:_,onChange:x=>b(x.target.value),placeholder:"2024-02-01"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.apiVersionHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"rpm",children:s({id:"apiSettings.providers.rpm"})}),e.jsx(N,{id:"rpm",type:"number",min:"0",value:X??"",onChange:x=>ne(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"tpm",children:s({id:"apiSettings.providers.tpm"})}),e.jsx(N,{id:"tpm",type:"number",min:"0",value:ue??"",onChange:x=>le(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"proxy",children:s({id:"apiSettings.providers.proxy"})}),e.jsx(N,{id:"proxy",value:be,onChange:x=>E(x.target.value),placeholder:"http://proxy.example.com:8080"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"customHeaders",children:s({id:"apiSettings.providers.customHeaders"})}),e.jsx(Ke,{id:"customHeaders",value:p,onChange:x=>O(x.target.value),placeholder:`{
|
|
2
2
|
"X-Custom": "value"
|
|
3
3
|
}`,rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.customHeadersHint"})})]})]})]}),e.jsxs(hs,{open:ce,onOpenChange:B,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsx("span",{className:"font-semibold",children:s({id:"apiSettings.providers.modelSettings"})}),ce?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h4",{className:"text-sm font-medium",children:s({id:"apiSettings.providers.llmModels"})}),e.jsxs(f,{type:"button",size:"sm",onClick:He,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addLlmModel"})]})]}),se.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:se.map((x,T)=>e.jsxs("div",{className:"flex items-start gap-2 p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsx(N,{value:x.name,onChange:R=>Fe(T,"name",R.target.value),placeholder:s({id:"apiSettings.providers.modelId"})}),e.jsx(N,{value:x.series||"",onChange:R=>Fe(T,"series",R.target.value),placeholder:s({id:"apiSettings.providers.modelSeries"})})]}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:()=>ns(T),className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})]},x.id))})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h4",{className:"text-sm font-medium",children:s({id:"apiSettings.providers.embeddingModels"})}),e.jsxs(f,{type:"button",size:"sm",onClick:ls,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addEmbeddingModel"})]})]}),ae.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:ae.map((x,T)=>e.jsxs("div",{className:"flex items-start gap-2 p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsx(N,{value:x.name,onChange:R=>Le(T,"name",R.target.value),placeholder:s({id:"apiSettings.providers.modelId"})}),e.jsx(N,{value:x.series||"",onChange:R=>Le(T,"series",R.target.value),placeholder:s({id:"apiSettings.providers.modelSeries"})})]}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:()=>Y(T),className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})]},x.id))})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:Ue,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:ds,disabled:Ue||!v.trim(),children:[Ue?e.jsx(xe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})})}function Dt({endpoint:a,onEdit:r,onDelete:t,onToggleEnabled:s,isDeleting:n,isToggling:h}){var d,M;const{formatMessage:o}=W();return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground font-mono",children:a.id}),a.enabled?e.jsx(ee,{variant:"success",children:o({id:"apiSettings.common.enabled"})}):e.jsx(ee,{variant:"secondary",children:o({id:"apiSettings.common.disabled"})}),a.cacheStrategy.enabled&&e.jsxs(ee,{variant:"info",className:"flex items-center gap-1",children:[e.jsx(Oe,{className:"w-3 h-3"}),o({id:"apiSettings.endpoints.cacheStrategy"})]})]}),e.jsx("p",{className:"text-sm font-medium text-foreground mt-1",children:a.name}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsxs("span",{children:[o({id:"apiSettings.endpoints.provider"}),": ",a.providerId]}),e.jsxs("span",{children:[o({id:"apiSettings.endpoints.model"}),": ",a.model]})]}),a.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:a.description}),a.cacheStrategy.enabled&&e.jsxs("div",{className:"flex items-center gap-3 mt-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:[o({id:"apiSettings.endpoints.cacheTTL"}),": ",a.cacheStrategy.ttlMinutes,"m"]}),e.jsxs("span",{children:[o({id:"apiSettings.endpoints.cacheMaxSize"}),": ",a.cacheStrategy.maxSizeKB,"KB"]}),(((d=a.cacheStrategy.filePatterns)==null?void 0:d.length)||0)>0&&e.jsxs("span",{children:[o({id:"apiSettings.endpoints.filePatterns"}),": ",((M=a.cacheStrategy.filePatterns)==null?void 0:M.length)||0]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:s,disabled:h}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.endpoints.actions.edit"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:n,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.endpoints.actions.delete"})]})]})]})]})]})})}function Lt({onAddEndpoint:a,onEditEndpoint:r}){const{formatMessage:t}=W(),{error:s}=ge(),[n,h]=i.useState(""),[o,d]=i.useState(!1),[M,u]=i.useState(!1),{endpoints:v,cachedCount:j,isLoading:P,refetch:F}=Ls(),{deleteEndpoint:H,isDeleting:k}=gt(),{updateEndpoint:I,isUpdating:C}=Os(),D=i.useMemo(()=>v.filter(c=>{const A=c.id.toLowerCase().includes(n.toLowerCase())||c.name.toLowerCase().includes(n.toLowerCase())||c.model.toLowerCase().includes(n.toLowerCase()),L=!o||!c.enabled,z=!M||c.cacheStrategy.enabled;return A&&L&&z}),[v,n,o,M]),w=async(c,A)=>{const L=t({id:"apiSettings.endpoints.deleteConfirm"},{id:A});if(window.confirm(L))try{await H(c)}catch{s(t({id:"apiSettings.endpoints.deleteError"}))}},K=async(c,A)=>{try{await I(c,{enabled:A})}catch{s(t({id:"apiSettings.endpoints.toggleError"}))}},g=v.length;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-foreground",children:t({id:"apiSettings.endpoints.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.endpoints.description"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"outline",onClick:()=>F(),disabled:P,children:[e.jsx(xe,{className:Ve("w-4 h-4 mr-2",P&&"animate-spin")}),t({id:"common.actions.refresh"})]}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.endpoints.actions.add"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xe,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:g})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.endpoints.stats.totalEndpoints"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Oe,{className:"w-5 h-5 text-info"}),e.jsx("span",{className:"text-2xl font-bold",children:j})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.endpoints.stats.cachedEndpoints"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:t({id:"apiSettings.common.searchPlaceholder"}),value:n,onChange:c=>h(c.target.value),className:"pl-9"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:o?"default":"outline",size:"sm",onClick:()=>d(c=>!c),children:[o?e.jsx(Ms,{className:"w-4 h-4 mr-2"}):e.jsx(ze,{className:"w-4 h-4 mr-2"}),t(o?{id:"apiSettings.endpoints.actions.showAll"}:{id:"apiSettings.endpoints.actions.showDisabled"})]}),e.jsxs(f,{variant:M?"default":"outline",size:"sm",onClick:()=>u(c=>!c),children:[e.jsx(Oe,{className:"w-4 h-4 mr-2"}),t(M?{id:"apiSettings.endpoints.actions.showAll"}:{id:"apiSettings.endpoints.cacheStrategy"})]})]})]}),P?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(c=>e.jsx("div",{className:"h-24 bg-muted animate-pulse rounded-lg"},c))}):D.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(Oe,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:t({id:"apiSettings.endpoints.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:t({id:"apiSettings.endpoints.emptyState.message"})}),e.jsxs(f,{className:"mt-4",onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.endpoints.actions.add"})]})]}):e.jsx("div",{className:"space-y-3",children:D.map(c=>e.jsx(Dt,{endpoint:c,onEdit:()=>r(c.id),onDelete:()=>w(c.id,c.name),onToggleEnabled:A=>K(c.id,A),isDeleting:k,isToggling:C},c.id))})]})}function Ot({value:a,onChange:r,placeholder:t}){const[s,n]=i.useState(""),h=()=>{s.trim()&&!a.includes(s.trim())&&(r([...a,s.trim()]),n(""))},o=d=>{r(a.filter(M=>M!==d))};return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(N,{value:s,onChange:d=>n(d.target.value),onKeyDown:d=>{d.key==="Enter"&&(d.preventDefault(),h())},placeholder:t}),e.jsx(f,{type:"button",size:"sm",onClick:h,children:e.jsx(Be,{className:"w-4 h-4"})})]}),a.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:a.map(d=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-muted rounded-md text-xs",children:[d,e.jsx("button",{type:"button",onClick:()=>o(d),className:"hover:text-destructive",children:"×"})]},d))})]})}function zt({open:a,onClose:r,endpoint:t}){const{formatMessage:s}=W(),{error:n}=ge(),h=!!t,{createEndpoint:o,isCreating:d}=pt(),{updateEndpoint:M,isUpdating:u}=Os(),{providers:v}=Ze(),[j,P]=i.useState(""),[F,H]=i.useState(""),[k,I]=i.useState(""),[C,D]=i.useState(""),[w,K]=i.useState(""),[g,c]=i.useState(!0),[A,L]=i.useState(!1),[z,y]=i.useState(!1),[S,_]=i.useState(60),[b,p]=i.useState(1024),[O,X]=i.useState([]),ne=i.useMemo(()=>{if(!k)return[];const E=v.find(q=>q.id===k);if(!E)return[];const G=[];return E.llmModels&&G.push(...E.llmModels.filter(q=>q.enabled).map(q=>q.id)),E.embeddingModels&&G.push(...E.embeddingModels.filter(q=>q.enabled).map(q=>q.id)),E.rerankerModels&&G.push(...E.rerankerModels.filter(q=>q.enabled).map(q=>q.id)),G},[k,v]);i.useEffect(()=>{t?(P(t.id),H(t.name),I(t.providerId),D(t.model),K(t.description||""),c(t.enabled),y(t.cacheStrategy.enabled),_(t.cacheStrategy.ttlMinutes),p(t.cacheStrategy.maxSizeKB),X(t.cacheStrategy.filePatterns||[])):(P(""),H(""),I(""),D(""),K(""),c(!0),y(!1),_(60),p(1024),X([]))},[t,a]),i.useEffect(()=>{if(!h&&k){const E=v.find(G=>G.id===k);E&&E.llmModels&&E.llmModels.length>0&&D(E.llmModels[0].id)}},[k,v,h]);const ue=async()=>{try{const G={id:j,name:F,providerId:k,model:C,description:w||void 0,enabled:g,cacheStrategy:{enabled:z,ttlMinutes:S,maxSizeKB:b,filePatterns:z?O:[]}};h&&t?await M(t.id,G):await o(G),r()}catch{n(s({id:"apiSettings.endpoints.saveError"}))}},le=d||u,be=j.trim()&&F.trim()&&k&&C.trim();return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-2xl",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(h?{id:"apiSettings.endpoints.actions.edit"}:{id:"apiSettings.endpoints.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.endpoints.description"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.basicInfo"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"endpointId",children:[s({id:"apiSettings.endpoints.endpointId"})," *"]}),e.jsx(N,{id:"endpointId",value:j,onChange:E=>P(E.target.value),placeholder:"my-gpt4o",disabled:h,className:"font-mono"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.endpoints.endpointIdHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[s({id:"apiSettings.endpoints.name"})," *"]}),e.jsx(N,{id:"name",value:F,onChange:E=>H(E.target.value),placeholder:"My GPT-4o"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"providerId",children:[s({id:"apiSettings.endpoints.provider"})," *"]}),e.jsxs(ve,{value:k,onValueChange:I,disabled:h,children:[e.jsx(fe,{id:"providerId",children:e.jsx(Se,{placeholder:v.length===0?s({id:"apiSettings.providers.addProviderFirst"}):s({id:"apiSettings.endpoints.selectProvider"})})}),e.jsx(Ne,{children:v.map(E=>e.jsxs(V,{value:E.id,disabled:!E.enabled,children:[E.name,!E.enabled&&` (${s({id:"apiSettings.common.disabled"})})`]},E.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"model",children:[s({id:"apiSettings.endpoints.model"})," *"]}),ne.length===0&&k?e.jsx(N,{id:"model",value:C,onChange:E=>D(E.target.value),placeholder:"",className:"font-mono"}):e.jsxs(ve,{value:C,onValueChange:D,children:[e.jsx(fe,{id:"model",children:e.jsx(Se,{placeholder:s(k?{id:"apiSettings.endpoints.selectModel"}:{id:"apiSettings.endpoints.selectProvider"})})}),e.jsx(Ne,{children:ne.map(E=>e.jsx(V,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"description",children:s({id:"apiSettings.common.description"})}),e.jsx(Ke,{id:"description",value:w,onChange:E=>K(E.target.value),placeholder:s({id:"apiSettings.common.optional"}),rows:2})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:g,onCheckedChange:c}),e.jsx(m,{htmlFor:"enabled",children:s({id:"apiSettings.endpoints.enabled"})})]})]}),e.jsxs(hs,{open:A,onOpenChange:L,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsxs("span",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(Oe,{className:"w-4 h-4"}),s({id:"apiSettings.endpoints.cacheStrategy"})]}),A?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(m,{children:s({id:"apiSettings.endpoints.enableContextCaching"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:s({id:"apiSettings.endpoints.cacheStrategy"})})]}),e.jsx(Z,{checked:z,onCheckedChange:y})]}),z&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cacheTTL",children:s({id:"apiSettings.endpoints.cacheTTL"})}),e.jsx(N,{id:"cacheTTL",type:"number",min:"1",value:S,onChange:E=>_(parseInt(E.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cacheMaxSize",children:s({id:"apiSettings.endpoints.cacheMaxSize"})}),e.jsx(N,{id:"cacheMaxSize",type:"number",min:"1",value:b,onChange:E=>p(parseInt(E.target.value)||1024)})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{children:s({id:"apiSettings.endpoints.autoCachePatterns"})}),e.jsx(Ot,{value:O,onChange:X,placeholder:"*.md,*.ts"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.endpoints.filePatternsHint"})})]})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:le,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:ue,disabled:le||!be,children:[le?e.jsx(Oe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})})}function Bt({used:a,total:r}){const{formatMessage:t}=W(),s=r>0?Math.round(a/r*100):0;return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:t({id:"apiSettings.cache.settings.cacheUsage"})}),e.jsxs("span",{className:"font-medium",children:[s,"%"]})]}),e.jsx(et,{value:s,className:"h-2"}),e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[e.jsxs("span",{children:[t({id:"apiSettings.cache.settings.used"})," ",(a/1024/1024).toFixed(2)," MB"]}),e.jsxs("span",{children:[t({id:"apiSettings.cache.settings.total"})," ",(r/1024/1024).toFixed(2)," MB"]})]})]})}function ws({icon:a,label:r,value:t,className:s}){return e.jsx(Q,{className:Ve("p-4",s),children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 bg-primary/10 rounded-md text-primary",children:a}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:r}),e.jsx("p",{className:"text-2xl font-semibold",children:t})]})]})})}function Rt({className:a}){const{formatMessage:r}=W(),{success:t,error:s}=ge(),{stats:n,refetch:h}=ut(),{updateCacheSettings:o,isUpdating:d}=jt(),{clearCache:M,isClearing:u}=vt(),[v,j]=i.useState({enabled:!0,cacheDir:"",maxTotalSizeMB:1024}),[P,F]=i.useState(!1);i.useEffect(()=>{},[n]);const H=async()=>{try{await o(v),t(r({id:"apiSettings.cache.messages.cacheSettingsUpdated"})),await h()}catch(I){s(r({id:"common.error"}),I instanceof Error?I.message:r({id:"common.error"}))}},k=async()=>{try{await M(),F(!1),t(r({id:"apiSettings.cache.messages.cacheCleared"})),await h()}catch(I){s(r({id:"common.error"}),I instanceof Error?I.message:r({id:"common.error"}))}};return e.jsxs("div",{className:Ve("space-y-6",a),children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsx(ws,{icon:e.jsx(kt,{className:"w-5 h-5"}),label:r({id:"apiSettings.cache.settings.cacheEntries"}),value:(n==null?void 0:n.entries)??0}),e.jsx(ws,{icon:e.jsx(Et,{className:"w-5 h-5"}),label:r({id:"apiSettings.cache.settings.cacheSize"}),value:`${(((n==null?void 0:n.totalSize)??0)/1024/1024).toFixed(2)} MB`}),e.jsx(ws,{icon:e.jsx(Oe,{className:"w-5 h-5"}),label:r({id:"apiSettings.cache.settings.maxSize"}),value:`${(((n==null?void 0:n.maxSize)??0)/1024/1024).toFixed(2)} MB`})]}),n&&e.jsx(Q,{className:"p-4",children:e.jsx(Bt,{used:n.totalSize,total:n.maxSize})}),e.jsxs(Q,{className:"p-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:r({id:"apiSettings.cache.settings.title"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(m,{htmlFor:"cache-enabled",children:r({id:"apiSettings.cache.settings.enableGlobalCaching"})})}),e.jsx(Z,{id:"cache-enabled",checked:v.enabled??!0,onCheckedChange:I=>j({...v,enabled:I}),disabled:d})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cache-dir",children:r({id:"apiSettings.cache.settings.cacheDirectory"})}),e.jsx(N,{id:"cache-dir",value:v.cacheDir??"",onChange:I=>j({...v,cacheDir:I.target.value}),disabled:d,placeholder:"/path/to/cache"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cache-max-size",children:r({id:"apiSettings.cache.settings.maxSize"})}),e.jsx(N,{id:"cache-max-size",type:"number",min:1,value:v.maxTotalSizeMB??1024,onChange:I=>j({...v,maxTotalSizeMB:parseInt(I.target.value)||1024}),disabled:d})]}),e.jsxs("div",{className:"flex items-center justify-between pt-4 border-t",children:[e.jsxs(f,{variant:"destructive",onClick:()=>F(!0),disabled:u,children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),r({id:"apiSettings.cache.settings.actions.clearCache"})]}),e.jsxs(f,{onClick:H,disabled:d,children:[e.jsx(Qs,{className:"w-4 h-4 mr-2"}),r({id:"common.save"})]})]})]})]}),e.jsx(_s,{open:P,onOpenChange:F,children:e.jsxs(Hs,{children:[e.jsxs(Us,{children:[e.jsx(Js,{children:r({id:"apiSettings.cache.settings.actions.clearCache"})}),e.jsx(Vs,{children:r({id:"apiSettings.cache.settings.confirmClearCache"})})]}),e.jsxs($s,{children:[e.jsx(Gs,{disabled:u,children:r({id:"common.cancel"})}),e.jsx(qs,{onClick:k,disabled:u,children:r(u?{id:"common.loading"}:{id:"common.confirm"})})]})]})})]})}function _t({pool:a,onEdit:r,onDelete:t,onToggleEnabled:s,isDeleting:n,isToggling:h}){const{formatMessage:o}=W(),d=()=>{const u={embedding:"success",llm:"default",reranker:"info"},v={embedding:"apiSettings.modelPools.embedding",llm:"apiSettings.modelPools.llm",reranker:"apiSettings.modelPools.reranker"};return e.jsx(ee,{variant:u[a.modelType],children:o({id:v[a.modelType]})})},M=()=>o({id:{round_robin:"apiSettings.modelPools.roundRobin",latency_aware:"apiSettings.modelPools.latencyAware",weighted_random:"apiSettings.modelPools.weightedRandom"}[a.strategy]});return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name||a.id}),d(),a.enabled?e.jsxs(ee,{variant:"success",children:[e.jsx(ze,{className:"w-3 h-3 mr-1"}),o({id:"apiSettings.common.enabled"})]}):e.jsxs(ee,{variant:"secondary",children:[e.jsx(Ms,{className:"w-3 h-3 mr-1"}),o({id:"apiSettings.common.disabled"})]})]}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"capitalize",children:M()}),a.autoDiscover&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(xe,{className:"w-3 h-3"}),o({id:"apiSettings.modelPools.autoDiscover"})]})]}),e.jsx("div",{className:"mt-2 text-sm",children:e.jsxs("p",{className:"text-muted-foreground",children:[o({id:"apiSettings.modelPools.targetModel"}),": ",e.jsx("span",{className:"font-medium",children:a.targetModel})]})}),a.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:a.description}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:[o({id:"apiSettings.modelPools.defaultCooldown"}),": ",a.defaultCooldown,"s"]}),e.jsxs("span",{children:[o({id:"apiSettings.modelPools.defaultConcurrent"}),": ",a.defaultMaxConcurrentPerKey]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:s,disabled:h}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.modelPools.actions.edit"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:n,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.modelPools.actions.delete"})]})]})]})]})]})})}function rs({label:a,value:r,icon:t,className:s}){return e.jsx(Q,{className:Ve("p-4",s),children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 bg-primary/10 rounded-md text-primary",children:t}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:a}),e.jsx("p",{className:"text-2xl font-semibold",children:r})]})]})})}function Ht({onAddPool:a,onEditPool:r}){var z;const{formatMessage:t}=W(),{success:s,error:n}=ge(),{pools:h,totalCount:o,enabledCount:d,isLoading:M,refetch:u}=zs(),{deleteModelPool:v,isDeleting:j}=ft(),{updateModelPool:P}=Bs(),[F,H]=i.useState(""),[k,I]=i.useState("all"),[C,D]=i.useState(null),[w,K]=i.useState(null),g=i.useMemo(()=>h.filter(y=>{var b;const S=!F||y.id.toLowerCase().includes(F.toLowerCase())||((b=y.name)==null?void 0:b.toLowerCase().includes(F.toLowerCase()))||y.targetModel.toLowerCase().includes(F.toLowerCase()),_=k==="all"||y.modelType===k;return S&&_}),[h,F,k]),c=i.useMemo(()=>({embedding:h.filter(y=>y.modelType==="embedding").length,llm:h.filter(y=>y.modelType==="llm").length,reranker:h.filter(y=>y.modelType==="reranker").length}),[h]),A=async()=>{if(C)try{await v(C),s(t({id:"apiSettings.messages.settingsDeleted"})),D(null),await u()}catch(y){n(t({id:"common.error"}),y instanceof Error?y.message:t({id:"common.error"}))}},L=async(y,S)=>{K(y);try{await P(y,{enabled:S}),await u()}catch(_){n(t({id:"common.error"}),_ instanceof Error?_.message:t({id:"common.error"}))}finally{K(null)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(rs,{label:t({id:"apiSettings.modelPools.stats.total"}),value:o,icon:e.jsx(Cs,{className:"w-5 h-5"})}),e.jsx(rs,{label:t({id:"apiSettings.modelPools.stats.enabled"}),value:d,icon:e.jsx(ze,{className:"w-5 h-5"})}),e.jsx(rs,{label:t({id:"apiSettings.modelPools.embedding"}),value:c.embedding,icon:e.jsx(xe,{className:"w-5 h-5"})}),e.jsx(rs,{label:t({id:"apiSettings.modelPools.llm"}),value:c.llm,icon:e.jsx(Cs,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between",children:[e.jsx("div",{className:"flex-1 w-full sm:max-w-md",children:e.jsxs("div",{className:"relative",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:t({id:"apiSettings.common.searchPlaceholder"}),value:F,onChange:y=>H(y.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center bg-muted rounded-lg p-1",children:Object.keys({all:null,embedding:null,llm:null,reranker:null}).map(y=>e.jsx("button",{onClick:()=>I(y),className:Ve("px-3 py-1.5 text-sm font-medium rounded-md transition-colors",k===y?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:t(y==="all"?{id:"apiSettings.common.showAll"}:{id:`apiSettings.modelPools.${y}`})},y))}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.modelPools.actions.add"})]})]})]}),M?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:t({id:"common.loading"})}):g.length===0?e.jsxs(Q,{className:"p-12 text-center",children:[e.jsx(Cs,{className:"w-12 h-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:t({id:"apiSettings.modelPools.emptyState.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:t({id:"apiSettings.modelPools.emptyState.message"})}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.modelPools.actions.add"})]})]}):e.jsx("div",{className:"grid gap-4",children:g.map(y=>e.jsx(_t,{pool:y,onEdit:()=>r(y.id),onDelete:()=>D(y.id),onToggleEnabled:S=>L(y.id,S),isDeleting:j&&C===y.id,isToggling:w===y.id},y.id))}),e.jsx(_s,{open:!!C,onOpenChange:()=>D(null),children:e.jsxs(Hs,{children:[e.jsxs(Us,{children:[e.jsx(Js,{children:t({id:"apiSettings.modelPools.actions.delete"})}),e.jsx(Vs,{children:t({id:"apiSettings.modelPools.deleteConfirm"},{name:((z=h.find(y=>y.id===C))==null?void 0:z.name)||C||""})})]}),e.jsxs($s,{children:[e.jsx(Gs,{disabled:j,children:t({id:"common.cancel"})}),e.jsx(qs,{onClick:A,disabled:j,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:t(j?{id:"common.loading"}:{id:"common.confirm"})})]})]})})]})}const Fs={modelType:"",targetModel:"",strategy:"round_robin",autoDiscover:!0,excludedProviderIds:[],defaultCooldown:60,defaultMaxConcurrentPerKey:5,name:"",description:""};function Ut({provider:a,excluded:r,onToggle:t}){const{formatMessage:s}=W();return e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/50 rounded-md",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(tt,{id:`provider-${a.providerId}`,checked:!r,onCheckedChange:()=>t(a.providerId)}),e.jsx(m,{htmlFor:`provider-${a.providerId}`,className:"font-medium cursor-pointer",children:a.providerName})]}),e.jsx("div",{className:"ml-6 mt-1 flex flex-wrap gap-1",children:a.models.map(n=>e.jsx("span",{className:"text-xs px-2 py-0.5 bg-background rounded text-muted-foreground",children:n},n))})]}),e.jsx(f,{variant:"ghost",size:"sm",onClick:()=>t(a.providerId),children:r?e.jsx("span",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.modelPools.excludeProvider"})}):e.jsx("span",{className:"text-xs text-primary",children:s({id:"apiSettings.modelPools.includeProvider"})})})]})}function Jt({open:a,onClose:r,pool:t}){var b;const{formatMessage:s}=W(),{success:n,error:h,warning:o}=ge(),[d,M]=i.useState(Fs),[u,v]=i.useState(!1),{createModelPool:j,isCreating:P}=St(),{updateModelPool:F,isUpdating:H}=Bs(),{discoverModels:k,isDiscovering:I,data:C}=Nt(),{data:D,isLoading:w}=yt(d.modelType||"embedding"),K=!!t,g=P||H;i.useEffect(()=>{M(t?{modelType:t.modelType,targetModel:t.targetModel,strategy:t.strategy,autoDiscover:t.autoDiscover,excludedProviderIds:t.excludedProviderIds??[],defaultCooldown:t.defaultCooldown,defaultMaxConcurrentPerKey:t.defaultMaxConcurrentPerKey,name:t.name??"",description:t.description??""}:Fs),v(!1)},[t,a]);const c=(p,O)=>{M(X=>({...X,[p]:O})),(p==="modelType"||p==="targetModel")&&v(!1)},A=async()=>{if(!d.modelType||!d.targetModel){o("Please select model type and target model first");return}try{await k(d.modelType,d.targetModel),v(!0)}catch(p){h(s({id:"common.error"}),p instanceof Error?p.message:"Failed to discover providers")}},L=p=>{M(O=>({...O,excludedProviderIds:O.excludedProviderIds.includes(p)?O.excludedProviderIds.filter(X=>X!==p):[...O.excludedProviderIds,p]}))},z=i.useMemo(()=>!!d.modelType&&!!d.targetModel,[d.modelType,d.targetModel]),y=async()=>{if(z)try{const p={modelType:d.modelType,targetModel:d.targetModel,strategy:d.strategy,autoDiscover:d.autoDiscover,excludedProviderIds:d.excludedProviderIds,defaultCooldown:d.defaultCooldown,defaultMaxConcurrentPerKey:d.defaultMaxConcurrentPerKey,name:d.name||void 0,description:d.description||void 0,enabled:!0};K&&t?await F(t.id,p):await j(p),n(s({id:"apiSettings.modelPools.poolSaved"})),r()}catch(p){h(s({id:"common.error"}),p instanceof Error?p.message:"Failed to save model pool")}},S=(C==null?void 0:C.discovered)??[],_=i.useMemo(()=>!C||!S?0:S.length-d.excludedProviderIds.filter(p=>S.some(O=>O.providerId===p)).length,[C,S,d.excludedProviderIds]);return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(K?{id:"apiSettings.modelPools.actions.edit"}:{id:"apiSettings.modelPools.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.modelPools.embeddingPoolDesc"})})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"pool-model-type",children:[s({id:"apiSettings.modelPools.modelType"})," *"]}),e.jsxs(ve,{value:d.modelType,onValueChange:p=>c("modelType",p),disabled:K,children:[e.jsx(fe,{id:"pool-model-type",children:e.jsx(Se,{placeholder:s({id:"apiSettings.modelPools.selectTargetModel"})})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"embedding",children:s({id:"apiSettings.modelPools.embedding"})}),e.jsx(V,{value:"llm",children:s({id:"apiSettings.modelPools.llm"})}),e.jsx(V,{value:"reranker",children:s({id:"apiSettings.modelPools.reranker"})})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"pool-target-model",children:[s({id:"apiSettings.modelPools.targetModel"})," *"]}),w?e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(ss,{className:"w-4 h-4 animate-spin"}),s({id:"common.loading"})]}):e.jsxs(ve,{value:d.targetModel,onValueChange:p=>c("targetModel",p),disabled:!d.modelType,children:[e.jsx(fe,{id:"pool-target-model",children:e.jsx(Se,{placeholder:s({id:"apiSettings.modelPools.selectTargetModel"})})}),e.jsx(Ne,{children:(b=D==null?void 0:D.availableModels)==null?void 0:b.map(p=>e.jsx(V,{value:p.modelId,children:p.modelName},p.modelId))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-strategy",children:s({id:"apiSettings.modelPools.strategy"})}),e.jsxs(ve,{value:d.strategy,onValueChange:p=>c("strategy",p),children:[e.jsx(fe,{id:"pool-strategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"round_robin",children:s({id:"apiSettings.modelPools.roundRobin"})}),e.jsx(V,{value:"latency_aware",children:s({id:"apiSettings.modelPools.latencyAware"})}),e.jsx(V,{value:"weighted_random",children:s({id:"apiSettings.modelPools.weightedRandom"})})]})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(m,{htmlFor:"pool-auto-discover",children:s({id:"apiSettings.modelPools.autoDiscover"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Automatically find providers offering this model"})]}),e.jsx(Z,{id:"pool-auto-discover",checked:d.autoDiscover,onCheckedChange:p=>c("autoDiscover",p)})]}),d.autoDiscover&&d.modelType&&d.targetModel&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(f,{type:"button",variant:"outline",onClick:A,disabled:I,className:"w-full",children:I?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),s({id:"common.loading"})]}):e.jsxs(e.Fragment,{children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.modelPools.actions.autoDiscover"})]})}),u&&S.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(st,{className:"w-4 h-4"}),e.jsxs("span",{children:[s({id:"apiSettings.modelPools.discovered"})," ",S.length," ",s({id:"apiSettings.modelPools.providers"})," •"," ",_," ",s({id:"apiSettings.modelPools.discovered"}).toLowerCase()]})]}),S.map(p=>e.jsx(Ut,{provider:p,excluded:d.excludedProviderIds.includes(p.providerId),onToggle:L},p.providerId))]}),u&&S.length===0&&e.jsx("div",{className:"text-center py-6 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:s({id:"apiSettings.modelPools.noProvidersFound"})})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-cooldown",children:s({id:"apiSettings.modelPools.defaultCooldown"})}),e.jsx(N,{id:"pool-cooldown",type:"number",min:0,value:d.defaultCooldown,onChange:p=>c("defaultCooldown",parseInt(p.target.value)||0)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-concurrent",children:s({id:"apiSettings.modelPools.defaultConcurrent"})}),e.jsx(N,{id:"pool-concurrent",type:"number",min:1,value:d.defaultMaxConcurrentPerKey,onChange:p=>c("defaultMaxConcurrentPerKey",parseInt(p.target.value)||1)})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-name",children:s({id:"apiSettings.common.name"})}),e.jsx(N,{id:"pool-name",value:d.name,onChange:p=>c("name",p.target.value),placeholder:s({id:"apiSettings.common.optional"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-description",children:s({id:"apiSettings.common.description"})}),e.jsx(Ke,{id:"pool-description",value:d.description,onChange:p=>c("description",p.target.value),placeholder:s({id:"apiSettings.common.optional"}),rows:3})]})]}),e.jsxs(Ye,{children:[e.jsxs(f,{variant:"outline",onClick:r,disabled:g,children:[e.jsx(Ds,{className:"w-4 h-4 mr-2"}),s({id:"common.cancel"})]}),e.jsx(f,{onClick:y,disabled:!z||g,children:g?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),s({id:"common.loading"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Qs,{className:"w-4 h-4 mr-2"}),s({id:"common.save"})]})})]})]})})}function Vt({cliSettings:a,onEdit:r,onDelete:t,onToggleEnabled:s,isDeleting:n,isToggling:h}){const{formatMessage:o}=W(),d=()=>{const v=a.provider||"claude",j={claude:{variant:"secondary",label:"Claude"},codex:{variant:"outline",label:"Codex"},gemini:{variant:"default",label:"Gemini"}},P=j[v]||j.claude;return e.jsx(ee,{variant:P.variant,className:"text-xs",children:P.label})},M=()=>a.enabled?e.jsx(ee,{variant:"success",children:o({id:"apiSettings.common.enabled"})}):e.jsx(ee,{variant:"secondary",children:o({id:"apiSettings.common.disabled"})}),u=(()=>{const v=a.settings.env;return v.ANTHROPIC_BASE_URL||v.OPENAI_BASE_URL||""})();return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name}),M(),d()]}),a.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:a.description}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(cs,{className:"w-3 h-3"}),a.settings.model||"default"]}),u&&e.jsxs("span",{className:"flex items-center gap-1 truncate max-w-[200px]",title:u,children:[e.jsx(Tt,{className:"w-3 h-3 flex-shrink-0"}),u]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:s,disabled:h}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.cliSettings.actions.edit"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:n,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.cliSettings.actions.delete"})]})]})]})]})]})})}function $t({onAddCliSettings:a,onEditCliSettings:r}){const{formatMessage:t}=W(),{error:s}=ge(),[n,h]=i.useState(""),{cliSettings:o,totalCount:d,enabledCount:M,providerCounts:u,isLoading:v,refetch:j}=Rs(),{deleteCliSettings:P,isDeleting:F}=bt(),{toggleCliSettings:H,isToggling:k}=Ct(),I=i.useMemo(()=>{if(!n)return o;const w=n.toLowerCase();return o.filter(K=>{var g;return K.name.toLowerCase().includes(w)||((g=K.description)==null?void 0:g.toLowerCase().includes(w))||K.id.toLowerCase().includes(w)})},[o,n]),C=async w=>{const K=o.find(c=>c.id===w);if(!K)return;const g=t({id:"apiSettings.cliSettings.deleteConfirm"},{name:K.name});if(confirm(g))try{await P(w)}catch{s(t({id:"apiSettings.cliSettings.deleteError"}))}},D=async(w,K)=>{try{await H(w,K)}catch{s(t({id:"apiSettings.cliSettings.toggleError"}))}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-5 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(cs,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:d})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.cliSettings.stats.total"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ze,{className:"w-5 h-5 text-success"}),e.jsx("span",{className:"text-2xl font-bold",children:M})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.cliSettings.stats.enabled"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-2xl font-bold",children:u.claude||0})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Claude"})]}),e.jsxs(Q,{className:"p-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-2xl font-bold",children:u.codex||0})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Codex"})]}),e.jsxs(Q,{className:"p-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-2xl font-bold",children:u.gemini||0})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Gemini"})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:t({id:"apiSettings.cliSettings.searchPlaceholder"}),value:n,onChange:w=>h(w.target.value),className:"pl-9"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{variant:"outline",onClick:()=>j(),disabled:v,children:t({id:"common.actions.refresh"})}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.cliSettings.actions.add"})]})]})]}),v?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(w=>e.jsx("div",{className:"h-32 bg-muted animate-pulse rounded-lg"},w))}):I.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(cs,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:t({id:"apiSettings.cliSettings.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:t({id:"apiSettings.cliSettings.emptyState.message"})})]}):e.jsx("div",{className:"space-y-3",children:I.map(w=>e.jsx(Vt,{cliSettings:w,onEdit:()=>r(w.id),onDelete:()=>C(w.id),onToggleEnabled:K=>D(w.id,K),isDeleting:F,isToggling:k},w.id))})]})}function Ks(a,r="json"){const t=a.trim();if(!t)return{ok:!0,value:""};if(r==="json")try{return JSON.parse(t),{ok:!0,value:t}}catch{return{ok:!1,errorKey:"invalidJson"}}return{ok:!0,value:t}}function Gt({open:a,onClose:r,cliSettings:t,defaultProvider:s}){const{formatMessage:n}=W(),{error:h}=ge(),o=!!t,{createCliSettings:d,isCreating:M}=wt(),{updateCliSettings:u,isUpdating:v}=Mt(),{providers:j}=Ze(),[P,F]=i.useState(""),[H,k]=i.useState(""),[I,C]=i.useState(!0),[D,w]=i.useState("claude"),[K,g]=i.useState("direct"),[c,A]=i.useState(""),[L,z]=i.useState(""),[y,S]=i.useState(""),[_,b]=i.useState(!1),[p,O]=i.useState(""),[X,ne]=i.useState(""),[ue,le]=i.useState(""),[be,E]=i.useState(""),[G,q]=i.useState(!1),[te,de]=i.useState(""),[Re,Me]=i.useState(""),[_e,Pe]=i.useState(!1),[Ce,we]=i.useState(""),[ke,Ee]=i.useState(!1),[Te,je]=i.useState(""),[Ae,Ie]=i.useState(!1),[ce,B]=i.useState(""),[se,re]=i.useState([]),[ae,oe]=i.useState(""),[me,De]=i.useState([]),[is,Xe]=i.useState(""),[He,ns]=i.useState("{}"),[Fe,ls]=i.useState(!1),[Y,Le]=i.useState({}),[ds,Ue]=i.useState(!1);i.useEffect(()=>{if(t){F(t.name),k(t.description||""),C(t.enabled),w(t.provider||"claude"),B(t.settings.model||""),re(t.settings.availableModels||[]),De(t.settings.tags||[]);const l=t.provider||"claude";if(l==="claude"){O(t.settings.settingsFile||"");const J=t.settings.env;if(!!(J.ANTHROPIC_BASE_URL&&!J.ANTHROPIC_BASE_URL.includes("api.anthropic.com")))g("direct"),S(J.ANTHROPIC_BASE_URL||""),z(J.ANTHROPIC_AUTH_TOKEN||"");else{g("provider-based");const pe=j.find(bs=>bs.apiBase===J.ANTHROPIC_BASE_URL);pe&&A(pe.id)}}else if(l==="codex"){const J=t.settings;ne(J.env.OPENAI_API_KEY||""),le(J.env.OPENAI_BASE_URL||""),E(J.profile||""),de(J.authJson||""),Me(J.configToml||"")}else l==="gemini"&&we(t.settings.env.GEMINI_API_KEY||t.settings.env.GOOGLE_API_KEY||"")}else{const l=s||"claude";F(""),k(""),C(!0),w(l),g("direct"),A(""),B(""),O(""),z(""),S(""),ne(""),le(""),E(""),q(!1),de(""),Me(""),Pe(!1),we(""),Ee(!1),je(""),re([]),oe(""),De([]),Xe(""),ns("{}"),ls(!1),Le({})}},[t,a,j,s]);const x=()=>{const l={};if(P.trim()?(/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(P.trim())||(l.name=n({id:"apiSettings.cliSettings.nameFormatHint"})),P.trim().length>32&&(l.name=n({id:"apiSettings.cliSettings.nameTooLong"},{max:32}))):l.name=n({id:"apiSettings.validation.nameRequired"}),D==="claude"&&(K==="provider-based"&&!c&&(l.providerId=n({id:"apiSettings.cliSettings.validation.providerRequired"})),K==="direct"&&!L.trim()&&!y.trim()&&(l.direct=n({id:"apiSettings.cliSettings.validation.authOrBaseUrlRequired"}))),te.trim()){const J=Ks(te,"json");J.ok||(l.authJson=n({id:`apiSettings.cliSettings.${J.errorKey}`}))}if(Fe){const J=Ks(He,"json");J.ok||(l.configJson=n({id:`apiSettings.cliSettings.${J.errorKey}`}))}return Le(l),Object.keys(l).length===0},T=async()=>{Ue(!0);try{const l=await nt();l.success?(l.configToml&&Me(l.configToml),l.authJson&&de(l.authJson)):h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}catch{h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}finally{Ue(!1)}},R=async()=>{Ie(!0);try{const l=await lt();l.success?l.settingsJson&&je(l.settingsJson):h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}catch{h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}finally{Ie(!1)}},U=async()=>{if(x())try{let l;if(D==="claude"){const $={DISABLE_AUTOUPDATER:"1"};if(K==="provider-based"){const pe=j.find(bs=>bs.id===c);pe!=null&&pe.apiBase&&($.ANTHROPIC_BASE_URL=pe.apiBase),pe!=null&&pe.apiKey&&($.ANTHROPIC_AUTH_TOKEN=pe.apiKey)}else L.trim()&&($.ANTHROPIC_AUTH_TOKEN=L.trim()),y.trim()&&($.ANTHROPIC_BASE_URL=y.trim());l={env:$,model:ce||void 0,settingsFile:p.trim()||void 0,availableModels:se,tags:me}}else if(D==="codex"){const $={};X.trim()&&($.OPENAI_API_KEY=X.trim()),ue.trim()&&($.OPENAI_BASE_URL=ue.trim()),l={env:$,model:ce||void 0,profile:be.trim()||void 0,authJson:te.trim()||void 0,configToml:Re.trim()||void 0,availableModels:se,tags:me}}else{const $={};Ce.trim()&&($.GEMINI_API_KEY=Ce.trim()),l={env:$,model:ce||void 0,availableModels:se,tags:me}}if(Fe&&He.trim())try{const $=JSON.parse(He);$&&typeof $=="object"&&!Array.isArray($)&&Object.assign(l,$)}catch{}const J={id:t==null?void 0:t.id,name:P.trim(),description:H.trim()||void 0,provider:D,enabled:I,settings:l};o&&t?await u(t.id,J):await d(J),r()}catch{h(n({id:"apiSettings.cliSettings.saveError"}))}},Je=()=>{const l=ae.trim();l&&!se.includes(l)&&(re([...se,l]),oe(""))},Ws=l=>re(se.filter(J=>J!==l)),Ps=()=>{const l=is.trim();l&&!me.includes(l)&&(De([...me,l]),Xe(""))},Ys=l=>De(me.filter(J=>J!==l)),Zs=["分析","Debug","implementation","refactoring","testing"],es=j.find(l=>l.id===c),Xs={claude:"Claude",codex:"Codex",gemini:"Gemini"};return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsxs(Qe,{children:[n(o?{id:"apiSettings.cliSettings.actions.edit"}:{id:"apiSettings.cliSettings.actions.add"})," - ",Xs[D]]}),e.jsx(We,{children:n({id:"apiSettings.cliSettings.modalDescription"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[!o&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{children:"CLI Provider"}),e.jsxs(ve,{value:D,onValueChange:l=>w(l),children:[e.jsx(fe,{children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"claude",children:"Claude"}),e.jsx(V,{value:"codex",children:"Codex"}),e.jsx(V,{value:"gemini",children:"Gemini"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[n({id:"apiSettings.common.name"}),e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(N,{id:"name",value:P,onChange:l=>F(l.target.value),placeholder:n({id:"apiSettings.cliSettings.namePlaceholder"}),className:Y.name?"border-destructive":"",maxLength:32}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.nameFormatHint"})}),Y.name&&e.jsx("p",{className:"text-sm text-destructive",children:Y.name})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"description",children:n({id:"apiSettings.common.description"})}),e.jsx(Ke,{id:"description",value:H,onChange:l=>k(l.target.value),placeholder:n({id:"apiSettings.cliSettings.descriptionPlaceholder"}),rows:2})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:I,onCheckedChange:C}),e.jsx(m,{htmlFor:"enabled",className:"cursor-pointer",children:n({id:"apiSettings.common.enableThis"})})]})]}),D==="claude"&&e.jsxs(e.Fragment,{children:[e.jsxs(at,{value:K,onValueChange:l=>g(l),className:"w-full",children:[e.jsxs(it,{className:"grid w-full grid-cols-2",children:[e.jsx(Es,{value:"provider-based",children:n({id:"apiSettings.cliSettings.providerBased"})}),e.jsx(Es,{value:"direct",children:n({id:"apiSettings.cliSettings.direct"})})]}),e.jsxs(Ts,{value:"provider-based",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"providerId",children:[n({id:"apiSettings.common.provider"}),e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(ve,{value:c,onValueChange:A,children:[e.jsx(fe,{className:Y.providerId?"border-destructive":"",children:e.jsx(Se,{placeholder:n({id:"apiSettings.cliSettings.selectProvider"})})}),e.jsx(Ne,{children:j.map(l=>e.jsx(V,{value:l.id,children:l.name},l.id))})]}),Y.providerId&&e.jsx("p",{className:"text-sm text-destructive",children:Y.providerId})]}),es&&e.jsxs("div",{className:"p-4 bg-muted/50 rounded-lg space-y-2",children:[e.jsx("p",{className:"text-sm font-medium",children:es.name}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[n({id:"apiSettings.common.type"}),": ",es.type]}),es.apiBase&&e.jsxs("p",{className:"text-xs text-muted-foreground truncate",children:[n({id:"apiSettings.providers.apiBaseUrl"}),": ",es.apiBase]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"model-pb",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"model-pb",value:ce,onChange:l=>B(l.target.value),placeholder:""})]})]}),e.jsxs(Ts,{value:"direct",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"authToken",children:n({id:"apiSettings.cliSettings.authToken"})}),e.jsxs("div",{className:"relative",children:[e.jsx(N,{id:"authToken",type:_?"text":"password",value:L,onChange:l=>z(l.target.value),placeholder:"sk-ant-...",className:Y.direct?"border-destructive pr-10":"pr-10"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:()=>b(!_),children:_?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"baseUrl",children:n({id:"apiSettings.cliSettings.baseUrl"})}),e.jsx(N,{id:"baseUrl",value:y,onChange:l=>S(l.target.value),placeholder:"https://api.anthropic.com",className:Y.direct?"border-destructive":""})]}),Y.direct&&e.jsx("p",{className:"text-sm text-destructive",children:Y.direct}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"model-direct",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"model-direct",value:ce,onChange:l=>B(l.target.value),placeholder:""})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"settingsFile",children:n({id:"apiSettings.cliSettings.settingsFile"})}),e.jsx(N,{id:"settingsFile",value:p,onChange:l=>O(l.target.value),placeholder:n({id:"apiSettings.cliSettings.settingsFilePlaceholder"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.settingsFileHint"})})]})]}),D==="codex"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Load Global Config"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Load config.toml and auth.json from global Codex config directory"})]}),e.jsx(f,{type:"button",variant:"outline",size:"sm",onClick:T,disabled:ds,children:ds?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),"Loading..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Is,{className:"w-4 h-4 mr-2"}),"Load Config"]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-apikey",children:"API Key"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只需要填这里,下方 auth.json 会自动填充"}),e.jsxs("div",{className:"relative",children:[e.jsx(N,{id:"codex-apikey",type:G?"text":"password",value:X,onChange:l=>ne(l.target.value),placeholder:"sk-...",className:"pr-10"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:()=>q(!G),children:G?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-baseurl",children:"API 请求地址"}),e.jsx(N,{id:"codex-baseurl",value:ue,onChange:l=>le(l.target.value),placeholder:"https://your-api-endpoint.com/v1"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"填写兼容 OpenAI Response 格式的服务端点地址"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-model",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"codex-model",value:ce,onChange:l=>B(l.target.value),placeholder:""}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"指定使用的模型,将自动更新到 config.toml 中"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-profile",children:"Profile"}),e.jsx(N,{id:"codex-profile",value:be,onChange:l=>E(l.target.value),placeholder:"default"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Codex profile 名称,通过 --profile 参数传递"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-authjson",children:"auth.json (JSON) *"}),e.jsx(Ke,{id:"codex-authjson",value:te,onChange:l=>{de(l.target.value),Y.authJson&&Le(J=>{const $={...J};return delete $.authJson,$})},placeholder:'{"OPENAI_API_KEY": "..."}',className:`font-mono text-sm ${Y.authJson?"border-destructive":""}`,rows:8}),Y.authJson&&e.jsx("p",{className:"text-xs text-destructive",children:Y.authJson}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Codex auth.json 配置内容"}),e.jsx(f,{type:"button",variant:"ghost",size:"sm",onClick:()=>{try{const l=JSON.stringify(JSON.parse(te),null,2);de(l)}catch{}},children:"格式化"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{htmlFor:"codex-configtoml",children:"config.toml (TOML)"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"writeCommon",checked:_e,onCheckedChange:Pe}),e.jsx(m,{htmlFor:"writeCommon",className:"text-xs cursor-pointer",children:"写入通用配置"})]})]}),e.jsx(Ke,{id:"codex-configtoml",value:Re,onChange:l=>Me(l.target.value),placeholder:"",className:"font-mono text-sm",rows:6})]})]}),D==="gemini"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Load Global Config"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Load settings.json from global Gemini config directory"})]}),e.jsx(f,{type:"button",variant:"outline",size:"sm",onClick:R,disabled:Ae,children:Ae?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),"Loading..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Is,{className:"w-4 h-4 mr-2"}),"Load Config"]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"gemini-apikey",children:"API Key"}),e.jsxs("div",{className:"relative",children:[e.jsx(N,{id:"gemini-apikey",type:ke?"text":"password",value:Ce,onChange:l=>we(l.target.value),placeholder:"AIza...",className:"pr-10"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:()=>Ee(!ke),children:ke?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"gemini-model",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"gemini-model",value:ce,onChange:l=>B(l.target.value),placeholder:""})]}),Te&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{htmlFor:"gemini-settingsjson",children:"settings.json (Preview)"}),e.jsx(f,{type:"button",variant:"ghost",size:"sm",onClick:()=>{try{const l=JSON.stringify(JSON.parse(Te),null,2);je(l)}catch{}},children:"Format"})]}),e.jsx(Ke,{id:"gemini-settingsjson",value:Te,onChange:l=>je(l.target.value),placeholder:"{}",className:"font-mono text-sm",rows:8,readOnly:!0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Gemini settings.json content (read-only preview)"})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"availableModels",children:n({id:"apiSettings.cliSettings.availableModels"})}),e.jsxs("div",{className:"flex flex-wrap gap-2 p-3 bg-muted/30 rounded-lg min-h-[60px]",children:[se.map(l=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-primary/10 text-primary rounded-md text-sm",children:[l,e.jsx("button",{type:"button",onClick:()=>Ws(l),className:"hover:text-destructive transition-colors",children:"×"})]},l)),e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsx(N,{id:"availableModels",value:ae,onChange:l=>oe(l.target.value),onKeyDown:l=>{l.key==="Enter"&&(l.preventDefault(),Je())},placeholder:n({id:"apiSettings.cliSettings.availableModelsPlaceholder"}),className:"flex-1 min-w-[120px]"}),e.jsx(f,{type:"button",size:"sm",onClick:Je,variant:"outline",children:e.jsx(Be,{className:"w-4 h-4"})})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.availableModelsHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"tags",children:n({id:"apiSettings.cliSettings.tags"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.tagsDescription"})}),e.jsxs("div",{className:"flex flex-wrap gap-2 p-3 bg-muted/30 rounded-lg min-h-[60px]",children:[me.map(l=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-primary/10 text-primary rounded-md text-sm",children:[l,e.jsx("button",{type:"button",onClick:()=>Ys(l),className:"hover:text-destructive transition-colors","aria-label":n({id:"apiSettings.cliSettings.removeTag"}),children:e.jsx(Ds,{className:"w-3 h-3"})})]},l)),e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsx(N,{id:"tags",value:is,onChange:l=>Xe(l.target.value),onKeyDown:l=>{l.key==="Enter"&&(l.preventDefault(),Ps())},placeholder:n({id:"apiSettings.cliSettings.tagInputPlaceholder"}),className:"flex-1 min-w-[120px]"}),e.jsx(f,{type:"button",size:"sm",onClick:Ps,variant:"outline",children:e.jsx(ie,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:[n({id:"apiSettings.cliSettings.predefinedTags"}),":"]}),Zs.map(l=>e.jsx("button",{type:"button",onClick:()=>{me.includes(l)||De([...me,l])},disabled:me.includes(l),className:"text-xs px-2 py-0.5 rounded border border-border hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:l},l))]})]}),e.jsxs("div",{className:"space-y-2 pt-4 border-t border-border",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{htmlFor:"configJson",className:"cursor-pointer",children:n({id:"apiSettings.cliSettings.configJson"})}),e.jsx(f,{type:"button",variant:"ghost",size:"sm",onClick:()=>ls(!Fe),children:Fe?n({id:"common.actions.close"}):n({id:"common.actions.expand"},{value:"JSON"})})]}),Fe&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ke,{id:"configJson",value:He,onChange:l=>{ns(l.target.value),Y.configJson&&Le(J=>{const $={...J};return delete $.configJson,$})},placeholder:n({id:"apiSettings.cliSettings.configJsonPlaceholder"}),className:Y.configJson?"font-mono border-destructive":"font-mono",rows:8}),Y.configJson&&e.jsx("p",{className:"text-xs text-destructive",children:Y.configJson}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.configJsonHint"})})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{variant:"outline",onClick:r,children:n({id:"common.actions.cancel"})}),e.jsx(f,{onClick:U,disabled:M||v,children:M||v?n({id:"common.actions.saving"}):e.jsxs(e.Fragment,{children:[e.jsx(Be,{className:"w-4 h-4 mr-2"}),n({id:"common.actions.save"})]})})]})]})})}function qt({entry:a,showKey:r,onToggleShowKey:t,onUpdate:s,onRemove:n,index:h}){const{formatMessage:o}=W();return e.jsxs("div",{className:"grid grid-cols-12 gap-2 items-start p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"col-span-3",children:[e.jsx(m,{className:"text-xs",children:o({id:"apiSettings.providers.keyLabel"})}),e.jsx(N,{value:a.label||"",onChange:d=>s({label:d.target.value}),placeholder:`Key ${h+1}`,className:"mt-1"})]}),e.jsxs("div",{className:"col-span-4",children:[e.jsx(m,{className:"text-xs",children:o({id:"apiSettings.providers.keyValue"})}),e.jsxs("div",{className:"relative mt-1",children:[e.jsx(N,{type:r?"text":"password",value:a.key,onChange:d=>s({key:d.target.value}),placeholder:"sk-...",className:"pr-8"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:t,children:r?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(m,{className:"text-xs",children:o({id:"apiSettings.providers.keyWeight"})}),e.jsx(N,{type:"number",min:"0",max:"100",value:a.weight??1,onChange:d=>s({weight:parseInt(d.target.value)||1}),className:"mt-1"})]}),e.jsxs("div",{className:"col-span-2 flex items-center gap-2 pt-5",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:d=>s({enabled:d})}),e.jsx("span",{className:"text-sm text-muted-foreground",children:a.enabled?o({id:"apiSettings.common.enabled"}):o({id:"apiSettings.common.disabled"})})]}),e.jsx("div",{className:"col-span-1 flex items-center justify-end pt-5",children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:n,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})})]})}function Qt({open:a,onClose:r,providerId:t}){const{formatMessage:s}=W(),{success:n,error:h}=ge(),{providers:o}=Ze(),{updateProvider:d,isUpdating:M}=Ss(),u=o.find(b=>b.id===t),[v,j]=i.useState([]),[P,F]=i.useState(new Set),[H,k]=i.useState("simple-shuffle"),[I,C]=i.useState(!1),[D,w]=i.useState(60),[K,g]=i.useState(300),[c,A]=i.useState(5);i.useEffect(()=>{u&&(!!(u.apiKeys&&u.apiKeys.length>0)&&u.apiKeys?j(u.apiKeys.map(p=>({id:p.id,key:p.key,label:p.label,weight:p.weight,enabled:p.enabled}))):u.apiKey?j([{id:"key-1",key:u.apiKey,label:"Key 1",weight:1,enabled:!0}]):j([]),k(u.routingStrategy||"simple-shuffle"),u.healthCheck&&(C(u.healthCheck.enabled),w(u.healthCheck.intervalSeconds),g(u.healthCheck.cooldownSeconds),A(u.healthCheck.failureThreshold)))},[u,a]);const L=()=>{const b={id:`key-${Date.now()}`,key:"",label:`Key ${v.length+1}`,weight:1,enabled:!0};j([...v,b])},z=(b,p)=>{j(v.map((O,X)=>X===b?{...O,...p}:O))},y=b=>{j(v.filter((p,O)=>O!==b))},S=b=>{F(p=>{const O=new Set(p);return O.has(b)?O.delete(b):O.add(b),O})},_=async()=>{if(u)try{await d(t,{apiKey:"",apiKeys:v.map(b=>({id:b.id,key:b.key,label:b.label,weight:b.weight,enabled:b.enabled})),routingStrategy:H,healthCheck:I?{enabled:!0,intervalSeconds:D,cooldownSeconds:K,failureThreshold:c}:void 0}),n(s({id:"apiSettings.providers.actions.save"})),r()}catch{h(s({id:"apiSettings.providers.saveError"}))}};return u?e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s({id:"apiSettings.providers.multiKeySettings"})}),e.jsxs(We,{children:[s({id:"apiSettings.providers.description"}),": ",u.name]})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.actions.multiKeySettings"})}),e.jsxs(f,{type:"button",size:"sm",onClick:L,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addKey"})]})]}),v.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:v.map((b,p)=>e.jsx(qt,{entry:b,showKey:P.has(p),onToggleShowKey:()=>S(p),onUpdate:O=>z(p,O),onRemove:()=>y(p),index:p},b.id))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"routingStrategy",children:s({id:"apiSettings.providers.routingStrategy"})}),e.jsxs(ve,{value:H,onValueChange:b=>k(b),children:[e.jsx(fe,{id:"routingStrategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"simple-shuffle",children:s({id:"apiSettings.providers.simpleShuffle"})}),e.jsx(V,{value:"weighted",children:s({id:"apiSettings.providers.weighted"})}),e.jsx(V,{value:"latency-based",children:s({id:"apiSettings.providers.latencyBased"})}),e.jsx(V,{value:"cost-based",children:s({id:"apiSettings.providers.costBased"})}),e.jsx(V,{value:"least-busy",children:s({id:"apiSettings.providers.leastBusy"})})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{children:s({id:"apiSettings.providers.healthCheck"})}),e.jsx(Z,{checked:I,onCheckedChange:C})]}),I&&e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"checkInterval",children:s({id:"apiSettings.providers.checkInterval"})}),e.jsx(N,{id:"checkInterval",type:"number",min:"10",value:D,onChange:b=>w(parseInt(b.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cooldownPeriod",children:s({id:"apiSettings.providers.cooldownPeriod"})}),e.jsx(N,{id:"cooldownPeriod",type:"number",min:"10",value:K,onChange:b=>g(parseInt(b.target.value)||300)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"failureThreshold",children:s({id:"apiSettings.providers.failureThreshold"})}),e.jsx(N,{id:"failureThreshold",type:"number",min:"1",value:c,onChange:b=>A(parseInt(b.target.value)||5)})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:M,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:_,disabled:M||v.length===0,children:[M?e.jsx(xe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})}):null}function As({model:a,onRemove:r,onUpdate:t,index:s}){const{formatMessage:n}=W(),[h,o]=i.useState(!1);return e.jsx("div",{className:"border rounded-lg p-3 space-y-2",children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsx(N,{value:a.name,onChange:d=>t("name",d.target.value),placeholder:n({id:"apiSettings.providers.modelId"}),className:"font-medium"}),e.jsx(N,{value:a.series||"",onChange:d=>t("series",d.target.value),placeholder:n({id:"apiSettings.providers.modelSeries"})})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(hs,{open:h,onOpenChange:o,children:[e.jsx(xs,{asChild:!0,children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",children:h?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})})}),e.jsxs(gs,{className:"w-full",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2 mt-2 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(m,{className:"text-xs",children:n({id:"apiSettings.providers.contextWindow"})}),e.jsx(N,{type:"number",value:a.contextWindow||"",onChange:d=>t("contextWindow",parseInt(d.target.value)||void 0),placeholder:"200000"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(m,{className:"text-xs",children:n({id:"apiSettings.providers.description"})}),e.jsx(N,{value:a.description||"",onChange:d=>t("description",d.target.value),placeholder:"Optional description"})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mt-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Z,{checked:a.streaming,onCheckedChange:d=>t("streaming",d),id:`streaming-${s}`}),e.jsx(m,{htmlFor:`streaming-${s}`,className:"text-xs cursor-pointer",children:n({id:"apiSettings.providers.streaming"})})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Z,{checked:a.functionCalling,onCheckedChange:d=>t("functionCalling",d),id:`fc-${s}`}),e.jsx(m,{htmlFor:`fc-${s}`,className:"text-xs cursor-pointer",children:n({id:"apiSettings.providers.functionCalling"})})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Z,{checked:a.vision,onCheckedChange:d=>t("vision",d),id:`vision-${s}`}),e.jsx(m,{htmlFor:`vision-${s}`,className:"text-xs cursor-pointer",children:n({id:"apiSettings.providers.vision"})})]})]})]})]}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:r,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})]})]})})}function Wt({open:a,onClose:r,providerId:t}){const{formatMessage:s}=W(),{success:n,error:h}=ge(),{providers:o}=Ze(),{updateProvider:d,isUpdating:M}=Ss(),u=o.find(g=>g.id===t),[v,j]=i.useState([]),[P,F]=i.useState([]);i.useEffect(()=>{u&&(u.llmModels&&j(u.llmModels.map(g=>({id:g.id,name:g.name,series:g.series,description:g.description}))),u.embeddingModels&&F(u.embeddingModels.map(g=>({id:g.id,name:g.name,series:g.series,description:g.description}))))},[u,a]);const H=()=>{const g={id:`llm-${Date.now()}`,name:"",series:""};j([...v,g])},k=g=>{j(v.filter((c,A)=>A!==g))},I=(g,c,A)=>{j(v.map((L,z)=>z===g?{...L,[c]:A}:L))},C=()=>{const g={id:`emb-${Date.now()}`,name:"",series:""};F([...P,g])},D=g=>{F(P.filter((c,A)=>A!==g))},w=(g,c,A)=>{F(P.map((L,z)=>z===g?{...L,[c]:A}:L))},K=async()=>{if(u)try{const g=new Date().toISOString();await d(t,{llmModels:v.filter(c=>c.name.trim()).map(c=>({id:c.id,name:c.name,type:"llm",series:c.series||c.name.split("-")[0],enabled:!0,createdAt:g,updatedAt:g})),embeddingModels:P.filter(c=>c.name.trim()).map(c=>({id:c.id,name:c.name,type:"embedding",series:c.series||c.name.split("-")[0],enabled:!0,createdAt:g,updatedAt:g}))}),n(s({id:"apiSettings.providers.actions.save"})),r()}catch{h(s({id:"apiSettings.providers.saveError"}))}};return u?e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s({id:"apiSettings.providers.actions.manageModels"})}),e.jsxs(We,{children:[s({id:"apiSettings.providers.description"}),": ",u.name]})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.llmModels"})}),e.jsx(ee,{variant:"secondary",children:v.length})]}),e.jsxs(f,{type:"button",size:"sm",onClick:H,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addLlmModel"})]})]}),v.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:v.map((g,c)=>e.jsx(As,{model:g,onRemove:()=>k(c),onUpdate:(A,L)=>I(c,A,L),index:c},g.id))})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.embeddingModels"})}),e.jsx(ee,{variant:"secondary",children:P.length})]}),e.jsxs(f,{type:"button",size:"sm",onClick:C,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addEmbeddingModel"})]})]}),P.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:P.map((g,c)=>e.jsx(As,{model:g,onRemove:()=>D(c),onUpdate:(A,L)=>w(c,A,L),index:c},g.id))})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:M,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:K,disabled:M,children:[M?e.jsx(xe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})}):null}function xa(){const{formatMessage:a}=W(),{success:r,error:t}=ge(),[s,n]=i.useState("providers"),h=Pt(),{providers:o}=Ze(),{endpoints:d}=Ls(),{pools:M}=zs(),{cliSettings:u}=Rs(),[v,j]=i.useState(!1),[P,F]=i.useState(null),[H,k]=i.useState(!1),[I,C]=i.useState(null),[D,w]=i.useState(!1),[K,g]=i.useState(null),[c,A]=i.useState(!1),[L,z]=i.useState(null),[y,S]=i.useState(!1),[_,b]=i.useState(null),[p,O]=i.useState(!1),[X,ne]=i.useState(null),ue=i.useMemo(()=>o.find(B=>B.id===P)||null,[o,P]),le=i.useMemo(()=>d.find(B=>B.id===I)||null,[d,I]),be=i.useMemo(()=>M.find(B=>B.id===K)||null,[M,K]),E=i.useMemo(()=>u.find(B=>B.id===L)||null,[u,L]),G=()=>{F(null),j(!0)},q=B=>{F(B),j(!0)},te=()=>{j(!1),F(null)},de=()=>{C(null),k(!0)},Re=B=>{C(B),k(!0)},Me=()=>{k(!1),C(null)},_e=()=>{g(null),w(!0)},Pe=B=>{g(B),w(!0)},Ce=()=>{w(!1),g(null)},we=()=>{z(null),A(!0)},ke=B=>{z(B),A(!0)},Ee=()=>{A(!1),z(null)},Te=B=>{b(B),S(!0)},je=()=>{S(!1),b(null)},Ae=B=>{ne(B),O(!0)},Ie=()=>{O(!1),ne(null)},ce=async B=>{var re;const se=((re=o.find(ae=>ae.id===B))==null?void 0:re.name)??B;try{const ae=await h.mutateAsync(),oe=[se,ae.yamlPath??ae.message].filter(Boolean);r(a({id:"apiSettings.messages.configSynced"}),oe.length>0?oe.join(`
|
|
4
4
|
`):void 0)}catch{t(a({id:"apiSettings.providers.saveError"}))}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold text-foreground flex items-center gap-2",children:[e.jsx(dt,{className:"w-6 h-6 text-primary"}),a({id:"apiSettings.title"})]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:a({id:"apiSettings.description"})})]}),e.jsxs(f,{variant:"outline",onClick:()=>window.location.reload(),children:[e.jsx(rt,{className:"w-4 h-4 mr-2"}),a({id:"common.actions.refresh"})]})]}),e.jsx(ct,{value:s,onValueChange:B=>n(B),tabs:[{value:"providers",label:a({id:"apiSettings.tabs.providers"})},{value:"endpoints",label:a({id:"apiSettings.tabs.endpoints"})},{value:"cache",label:a({id:"apiSettings.tabs.cache"})},{value:"modelPools",label:a({id:"apiSettings.tabs.modelPools"})},{value:"cliSettings",label:a({id:"apiSettings.tabs.cliSettings"})}]}),s==="providers"&&e.jsx("div",{className:"mt-4",children:e.jsx(Ft,{onAddProvider:G,onEditProvider:q,onMultiKeySettings:Te,onSyncToCodexLens:ce,onManageModels:Ae})}),s==="endpoints"&&e.jsx("div",{className:"mt-4",children:e.jsx(Lt,{onAddEndpoint:de,onEditEndpoint:Re})}),s==="cache"&&e.jsx("div",{className:"mt-4",children:e.jsx(Rt,{})}),s==="modelPools"&&e.jsx("div",{className:"mt-4",children:e.jsx(Ht,{onAddPool:_e,onEditPool:Pe})}),s==="cliSettings"&&e.jsx("div",{className:"mt-4",children:e.jsx($t,{onAddCliSettings:we,onEditCliSettings:ke})}),e.jsx(At,{open:v,onClose:te,provider:ue}),e.jsx(zt,{open:H,onClose:Me,endpoint:le}),e.jsx(Jt,{open:D,onClose:Ce,pool:be}),e.jsx(Gt,{open:c,onClose:Ee,cliSettings:E}),e.jsx(Qt,{open:y,onClose:je,providerId:_||""}),e.jsx(Wt,{open:p,onClose:Ie,providerId:X||""})]})}export{xa as ApiSettingsPage,xa as default};
|
|
5
|
-
//# sourceMappingURL=ApiSettingsPage-
|
|
5
|
+
//# sourceMappingURL=ApiSettingsPage-CtWlmztq.js.map
|