claude-code-workflow 7.2.28 → 7.2.29
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/.codex/skills/brainstorm/SKILL.md +3 -3
- package/.codex/skills/clean/SKILL.md +3 -3
- package/.codex/skills/issue-discover/SKILL.md +13 -13
- package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
- package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
- package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
- package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
- package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
- package/.codex/skills/review-cycle/SKILL.md +10 -10
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
- package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
- package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
- package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
- package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
- package/.codex/skills/spec-generator/README.md +1 -1
- package/.codex/skills/spec-generator/SKILL.md +184 -88
- package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
- package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
- package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
- package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
- package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
- package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
- package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
- package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
- package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
- package/.codex/skills/spec-setup/SKILL.md +4 -4
- package/.codex/skills/workflow-plan/SKILL.md +6 -6
- package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
- package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js → AlertDialog-exlTDW81.js} +3 -3
- package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js.map → AlertDialog-exlTDW81.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js → AnalysisPage-cgV9LfAI.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js → CliModeToggle-Be9xsPiv.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js → CliViewerPage-BrE-oyEq.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js → CodexLensPage-Cd3nrC93.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js → Collapsible-DXFl3VKF.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js → DeepWikiPage-CpDxtmRX.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js → EndpointsPage-BchjWe7s.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js → ExplorerPage-CbWvaJ0y.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js → FixSessionPage-YMjVRiCk.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js → FloatingPanel-BtqzqDVq.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
- package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js → HistoryPage-BuWpQ7k5.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js → HookManagerPage-D0BtMIWy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js → InstallationsPage-C7dwsAKG.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js → IssueHubPage-D0nCNaeB.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js → McpManagerPage-C-S5CehM.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js → MemoryPage-P_B0JVUQ.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js → NotFoundPage-S4Jn9LUE.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js → PromptHistoryPage-YEMjFARX.js} +3 -3
- package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js → ReviewSessionPage-DnTm55nG.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js → RulesManagerPage-CUwebtO2.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js → SessionsPage-BpgP4087.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js.map → SessionsPage-BpgP4087.js.map} +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js → Switch-CYSPdqWk.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js.map → Switch-CYSPdqWk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js → TabsNavigation-CPh6Zor1.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js → TaskDrawer-Ds-8830B.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js → TeamPage-CJODUxBk.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js.map → TeamPage-CJODUxBk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-DxemgIhF.js → archive-CjwVpw6k.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-DxemgIhF.js.map → archive-CjwVpw6k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js → archive-restore-2vZa9Ic3.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js → arrow-right-CUU5XDgT.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-DOwFtzak.js → bot-BwpSRDUa.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-DOwFtzak.js.map → bot-BwpSRDUa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-96qH3aFh.js → braces-DBzUW1XC.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-96qH3aFh.js.map → braces-DBzUW1XC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js → circle-stop-CGNNsjvE.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js → cpu-D27G86Ul.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js.map → cpu-D27G86Ul.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js → eye-C6MOB7Au.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js.map → eye-C6MOB7Au.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js → eye-off-BxfBlZ26.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js.map → eye-off-BxfBlZ26.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js → file-json-NI237wA-.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js.map → file-json-NI237wA-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js → file-text-Byn2_2v6.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js.map → file-text-Byn2_2v6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-q9g-bknU.js → filter-D-7PhZjx.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-q9g-bknU.js.map → filter-D-7PhZjx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-CL6vb42J.js → folder-BoAsK_FL.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-CL6vb42J.js.map → folder-BoAsK_FL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js → gauge-DCSxJIS4.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js.map → gauge-DCSxJIS4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js → globe-CHS3prza.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js.map → globe-CHS3prza.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js → grid-3x3-D7K35U7S.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js → hard-drive-eq9xE07G.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js.map → hard-drive-eq9xE07G.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-80O0kJO7.js → hash-C1DMpBua.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-80O0kJO7.js.map → hash-C1DMpBua.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js → history-Di5SBCY-.js} +2 -2
- package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js.map → history-Di5SBCY-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-mbeo62f8.js → index--_R7COnA.js} +2 -2
- package/ccw/frontend/dist/assets/{index-mbeo62f8.js.map → index--_R7COnA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-rLgoBCfV.js → index-BUol9HDD.js} +3 -3
- package/ccw/frontend/dist/assets/{index-rLgoBCfV.js.map → index-BUol9HDD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Bs80iCX0.js → index-CT9oykfw.js} +2 -2
- package/ccw/frontend/dist/assets/{index-Bs80iCX0.js.map → index-CT9oykfw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js → index-Ddwvf87H.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js.map → index-Ddwvf87H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js → layout-grid-LiX0qZbN.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js → lightbulb-CL3DVEwb.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js → link-2-CC5cFeq6.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js.map → link-2-CC5cFeq6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-koEYiemK.js → link-ngFQ9bs0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-koEYiemK.js.map → link-ngFQ9bs0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-v2_GaLdC.js → list-BEU6I0KK.js} +2 -2
- package/ccw/frontend/dist/assets/{list-v2_GaLdC.js.map → list-BEU6I0KK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js → map-pin-BWZdLA6y.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js.map → map-pin-BWZdLA6y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js → messages-square-K6_Chm7n.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js.map → messages-square-K6_Chm7n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js → minimize-2-CWkphauf.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js.map → minimize-2-CWkphauf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-CH3smL37.js → package-DrNgkamn.js} +2 -2
- package/ccw/frontend/dist/assets/{package-CH3smL37.js.map → package-DrNgkamn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js → plug-CMo3sw5_.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js.map → plug-CMo3sw5_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-F2A_J4l6.js → power-DppNTW5e.js} +2 -2
- package/ccw/frontend/dist/assets/{power-F2A_J4l6.js.map → power-DppNTW5e.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-Byxot0YU.js → save-CD8aPMbZ.js} +2 -2
- package/ccw/frontend/dist/assets/{save-Byxot0YU.js.map → save-CD8aPMbZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-JjqhUkpw.js → send-B4z90fQD.js} +2 -2
- package/ccw/frontend/dist/assets/{send-JjqhUkpw.js.map → send-B4z90fQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js → settings-2-CAKRU_QC.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js.map → settings-2-CAKRU_QC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js → square-check-big-KhI3HrzX.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js → square-pen-BtdGIpuq.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js.map → square-pen-BtdGIpuq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js → star-ZoBUkXoD.js} +2 -2
- package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js.map → star-ZoBUkXoD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-CKs7nnn3.js → style-CltxQP-P.js} +2 -2
- package/ccw/frontend/dist/assets/{style-CKs7nnn3.js.map → style-CltxQP-P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-DW5tsDW6.js → target-C32OUSGf.js} +2 -2
- package/ccw/frontend/dist/assets/{target-DW5tsDW6.js.map → target-C32OUSGf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js → test-tube-0IxoyAVZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js → upload-4eKCkyBn.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js.map → upload-4eKCkyBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js → useApiSettings-zLTUWqhi.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js → useCli-BtN2vpOX.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js.map → useCli-BtN2vpOX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js → useCommands-_spj49qL.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js.map → useCommands-_spj49qL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js → useDebounce-Bm9KFZvd.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js → useFileExplorer-DOmpm6v9.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js → useLocale-D2rj4rea.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js.map → useLocale-D2rj4rea.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js → useSkills-OskEpomF.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js.map → useSkills-OskEpomF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js → useSystemSettings-BjMgsNSF.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js → wand-sparkles-CLhyYWa7.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js +0 -150
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +0 -1
- package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js +0 -7
- package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.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,
|
|
1
|
+
import{O as Ae,aF as ae,a9 as xe,aa as pe,ab as fe,aH as te,cZ as Os,c_ as As,c$ as dt,d0 as mt,d1 as xt,d2 as pt,d3 as Je,d4 as Ze,d5 as Ks,d6 as ut,d7 as ht,u as G,r as h,j as e,c as $,al as He,d8 as de,d9 as me,x as ts,y as as,z as ns,A as rs,e as D,aq as Ve,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,da as zs,C as Y,db as De,cz as Qs,ap as os,S as we,aw as Ie,ao as Is,bq as Ls,aU as Le,an as Ke,dc as ft,dd as Hs,de as jt,df as vt,dg as Ye,dh as Xe,cl as Vs,b as Oe,am as ls,af as yt,di as Nt,dj as bt,dk as ks,dl as wt,dm as Ct,U as $s,bu as Ts,N as Te,cI 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,dn as Rs,l as Dt,b5 as qt,R as es,dp as Ot,dq as At,dr as Kt,ds as zt,dt as Qt}from"./index-BUol9HDD.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-exlTDW81.js";import{G as je}from"./globe-CHS3prza.js";import{E as fs}from"./eye-off-BxfBlZ26.js";import{E as js}from"./eye-C6MOB7Au.js";import{L as Ps,C as Lt}from"./CliModeToggle-Be9xsPiv.js";import{L as Ws}from"./link-ngFQ9bs0.js";import{P as ke,a as ss}from"./power-DppNTW5e.js";import{F as Ht}from"./FloatingFileBrowser-JW2ehYY_.js";import{F as Ne}from"./folder-BoAsK_FL.js";import{H as Vt}from"./hard-drive-eq9xE07G.js";import{S as $t}from"./save-CD8aPMbZ.js";import{M as _t}from"./messages-square-K6_Chm7n.js";import{F as Rt}from"./file-text-Byn2_2v6.js";import{F as Wt}from"./filter-D-7PhZjx.js";import{A as Ut}from"./arrow-right-CUU5XDgT.js";import{f as Bt}from"./formatDistanceToNow-DXTjigy3.js";import{T as Gt}from"./TabsNavigation-CPh6Zor1.js";import{B as Jt}from"./bookmark-plus-Cc3nKRZ5.js";import{S as Zt}from"./square-pen-BtdGIpuq.js";import"./cpu-D27G86Ul.js";import"./FloatingPanel-BtqzqDVq.js";import"./useFileExplorer-DOmpm6v9.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,cY as Os,cZ as As,c_
|
|
|
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(V=>V.trim()).filter(V=>V.length>0),O={};for(const V of j.split(`
|
|
44
44
|
`)){const _=V.trim();if(_&&_.includes("=")){const[W,...J]=_.split("=");W&&(O[W.trim()]=J.join("=").trim())}}t(f.trim(),S.trim(),g.trim(),{command:p.trim(),args:E,env:O})};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(Ve,{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 O=setTimeout(()=>{w(l)},va);return()=>clearTimeout(O)},[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 O=[];for(const V of b){const _=await ks(V);O.push(..._)}return O}else return ks(u)},staleTime:300*1e3,enabled:!v}),P=h.useCallback(O=>{s==null||s(O)},[s]),r=h.useCallback(O=>{p(O),g(!0)},[]),x=h.useCallback(async()=>{if(!y)return;(await k.deleteTemplate(y)).success&&(g(!1),p(null))},[y,k]),E=h.useCallback((O,V,_,W)=>{a==null||a(O,V,_,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(Oe,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(X,{value:l,onChange:O=>c(O.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(Ve,{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(O=>e.jsx(he,{value:O,children:O},O))]})]})]})]}),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(O=>e.jsx(ya,{template:O,onInstall:P,onDelete:r,isInstalling:j.isInstalling,isDeleting:k.isDeleting},O.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":Oe,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}=He(),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]||[],O=E.includes(x)?E.filter(V=>V!==x):[...E,x];v(r,O)},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 qs;const Ca=typeof navigator<"u"&&((qs=navigator.platform)==null?void 0:qs.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":Oe,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 qa({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 Oa({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(qa,{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})))},O=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)}}},V=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:O,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:V,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(O=>{const V=O===b,_=O.split(/[/\\]/).filter(Boolean).pop()||O,W=x.servers[O]??[];return{name:_,path:O,serverCount:W.length,enabledCount:W.filter(J=>J.enabled).length,lastModified:void 0,isCurrent:V}});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(Vs,{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(qt,{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 O=x.split(/[/\\]/).filter(Boolean).pop()||x;for(const V of E)r.push({name:V.name,enabled:V.enabled,displayText:de(V)?V.url:me(V)?V.command:"",transport:V.transport,projectPath:x,projectName:O,originalServer:V})}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(Ve,{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=He(),{servers:x,projectServers:E,globalServers:O,conflicts:V,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)},q=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()},H=()=>{ce.refetch()},ee=h.useMemo(()=>{const i=new Map;for(const C of V)i.set(C.name,C);return i},[V]),ue=async i=>{try{await Hs(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 Ot(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(Oa,{}),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:O.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(Oe,{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(Oe,{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:H,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:q,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-C-S5CehM.js.map
|