claude-code-workflow 7.2.9 → 7.2.11
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/.claude/agents/cli-planning-agent.md +3 -0
- package/.claude/agents/debug-explore-agent.md +1 -0
- package/.claude/agents/tdd-developer.md +1 -0
- package/.claude/agents/team-worker.md +1 -1
- package/.claude/agents/test-action-planning-agent.md +3 -0
- package/.claude/agents/test-context-search-agent.md +1 -0
- package/.claude/agents/test-fix-agent.md +3 -0
- package/.claude/skills/review-code/SKILL.md +2 -0
- package/.claude/skills/review-cycle/SKILL.md +4 -0
- package/.claude/skills/skill-simplify/phases/02-optimize.md +4 -0
- package/.claude/skills/spec-generator/phases/05-epics-stories.md +4 -0
- package/.claude/skills/team-arch-opt/specs/team-config.json +5 -5
- package/.claude/skills/team-frontend-debug/roles/analyzer/role.md +3 -2
- package/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md +1 -1
- package/.claude/skills/team-perf-opt/specs/team-config.json +5 -5
- package/.claude/skills/team-quality-assurance/roles/executor/role.md +2 -1
- package/.claude/skills/team-review/roles/reviewer/role.md +2 -1
- package/.claude/skills/team-tech-debt/roles/scanner/role.md +2 -1
- package/.claude/skills/team-testing/roles/executor/role.md +2 -1
- package/.claude/skills/team-testing/roles/generator/role.md +2 -1
- package/.claude/skills/team-ultra-analyze/roles/explorer/role.md +2 -1
- package/.claude/skills/team-ux-improve/specs/team-config.json +6 -6
- package/.claude/skills/workflow-execute/phases/06-review.md +4 -4
- package/.claude/skills/workflow-lite-test-review/SKILL.md +2 -0
- package/.claude/skills/workflow-plan/phases/05-plan-verify.md +4 -0
- package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +1 -0
- package/.claude/skills/workflow-tdd-plan/phases/05-tdd-task-generation.md +2 -1
- package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +1 -0
- package/.claude/skills/workflow-test-fix/phases/05-test-cycle-execute.md +2 -1
- package/.claude/skills/workflow-tune/SKILL.md +487 -0
- package/.claude/skills/workflow-tune/phases/01-setup.md +548 -0
- package/.claude/skills/workflow-tune/phases/02-step-execute.md +197 -0
- package/.claude/skills/workflow-tune/phases/03-step-analyze.md +386 -0
- package/.claude/skills/workflow-tune/phases/04-synthesize.md +257 -0
- package/.claude/skills/workflow-tune/phases/05-optimize-report.md +246 -0
- package/.claude/skills/workflow-tune/specs/workflow-eval-criteria.md +57 -0
- package/.claude/skills/workflow-tune/templates/step-analysis-prompt.md +88 -0
- package/.claude/skills/workflow-tune/templates/synthesis-prompt.md +90 -0
- package/.codex/skills/analyze-with-file/SKILL.md +64 -103
- package/.codex/skills/debug-with-file/SKILL.md +4 -0
- package/.codex/skills/issue-discover/SKILL.md +1 -0
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +3 -0
- package/.codex/skills/roadmap-with-file/SKILL.md +11 -17
- package/.codex/skills/team-designer/agents/validation-reporter.md +186 -0
- package/.codex/skills/team-iterdev/agents/gc-controller.md +193 -0
- package/.codex/skills/team-iterdev/agents/task-analyzer.md +206 -0
- package/.codex/skills/team-lifecycle-v4/agents/quality-gate.md +165 -0
- package/.codex/skills/team-lifecycle-v4/agents/requirement-clarifier.md +163 -0
- package/.codex/skills/team-lifecycle-v4/agents/supervisor.md +182 -0
- package/.codex/skills/team-uidesign/agents/completion-handler.md +177 -0
- package/.codex/skills/team-uidesign/agents/gc-loop-handler.md +162 -0
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +4 -0
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +2 -0
- package/ccw/dist/commands/spec.d.ts.map +1 -1
- package/ccw/dist/commands/spec.js +9 -4
- package/ccw/dist/commands/spec.js.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.js +3 -1
- package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
- package/ccw/dist/tools/spec-index-builder.d.ts +8 -4
- package/ccw/dist/tools/spec-index-builder.d.ts.map +1 -1
- package/ccw/dist/tools/spec-index-builder.js +8 -4
- package/ccw/dist/tools/spec-index-builder.js.map +1 -1
- package/ccw/dist/tools/spec-init.d.ts +1 -1
- package/ccw/dist/tools/spec-init.d.ts.map +1 -1
- package/ccw/dist/tools/spec-init.js +127 -0
- package/ccw/dist/tools/spec-init.js.map +1 -1
- package/ccw/dist/tools/spec-loader.d.ts.map +1 -1
- package/ccw/dist/tools/spec-loader.js +2 -1
- package/ccw/dist/tools/spec-loader.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js → AlertDialog-BW9jiZ-p.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js.map → AlertDialog-BW9jiZ-p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js → AnalysisPage-ds-w_nVO.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js.map → AnalysisPage-ds-w_nVO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js → ApiSettingsPage-DlCbXxTz.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js.map → ApiSettingsPage-DlCbXxTz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js → CliModeToggle-Dq3nL4fF.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js.map → CliModeToggle-Dq3nL4fF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js → CliSessionSharePage-BNDkEE4u.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js.map → CliSessionSharePage-BNDkEE4u.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js → CliViewerPage-ChM-uNx_.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js.map → CliViewerPage-ChM-uNx_.js.map} +1 -1
- package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js +2 -0
- package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js.map +1 -0
- package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js → Collapsible-CRNbykXN.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js.map → Collapsible-CRNbykXN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js → CommandsManagerPage-C2JWcemF.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js.map → CommandsManagerPage-C2JWcemF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js → DeepWikiPage-CvleOtJy.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js.map → DeepWikiPage-CvleOtJy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js → EndpointsPage-CMOWQG64.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js.map → EndpointsPage-CMOWQG64.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js → ExplorerPage-DaFPRlNo.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js.map → ExplorerPage-DaFPRlNo.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js → FixSessionPage-CC4p04Az.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js.map → FixSessionPage-CC4p04Az.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js → FloatingFileBrowser-DROn1xZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js.map → FloatingFileBrowser-DROn1xZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js → FloatingPanel-CmL_yhDv.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js.map → FloatingPanel-CmL_yhDv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js → GraphExplorerPage-DCV5ybKE.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js.map → GraphExplorerPage-DCV5ybKE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js → HistoryPage-D0fYQZgc.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js.map → HistoryPage-D0fYQZgc.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js → HookManagerPage-D2FuJfsM.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js.map → HookManagerPage-D2FuJfsM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js → InstallationsPage-tjklillZ.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js.map → InstallationsPage-tjklillZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js → IssueHubPage-E4JVrhO1.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js.map → IssueHubPage-E4JVrhO1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js → LiteTasksPage-aJuRoyLt.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js.map → LiteTasksPage-aJuRoyLt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js → McpManagerPage-BJeuWJv1.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js.map → McpManagerPage-BJeuWJv1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js → MemoryPage-BI4FAXhs.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js.map → MemoryPage-BI4FAXhs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js → NotFoundPage-DD2svchp.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js.map → NotFoundPage-DD2svchp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js → OrchestratorPage-FC__7yYa.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js.map → OrchestratorPage-FC__7yYa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js → ProjectOverviewPage-DBB_-FzV.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js.map → ProjectOverviewPage-DBB_-FzV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js → PromptHistoryPage-BwOAvCH8.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js.map → PromptHistoryPage-BwOAvCH8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js → ReviewSessionPage-Dd1-g_gp.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js.map → ReviewSessionPage-Dd1-g_gp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js → RulesManagerPage-B3RGdsKD.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js.map → RulesManagerPage-B3RGdsKD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js → SessionDetailPage-DM-W5R8K.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js.map → SessionDetailPage-DM-W5R8K.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js → SessionsPage-BVz1KCc7.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js.map → SessionsPage-BVz1KCc7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js → SettingsPage-ComW7EZS.js} +4 -4
- package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js.map → SettingsPage-ComW7EZS.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js → SkillsManagerPage-CKom9XwV.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js.map → SkillsManagerPage-CKom9XwV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js → SpecsSettingsPage-DQz7WP2s.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js.map → SpecsSettingsPage-DQz7WP2s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js → Switch-BPMdND9H.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js.map → Switch-BPMdND9H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js → TabsNavigation-qqt70VYL.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js.map → TabsNavigation-qqt70VYL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js → TaskDrawer-BqK_qiHX.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js.map → TaskDrawer-BqK_qiHX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js → TeamPage-u5_i0Rgh.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js.map → TeamPage-u5_i0Rgh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js → TerminalDashboardPage-rUtC9e40.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js.map → TerminalDashboardPage-rUtC9e40.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js → archive-C3u8YNQF.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js.map → archive-C3u8YNQF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js → archive-restore-DfQ998g5.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js.map → archive-restore-DfQ998g5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js → arrow-right-BshJM9Po.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js.map → arrow-right-BshJM9Po.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js → bookmark-plus-D03qJyOZ.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js.map → bookmark-plus-D03qJyOZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js → bot-CyzWuwq0.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js.map → bot-CyzWuwq0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js → braces-BPgtyjsG.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js.map → braces-BPgtyjsG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js → circle-stop-Dix1AOmw.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js.map → circle-stop-Dix1AOmw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js → cpu-CCQ4Q0Zh.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js.map → cpu-CCQ4Q0Zh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js → ellipsis-vertical-BpTysg-Y.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js.map → ellipsis-vertical-BpTysg-Y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js → eye-DGY1rAZs.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js.map → eye-DGY1rAZs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js → eye-off-D8t3JfWG.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js.map → eye-off-D8t3JfWG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js → file-json-BAdJb0n8.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js.map → file-json-BAdJb0n8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js → file-text-DrJFiOUB.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js.map → file-text-DrJFiOUB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js → filter-CKqzYbz7.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js.map → filter-CKqzYbz7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js → folder-CV8511y9.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js.map → folder-CV8511y9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js → gauge-XKvmu_uU.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js.map → gauge-XKvmu_uU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js → globe-C56cDUzX.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js.map → globe-C56cDUzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js → grid-3x3-Bya-suFW.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js.map → grid-3x3-Bya-suFW.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js → hard-drive-CmuTZpsB.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js.map → hard-drive-CmuTZpsB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Bd1RD285.js → hash-CRPT_tJQ.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Bd1RD285.js.map → hash-CRPT_tJQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-eyyCQA6b.js → history-C1pJZQCL.js} +2 -2
- package/ccw/frontend/dist/assets/{history-eyyCQA6b.js.map → history-C1pJZQCL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js → index-B6TpijCe.js} +2 -2
- package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js.map → index-B6TpijCe.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-b2C0iFd1.js → index-Bcq-7r6F.js} +2 -2
- package/ccw/frontend/dist/assets/{index-b2C0iFd1.js.map → index-Bcq-7r6F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js → index-CI8-rBff.js} +2 -2
- package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js.map → index-CI8-rBff.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CY6Lueph.js → index-Dmt9OiEf.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CY6Lueph.js.map → index-Dmt9OiEf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-DfeBbFXo.js → index-anSMmEF8.js} +2 -2
- package/ccw/frontend/dist/assets/{index-DfeBbFXo.js.map → index-anSMmEF8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B6I7GQC5.js → index-dWT2M6Ef.js} +4 -4
- package/ccw/frontend/dist/assets/{index-B6I7GQC5.js.map → index-dWT2M6Ef.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js → layout-grid-TSO0BFQE.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js.map → layout-grid-TSO0BFQE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js → lightbulb-Caj6fIQD.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js.map → lightbulb-Caj6fIQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js → link-2-DE9lMxa-.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js.map → link-2-DE9lMxa-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-CL4JmoHb.js → link-BZtPgLW0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-CL4JmoHb.js.map → link-BZtPgLW0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-CDmYFcio.js → list-DubWyY-U.js} +2 -2
- package/ccw/frontend/dist/assets/{list-CDmYFcio.js.map → list-DubWyY-U.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js → map-pin-DwN_48AF.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js.map → map-pin-DwN_48AF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js → messages-square-bjxvaiM9.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js.map → messages-square-bjxvaiM9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js → minimize-2-CGfBKD_V.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js.map → minimize-2-CGfBKD_V.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js → package-nzWY6ilt.js} +2 -2
- package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js.map → package-nzWY6ilt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js → plug-CiLce49C.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js.map → plug-CiLce49C.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-DmIojFl-.js → power-CFLmB-U9.js} +2 -2
- package/ccw/frontend/dist/assets/{power-DmIojFl-.js.map → power-CFLmB-U9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-BFa03OnG.js → save-DuO6OF0C.js} +2 -2
- package/ccw/frontend/dist/assets/{save-BFa03OnG.js.map → save-DuO6OF0C.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Vet3sN4J.js → send-CZk9p0mM.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Vet3sN4J.js.map → send-CZk9p0mM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js → square-check-big-BY_1YQQg.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js.map → square-check-big-BY_1YQQg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js → square-pen-CnZgm6g-.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js.map → square-pen-CnZgm6g-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-BCQHcnSe.js → star-Cn1F0qy7.js} +2 -2
- package/ccw/frontend/dist/assets/{star-BCQHcnSe.js.map → star-Cn1F0qy7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-CJsrp48L.js → style-Dxs1iXCV.js} +2 -2
- package/ccw/frontend/dist/assets/{style-CJsrp48L.js.map → style-Dxs1iXCV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CBzCJCB1.js → target-Bz1fLRKH.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CBzCJCB1.js.map → target-Bz1fLRKH.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js → test-tube-C6qCYlDr.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js.map → test-tube-C6qCYlDr.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js → upload-C71kd4Qs.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js.map → upload-C71kd4Qs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js → useApiSettings-CqP2BAJ7.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js.map → useApiSettings-CqP2BAJ7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js → useCli-PCoPoVeM.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js.map → useCli-PCoPoVeM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js → useCommands-3OfPQPw4.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js.map → useCommands-3OfPQPw4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js → useDebounce-bXiFhQx9.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js.map → useDebounce-bXiFhQx9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js → useFileExplorer-DEyUm46_.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js.map → useFileExplorer-DEyUm46_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js → useLocale-sXTrdxcJ.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js.map → useLocale-sXTrdxcJ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js → useSkills-D0W0kXYm.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js.map → useSkills-D0W0kXYm.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js → useSystemSettings-DZ-8lZsG.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js.map → useSystemSettings-DZ-8lZsG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js → wand-sparkles-83GmAYuw.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js.map → wand-sparkles-83GmAYuw.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/.claude/skills/team-arch-opt/role-specs/analyzer.md +0 -80
- package/.claude/skills/team-arch-opt/role-specs/designer.md +0 -118
- package/.claude/skills/team-arch-opt/role-specs/refactorer.md +0 -106
- package/.claude/skills/team-arch-opt/role-specs/reviewer.md +0 -116
- package/.claude/skills/team-arch-opt/role-specs/validator.md +0 -117
- package/.claude/skills/team-brainstorm/role-specs/challenger.md +0 -63
- package/.claude/skills/team-brainstorm/role-specs/evaluator.md +0 -58
- package/.claude/skills/team-brainstorm/role-specs/ideator.md +0 -71
- package/.claude/skills/team-brainstorm/role-specs/synthesizer.md +0 -59
- package/.claude/skills/team-frontend/role-specs/analyst.md +0 -91
- package/.claude/skills/team-frontend/role-specs/architect.md +0 -85
- package/.claude/skills/team-frontend/role-specs/developer.md +0 -92
- package/.claude/skills/team-frontend/role-specs/qa.md +0 -78
- package/.claude/skills/team-issue/role-specs/explorer.md +0 -95
- package/.claude/skills/team-issue/role-specs/implementer.md +0 -89
- package/.claude/skills/team-issue/role-specs/integrator.md +0 -86
- package/.claude/skills/team-issue/role-specs/planner.md +0 -83
- package/.claude/skills/team-issue/role-specs/reviewer.md +0 -89
- package/.claude/skills/team-iterdev/role-specs/architect.md +0 -64
- package/.claude/skills/team-iterdev/role-specs/developer.md +0 -73
- package/.claude/skills/team-iterdev/role-specs/reviewer.md +0 -65
- package/.claude/skills/team-iterdev/role-specs/tester.md +0 -87
- package/.claude/skills/team-perf-opt/role-specs/benchmarker.md +0 -110
- package/.claude/skills/team-perf-opt/role-specs/optimizer.md +0 -102
- package/.claude/skills/team-perf-opt/role-specs/profiler.md +0 -73
- package/.claude/skills/team-perf-opt/role-specs/reviewer.md +0 -91
- package/.claude/skills/team-perf-opt/role-specs/strategist.md +0 -114
- package/.claude/skills/team-planex/role-specs/executor.md +0 -90
- package/.claude/skills/team-planex/role-specs/planner.md +0 -110
- package/.claude/skills/team-quality-assurance/role-specs/analyst.md +0 -79
- package/.claude/skills/team-quality-assurance/role-specs/executor.md +0 -64
- package/.claude/skills/team-quality-assurance/role-specs/generator.md +0 -67
- package/.claude/skills/team-quality-assurance/role-specs/scout.md +0 -66
- package/.claude/skills/team-quality-assurance/role-specs/strategist.md +0 -70
- package/.claude/skills/team-review/role-specs/fixer.md +0 -75
- package/.claude/skills/team-review/role-specs/reviewer.md +0 -66
- package/.claude/skills/team-review/role-specs/scanner.md +0 -70
- package/.claude/skills/team-roadmap-dev/role-specs/executor.md +0 -71
- package/.claude/skills/team-roadmap-dev/role-specs/planner.md +0 -77
- package/.claude/skills/team-roadmap-dev/role-specs/verifier.md +0 -73
- package/.claude/skills/team-tech-debt/role-specs/assessor.md +0 -70
- package/.claude/skills/team-tech-debt/role-specs/executor.md +0 -80
- package/.claude/skills/team-tech-debt/role-specs/planner.md +0 -71
- package/.claude/skills/team-tech-debt/role-specs/scanner.md +0 -85
- package/.claude/skills/team-tech-debt/role-specs/validator.md +0 -83
- package/.claude/skills/team-testing/role-specs/analyst.md +0 -94
- package/.claude/skills/team-testing/role-specs/executor.md +0 -97
- package/.claude/skills/team-testing/role-specs/generator.md +0 -96
- package/.claude/skills/team-testing/role-specs/strategist.md +0 -82
- package/.claude/skills/team-uidesign/role-specs/designer.md +0 -72
- package/.claude/skills/team-uidesign/role-specs/implementer.md +0 -74
- package/.claude/skills/team-uidesign/role-specs/researcher.md +0 -84
- package/.claude/skills/team-uidesign/role-specs/reviewer.md +0 -70
- package/.claude/skills/team-ux-improve/role-specs/designer.md +0 -191
- package/.claude/skills/team-ux-improve/role-specs/diagnoser.md +0 -110
- package/.claude/skills/team-ux-improve/role-specs/explorer.md +0 -109
- package/.claude/skills/team-ux-improve/role-specs/implementer.md +0 -164
- package/.claude/skills/team-ux-improve/role-specs/scanner.md +0 -117
- package/.claude/skills/team-ux-improve/role-specs/tester.md +0 -163
- package/.codex/skills/analyze-with-file/EXECUTE.md +0 -716
- package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js +0 -2
- package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{O as Ae,aF as ae,a9 as xe,aa as pe,ab as fe,aH as te,cU as qs,cV as As,cW as dt,cX as mt,cY as xt,cZ as pt,c_ as Je,c$ as Ze,d0 as Ks,d1 as ut,d2 as ht,u as G,r as h,j as e,c as $,al as Ve,d3 as de,d4 as me,x as ts,y as as,z as ns,A as rs,e as D,aq as He,ar as $e,as as _e,at as Re,au as he,I as X,aP as gt,B as Q,G as cs,T as Me,a7 as Qe,d5 as zs,C as Y,d6 as De,cy as Qs,ap as os,S as we,aw as Ie,ao as Is,bq as Ls,aU as Le,an as Ke,d7 as ft,d8 as Vs,d9 as jt,da as vt,db as Ye,dc as Xe,ck as Hs,b as qe,am as ls,af as yt,dd as Nt,de as bt,df as ks,dg as wt,dh as Ct,U as $s,bu as Ts,N as Te,di as St,a0 as kt,Z as Tt,M as _s,K as Mt,k as Pt,m as Ft,bf as Ms,J as Et,dj as Rs,l as Dt,b5 as Ot,R as es,dk as qt,dl as At,dm as Kt,dn as zt,dp as Qt}from"./index-
|
|
1
|
+
import{O as Ae,aF as ae,a9 as xe,aa as pe,ab as fe,aH as te,cU as qs,cV as As,cW as dt,cX as mt,cY as xt,cZ as pt,c_ as Je,c$ as Ze,d0 as Ks,d1 as ut,d2 as ht,u as G,r as h,j as e,c as $,al as Ve,d3 as de,d4 as me,x as ts,y as as,z as ns,A as rs,e as D,aq as He,ar as $e,as as _e,at as Re,au as he,I as X,aP as gt,B as Q,G as cs,T as Me,a7 as Qe,d5 as zs,C as Y,d6 as De,cy as Qs,ap as os,S as we,aw as Ie,ao as Is,bq as Ls,aU as Le,an as Ke,d7 as ft,d8 as Vs,d9 as jt,da as vt,db as Ye,dc as Xe,ck as Hs,b as qe,am as ls,af as yt,dd as Nt,de as bt,df as ks,dg as wt,dh as Ct,U as $s,bu as Ts,N as Te,di as St,a0 as kt,Z as Tt,M as _s,K as Mt,k as Pt,m as Ft,bf as Ms,J as Et,dj as Rs,l as Dt,b5 as Ot,R as es,dk as qt,dl as At,dm as Kt,dn as zt,dp as Qt}from"./index-dWT2M6Ef.js";import{A as is,a as ds,b as ms,c as xs,d as ps,e as us,f as hs,g as gs,h as It}from"./AlertDialog-BW9jiZ-p.js";import{G as je}from"./globe-C56cDUzX.js";import{E as fs}from"./eye-off-D8t3JfWG.js";import{E as js}from"./eye-DGY1rAZs.js";import{L as Ps,C as Lt}from"./CliModeToggle-Dq3nL4fF.js";import{L as Ws}from"./link-BZtPgLW0.js";import{P as ke,a as ss}from"./power-CFLmB-U9.js";import{F as Vt}from"./FloatingFileBrowser-DROn1xZ5.js";import{F as Ne}from"./folder-CV8511y9.js";import{H as Ht}from"./hard-drive-CmuTZpsB.js";import{S as $t}from"./save-DuO6OF0C.js";import{M as _t}from"./messages-square-bjxvaiM9.js";import{F as Rt}from"./file-text-DrJFiOUB.js";import{F as Wt}from"./filter-CKqzYbz7.js";import{A as Ut}from"./arrow-right-BshJM9Po.js";import{f as Bt}from"./formatDistanceToNow-DXTjigy3.js";import{T as Gt}from"./TabsNavigation-qqt70VYL.js";import{B as Jt}from"./bookmark-plus-D03qJyOZ.js";import{S as Zt}from"./square-pen-CnZgm6g-.js";import"./cpu-CCQ4Q0Zh.js";import"./FloatingPanel-CmL_yhDv.js";import"./useFileExplorer-DEyUm46_.js";/**
|
|
2
2
|
* @license lucide-react v0.460.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -42,4 +42,4 @@ import{O as Ae,aF as ae,a9 as xe,aa as pe,ab as fe,aH as te,cU as qs,cV as As,cW
|
|
|
42
42
|
`)),[T,P]=h.useState({});h.useEffect(()=>{s&&(d(l||""),m(""),y(""),b(c||""),k((n||[]).join(", ")),M(Object.entries(w||{}).map(([x,E])=>`${x}=${E}`).join(`
|
|
43
43
|
`)),P({}))},[s,l,c,n,w]);const r=()=>{const x={};if(f.trim()||(x.name=u({id:"mcp.templates.saveDialog.validation.nameRequired"})),p.trim()||(x.command=u({id:"mcp.dialog.validation.commandRequired"})),Object.keys(x).length>0){P(x);return}const E=v.split(",").map(H=>H.trim()).filter(H=>H.length>0),q={};for(const H of j.split(`
|
|
44
44
|
`)){const _=H.trim();if(_&&_.includes("=")){const[W,...J]=_.split("=");W&&(q[W.trim()]=J.join("=").trim())}}t(f.trim(),S.trim(),g.trim(),{command:p.trim(),args:E,env:q})};return e.jsx(ts,{open:s,onOpenChange:a,children:e.jsxs(as,{className:"max-w-md max-h-[85vh] overflow-y-auto",children:[e.jsx(ns,{children:e.jsx(rs,{children:u({id:"mcp.templates.saveDialog.title"})})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{className:"text-sm font-medium text-foreground",children:[u({id:"mcp.templates.saveDialog.name"}),e.jsx("span",{className:"text-destructive ml-1",children:"*"})]}),e.jsx(X,{value:f,onChange:x=>{d(x.target.value),T.name&&P(E=>({...E,name:void 0}))},placeholder:u({id:"mcp.templates.saveDialog.namePlaceholder"}),error:!!T.name}),T.name&&e.jsx("p",{className:"text-sm text-destructive",children:T.name})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{className:"text-sm font-medium text-foreground",children:[u({id:"mcp.dialog.form.command"}),e.jsx("span",{className:"text-destructive ml-1",children:"*"})]}),e.jsx(X,{value:p,onChange:x=>{b(x.target.value),T.command&&P(E=>({...E,command:void 0}))},placeholder:u({id:"mcp.dialog.form.commandPlaceholder"}),error:!!T.command}),T.command&&e.jsx("p",{className:"text-sm text-destructive",children:T.command})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:u({id:"mcp.dialog.form.args"})}),e.jsx(X,{value:v,onChange:x=>k(x.target.value),placeholder:u({id:"mcp.dialog.form.argsPlaceholder"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:u({id:"mcp.dialog.form.argsHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:u({id:"mcp.dialog.form.env"})}),e.jsx("textarea",{value:j,onChange:x=>M(x.target.value),placeholder:u({id:"mcp.dialog.form.envPlaceholder"}),className:"flex min-h-[60px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:u({id:"mcp.templates.saveDialog.category"})}),e.jsxs(He,{value:S,onValueChange:m,children:[e.jsx($e,{className:"w-full",children:e.jsx(_e,{placeholder:u({id:"mcp.templates.saveDialog.categoryPlaceholder"})})}),e.jsxs(Re,{children:[e.jsx(he,{value:"stdio",children:"STDIO"}),e.jsx(he,{value:"sse",children:"SSE"}),e.jsx(he,{value:"language",children:"Language"}),e.jsx(he,{value:"official",children:"Official"}),e.jsx(he,{value:"custom",children:"Custom"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:u({id:"mcp.templates.saveDialog.description"})}),e.jsx("textarea",{value:g,onChange:x=>y(x.target.value),placeholder:u({id:"mcp.templates.saveDialog.descriptionPlaceholder"}),className:"flex min-h-[60px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"})]})]}),e.jsxs(cs,{children:[e.jsx(D,{variant:"outline",onClick:a,children:u({id:"mcp.templates.saveDialog.cancel"})}),e.jsx(D,{onClick:r,children:u({id:"mcp.templates.saveDialog.save"})})]})]})})}function Na({onInstallTemplate:s,onSaveAsTemplate:a}){const{formatMessage:t}=G(),[l,c]=h.useState(""),[n,w]=h.useState(""),[u,f]=h.useState("all"),[d,S]=h.useState(!1),[m,g]=h.useState(!1),[y,p]=h.useState(null),{data:b=[],isLoading:v}=fe({queryKey:ge.categories(),queryFn:Nt,staleTime:600*1e3}),k=la(),j=ia();h.useEffect(()=>{const q=setTimeout(()=>{w(l)},va);return()=>clearTimeout(q)},[l]);const{data:M=[],isLoading:T}=fe({queryKey:ge.list(u==="all"?void 0:u),queryFn:async()=>{if(n.trim())return bt(n.trim());if(u==="all"){const q=[];for(const H of b){const _=await ks(H);q.push(..._)}return q}else return ks(u)},staleTime:300*1e3,enabled:!v}),P=h.useCallback(q=>{s==null||s(q)},[s]),r=h.useCallback(q=>{p(q),g(!0)},[]),x=h.useCallback(async()=>{if(!y)return;(await k.deleteTemplate(y)).success&&(g(!1),p(null))},[y,k]),E=h.useCallback((q,H,_,W)=>{a==null||a(q,H,_,W),S(!1)},[a]);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[e.jsxs("div",{className:"relative flex-1 max-w-md",children:[e.jsx(qe,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(X,{value:l,onChange:q=>c(q.target.value),placeholder:t({id:"mcp.templates.searchPlaceholder"}),className:"pl-9"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Wt,{className:"w-4 h-4 text-muted-foreground"}),e.jsxs(He,{value:u,onValueChange:f,children:[e.jsx($e,{className:"w-[150px]",children:e.jsx(_e,{})}),e.jsxs(Re,{children:[e.jsx(he,{value:"all",children:t({id:"mcp.templates.filter.allCategories"})}),b.map(q=>e.jsx(he,{value:q,children:q},q))]})]})]})]}),e.jsxs(D,{variant:"outline",size:"sm",onClick:()=>S(!0),children:[e.jsx(Qe,{className:"w-4 h-4 mr-1"}),t({id:"mcp.templates.actions.saveAsTemplate"})]})]}),T?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:t({id:"mcp.templates.loading"})})}):M.length===0?e.jsxs(Y,{className:"p-12 text-center",children:[e.jsx(ls,{className:"w-12 h-12 mx-auto text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-medium text-foreground mb-2",children:t({id:"mcp.templates.empty.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:t({id:"mcp.templates.empty.message"})}),e.jsxs(D,{onClick:()=>S(!0),children:[e.jsx(Qe,{className:"w-4 h-4 mr-1"}),t({id:"mcp.templates.empty.createFirst"})]})]}):e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-3",children:M.map(q=>e.jsx(ya,{template:q,onInstall:P,onDelete:r,isInstalling:j.isInstalling,isDeleting:k.isDeleting},q.name))}),e.jsx(Ys,{open:d,onClose:()=>S(!1),onSave:E}),e.jsx(is,{open:m,onOpenChange:g,children:e.jsxs(ds,{children:[e.jsxs(ms,{children:[e.jsx(xs,{children:t({id:"mcp.templates.deleteDialog.title"})}),e.jsx(ps,{children:t({id:"mcp.templates.deleteDialog.message"},{name:y})})]}),e.jsxs(us,{children:[e.jsx(hs,{children:t({id:"mcp.templates.deleteDialog.cancel"})}),e.jsx(gs,{onClick:x,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:k.isDeleting?t({id:"mcp.templates.deleteDialog.deleting"}):t({id:"mcp.templates.deleteDialog.delete"})})]})]})})]})}const ba={"search-code":qe,chrome:je,"globe-2":$s,"code-2":we};function wa({open:s,onClose:a,mcpDefinition:t,onInstallComplete:l}){const{formatMessage:c}=G(),n=ae(),{success:w,error:u}=Ve(),f=xe(pe),[d,S]=h.useState({}),[m,g]=h.useState("global"),y=()=>{if(!t)return;const r={};for(const x of t.fields)x.default!==void 0?r[x.key]=x.default:x.type==="multi-select"?r[x.key]=[]:r[x.key]="";S(r)},p=r=>{r&&t?y():(S({}),a())},b=te({mutationFn:async()=>{if(!t)throw new Error("No MCP definition");const r=t.buildConfig(d);if(m==="global")return wt(t.id,r);if(!f)throw new Error("Project path is required to install to project scope");return Ct(t.id,r,f)},onSuccess:r=>{r.success?(n.invalidateQueries({queryKey:B.all}),w(c({id:"mcp.wizard.installSuccess"}),c({id:t.nameKey})),p(!1),l==null||l()):u(c({id:"mcp.wizard.installError"}),r.error||"Unknown error")},onError:r=>{u(c({id:"mcp.wizard.installError"}),r.message)}}),v=(r,x)=>{S(E=>({...E,[r]:x}))},k=(r,x)=>{const E=d[r]||[],q=E.includes(x)?E.filter(H=>H!==x):[...E,x];v(r,q)},j=()=>{if(!t)return!1;for(const r of t.fields)if(r.required){const x=d[r.key];if(r.type==="multi-select"){if(!x||x.length===0)return!1}else if(!x||x.trim()==="")return!1}return!0},M=()=>{if(!j()){u(c({id:"mcp.wizard.validation"}),c({id:"mcp.wizard.requiredFields"}));return}b.mutate()};if(!t)return null;const T=t.fields.length>0,P=ba[t.icon]||we;return e.jsx(ts,{open:s,onOpenChange:p,children:e.jsxs(as,{className:"max-w-lg max-h-[90vh] overflow-y-auto",children:[e.jsx(ns,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center",children:e.jsx(P,{className:"w-5 h-5 text-primary"})}),e.jsxs("div",{children:[e.jsxs(rs,{children:[c({id:"mcp.wizard.install"})," ",c({id:t.nameKey})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c({id:t.descKey})})]})]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[T&&e.jsx("div",{className:"space-y-3",children:t.fields.map(r=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(Ts,{className:"flex items-center gap-1.5 text-sm font-medium",children:[c({id:r.labelKey}),r.required&&e.jsx("span",{className:"text-destructive",children:"*"})]}),r.descKey&&e.jsx("p",{className:"text-xs text-muted-foreground",children:c({id:r.descKey})}),(r.type==="text"||r.type==="password")&&e.jsx(X,{type:r.type,value:d[r.key]||"",onChange:x=>v(r.key,x.target.value),placeholder:r.placeholder,className:"font-mono text-sm"}),r.type==="multi-select"&&r.options&&e.jsx("div",{className:"space-y-2 p-2 bg-muted/30 border border-border rounded-lg max-h-48 overflow-y-auto",children:r.options.map(x=>{const E=(d[r.key]||[]).includes(x.value);return e.jsxs("div",{className:$("flex items-start gap-2 p-2 rounded transition-colors cursor-pointer",E?"bg-primary/10":"hover:bg-muted/50"),onClick:()=>k(r.key,x.value),children:[e.jsx("input",{type:"checkbox",checked:E,onChange:()=>{},className:"mt-0.5 w-4 h-4"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"text-sm font-medium text-foreground",children:x.label}),x.desc&&e.jsx("div",{className:"text-xs text-muted-foreground",children:x.desc})]})]},x.value)})})]},r.key))}),e.jsxs("div",{className:"space-y-2 pt-3 border-t border-border",children:[e.jsx(Ts,{className:"text-sm font-medium",children:c({id:"mcp.wizard.scope"})}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(D,{variant:m==="global"?"default":"outline",size:"sm",onClick:()=>g("global"),className:"flex-1",children:c({id:"mcp.wizard.scope.global"})}),e.jsx(D,{variant:m==="project"?"default":"outline",size:"sm",onClick:()=>g("project"),className:"flex-1",children:c({id:"mcp.wizard.scope.project"})})]})]}),!T&&e.jsx("div",{className:"p-3 bg-success/10 border border-success/20 rounded-lg text-sm text-success",children:c({id:"mcp.noConfigNeeded"})})]}),e.jsxs(cs,{children:[e.jsx(D,{variant:"outline",onClick:()=>p(!1),disabled:b.isPending,children:c({id:"mcp.dialog.actions.cancel"})}),e.jsx(D,{onClick:M,disabled:b.isPending,children:b.isPending?e.jsxs(e.Fragment,{children:[e.jsx(Te,{className:"w-4 h-4 mr-1 animate-spin"}),c({id:"mcp.wizard.installing"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ke,{className:"w-4 h-4 mr-1"}),c({id:"mcp.wizard.install"})]})})]})]})})}var Os;const Ca=typeof navigator<"u"&&((Os=navigator.platform)==null?void 0:Os.toLowerCase().includes("win"));function Ge(s,a=[],t={}){const{env:l,type:c}=t,u=Ca&&["npx","npm","node","python","python3","pip","pip3","pnpm","yarn","bun"].includes(s.toLowerCase())?{command:"cmd",args:["/c",s,...a]}:{command:s,args:a};return c&&(u.type=c),l&&Object.keys(l).length>0&&(u.env=l),u}const Sa=[{id:"ace-tool",nameKey:"mcp.ace-tool.name",descKey:"mcp.ace-tool.desc",icon:"search-code",category:"search",fields:[{key:"baseUrl",labelKey:"mcp.ace-tool.field.baseUrl",type:"text",default:"https://acemcp.heroman.wtf/relay/",placeholder:"https://acemcp.heroman.wtf/relay/",required:!0,descKey:"mcp.ace-tool.field.baseUrl.desc"},{key:"token",labelKey:"mcp.ace-tool.field.token",type:"password",default:"",placeholder:"ace_xxxxxxxxxxxxxxxx",required:!0,descKey:"mcp.ace-tool.field.token.desc"}],buildConfig:s=>Ge("npx",["ace-tool","--base-url",s.baseUrl||"https://acemcp.heroman.wtf/relay/","--token",s.token])},{id:"chrome-devtools",nameKey:"mcp.chrome-devtools.name",descKey:"mcp.chrome-devtools.desc",icon:"chrome",category:"browser",fields:[],buildConfig:()=>Ge("npx",["chrome-devtools-mcp@latest"],{type:"stdio"})},{id:"exa",nameKey:"mcp.exa.name",descKey:"mcp.exa.desc",icon:"globe-2",category:"search",fields:[{key:"apiKey",labelKey:"mcp.exa.field.apiKey",type:"password",default:"",placeholder:"your-exa-api-key",required:!1,descKey:"mcp.exa.field.apiKey.desc"}],buildConfig:s=>{const a="https://mcp.exa.ai/mcp",t=s.apiKey?`${a}?exaApiKey=${s.apiKey}`:a;return Ge("npx",["-y","mcp-remote",t])}}],ka={"search-code":qe,chrome:je,"globe-2":$s,"code-2":kt};function Ta({definition:s,isInstalled:a,onInstall:t}){const{formatMessage:l}=G(),c=ka[s.icon]||we,n=s.fields.length>0;return e.jsx(Y,{className:"p-4 hover:shadow-md transition-shadow",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:$("p-2.5 rounded-lg",a?"bg-primary/20":"bg-muted"),children:e.jsx(c,{className:$("w-5 h-5",a?"text-primary":"text-muted-foreground")})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground truncate",children:l({id:s.nameKey})}),a&&e.jsx(Q,{variant:"default",className:"text-xs",children:l({id:"mcp.recommended.actions.installed"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground line-clamp-2 mb-3",children:l({id:s.descKey})}),e.jsxs("div",{className:"flex items-center justify-between",children:[n?e.jsxs("span",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[e.jsx(ea,{className:"w-3 h-3"}),s.fields.length," ",l({id:"mcp.configRequired"})]}):e.jsxs("span",{className:"text-xs text-green-600 dark:text-green-400 flex items-center gap-1",children:[e.jsx(Tt,{className:"w-3 h-3"}),l({id:"mcp.noConfigNeeded"})]}),e.jsx(D,{variant:a?"outline":"default",size:"sm",onClick:()=>t(s),children:a?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"w-3.5 h-3.5 mr-1"}),l({id:"mcp.reconfigure"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ke,{className:"w-3.5 h-3.5 mr-1"}),l({id:"mcp.recommended.actions.install"})]})})]})]})]})})}function Ma({onInstallComplete:s}){const{formatMessage:a}=G(),[t,l]=h.useState(!1),[c,n]=h.useState(null),[w,u]=h.useState(new Set),f=async()=>{var g;try{const y=await St(),p=new Set,b=y.globalServers||{},v=y.userServers||{};for(const j of Object.keys(b))p.add(j);for(const j of Object.keys(v))p.add(j);const k=y.projects||{};for(const j of Object.values(k)){const M=j.mcpServers||{};for(const T of Object.keys(M))p.add(T)}if((g=y.codex)!=null&&g.servers)for(const j of Object.keys(y.codex.servers))p.add(j);u(p)}catch{}};h.useEffect(()=>{f()},[]);const d=g=>{n(g),l(!0)},S=()=>{l(!1),n(null)},m=()=>{f(),s==null||s()};return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-foreground",children:a({id:"mcp.recommended.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a({id:"mcp.recommended.description"})})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:Sa.map(g=>e.jsx(Ta,{definition:g,isInstalled:w.has(g.id),onInstall:d},g.id))})]}),e.jsx(wa,{open:t,onClose:S,mcpDefinition:c,onInstallComplete:m})]})}const Pa=[{name:"npm",installUrl:"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"},{name:"node",installUrl:"https://nodejs.org/"},{name:"python",installUrl:"https://www.python.org/downloads/"},{name:"npx",installUrl:"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"}];function Fa(s){return Pa.some(a=>a.name===s)}async function Ea(s){const a=await fetch("/api/mcp/detect-commands",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:s})});if(!a.ok)throw new Error("Failed to detect commands");return a.json()}async function Da(s){const a=await fetch("/api/mcp/apply-windows-fix",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:s})});if(!a.ok)throw new Error("Failed to apply Windows fix");return a.json()}function Oa({commands:s}){const{formatMessage:a}=G();return e.jsx("div",{className:"space-y-2 mt-3",children:s.map(t=>e.jsxs("div",{className:$("flex items-center gap-2 text-sm p-2 rounded-md",t.available?"bg-success/10":"bg-destructive/10"),children:[t.available?e.jsx(_s,{className:"w-4 h-4 text-success"}):e.jsx(Mt,{className:"w-4 h-4 text-destructive"}),e.jsx("code",{className:"font-mono flex-1",children:t.command}),!t.available&&t.installUrl&&e.jsxs("a",{href:t.installUrl,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary hover:underline flex items-center gap-1",children:[e.jsx(Ke,{className:"w-3 h-3"}),a({id:"mcp.windows.install"})]})]},t.command))})}function qa({projectPath:s,onComplete:a}){const{formatMessage:t}=G(),l=ae(),[c,n]=h.useState(null),[w,u]=h.useState(!1),[f,d]=h.useState(!1),S=typeof window<"u"&&window.navigator.platform.toLowerCase().includes("win"),m=te({mutationFn:()=>Da(s),onSuccess:()=>{l.invalidateQueries({queryKey:["mcpServers"]}),a&&c&&a({...c,canAutoFix:!1})}});if(h.useEffect(()=>{if(!S||f)return;(async()=>{u(!0);try{const b=await Ea(s),v=b.filter(M=>!M.available).map(M=>M.command),k=v.length>0&&v.every(Fa),j={isWindows:!0,missingCommands:v,commands:b,canAutoFix:k};n(j),a&&a(j)}catch(b){console.error("Failed to check Windows compatibility:",b)}finally{u(!1)}})()},[S,f,s,a]),!S||f||w&&!c||c&&c.missingCommands.length===0)return null;const g=async()=>{m.mutate()},y=()=>{d(!0)};return e.jsx("div",{className:"border border-warning/50 bg-warning/5 rounded-lg p-4 mb-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ie,{className:"w-5 h-5 text-warning flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-semibold text-foreground",children:t({id:"mcp.windows.title"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:t({id:"mcp.windows.description"})})]}),e.jsx(D,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:y,children:"×"})]}),c&&e.jsxs(e.Fragment,{children:[c.missingCommands.length>0&&e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(Q,{variant:"warning",className:"text-xs",children:t({id:"mcp.windows.missingCount"},{count:c.missingCommands.length})})}),e.jsx(Oa,{commands:c.commands}),c.canAutoFix&&e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t border-warning/20",children:[e.jsx(D,{variant:"outline",size:"sm",onClick:g,disabled:m.isPending,className:"text-xs",children:m.isPending?e.jsxs(e.Fragment,{children:[e.jsx(Te,{className:"w-3 h-3 mr-1 animate-spin"}),t({id:"mcp.windows.fixing"})]}):e.jsxs(e.Fragment,{children:[e.jsx(_s,{className:"w-3 h-3 mr-1"}),t({id:"mcp.windows.autoFix"})]})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:t({id:"mcp.windows.autoFixHint"})})]})]}),w&&e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Te,{className:"w-4 h-4 animate-spin"}),t({id:"mcp.windows.checking"})]})]})]})})}function Aa({onSuccess:s,className:a}){const{formatMessage:t}=G(),l=xe(pe),{servers:c}=Us(),[n,w]=h.useState(new Set),[u,f]=h.useState([]),[d,S]=h.useState(new Set),[m,g]=h.useState(!1),[y,p]=h.useState(null),[b,v]=h.useState(!1),[k,j]=h.useState({type:null,copied:0,failed:0});h.useEffect(()=>{(async()=>{g(!0),p(null);try{const L=await Rs();f((L.servers??[]).map(A=>({name:A.name,displayText:de(A)?A.url:me(A)?A.command:"",enabled:A.enabled,selected:!1})))}catch(L){console.error("Failed to load Codex MCP servers:",L),p(t({id:"mcp.sync.codexLoadError"})),f([])}finally{g(!1)}})()},[t]);const M=N=>{w(L=>{const A=new Set(L);return A.has(N)?A.delete(N):A.add(N),A})},T=()=>{w(new Set(c.map(N=>N.name)))},P=()=>{w(new Set)},r=N=>{S(L=>{const A=new Set(L);return A.has(N)?A.delete(N):A.add(N),A}),f(L=>L.map(A=>A.name===N?{...A,selected:!A.selected}:A))},x=()=>{const N=u.map(L=>L.name);S(new Set(N)),f(L=>L.map(A=>({...A,selected:!0})))},E=()=>{S(new Set),f(N=>N.map(L=>({...L,selected:!1})))},q=async()=>{if(n.size!==0){v(!0),j({type:null,copied:0,failed:0});try{const N=await Je({source:"claude",target:"codex",serverNames:Array.from(n),projectPath:l??void 0});if(N.success){const L=N.failed.length,A=N.copied.length;j({type:L>0?"partial":"success",copied:A,failed:L}),s==null||s(A,"to-codex"),w(new Set),setTimeout(()=>{j({type:null,copied:0,failed:0})},3e3)}}catch(N){console.error("Failed to copy to Codex:",N),j({type:"partial",copied:0,failed:n.size})}finally{v(!1)}}},H=async()=>{if(!(d.size===0||!l)){v(!0),j({type:null,copied:0,failed:0});try{const N=await Je({source:"codex",target:"claude",serverNames:Array.from(d),projectPath:l});if(N.success){const L=N.failed.length,A=N.copied.length;j({type:L>0?"partial":"success",copied:A,failed:L}),s==null||s(A,"from-codex"),S(new Set),f(ce=>ce.map(oe=>({...oe,selected:!1}))),setTimeout(()=>{j({type:null,copied:0,failed:0})},3e3)}}catch(N){console.error("Failed to copy from Codex:",N),j({type:"partial",copied:0,failed:d.size})}finally{v(!1)}}},_=c.length,W=n.size,J=u.length,U=d.size;return e.jsxs("div",{className:$("space-y-4",a),children:[e.jsxs("div",{className:"text-center",children:[e.jsx("h3",{className:"text-base font-semibold text-foreground",children:t({id:"mcp.sync.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"mcp.sync.description"})})]}),k.type!==null&&e.jsxs("div",{className:$("flex items-center gap-2 p-3 rounded-lg border",k.type==="success"?"bg-success/10 border-success/30 text-success":"bg-warning/10 border-warning/30 text-warning"),children:[k.type==="success"?e.jsx(Pt,{className:"w-4 h-4 flex-shrink-0"}):e.jsx(Ft,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{className:"text-sm",children:k.type==="success"?t({id:"mcp.sync.copySuccess"},{count:k.copied}):t({id:"mcp.sync.copyPartial"},{copied:k.copied,failed:k.failed})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"border border-border rounded-lg overflow-hidden",children:[e.jsx("div",{className:"bg-muted/50 px-4 py-3 border-b border-border",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground",children:t({id:"mcp.sync.claudeColumn"})}),e.jsx(Q,{variant:"outline",className:"text-xs",children:t({id:"mcp.sync.selectedCount"},{count:W,total:_})})]})}),e.jsx("div",{className:"p-2 max-h-64 overflow-y-auto",children:_===0?e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:t({id:"mcp.sync.noServers"})}):e.jsx("div",{className:"space-y-1",children:c.map(N=>e.jsxs("div",{className:$("flex items-start gap-2 p-2 rounded cursor-pointer transition-colors",n.has(N.name)?"bg-primary/10":"hover:bg-muted/50"),onClick:()=>M(N.name),children:[e.jsx(Ms,{id:`claude-${N.name}`,checked:n.has(N.name),onChange:()=>M(N.name),className:"w-4 h-4 mt-0.5"}),e.jsxs("label",{htmlFor:`claude-${N.name}`,className:"flex-1 min-w-0 cursor-pointer",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"text-sm font-medium text-foreground truncate",children:N.name}),N.enabled&&e.jsx(Q,{variant:"success",className:"text-xs",children:t({id:"mcp.status.enabled"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground font-mono truncate",children:de(N)?N.url:me(N)?N.command:""})]})]},N.name))})}),_>0&&e.jsxs("div",{className:"px-2 py-2 bg-muted/30 border-t border-border flex gap-1",children:[e.jsx(D,{variant:"ghost",size:"sm",onClick:T,className:"flex-1 text-xs",children:t({id:"mcp.sync.selectAll"})}),e.jsx(D,{variant:"ghost",size:"sm",onClick:P,className:"flex-1 text-xs",disabled:W===0,children:t({id:"mcp.sync.clearAll"})})]})]}),e.jsxs("div",{className:"border border-border rounded-lg overflow-hidden",children:[e.jsx("div",{className:"bg-muted/50 px-4 py-3 border-b border-border",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground",children:t({id:"mcp.sync.codexColumn"})}),e.jsx(Q,{variant:"outline",className:"text-xs",children:t({id:"mcp.sync.selectedCount"},{count:U,total:J})})]})}),e.jsx("div",{className:"p-2 max-h-64 overflow-y-auto",children:m?e.jsx("div",{className:"py-8 flex items-center justify-center",children:e.jsx(Te,{className:"w-5 h-5 animate-spin text-muted-foreground"})}):y?e.jsx("div",{className:"py-8 text-center text-sm text-destructive",children:y}):J===0?e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:t({id:"mcp.sync.noServers"})}):e.jsx("div",{className:"space-y-1",children:u.map(N=>e.jsxs("div",{className:$("flex items-start gap-2 p-2 rounded cursor-pointer transition-colors",N.selected?"bg-primary/10":"hover:bg-muted/50"),onClick:()=>r(N.name),children:[e.jsx(Ms,{id:`codex-${N.name}`,checked:N.selected,onChange:()=>r(N.name),className:"w-4 h-4 mt-0.5"}),e.jsxs("label",{htmlFor:`codex-${N.name}`,className:"flex-1 min-w-0 cursor-pointer",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"text-sm font-medium text-foreground truncate",children:N.name}),N.enabled&&e.jsx(Q,{variant:"success",className:"text-xs",children:t({id:"mcp.status.enabled"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground font-mono truncate",children:N.displayText})]})]},N.name))})}),J>0&&e.jsxs("div",{className:"px-2 py-2 bg-muted/30 border-t border-border flex gap-1",children:[e.jsx(D,{variant:"ghost",size:"sm",onClick:x,className:"flex-1 text-xs",children:t({id:"mcp.sync.selectAll"})}),e.jsx(D,{variant:"ghost",size:"sm",onClick:E,className:"flex-1 text-xs",disabled:U===0,children:t({id:"mcp.sync.clearAll"})})]})]})]}),e.jsxs("div",{className:"flex items-center justify-center gap-3",children:[e.jsx(D,{onClick:q,disabled:W===0||b,variant:"default",className:"min-w-40",children:b?e.jsxs(e.Fragment,{children:[e.jsx(Te,{className:"w-4 h-4 mr-2 animate-spin"}),t({id:"mcp.sync.syncInProgress"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ut,{className:"w-4 h-4 mr-2"}),t({id:"mcp.sync.copyToCodex"},{count:W})]})}),e.jsx(D,{onClick:H,disabled:U===0||b||!l,variant:"default",className:"min-w-40",children:b?e.jsxs(e.Fragment,{children:[e.jsx(Te,{className:"w-4 h-4 mr-2 animate-spin"}),t({id:"mcp.sync.syncInProgress"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Et,{className:"w-4 h-4 mr-2"}),t({id:"mcp.sync.copyFromCodex"},{count:U})]})})]})]})}function Ka({onProjectClick:s,onOpenNewWindow:a,className:t,maxProjects:l,projectPaths:c}){const{formatMessage:n}=G(),[w,u]=h.useState("lastModified"),[f,d]=h.useState("desc"),[S,m]=h.useState([]),[g,y]=h.useState(!1),{projects:p,currentProject:b,isLoading:v}=Gs(),k=h.useMemo(()=>{const r=c??p;return l?r.slice(0,l):r},[c,p,l]);h.useEffect(()=>{(async()=>{if(k.length===0){m([]);return}y(!0);try{const x=await Ze(k),E=k.map(q=>{const H=q===b,_=q.split(/[/\\]/).filter(Boolean).pop()||q,W=x.servers[q]??[];return{name:_,path:q,serverCount:W.length,enabledCount:W.filter(J=>J.enabled).length,lastModified:void 0,isCurrent:H}});m(E)}catch(x){console.error("Failed to fetch project server stats:",x),m(k.map(E=>({name:E.split(/[/\\]/).filter(Boolean).pop()||E,path:E,serverCount:0,enabledCount:0,isCurrent:E===b})))}finally{y(!1)}})()},[k,b]);const j=[...S].sort((r,x)=>{let E=0;switch(w){case"name":E=r.name.localeCompare(x.name);break;case"serverCount":E=r.serverCount-x.serverCount;break;case"lastModified":E=r.lastModified&&x.lastModified?new Date(r.lastModified).getTime()-new Date(x.lastModified).getTime():0;break}return f==="asc"?E:-E}),M=r=>{w===r?d(x=>x==="asc"?"desc":"asc"):(u(r),d("desc"))},T=r=>{s==null||s(r)},P=(r,x)=>{r.stopPropagation(),a==null||a(x)};return v||g?e.jsx(Y,{className:$("p-8",t),children:e.jsxs("div",{className:"flex items-center justify-center",children:[e.jsx("div",{className:"animate-spin text-muted-foreground",children:"-"}),e.jsx("span",{className:"ml-2 text-sm text-muted-foreground",children:n({id:"common.actions.loading"})})]})}):j.length===0?e.jsx(Y,{className:$("p-8",t),children:e.jsxs("div",{className:"text-center",children:[e.jsx(Ne,{className:"w-12 h-12 mx-auto text-muted-foreground/50 mb-3"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:n({id:"mcp.allProjects.empty"})})]})}):e.jsxs(Y,{className:$("overflow-hidden",t),children:[e.jsxs("div",{className:"grid grid-cols-12 gap-2 px-4 py-3 bg-muted/50 border-b border-border text-xs font-medium text-muted-foreground uppercase",children:[e.jsx("div",{className:"col-span-4",children:e.jsxs("button",{onClick:()=>M("name"),className:"flex items-center gap-1 hover:text-foreground transition-colors",children:[n({id:"mcp.allProjects.name"}),w==="name"&&e.jsx("span",{className:"text-foreground",children:f==="asc"?"↑":"↓"})]})}),e.jsx("div",{className:"col-span-3",children:e.jsxs("button",{onClick:()=>M("serverCount"),className:"flex items-center gap-1 hover:text-foreground transition-colors",children:[n({id:"mcp.allProjects.servers"}),w==="serverCount"&&e.jsx("span",{className:"text-foreground",children:f==="asc"?"↑":"↓"})]})}),e.jsx("div",{className:"col-span-3",children:e.jsxs("button",{onClick:()=>M("lastModified"),className:"flex items-center gap-1 hover:text-foreground transition-colors",children:[n({id:"mcp.allProjects.lastModified"}),w==="lastModified"&&e.jsx("span",{className:"text-foreground",children:f==="asc"?"↑":"↓"})]})}),e.jsx("div",{className:"col-span-2 text-right",children:n({id:"mcp.allProjects.actions"})})]}),e.jsx("div",{className:"divide-y divide-border",children:j.map(r=>e.jsxs("div",{onClick:()=>T(r.path),className:$("grid grid-cols-12 gap-2 px-4 py-3 items-center transition-colors cursor-pointer hover:bg-muted/50",r.isCurrent&&"bg-primary/5 hover:bg-primary/10"),children:[e.jsx("div",{className:"col-span-4 min-w-0",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ne,{className:"w-4 h-4 text-muted-foreground flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-foreground truncate",children:r.name}),r.isCurrent&&e.jsx(Q,{variant:"default",className:"text-xs",children:n({id:"mcp.allProjects.current"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground font-mono truncate",children:r.path})]})]})}),e.jsx("div",{className:"col-span-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Hs,{className:"w-4 h-4 text-muted-foreground"}),e.jsxs("span",{className:"text-sm text-foreground",children:[r.serverCount," ",n({id:"mcp.allProjects.servers"})]}),e.jsxs(Q,{variant:"outline",className:$("text-xs",r.enabledCount>0?"text-success border-success/30":"text-muted-foreground"),children:[r.enabledCount," ",n({id:"mcp.status.enabled"})]})]})}),e.jsx("div",{className:"col-span-3",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Dt,{className:"w-4 h-4"}),e.jsx("span",{children:r.lastModified?Bt(new Date(r.lastModified),{addSuffix:!0}):"-"})]})}),e.jsx("div",{className:"col-span-2 flex justify-end gap-1",children:e.jsx("button",{onClick:x=>P(x,r.path),className:"p-1.5 rounded hover:bg-muted transition-colors",title:n({id:"mcp.allProjects.openNewWindow"}),children:e.jsx(Ot,{className:"w-4 h-4 text-muted-foreground"})})})]},r.path))}),e.jsx("div",{className:"px-4 py-2 bg-muted/30 border-t border-border text-xs text-muted-foreground",children:n({id:"mcp.allProjects.summary"},{count:j.length})})]})}function za({onImportSuccess:s,className:a}){const{formatMessage:t}=G(),[l,c]=h.useState(null),[n,w]=h.useState([]),[u,f]=h.useState(!1),{projects:d,currentProject:S,fetchOtherServers:m,isFetchingServers:g}=Gs(),{createServer:y,isCreating:p}=Bs(),b=d.filter(T=>T!==S),v=async T=>{c(T),f(!0);try{const P=await m([T]),r=[];for(const[x,E]of Object.entries(P.servers)){const q=x.split(/[/\\]/).filter(Boolean).pop()||x;for(const H of E)r.push({name:H.name,enabled:H.enabled,displayText:de(H)?H.url:me(H)?H.command:"",transport:H.transport,projectPath:x,projectName:q,originalServer:H})}w(r)}catch(P){console.error("Failed to fetch other projects servers:",P),w([])}finally{f(!1)}},k=async T=>{try{const P=`${T.projectName}-${T.name}`.toLowerCase().replace(/\s+/g,"-"),r={...T.originalServer,name:P,scope:"project"};await y(r),s==null||s(P,T.projectPath)}catch(P){console.error("Failed to import server:",P)}},j=u||g||p,M=l?l.split(/[/\\]/).filter(Boolean).pop():null;return e.jsxs(Y,{className:$("p-4",a),children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Le,{className:"w-5 h-5 text-primary"}),e.jsx("h3",{className:"text-sm font-medium text-foreground",children:t({id:"mcp.otherProjects.title"})})]}),e.jsx(D,{variant:"ghost",size:"sm",onClick:()=>l&&v(l),disabled:!l||j,className:"h-8",children:e.jsx(es,{className:$("w-4 h-4",j&&"animate-spin")})})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:t({id:"mcp.otherProjects.description"})}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"text-sm font-medium text-foreground mb-2 block",children:t({id:"mcp.otherProjects.selectProject"})}),e.jsxs(He,{value:l??"",onValueChange:v,children:[e.jsx($e,{className:"w-full",children:e.jsx(_e,{placeholder:t({id:"mcp.otherProjects.selectProjectPlaceholder"})})}),e.jsx(Re,{children:b.length===0?e.jsx("div",{className:"p-2 text-sm text-muted-foreground text-center",children:t({id:"mcp.otherProjects.noProjects"})}):b.map(T=>{const P=T.split(/[/\\]/).filter(Boolean).pop()||T;return e.jsx(he,{value:T,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Le,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"truncate",children:P})]})},T)})})]})]}),l&&e.jsx("div",{className:"space-y-2",children:u?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx("div",{className:"animate-spin text-muted-foreground",children:"-"}),e.jsx("span",{className:"ml-2 text-sm text-muted-foreground",children:t({id:"common.actions.loading"})})]}):n.length===0?e.jsx("div",{className:"p-4 text-center text-sm text-muted-foreground border border-dashed rounded-lg",children:t({id:"mcp.otherProjects.noServers"},{project:M})}):e.jsx("div",{className:"space-y-2 max-h-60 overflow-y-auto",children:n.map(T=>e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-lg bg-muted/30 hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-foreground truncate",children:T.name}),T.enabled&&e.jsx(Q,{variant:"success",className:"text-xs",children:t({id:"mcp.status.enabled"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground font-mono truncate",children:T.displayText}),e.jsxs("p",{className:"text-xs text-muted-foreground truncate",children:[e.jsx("span",{className:"font-medium",children:T.projectName}),e.jsx(Is,{className:"inline w-3 h-3 mx-1"}),e.jsx("span",{className:"font-mono",children:T.projectPath})]})]}),e.jsxs(D,{variant:"outline",size:"sm",onClick:()=>k(T),disabled:p,className:"flex-shrink-0",children:[e.jsx(ls,{className:"w-4 h-4 mr-1"}),t({id:"mcp.otherProjects.import"})]})]},`${T.projectPath}-${T.name}`))})}),l&&n.length>0&&e.jsx("p",{className:"text-xs text-muted-foreground mt-3",children:t({id:"mcp.otherProjects.hint"})})]})}function Qa(s){return!s||s.length<=4?"****":s.substring(0,4)+"****"}function Ia({server:s,isExpanded:a,onToggleExpand:t,onToggle:l,onEdit:c,onDelete:n,onSaveAsTemplate:w,conflictInfo:u}){const{formatMessage:f}=G(),[d,S]=h.useState({}),m=de(s),g=me(s),y=()=>{var v;return m?s.url:`${s.command} ${((v=s.args)==null?void 0:v.join(" "))||""}`.trim()},p=()=>{if(!m)return[];const v=[];return s.headers&&Object.entries(s.headers).forEach(([k,j])=>{v.push({name:k,value:j})}),s.httpHeaders&&Object.entries(s.httpHeaders).forEach(([k,j])=>{v.push({name:k,value:j})}),s.bearerTokenEnvVar&&v.push({name:"Authorization",value:`Bearer $${s.bearerTokenEnvVar}`,isEnvVar:!0}),v},b=v=>{S(k=>({...k,[v]:!k[v]}))};return e.jsxs(Y,{className:$("overflow-hidden",!s.enabled&&"opacity-60"),children:[e.jsx("div",{className:"p-4 cursor-pointer hover:bg-muted/50 transition-colors",onClick:t,children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:$("p-2 rounded-lg",s.enabled?"bg-primary/10":"bg-muted"),children:e.jsx(De,{className:$("w-5 h-5",s.enabled?"text-primary":"text-muted-foreground")})}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-foreground",children:s.name}),m&&e.jsxs(Q,{variant:"outline",className:"text-xs text-blue-600 border-blue-300",children:[e.jsx(Ws,{className:"w-3 h-3 mr-1"}),f({id:"mcp.transport.http"})]}),e.jsx(Q,{variant:s.scope==="global"?"default":"secondary",className:"text-xs",children:s.scope==="global"?e.jsxs(e.Fragment,{children:[e.jsx(je,{className:"w-3 h-3 mr-1"}),f({id:"mcp.scope.global"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ne,{className:"w-3 h-3 mr-1"}),f({id:"mcp.scope.project"})]})}),u&&e.jsxs(Q,{variant:"outline",className:"text-xs text-orange-500 border-orange-300",children:[e.jsx(Ie,{className:"w-3 h-3 mr-1"}),f({id:"mcp.conflict.badge"})]}),s.enabled&&e.jsx(Q,{variant:"outline",className:"text-xs text-green-600",children:f({id:"mcp.status.enabled"})})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1 font-mono truncate max-w-md",title:y(),children:y()})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(D,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:v=>{v.stopPropagation(),l(s.name,!s.enabled)},children:s.enabled?e.jsx(ke,{className:"w-4 h-4 text-green-600"}):e.jsx(ss,{className:"w-4 h-4"})}),e.jsx(D,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:v=>{v.stopPropagation(),w(s)},title:f({id:"mcp.templates.actions.saveAsTemplate"}),children:e.jsx(Jt,{className:"w-4 h-4 text-primary"})}),e.jsx(D,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:v=>{v.stopPropagation(),c(s)},children:e.jsx(Zt,{className:"w-4 h-4"})}),e.jsx(D,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:v=>{v.stopPropagation(),n(s)},children:e.jsx(Me,{className:"w-4 h-4 text-destructive"})}),a?e.jsx(Qs,{className:"w-5 h-5 text-muted-foreground"}):e.jsx(os,{className:"w-5 h-5 text-muted-foreground"})]})]})}),a&&e.jsxs("div",{className:"border-t border-border p-4 space-y-3 bg-muted/30",children:[m&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-1",children:f({id:"mcp.http.url"})}),e.jsx("code",{className:"text-sm bg-background px-2 py-1 rounded block overflow-x-auto break-all",children:s.url})]}),p().length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-1",children:f({id:"mcp.http.headers"})}),e.jsx("div",{className:"space-y-1",children:p().map(v=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(Q,{variant:"secondary",className:"font-mono",children:v.name}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("code",{className:"text-xs bg-background px-2 py-1 rounded flex-1 overflow-x-auto",children:d[v.name]?v.value:Qa(v.value)}),e.jsx(D,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>b(v.name),title:d[v.name]?f({id:"mcp.http.hideValue"}):f({id:"mcp.http.showValue"}),children:d[v.name]?e.jsx(fs,{className:"w-3 h-3 text-muted-foreground"}):e.jsx(js,{className:"w-3 h-3 text-muted-foreground"})}),v.isEnvVar&&e.jsx(Q,{variant:"outline",className:"text-xs text-blue-500",children:f({id:"mcp.http.envVar"})})]},v.name))})]})]}),g&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-1",children:f({id:"mcp.command"})}),e.jsx("code",{className:"text-sm bg-background px-2 py-1 rounded block overflow-x-auto",children:s.command})]}),s.args&&s.args.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-1",children:f({id:"mcp.args"})}),e.jsx("div",{className:"flex flex-wrap gap-1",children:s.args.map((v,k)=>e.jsx(Q,{variant:"outline",className:"font-mono text-xs",children:v},k))})]}),s.env&&Object.keys(s.env).length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-1",children:f({id:"mcp.env"})}),e.jsx("div",{className:"space-y-1",children:Object.entries(s.env).map(([v,k])=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(Q,{variant:"secondary",className:"font-mono",children:v}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("code",{className:"text-xs bg-background px-2 py-1 rounded flex-1 overflow-x-auto",children:k})]},v))})]})]}),u&&e.jsxs("div",{className:"p-3 bg-orange-50 dark:bg-orange-950/30 border border-orange-200 dark:border-orange-800 rounded-lg space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2 text-orange-700 dark:text-orange-400",children:[e.jsx(Ie,{className:"w-4 h-4"}),e.jsx("span",{className:"text-sm font-medium",children:f({id:"mcp.conflict.title"})})]}),e.jsx("p",{className:"text-xs text-orange-600 dark:text-orange-400/80",children:f({id:"mcp.conflict.description"},{scope:f({id:`mcp.scope.${u.effectiveScope}`})})}),e.jsx("p",{className:"text-xs text-orange-600 dark:text-orange-400/80",children:f({id:"mcp.conflict.resolution"})})]})]})]})}function dn(){var Cs,Ss;const{formatMessage:s}=G(),[a,t]=h.useState("servers"),[l,c]=h.useState(""),[n,w]=h.useState("all"),[u,f]=h.useState(new Set),[d,S]=h.useState(!1),[m,g]=h.useState(void 0),[y,p]=h.useState("claude"),[b,v]=h.useState(new Set),[k,j]=h.useState(!1),[M,T]=h.useState(void 0),P=ae(),r=Ve(),{servers:x,projectServers:E,globalServers:q,conflicts:H,totalCount:_,enabledCount:W,isLoading:J,isFetching:U,refetch:N}=Us({scope:n==="all"?void 0:n}),L=fe({queryKey:["codexMcpServers"],queryFn:Rs,enabled:y==="codex",staleTime:120*1e3}),A=xe(pe),ce=fe({queryKey:["ccwMcpConfig",A],queryFn:()=>zt(A??void 0),enabled:y==="claude",staleTime:300*1e3}),oe=fe({queryKey:["ccwMcpConfigCodex"],queryFn:Qt,enabled:y==="codex",staleTime:300*1e3}),{toggleServer:Ce,deleteServer:ve}=Bs(),Pe=i=>{f(C=>{const I=new Set(C);return I.has(i)?I.delete(i):I.add(i),I})},le=i=>{v(C=>{const I=new Set(C);return I.has(i)?I.delete(i):I.add(i),I})},ye=(i,C)=>{Ce(i,C)},O=async i=>{if(confirm(s({id:"mcp.deleteConfirm"},{name:i.name})))try{await ve(i.name,i.scope),r.success(s({id:"mcp.actions.delete"}),i.name),N()}catch(C){console.error("Failed to delete MCP server:",C),r.error(s({id:"mcp.actions.delete"}),C instanceof Error?C.message:String(C))}},ne=i=>{g(i),S(!0)},Se=()=>{g(void 0),S(!0)},Fe=()=>{S(!1),g(void 0)},We=()=>{S(!1),g(void 0),N()},Ue=i=>{p(i)},re=ce.data??{isInstalled:!1,enabledTools:[],projectRoot:void 0,allowedDirs:void 0,enableSandbox:void 0,installedScopes:[]},o=["ccwMcpConfig",A],F=async(i,C)=>{const I=P.getQueryData(o)??re,z=I.enabledTools,Z=P.getQueryData(o),ie=C?z.includes(i)?z:[...z,i]:z.filter(R=>R!==i);P.setQueryData(o,R=>R&&{...R,enabledTools:ie});try{await Xe({...I,enabledTools:ie})}catch(R){r.error(s({id:"mcp.actions.toggle.error"}),R instanceof Error?R.message:String(R)),console.error("Failed to toggle CCW tool:",R),P.setQueryData(o,Z)}ce.refetch()},K=async i=>{const C=P.getQueryData(o);P.setQueryData(o,z=>z&&{...z,...i});const I=P.getQueryData(o)??re;try{await Xe({enabledTools:I.enabledTools,projectRoot:I.projectRoot,allowedDirs:I.allowedDirs,enableSandbox:I.enableSandbox})}catch(z){r.error(s({id:"mcp.actions.update.error"}),z instanceof Error?z.message:String(z)),console.error("Failed to update CCW config:",z),P.setQueryData(o,C)}ce.refetch()},V=()=>{ce.refetch()},ee=h.useMemo(()=>{const i=new Map;for(const C of H)i.set(C.name,C);return i},[H]),ue=async i=>{try{await Vs(i,i==="project"?A??void 0:void 0),ce.refetch()}catch(C){r.error(s({id:"mcp.actions.install.error"}),C instanceof Error?C.message:String(C)),console.error("Failed to install CCW MCP to scope:",C)}},Ee=async i=>{try{await qt(i,i==="project"?A??void 0:void 0),ce.refetch(),P.invalidateQueries({queryKey:["mcpServers"]})}catch(C){r.error(s({id:"mcp.actions.uninstall.error"}),C instanceof Error?C.message:String(C)),console.error("Failed to uninstall CCW MCP from scope:",C)}},se=oe.data??{isInstalled:!1,enabledTools:[],projectRoot:void 0,allowedDirs:void 0,enableSandbox:void 0,installedScopes:[]},be=async(i,C)=>{const I=P.getQueryData(["ccwMcpConfigCodex"])??se,z=I.enabledTools,Z=P.getQueryData(["ccwMcpConfigCodex"]),ie=C?z.includes(i)?z:[...z,i]:z.filter(R=>R!==i);P.setQueryData(["ccwMcpConfigCodex"],R=>R&&{...R,enabledTools:ie});try{await Ye({...I,enabledTools:ie})}catch(R){r.error(s({id:"mcp.actions.toggle.error"}),R instanceof Error?R.message:String(R)),console.error("Failed to toggle CCW tool (Codex):",R),P.setQueryData(["ccwMcpConfigCodex"],Z)}oe.refetch()},Be=async i=>{const C=P.getQueryData(["ccwMcpConfigCodex"])??se,I=P.getQueryData(["ccwMcpConfigCodex"]);P.setQueryData(["ccwMcpConfigCodex"],z=>z&&{...z,...i});try{await Ye({...C,...i})}catch(z){r.error(s({id:"mcp.actions.update.error"}),z instanceof Error?z.message:String(z)),console.error("Failed to update CCW config (Codex):",z),P.setQueryData(["ccwMcpConfigCodex"],I)}oe.refetch()},Xs=()=>{oe.refetch()},et=i=>{const C=(i==null?void 0:i.serverConfig)??{},I=C.type==="http"||C.transport==="http"||typeof C.url=="string";g(I?{name:i.name,transport:"http",url:C.url??"",scope:"project",enabled:!0}:{name:i.name,transport:"stdio",command:C.command,args:C.args||[],env:C.env,scope:"project",enabled:!0}),S(!0)},st=i=>{T(i),j(!0)},vs=async(i,C,I,z)=>{try{const Z=await zs({name:i,description:I||void 0,category:C||"custom",serverConfig:{command:z.command,args:z.args.length>0?z.args:void 0,env:Object.keys(z.env).length>0?z.env:void 0}});Z.success?(r.success(s({id:"mcp.templates.feedback.saveSuccess"}),i),j(!1),T(void 0)):r.error(s({id:"mcp.templates.feedback.saveError"}),Z.error||"")}catch(Z){r.error(s({id:"mcp.templates.feedback.saveError"}),Z instanceof Error?Z.message:String(Z))}},tt=async i=>{try{await Kt(i),r.success(s({id:"mcp.actions.delete"}),i),L.refetch()}catch(C){console.error("Failed to remove Codex MCP server:",C),r.error(s({id:"mcp.actions.delete"}),C instanceof Error?C.message:String(C))}},at=async(i,C)=>{try{await At(i,C),L.refetch()}catch(I){r.error(s({id:"mcp.actions.toggle.error"}),I instanceof Error?I.message:String(I)),console.error("Failed to toggle Codex MCP server:",I)}},nt=x.filter(i=>{var Z,ie;const C=l.toLowerCase(),I=i.name.toLowerCase().includes(C),z=de(i)?(Z=i.url)==null?void 0:Z.toLowerCase().includes(C):(ie=i.command)==null?void 0:ie.toLowerCase().includes(C);return I||z}),rt=((Cs=L.data)==null?void 0:Cs.servers)??[],ct=((Ss=L.data)==null?void 0:Ss.configPath)??"",ot=rt.filter(i=>{var Z,ie;const C=l.toLowerCase(),I=i.name.toLowerCase().includes(C),z=de(i)?(Z=i.url)==null?void 0:Z.toLowerCase().includes(C):(ie=i.command)==null?void 0:ie.toLowerCase().includes(C);return I||z}),ys=y==="codex"?ot:nt,Ns=y==="codex"?b:u,bs=y==="codex"?le:Pe,lt=y==="codex"?L.isLoading:J,ws=y==="codex"?L.isFetching:U,it=y==="codex"?(()=>L.refetch()):N;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",{className:"flex items-center gap-3",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold text-foreground flex items-center gap-2",children:[e.jsx(De,{className:"w-6 h-6 text-primary"}),s({id:"mcp.title"})]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:s({id:"mcp.description"})})]}),e.jsx("div",{className:"ml-3 flex-shrink-0",children:e.jsx(Lt,{currentMode:y,onModeChange:Ue,codexConfigPath:ct})})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(D,{variant:"outline",onClick:()=>it(),disabled:ws,children:[e.jsx(es,{className:$("w-4 h-4 mr-2",ws&&"animate-spin")}),s({id:"common.actions.refresh"})]}),y==="claude"&&e.jsxs(D,{onClick:Se,children:[e.jsx(Qe,{className:"w-4 h-4 mr-2"}),s({id:"mcp.actions.add"})]})]})]}),e.jsx(Gt,{value:a,onValueChange:i=>t(i),tabs:[{value:"templates",label:s({id:"mcp.tabs.templates"})},{value:"servers",label:s({id:"mcp.tabs.servers"})},{value:"cross-cli",label:s({id:"mcp.tabs.crossCli"})}]}),a==="templates"&&e.jsxs("div",{className:"mt-4 space-y-4",children:[e.jsx(Ma,{onInstallComplete:()=>N()}),e.jsx(Na,{onInstallTemplate:et,onSaveAsTemplate:vs})]}),a==="servers"&&e.jsxs("div",{className:"mt-4 space-y-4",children:[e.jsx(qa,{}),y==="claude"&&e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsxs(Y,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(De,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:_})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s({id:"mcp.stats.total"})})]}),e.jsxs(Y,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ke,{className:"w-5 h-5 text-green-600"}),e.jsx("span",{className:"text-2xl font-bold",children:W})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s({id:"mcp.stats.enabled"})})]}),e.jsxs(Y,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(je,{className:"w-5 h-5 text-info"}),e.jsx("span",{className:"text-2xl font-bold",children:q.length})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s({id:"mcp.stats.global"})})]}),e.jsxs(Y,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ne,{className:"w-5 h-5 text-warning"}),e.jsx("span",{className:"text-2xl font-bold",children:E.length})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s({id:"mcp.stats.project"})})]})]}),y==="claude"&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(qe,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(X,{placeholder:s({id:"mcp.filters.searchPlaceholder"}),value:l,onChange:i=>c(i.target.value),className:"pl-9"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(D,{variant:n==="all"?"default":"outline",size:"sm",onClick:()=>w("all"),children:s({id:"mcp.filters.all"})}),e.jsxs(D,{variant:n==="global"?"default":"outline",size:"sm",onClick:()=>w("global"),children:[e.jsx(je,{className:"w-4 h-4 mr-1"}),s({id:"mcp.scope.global"})]}),e.jsxs(D,{variant:n==="project"?"default":"outline",size:"sm",onClick:()=>w("project"),children:[e.jsx(Ne,{className:"w-4 h-4 mr-1"}),s({id:"mcp.scope.project"})]})]})]}),y==="codex"&&e.jsxs("div",{className:"relative flex-1",children:[e.jsx(qe,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(X,{placeholder:s({id:"mcp.filters.searchPlaceholder"}),value:l,onChange:i=>c(i.target.value),className:"pl-9"})]}),y==="claude"&&e.jsx(Ds,{isInstalled:re.isInstalled,enabledTools:re.enabledTools,projectRoot:re.projectRoot,allowedDirs:re.allowedDirs,enableSandbox:re.enableSandbox,onToggleTool:F,onUpdateConfig:K,onInstall:V,installedScopes:re.installedScopes,onInstallToScope:ue,onUninstallScope:Ee}),y==="codex"&&e.jsx(Ds,{target:"codex",isInstalled:se.isInstalled,enabledTools:se.enabledTools,projectRoot:se.projectRoot,allowedDirs:se.allowedDirs,enableSandbox:se.enableSandbox,onToggleTool:be,onUpdateConfig:Be,onInstall:Xs}),lt?e.jsx("div",{className:"space-y-3",children:[1,2,3,4].map(i=>e.jsx("div",{className:"h-24 bg-muted animate-pulse rounded-lg"},i))}):ys.length===0?e.jsxs(Y,{className:"p-8 text-center",children:[e.jsx(De,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:s({id:"mcp.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:s({id:"mcp.emptyState.message"})})]}):e.jsx("div",{className:"space-y-3",children:ys.map(i=>y==="codex"?e.jsx(fa,{server:i,enabled:i.enabled,isExpanded:Ns.has(i.name),onToggleExpand:()=>bs(i.name),isEditable:!0,onRemove:tt,onToggle:at},`${i.name}-${i.scope}`):e.jsx(Ia,{server:i,isExpanded:Ns.has(`${i.name}-${i.scope}`),onToggleExpand:()=>bs(`${i.name}-${i.scope}`),onToggle:ye,onEdit:ne,onDelete:O,onSaveAsTemplate:st,conflictInfo:ee.get(i.name)},`${i.name}-${i.scope}`))})]}),a==="cross-cli"&&e.jsxs("div",{className:"mt-4 space-y-6",children:[e.jsxs("section",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(es,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("h3",{className:"text-sm font-medium text-foreground",children:s({id:"mcp.sync.title"})})]}),e.jsx(Y,{className:"p-4",children:e.jsx(Aa,{onSuccess:()=>N()})})]}),e.jsxs("section",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(Ne,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("h3",{className:"text-sm font-medium text-foreground",children:s({id:"mcp.projects.title"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-3",children:s({id:"mcp.projects.description"})}),e.jsx(Ka,{maxProjects:10,onProjectClick:i=>console.log("Open project:",i),onOpenNewWindow:i=>window.open(`/?project=${encodeURIComponent(i)}`,"_blank")})]}),e.jsxs("section",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(je,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("h3",{className:"text-sm font-medium text-foreground",children:s({id:"mcp.crossProject.title"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-3",children:s({id:"mcp.crossProject.description"})}),e.jsx(za,{onImportSuccess:(i,C)=>{console.log("Imported server:",i,"from:",C),N()}})]})]}),y==="claude"&&e.jsx(ha,{mode:m?"edit":"add",server:m,open:d,onClose:Fe,onSave:We}),e.jsx(Ys,{open:k,onClose:()=>{j(!1),T(void 0)},onSave:vs,defaultName:M==null?void 0:M.name,defaultCommand:M&&me(M)?M.command:void 0,defaultArgs:M&&me(M)?M.args:void 0,defaultEnv:M&&me(M)?M.env:void 0})]})}export{dn as McpManagerPage,dn as default};
|
|
45
|
-
//# sourceMappingURL=McpManagerPage-
|
|
45
|
+
//# sourceMappingURL=McpManagerPage-BJeuWJv1.js.map
|