claude-code-workflow 7.2.5 → 7.2.6
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/commands/workflow/analyze-with-file.md +11 -10
- package/.claude/skills/ccw-help/command.json +3 -3
- package/.claude/skills/ccw-help/index/all-commands.json +3 -3
- package/.claude/skills/ccw-help/index/by-category.json +3 -3
- package/.claude/skills/ccw-help/index/by-use-case.json +3 -3
- package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
- package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
- package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
- package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
- package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
- package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
- package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
- package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
- package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
- package/.claude/skills/team-roadmap-dev/SKILL.md +1 -1
- package/.claude/skills/team-roadmap-dev/roles/coordinator/role.md +1 -1
- package/.claude/skills/team-roadmap-dev/specs/team-config.json +1 -1
- package/ccw/dist/commands/install.d.ts.map +1 -1
- package/ccw/dist/commands/install.js +11 -9
- package/ccw/dist/commands/install.js.map +1 -1
- package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
- package/ccw/dist/tools/cli-executor-core.js +0 -25
- package/ccw/dist/tools/cli-executor-core.js.map +1 -1
- package/ccw/dist/tools/cli-executor-state.d.ts.map +1 -1
- package/ccw/dist/tools/cli-executor-state.js +0 -31
- package/ccw/dist/tools/cli-executor-state.js.map +1 -1
- package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
- package/ccw/dist/tools/cli-history-store.js +1 -30
- package/ccw/dist/tools/cli-history-store.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-CFGtc76Y.js → AlertDialog-BMFUcfv_.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-CFGtc76Y.js.map → AlertDialog-BMFUcfv_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-Duxia_dG.js → AnalysisPage-Bxa333tD.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-Duxia_dG.js.map → AnalysisPage-Bxa333tD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CU9hesAE.js → ApiSettingsPage-BFVU-wcR.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CU9hesAE.js.map → ApiSettingsPage-BFVU-wcR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-DcdOFSvM.js → CliModeToggle-MDoFAJPL.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-DcdOFSvM.js.map → CliModeToggle-MDoFAJPL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-oKN-GRIT.js → CliSessionSharePage-DkRmLiNN.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-oKN-GRIT.js.map → CliSessionSharePage-DkRmLiNN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-_wUoHaY-.js → CliViewerPage-DN8jWddy.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-_wUoHaY-.js.map → CliViewerPage-DN8jWddy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensManagerPage-ClPNashJ.js → CodexLensManagerPage-Du_VAJtC.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensManagerPage-ClPNashJ.js.map → CodexLensManagerPage-Du_VAJtC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Dladh9Eu.js → Collapsible-CF5bSyzt.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Dladh9Eu.js.map → Collapsible-CF5bSyzt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-B6DBb_Ew.js → CommandsManagerPage-Bm_P9I76.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-B6DBb_Ew.js.map → CommandsManagerPage-Bm_P9I76.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-CDA3xm3R.js → DeepWikiPage-2YIlfWhz.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-CDA3xm3R.js.map → DeepWikiPage-2YIlfWhz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-Bu7iU0Wy.js → EndpointsPage-CMVNz5PY.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-Bu7iU0Wy.js.map → EndpointsPage-CMVNz5PY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-xim2cboZ.js → ExplorerPage-C-KFz8YU.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-xim2cboZ.js.map → ExplorerPage-C-KFz8YU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-BTFYoFQF.js → FixSessionPage-CdKND69l.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-BTFYoFQF.js.map → FixSessionPage-CdKND69l.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-B30ANzTJ.js → FloatingFileBrowser-Bf4iqOSd.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-B30ANzTJ.js.map → FloatingFileBrowser-Bf4iqOSd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-Ds84B7Ob.js → FloatingPanel-CJbvABPb.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-Ds84B7Ob.js.map → FloatingPanel-CJbvABPb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-DJ4YnFOQ.js → GraphExplorerPage-DPoozRTR.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-DJ4YnFOQ.js.map → GraphExplorerPage-DPoozRTR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-rzLVsw11.js → HistoryPage-DOMa9gJX.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-rzLVsw11.js.map → HistoryPage-DOMa9gJX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DizO_dCP.js → HookManagerPage-Cfn2UEyy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DizO_dCP.js.map → HookManagerPage-Cfn2UEyy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage-BFamuE4y.js → InstallationsPage-qngOxLvm.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage-BFamuE4y.js.map → InstallationsPage-qngOxLvm.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-DHwQWuUc.js → IssueHubPage-Cvf7tH8p.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-DHwQWuUc.js.map → IssueHubPage-Cvf7tH8p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-DMDkG7pi.js → LiteTasksPage-D20smVCY.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-DMDkG7pi.js.map → LiteTasksPage-D20smVCY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-CS2v_1OG.js → McpManagerPage-Bld27yu4.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-CS2v_1OG.js.map → McpManagerPage-Bld27yu4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-DhYPE-VC.js → MemoryPage-DmknNdBh.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-DhYPE-VC.js.map → MemoryPage-DmknNdBh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-BLmC7-ot.js → NotFoundPage-DdwPN1xU.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-BLmC7-ot.js.map → NotFoundPage-DdwPN1xU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-1jzSUFZW.js → OrchestratorPage-CgDdmvBg.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-1jzSUFZW.js.map → OrchestratorPage-CgDdmvBg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-gWuAj-Cn.js → ProjectOverviewPage-9Ze9quxh.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-gWuAj-Cn.js.map → ProjectOverviewPage-9Ze9quxh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-q7ySVNHM.js → PromptHistoryPage-YRkBppOx.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-q7ySVNHM.js.map → PromptHistoryPage-YRkBppOx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-DX1uT_nH.js → ReviewSessionPage-DSaeHw83.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-DX1uT_nH.js.map → ReviewSessionPage-DSaeHw83.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Bg6T5W-W.js → RulesManagerPage-BpGwS_jB.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Bg6T5W-W.js.map → RulesManagerPage-BpGwS_jB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-C_ig6JSh.js → SessionDetailPage-B_YHME7k.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-C_ig6JSh.js.map → SessionDetailPage-B_YHME7k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-BENFqFDn.js → SessionsPage-bW6kEEib.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-BENFqFDn.js.map → SessionsPage-bW6kEEib.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-2c-oTxfz.js → SettingsPage-CSwUd2Bw.js} +4 -4
- package/ccw/frontend/dist/assets/{SettingsPage-2c-oTxfz.js.map → SettingsPage-CSwUd2Bw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SkillsManagerPage-GLo6DXnt.js → SkillsManagerPage-CyqKvFUi.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-GLo6DXnt.js.map → SkillsManagerPage-CyqKvFUi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CRqMV90p.js → SpecsSettingsPage-DHqQNW_y.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CRqMV90p.js.map → SpecsSettingsPage-DHqQNW_y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-vlMavMRD.js → Switch-s_-xzEWF.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-vlMavMRD.js.map → Switch-s_-xzEWF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-CLKz7pWP.js → TabsNavigation-CU50UxOb.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-CLKz7pWP.js.map → TabsNavigation-CU50UxOb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-BAFvNqF8.js → TaskDrawer-128XISsA.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-BAFvNqF8.js.map → TaskDrawer-128XISsA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-C2IsDkAv.js → TeamPage-Bg_KII8B.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-C2IsDkAv.js.map → TeamPage-Bg_KII8B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-mgS-iKDm.js → TerminalDashboardPage-CQ9K2zwB.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-mgS-iKDm.js.map → TerminalDashboardPage-CQ9K2zwB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CxxK_YIp.js → archive--nR2vYUk.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CxxK_YIp.js.map → archive--nR2vYUk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-DZsrBaeG.js → archive-restore-CZ7graO0.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-DZsrBaeG.js.map → archive-restore-CZ7graO0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-BotRHOhr.js → arrow-right-ChKhpVhq.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-BotRHOhr.js.map → arrow-right-ChKhpVhq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-C0MWZ3S9.js → bookmark-plus-X-JcgObI.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-C0MWZ3S9.js.map → bookmark-plus-X-JcgObI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BcHFJXqD.js → bot-C3uo7Fkg.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BcHFJXqD.js.map → bot-C3uo7Fkg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D_p0IZhP.js → braces-5wZupwrA.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D_p0IZhP.js.map → braces-5wZupwrA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-Bt634NUt.js → circle-stop-DZ5hLKjQ.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-Bt634NUt.js.map → circle-stop-DZ5hLKjQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-DjeGKtvT.js → cpu-Dc8IS79i.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-DjeGKtvT.js.map → cpu-Dc8IS79i.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-BmNPuatq.js → ellipsis-vertical-B4pqbrsR.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-BmNPuatq.js.map → ellipsis-vertical-B4pqbrsR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-B0-xkP67.js → eye-BwniwXnu.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-B0-xkP67.js.map → eye-BwniwXnu.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-Bz0Fkli3.js → eye-off-BWntEdln.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-Bz0Fkli3.js.map → eye-off-BWntEdln.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-PUAS4vBm.js → file-json-BDcmkaVn.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-PUAS4vBm.js.map → file-json-BDcmkaVn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-BMeW5-Sb.js → file-text-DsqI3R_g.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-BMeW5-Sb.js.map → file-text-DsqI3R_g.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-B4wgMvwi.js → filter-CQMcD8RT.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-B4wgMvwi.js.map → filter-CQMcD8RT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BSHjjjND.js → folder-jX77-MUi.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BSHjjjND.js.map → folder-jX77-MUi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-7VRNEl22.js → gauge-yQjRXM3o.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-7VRNEl22.js.map → gauge-yQjRXM3o.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-PvVHBjbW.js → globe-BecpCHYI.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-PvVHBjbW.js.map → globe-BecpCHYI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-CsmmDlhN.js → grid-3x3-BrvzDFqU.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-CsmmDlhN.js.map → grid-3x3-BrvzDFqU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-D88EZgTY.js → hard-drive-B0cynodE.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-D88EZgTY.js.map → hard-drive-B0cynodE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-CZpNRWqt.js → hash-xOrTLxBg.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-CZpNRWqt.js.map → hash-xOrTLxBg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-DxN1mopa.js → history-BzXwj8RL.js} +2 -2
- package/ccw/frontend/dist/assets/{history-DxN1mopa.js.map → history-BzXwj8RL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C04xeBGC.js → index-B9aFbBPN.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C04xeBGC.js.map → index-B9aFbBPN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-BzGEkwIf.js → index-BNZGm_Ur.js} +2 -2
- package/ccw/frontend/dist/assets/{index-BzGEkwIf.js.map → index-BNZGm_Ur.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-bSgtHHOF.js → index-D3uMibtZ.js} +4 -4
- package/ccw/frontend/dist/assets/{index-bSgtHHOF.js.map → index-D3uMibtZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-BUiq2PUK.js → index-DflI9CwB.js} +2 -2
- package/ccw/frontend/dist/assets/{index-BUiq2PUK.js.map → index-DflI9CwB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CIoWWkDn.js → index-Dy0tUf1F.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CIoWWkDn.js.map → index-Dy0tUf1F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-DlcRFzFq.js → index-osmL8__2.js} +2 -2
- package/ccw/frontend/dist/assets/{index-DlcRFzFq.js.map → index-osmL8__2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-BZqfuNG0.js → layout-grid-CWFZqQWu.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-BZqfuNG0.js.map → layout-grid-CWFZqQWu.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-DqJ4OHRL.js → lightbulb-BRLgsWe3.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-DqJ4OHRL.js.map → lightbulb-BRLgsWe3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Bq7fLkC9.js → link-2-BpKdq14u.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Bq7fLkC9.js.map → link-2-BpKdq14u.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-dSLYjCIG.js → link-BxUCReDi.js} +2 -2
- package/ccw/frontend/dist/assets/{link-dSLYjCIG.js.map → link-BxUCReDi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-Bm_CnR56.js → list-Ce9EsAg8.js} +2 -2
- package/ccw/frontend/dist/assets/{list-Bm_CnR56.js.map → list-Ce9EsAg8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B5TELa0z.js → map-pin-CxzQV1hS.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B5TELa0z.js.map → map-pin-CxzQV1hS.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-B9sWItdK.js → messages-square-Dyodk79r.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-B9sWItdK.js.map → messages-square-Dyodk79r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-Z1MYs_Tp.js → minimize-2-s0009UK9.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-Z1MYs_Tp.js.map → minimize-2-s0009UK9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-EEv4N_Qk.js → package-C69biuJL.js} +2 -2
- package/ccw/frontend/dist/assets/{package-EEv4N_Qk.js.map → package-C69biuJL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-CEkvvYXh.js → plug-DERl-wQd.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-CEkvvYXh.js.map → plug-DERl-wQd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-B6Rod0u_.js → power-CdvaDgTh.js} +2 -2
- package/ccw/frontend/dist/assets/{power-B6Rod0u_.js.map → power-CdvaDgTh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-DULWrB2g.js → save-C_Uot2e4.js} +2 -2
- package/ccw/frontend/dist/assets/{save-DULWrB2g.js.map → save-C_Uot2e4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-C4z974WG.js → send-R1XtAXeP.js} +2 -2
- package/ccw/frontend/dist/assets/{send-C4z974WG.js.map → send-R1XtAXeP.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-CqEEw-V0.js → square-check-big-Cyqi4INj.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-CqEEw-V0.js.map → square-check-big-Cyqi4INj.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-D-4BrMtQ.js → square-pen-BmLNjUUw.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-D-4BrMtQ.js.map → square-pen-BmLNjUUw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-CDVVM69o.js → star-CakKtIYu.js} +2 -2
- package/ccw/frontend/dist/assets/{star-CDVVM69o.js.map → star-CakKtIYu.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-CumJ7XC8.js → style-DdNmehyz.js} +2 -2
- package/ccw/frontend/dist/assets/{style-CumJ7XC8.js.map → style-DdNmehyz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-Dr9SuV1Y.js → target-CUvfwM3S.js} +2 -2
- package/ccw/frontend/dist/assets/{target-Dr9SuV1Y.js.map → target-CUvfwM3S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-DzDRKk8F.js → test-tube-BVwrOGiZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-DzDRKk8F.js.map → test-tube-BVwrOGiZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-CihSmIM7.js → upload-CY1NwcDw.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-CihSmIM7.js.map → upload-CY1NwcDw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-CevxWX2z.js → useApiSettings-9JuzUfPE.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-CevxWX2z.js.map → useApiSettings-9JuzUfPE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-jVaF89uU.js → useCli-Bb7Zo-OI.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-jVaF89uU.js.map → useCli-Bb7Zo-OI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-D4uGmNpF.js → useCommands-BUu-hUYI.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-D4uGmNpF.js.map → useCommands-BUu-hUYI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-BEYmuZYP.js → useDebounce-CptXgLBn.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-BEYmuZYP.js.map → useDebounce-CptXgLBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-DEv0DVy7.js → useFileExplorer-B7dN8VT1.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-DEv0DVy7.js.map → useFileExplorer-B7dN8VT1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-BRJreqvl.js → useLocale-D6USNXOr.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-BRJreqvl.js.map → useLocale-D6USNXOr.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-lnfeXe9l.js → useSkills-r8yfiQ-u.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-lnfeXe9l.js.map → useSkills-r8yfiQ-u.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-PlxVdbXI.js → useSystemSettings-BVWDQLMy.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-PlxVdbXI.js.map → useSystemSettings-BVWDQLMy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-BbqUxeEg.js → wand-sparkles-Zdaej5bR.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-BbqUxeEg.js.map → wand-sparkles-Zdaej5bR.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{O as Pe,aF as te,a9 as xe,aa as ue,ab as ge,aH as se,cU as Os,cV as As,cW as dt,cX as mt,cY as xt,cZ as ut,c_ as Je,c$ as Ye,d0 as Ks,d1 as pt,d2 as ht,u as G,r as h,j as e,c as H,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 pe,I as X,aP as gt,B as I,G as cs,T as Me,a7 as Ie,d5 as zs,C as Z,d6 as qe,cy as Is,ap as os,S as be,aw as Qe,ao as Qs,bq as Ls,aU as Le,an as Ke,d7 as ft,d8 as Vs,d9 as jt,da as vt,db as Ze,dc as Xe,ck as Hs,b as Ae,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 qt,R as es,dk as Ot,dl as At,dm as Kt,dn as zt,dp as It}from"./index-
|
|
1
|
+
import{O as Pe,aF as te,a9 as xe,aa as ue,ab as ge,aH as se,cU as Os,cV as As,cW as dt,cX as mt,cY as xt,cZ as ut,c_ as Je,c$ as Ye,d0 as Ks,d1 as pt,d2 as ht,u as G,r as h,j as e,c as H,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 pe,I as X,aP as gt,B as I,G as cs,T as Me,a7 as Ie,d5 as zs,C as Z,d6 as qe,cy as Is,ap as os,S as be,aw as Qe,ao as Qs,bq as Ls,aU as Le,an as Ke,d7 as ft,d8 as Vs,d9 as jt,da as vt,db as Ze,dc as Xe,ck as Hs,b as Ae,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 qt,R as es,dk as Ot,dl as At,dm as Kt,dn as zt,dp as It}from"./index-D3uMibtZ.js";import{A as is,a as ds,b as ms,c as xs,d as us,e as ps,f as hs,g as gs,h as Qt}from"./AlertDialog-BMFUcfv_.js";import{G as fe}from"./globe-BecpCHYI.js";import{E as fs}from"./eye-off-BWntEdln.js";import{E as js}from"./eye-BwniwXnu.js";import{L as Ps,C as Lt}from"./CliModeToggle-MDoFAJPL.js";import{L as Ws}from"./link-BxUCReDi.js";import{P as ke,a as ss}from"./power-CdvaDgTh.js";import{F as Vt}from"./FloatingFileBrowser-Bf4iqOSd.js";import{F as ye}from"./folder-jX77-MUi.js";import{H as Ht}from"./hard-drive-B0cynodE.js";import{S as _t}from"./save-C_Uot2e4.js";import{M as $t}from"./messages-square-Dyodk79r.js";import{F as Rt}from"./file-text-DsqI3R_g.js";import{F as Wt}from"./filter-CQMcD8RT.js";import{A as Ut}from"./arrow-right-ChKhpVhq.js";import{f as Bt}from"./formatDistanceToNow-DXTjigy3.js";import{T as Gt}from"./TabsNavigation-CU50UxOb.js";import{B as Jt}from"./bookmark-plus-X-JcgObI.js";import{S as Yt}from"./square-pen-BmLNjUUw.js";import"./cpu-Dc8IS79i.js";import"./FloatingPanel-CJbvABPb.js";import"./useFileExplorer-B7dN8VT1.js";/**
|
|
2
2
|
* @license lucide-react v0.460.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -47,4 +47,4 @@ import{O as Pe,aF as te,a9 as xe,aa as ue,ab as ge,aH as se,cU as Os,cV as As,cW
|
|
|
47
47
|
`)),[T,F]=h.useState({});h.useEffect(()=>{s&&(d(o||""),m(""),y(""),b(c||""),k((n||[]).join(", ")),M(Object.entries(w||{}).map(([x,E])=>`${x}=${E}`).join(`
|
|
48
48
|
`)),F({}))},[s,o,c,n,w]);const r=()=>{const x={};if(f.trim()||(x.name=p({id:"mcp.templates.saveDialog.validation.nameRequired"})),u.trim()||(x.command=p({id:"mcp.dialog.validation.commandRequired"})),Object.keys(x).length>0){F(x);return}const E=v.split(",").map(V=>V.trim()).filter(V=>V.length>0),O={};for(const V of j.split(`
|
|
49
49
|
`)){const $=V.trim();if($&&$.includes("=")){const[W,...J]=$.split("=");W&&(O[W.trim()]=J.join("=").trim())}}a(f.trim(),S.trim(),g.trim(),{command:u.trim(),args:E,env:O})};return e.jsx(ts,{open:s,onOpenChange:t,children:e.jsxs(as,{className:"max-w-md max-h-[85vh] overflow-y-auto",children:[e.jsx(ns,{children:e.jsx(rs,{children:p({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:[p({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&&F(E=>({...E,name:void 0}))},placeholder:p({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:[p({id:"mcp.dialog.form.command"}),e.jsx("span",{className:"text-destructive ml-1",children:"*"})]}),e.jsx(X,{value:u,onChange:x=>{b(x.target.value),T.command&&F(E=>({...E,command:void 0}))},placeholder:p({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:p({id:"mcp.dialog.form.args"})}),e.jsx(X,{value:v,onChange:x=>k(x.target.value),placeholder:p({id:"mcp.dialog.form.argsPlaceholder"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:p({id:"mcp.dialog.form.argsHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:p({id:"mcp.dialog.form.env"})}),e.jsx("textarea",{value:j,onChange:x=>M(x.target.value),placeholder:p({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:p({id:"mcp.templates.saveDialog.category"})}),e.jsxs(He,{value:S,onValueChange:m,children:[e.jsx(_e,{className:"w-full",children:e.jsx($e,{placeholder:p({id:"mcp.templates.saveDialog.categoryPlaceholder"})})}),e.jsxs(Re,{children:[e.jsx(pe,{value:"stdio",children:"STDIO"}),e.jsx(pe,{value:"sse",children:"SSE"}),e.jsx(pe,{value:"language",children:"Language"}),e.jsx(pe,{value:"official",children:"Official"}),e.jsx(pe,{value:"custom",children:"Custom"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:p({id:"mcp.templates.saveDialog.description"})}),e.jsx("textarea",{value:g,onChange:x=>y(x.target.value),placeholder:p({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:t,children:p({id:"mcp.templates.saveDialog.cancel"})}),e.jsx(D,{onClick:r,children:p({id:"mcp.templates.saveDialog.save"})})]})]})})}function ba({onInstallTemplate:s,onSaveAsTemplate:t}){const{formatMessage:a}=G(),[o,c]=h.useState(""),[n,w]=h.useState(""),[p,f]=h.useState("all"),[d,S]=h.useState(!1),[m,g]=h.useState(!1),[y,u]=h.useState(null),{data:b=[],isLoading:v}=ge({queryKey:he.categories(),queryFn:Nt,staleTime:600*1e3}),k=ia(),j=da();h.useEffect(()=>{const O=setTimeout(()=>{w(o)},ya);return()=>clearTimeout(O)},[o]);const{data:M=[],isLoading:T}=ge({queryKey:he.list(p==="all"?void 0:p),queryFn:async()=>{if(n.trim())return bt(n.trim());if(p==="all"){const O=[];for(const V of b){const $=await ks(V);O.push(...$)}return O}else return ks(p)},staleTime:300*1e3,enabled:!v}),F=h.useCallback(O=>{s==null||s(O)},[s]),r=h.useCallback(O=>{u(O),g(!0)},[]),x=h.useCallback(async()=>{if(!y)return;(await k.deleteTemplate(y)).success&&(g(!1),u(null))},[y,k]),E=h.useCallback((O,V,$,W)=>{t==null||t(O,V,$,W),S(!1)},[t]);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(Ae,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(X,{value:o,onChange:O=>c(O.target.value),placeholder:a({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:p,onValueChange:f,children:[e.jsx(_e,{className:"w-[150px]",children:e.jsx($e,{})}),e.jsxs(Re,{children:[e.jsx(pe,{value:"all",children:a({id:"mcp.templates.filter.allCategories"})}),b.map(O=>e.jsx(pe,{value:O,children:O},O))]})]})]})]}),e.jsxs(D,{variant:"outline",size:"sm",onClick:()=>S(!0),children:[e.jsx(Ie,{className:"w-4 h-4 mr-1"}),a({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:a({id:"mcp.templates.loading"})})}):M.length===0?e.jsxs(Z,{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:a({id:"mcp.templates.empty.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a({id:"mcp.templates.empty.message"})}),e.jsxs(D,{onClick:()=>S(!0),children:[e.jsx(Ie,{className:"w-4 h-4 mr-1"}),a({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(Na,{template:O,onInstall:F,onDelete:r,isInstalling:j.isInstalling,isDeleting:k.isDeleting},O.name))}),e.jsx(Zs,{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:a({id:"mcp.templates.deleteDialog.title"})}),e.jsx(us,{children:a({id:"mcp.templates.deleteDialog.message"},{name:y})})]}),e.jsxs(ps,{children:[e.jsx(hs,{children:a({id:"mcp.templates.deleteDialog.cancel"})}),e.jsx(gs,{onClick:x,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:k.isDeleting?a({id:"mcp.templates.deleteDialog.deleting"}):a({id:"mcp.templates.deleteDialog.delete"})})]})]})})]})}const wa={"search-code":Ae,chrome:fe,"globe-2":_s,"code-2":be};function Ca({open:s,onClose:t,mcpDefinition:a,onInstallComplete:o}){const{formatMessage:c}=G(),n=te(),{success:w,error:p}=Ve(),f=xe(ue),[d,S]=h.useState({}),[m,g]=h.useState("global"),y=()=>{if(!a)return;const r={};for(const x of a.fields)x.default!==void 0?r[x.key]=x.default:x.type==="multi-select"?r[x.key]=[]:r[x.key]="";S(r)},u=r=>{r&&a?y():(S({}),t())},b=se({mutationFn:async()=>{if(!a)throw new Error("No MCP definition");const r=a.buildConfig(d);if(m==="global")return wt(a.id,r);if(!f)throw new Error("Project path is required to install to project scope");return Ct(a.id,r,f)},onSuccess:r=>{r.success?(n.invalidateQueries({queryKey:B.all}),w(c({id:"mcp.wizard.installSuccess"}),c({id:a.nameKey})),u(!1),o==null||o()):p(c({id:"mcp.wizard.installError"}),r.error||"Unknown error")},onError:r=>{p(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(!a)return!1;for(const r of a.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()){p(c({id:"mcp.wizard.validation"}),c({id:"mcp.wizard.requiredFields"}));return}b.mutate()};if(!a)return null;const T=a.fields.length>0,F=wa[a.icon]||be;return e.jsx(ts,{open:s,onOpenChange:u,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(F,{className:"w-5 h-5 text-primary"})}),e.jsxs("div",{children:[e.jsxs(rs,{children:[c({id:"mcp.wizard.install"})," ",c({id:a.nameKey})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c({id:a.descKey})})]})]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[T&&e.jsx("div",{className:"space-y-3",children:a.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:H("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:()=>u(!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 Sa=typeof navigator<"u"&&((qs=navigator.platform)==null?void 0:qs.toLowerCase().includes("win"));function Ge(s,t=[],a={}){const{env:o,type:c}=a,p=Sa&&["npx","npm","node","python","python3","pip","pip3","pnpm","yarn","bun"].includes(s.toLowerCase())?{command:"cmd",args:["/c",s,...t]}:{command:s,args:t};return c&&(p.type=c),o&&Object.keys(o).length>0&&(p.env=o),p}const ka=[{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 t=s.apiKey?{EXA_API_KEY:s.apiKey}:void 0;return Ge("npx",["-y","exa-mcp-server"],{env:t})}}],Ta={"search-code":Ae,chrome:fe,"globe-2":_s,"code-2":kt};function Ma({definition:s,isInstalled:t,onInstall:a}){const{formatMessage:o}=G(),c=Ta[s.icon]||be,n=s.fields.length>0;return e.jsx(Z,{className:"p-4 hover:shadow-md transition-shadow",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:H("p-2.5 rounded-lg",t?"bg-primary/20":"bg-muted"),children:e.jsx(c,{className:H("w-5 h-5",t?"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:o({id:s.nameKey})}),t&&e.jsx(I,{variant:"default",className:"text-xs",children:o({id:"mcp.recommended.actions.installed"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground line-clamp-2 mb-3",children:o({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," ",o({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"}),o({id:"mcp.noConfigNeeded"})]}),e.jsx(D,{variant:t?"outline":"default",size:"sm",onClick:()=>a(s),children:t?e.jsxs(e.Fragment,{children:[e.jsx(be,{className:"w-3.5 h-3.5 mr-1"}),o({id:"mcp.reconfigure"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ke,{className:"w-3.5 h-3.5 mr-1"}),o({id:"mcp.recommended.actions.install"})]})})]})]})]})})}function Pa({onInstallComplete:s}){const{formatMessage:t}=G(),[a,o]=h.useState(!1),[c,n]=h.useState(null),[w,p]=h.useState(new Set),f=async()=>{var g;try{const y=await St(),u=new Set,b=y.globalServers||{},v=y.userServers||{};for(const j of Object.keys(b))u.add(j);for(const j of Object.keys(v))u.add(j);const k=y.projects||{};for(const j of Object.values(k)){const M=j.mcpServers||{};for(const T of Object.keys(M))u.add(T)}if((g=y.codex)!=null&&g.servers)for(const j of Object.keys(y.codex.servers))u.add(j);p(u)}catch{}};h.useEffect(()=>{f()},[]);const d=g=>{n(g),o(!0)},S=()=>{o(!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:t({id:"mcp.recommended.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t({id:"mcp.recommended.description"})})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:ka.map(g=>e.jsx(Ma,{definition:g,isInstalled:w.has(g.id),onInstall:d},g.id))})]}),e.jsx(Ca,{open:a,onClose:S,mcpDefinition:c,onInstallComplete:m})]})}const Fa=[{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 Ea(s){return Fa.some(t=>t.name===s)}async function Da(s){const t=await fetch("/api/mcp/detect-commands",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:s})});if(!t.ok)throw new Error("Failed to detect commands");return t.json()}async function qa(s){const t=await fetch("/api/mcp/apply-windows-fix",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectPath:s})});if(!t.ok)throw new Error("Failed to apply Windows fix");return t.json()}function Oa({commands:s}){const{formatMessage:t}=G();return e.jsx("div",{className:"space-y-2 mt-3",children:s.map(a=>e.jsxs("div",{className:H("flex items-center gap-2 text-sm p-2 rounded-md",a.available?"bg-success/10":"bg-destructive/10"),children:[a.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:a.command}),!a.available&&a.installUrl&&e.jsxs("a",{href:a.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"}),t({id:"mcp.windows.install"})]})]},a.command))})}function Aa({projectPath:s,onComplete:t}){const{formatMessage:a}=G(),o=te(),[c,n]=h.useState(null),[w,p]=h.useState(!1),[f,d]=h.useState(!1),S=typeof window<"u"&&window.navigator.platform.toLowerCase().includes("win"),m=se({mutationFn:()=>qa(s),onSuccess:()=>{o.invalidateQueries({queryKey:["mcpServers"]}),t&&c&&t({...c,canAutoFix:!1})}});if(h.useEffect(()=>{if(!S||f)return;(async()=>{p(!0);try{const b=await Da(s),v=b.filter(M=>!M.available).map(M=>M.command),k=v.length>0&&v.every(Ea),j={isWindows:!0,missingCommands:v,commands:b,canAutoFix:k};n(j),t&&t(j)}catch(b){console.error("Failed to check Windows compatibility:",b)}finally{p(!1)}})()},[S,f,s,t]),!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(Qe,{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:a({id:"mcp.windows.title"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:a({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(I,{variant:"warning",className:"text-xs",children:a({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"}),a({id:"mcp.windows.fixing"})]}):e.jsxs(e.Fragment,{children:[e.jsx($s,{className:"w-3 h-3 mr-1"}),a({id:"mcp.windows.autoFix"})]})}),e.jsx("span",{className:"text-xs text-muted-foreground",children:a({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"}),a({id:"mcp.windows.checking"})]})]})]})})}function Ka({onSuccess:s,className:t}){const{formatMessage:a}=G(),o=xe(ue),{servers:c}=Us(),[n,w]=h.useState(new Set),[p,f]=h.useState([]),[d,S]=h.useState(new Set),[m,g]=h.useState(!1),[y,u]=h.useState(null),[b,v]=h.useState(!1),[k,j]=h.useState({type:null,copied:0,failed:0});h.useEffect(()=>{(async()=>{g(!0),u(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),u(a({id:"mcp.sync.codexLoadError"})),f([])}finally{g(!1)}})()},[a]);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)))},F=()=>{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=p.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:o??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||!o)){v(!0),j({type:null,copied:0,failed:0});try{const N=await Je({source:"codex",target:"claude",serverNames:Array.from(d),projectPath:o});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(re=>re.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=p.length,U=d.size;return e.jsxs("div",{className:H("space-y-4",t),children:[e.jsxs("div",{className:"text-center",children:[e.jsx("h3",{className:"text-base font-semibold text-foreground",children:a({id:"mcp.sync.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:a({id:"mcp.sync.description"})})]}),k.type!==null&&e.jsxs("div",{className:H("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"?a({id:"mcp.sync.copySuccess"},{count:k.copied}):a({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:a({id:"mcp.sync.claudeColumn"})}),e.jsx(I,{variant:"outline",className:"text-xs",children:a({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:a({id:"mcp.sync.noServers"})}):e.jsx("div",{className:"space-y-1",children:c.map(N=>e.jsxs("div",{className:H("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(I,{variant:"success",className:"text-xs",children:a({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:a({id:"mcp.sync.selectAll"})}),e.jsx(D,{variant:"ghost",size:"sm",onClick:F,className:"flex-1 text-xs",disabled:W===0,children:a({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:a({id:"mcp.sync.codexColumn"})}),e.jsx(I,{variant:"outline",className:"text-xs",children:a({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:a({id:"mcp.sync.noServers"})}):e.jsx("div",{className:"space-y-1",children:p.map(N=>e.jsxs("div",{className:H("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(I,{variant:"success",className:"text-xs",children:a({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:a({id:"mcp.sync.selectAll"})}),e.jsx(D,{variant:"ghost",size:"sm",onClick:E,className:"flex-1 text-xs",disabled:U===0,children:a({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"}),a({id:"mcp.sync.syncInProgress"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ut,{className:"w-4 h-4 mr-2"}),a({id:"mcp.sync.copyToCodex"},{count:W})]})}),e.jsx(D,{onClick:V,disabled:U===0||b||!o,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"}),a({id:"mcp.sync.syncInProgress"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Et,{className:"w-4 h-4 mr-2"}),a({id:"mcp.sync.copyFromCodex"},{count:U})]})})]})]})}function za({onProjectClick:s,onOpenNewWindow:t,className:a,maxProjects:o,projectPaths:c}){const{formatMessage:n}=G(),[w,p]=h.useState("lastModified"),[f,d]=h.useState("desc"),[S,m]=h.useState([]),[g,y]=h.useState(!1),{projects:u,currentProject:b,isLoading:v}=Gs(),k=h.useMemo(()=>{const r=c??u;return o?r.slice(0,o):r},[c,u,o]);h.useEffect(()=>{(async()=>{if(k.length===0){m([]);return}y(!0);try{const x=await Ye(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"):(p(r),d("desc"))},T=r=>{s==null||s(r)},F=(r,x)=>{r.stopPropagation(),t==null||t(x)};return v||g?e.jsx(Z,{className:H("p-8",a),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(Z,{className:H("p-8",a),children:e.jsxs("div",{className:"text-center",children:[e.jsx(ye,{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(Z,{className:H("overflow-hidden",a),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:H("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(ye,{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(I,{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(I,{variant:"outline",className:H("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=>F(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 Ia({onImportSuccess:s,className:t}){const{formatMessage:a}=G(),[o,c]=h.useState(null),[n,w]=h.useState([]),[p,f]=h.useState(!1),{projects:d,currentProject:S,fetchOtherServers:m,isFetchingServers:g}=Gs(),{createServer:y,isCreating:u}=Bs(),b=d.filter(T=>T!==S),v=async T=>{c(T),f(!0);try{const F=await m([T]),r=[];for(const[x,E]of Object.entries(F.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(F){console.error("Failed to fetch other projects servers:",F),w([])}finally{f(!1)}},k=async T=>{try{const F=`${T.projectName}-${T.name}`.toLowerCase().replace(/\s+/g,"-"),r={...T.originalServer,name:F,scope:"project"};await y(r),s==null||s(F,T.projectPath)}catch(F){console.error("Failed to import server:",F)}},j=p||g||u,M=o?o.split(/[/\\]/).filter(Boolean).pop():null;return e.jsxs(Z,{className:H("p-4",t),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:a({id:"mcp.otherProjects.title"})})]}),e.jsx(D,{variant:"ghost",size:"sm",onClick:()=>o&&v(o),disabled:!o||j,className:"h-8",children:e.jsx(es,{className:H("w-4 h-4",j&&"animate-spin")})})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:a({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:a({id:"mcp.otherProjects.selectProject"})}),e.jsxs(He,{value:o??"",onValueChange:v,children:[e.jsx(_e,{className:"w-full",children:e.jsx($e,{placeholder:a({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:a({id:"mcp.otherProjects.noProjects"})}):b.map(T=>{const F=T.split(/[/\\]/).filter(Boolean).pop()||T;return e.jsx(pe,{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:F})]})},T)})})]})]}),o&&e.jsx("div",{className:"space-y-2",children:p?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:a({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:a({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(I,{variant:"success",className:"text-xs",children:a({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(Qs,{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:u,className:"flex-shrink-0",children:[e.jsx(ls,{className:"w-4 h-4 mr-1"}),a({id:"mcp.otherProjects.import"})]})]},`${T.projectPath}-${T.name}`))})}),o&&n.length>0&&e.jsx("p",{className:"text-xs text-muted-foreground mt-3",children:a({id:"mcp.otherProjects.hint"})})]})}function Qa(s){return!s||s.length<=4?"****":s.substring(0,4)+"****"}function La({server:s,isExpanded:t,onToggleExpand:a,onToggle:o,onEdit:c,onDelete:n,onSaveAsTemplate:w,conflictInfo:p}){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()},u=()=>{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(Z,{className:H("overflow-hidden",!s.enabled&&"opacity-60"),children:[e.jsx("div",{className:"p-4 cursor-pointer hover:bg-muted/50 transition-colors",onClick:a,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:H("p-2 rounded-lg",s.enabled?"bg-primary/10":"bg-muted"),children:e.jsx(qe,{className:H("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(I,{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(I,{variant:s.scope==="global"?"default":"secondary",className:"text-xs",children:s.scope==="global"?e.jsxs(e.Fragment,{children:[e.jsx(fe,{className:"w-3 h-3 mr-1"}),f({id:"mcp.scope.global"})]}):e.jsxs(e.Fragment,{children:[e.jsx(ye,{className:"w-3 h-3 mr-1"}),f({id:"mcp.scope.project"})]})}),p&&e.jsxs(I,{variant:"outline",className:"text-xs text-orange-500 border-orange-300",children:[e.jsx(Qe,{className:"w-3 h-3 mr-1"}),f({id:"mcp.conflict.badge"})]}),s.enabled&&e.jsx(I,{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(),o(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(Yt,{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"})}),t?e.jsx(Is,{className:"w-5 h-5 text-muted-foreground"}):e.jsx(os,{className:"w-5 h-5 text-muted-foreground"})]})]})}),t&&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})]}),u().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:u().map(v=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(I,{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(I,{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(I,{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(I,{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))})]})]}),p&&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(Qe,{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.${p.effectiveScope}`})})}),e.jsx("p",{className:"text-xs text-orange-600 dark:text-orange-400/80",children:f({id:"mcp.conflict.resolution"})})]})]})]})}function mn(){var Cs,Ss;const{formatMessage:s}=G(),[t,a]=h.useState("servers"),[o,c]=h.useState(""),[n,w]=h.useState("all"),[p,f]=h.useState(new Set),[d,S]=h.useState(!1),[m,g]=h.useState(void 0),[y,u]=h.useState("claude"),[b,v]=h.useState(new Set),[k,j]=h.useState(!1),[M,T]=h.useState(void 0),F=te(),r=Ve(),{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=ge({queryKey:["codexMcpServers"],queryFn:Rs,enabled:y==="codex",staleTime:120*1e3}),A=xe(ue),re=ge({queryKey:["ccwMcpConfig",A],queryFn:()=>zt(A??void 0),enabled:y==="claude",staleTime:300*1e3}),oe=ge({queryKey:["ccwMcpConfigCodex"],queryFn:It,enabled:y==="codex",staleTime:300*1e3}),{toggleServer:we,deleteServer:je}=Bs(),Fe=i=>{f(C=>{const Q=new Set(C);return Q.has(i)?Q.delete(i):Q.add(i),Q})},le=i=>{v(C=>{const Q=new Set(C);return Q.has(i)?Q.delete(i):Q.add(i),Q})},ve=(i,C)=>{we(i,C)},q=async i=>{if(confirm(s({id:"mcp.deleteConfirm"},{name:i.name})))try{await je(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))}},ae=i=>{g(i),S(!0)},Ce=()=>{g(void 0),S(!0)},Ee=()=>{S(!1),g(void 0)},We=()=>{S(!1),g(void 0),N()},Ue=i=>{u(i)},ne=re.data??{isInstalled:!1,enabledTools:[],projectRoot:void 0,allowedDirs:void 0,enableSandbox:void 0,installedScopes:[]},l=["ccwMcpConfig",A],P=async(i,C)=>{const Q=F.getQueryData(l)??ne,z=Q.enabledTools,Y=F.getQueryData(l),ie=C?z.includes(i)?z:[...z,i]:z.filter(R=>R!==i);F.setQueryData(l,R=>R&&{...R,enabledTools:ie});try{await Xe({...Q,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),F.setQueryData(l,Y)}re.refetch()},K=async i=>{const C=F.getQueryData(l);F.setQueryData(l,z=>z&&{...z,...i});const Q=F.getQueryData(l)??ne;try{await Xe({enabledTools:Q.enabledTools,projectRoot:Q.projectRoot,allowedDirs:Q.allowedDirs,enableSandbox:Q.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),F.setQueryData(l,C)}re.refetch()},_=()=>{re.refetch()},ce=h.useMemo(()=>{const i=new Map;for(const C of V)i.set(C.name,C);return i},[V]),Se=async i=>{try{await Vs(i,i==="project"?A??void 0:void 0),re.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)}},De=async i=>{try{await Ot(i,i==="project"?A??void 0:void 0),re.refetch(),F.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)}},ee=oe.data??{isInstalled:!1,enabledTools:[],projectRoot:void 0,allowedDirs:void 0,enableSandbox:void 0,installedScopes:[]},Ne=async(i,C)=>{const Q=F.getQueryData(["ccwMcpConfigCodex"])??ee,z=Q.enabledTools,Y=F.getQueryData(["ccwMcpConfigCodex"]),ie=C?z.includes(i)?z:[...z,i]:z.filter(R=>R!==i);F.setQueryData(["ccwMcpConfigCodex"],R=>R&&{...R,enabledTools:ie});try{await Ze({...Q,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),F.setQueryData(["ccwMcpConfigCodex"],Y)}oe.refetch()},Be=async i=>{const C=F.getQueryData(["ccwMcpConfigCodex"])??ee,Q=F.getQueryData(["ccwMcpConfigCodex"]);F.setQueryData(["ccwMcpConfigCodex"],z=>z&&{...z,...i});try{await Ze({...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),F.setQueryData(["ccwMcpConfigCodex"],Q)}oe.refetch()},Xs=()=>{oe.refetch()},et=i=>{const C=(i==null?void 0:i.serverConfig)??{},Q=C.type==="http"||C.transport==="http"||typeof C.url=="string";g(Q?{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,Q,z)=>{try{const Y=await zs({name:i,description:Q||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}});Y.success?(r.success(s({id:"mcp.templates.feedback.saveSuccess"}),i),j(!1),T(void 0)):r.error(s({id:"mcp.templates.feedback.saveError"}),Y.error||"")}catch(Y){r.error(s({id:"mcp.templates.feedback.saveError"}),Y instanceof Error?Y.message:String(Y))}},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(Q){r.error(s({id:"mcp.actions.toggle.error"}),Q instanceof Error?Q.message:String(Q)),console.error("Failed to toggle Codex MCP server:",Q)}},nt=x.filter(i=>{var Y,ie;const C=o.toLowerCase(),Q=i.name.toLowerCase().includes(C),z=de(i)?(Y=i.url)==null?void 0:Y.toLowerCase().includes(C):(ie=i.command)==null?void 0:ie.toLowerCase().includes(C);return Q||z}),rt=((Cs=L.data)==null?void 0:Cs.servers)??[],ct=((Ss=L.data)==null?void 0:Ss.configPath)??"",ot=rt.filter(i=>{var Y,ie;const C=o.toLowerCase(),Q=i.name.toLowerCase().includes(C),z=de(i)?(Y=i.url)==null?void 0:Y.toLowerCase().includes(C):(ie=i.command)==null?void 0:ie.toLowerCase().includes(C);return Q||z}),ys=y==="codex"?ot:nt,Ns=y==="codex"?b:p,bs=y==="codex"?le:Fe,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(qe,{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:H("w-4 h-4 mr-2",ws&&"animate-spin")}),s({id:"common.actions.refresh"})]}),y==="claude"&&e.jsxs(D,{onClick:Ce,children:[e.jsx(Ie,{className:"w-4 h-4 mr-2"}),s({id:"mcp.actions.add"})]})]})]}),e.jsx(Gt,{value:t,onValueChange:i=>a(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"})}]}),t==="templates"&&e.jsxs("div",{className:"mt-4 space-y-4",children:[e.jsx(Pa,{onInstallComplete:()=>N()}),e.jsx(ba,{onInstallTemplate:et,onSaveAsTemplate:vs})]}),t==="servers"&&e.jsxs("div",{className:"mt-4 space-y-4",children:[e.jsx(Aa,{}),y==="claude"&&e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsxs(Z,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(qe,{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(Z,{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(Z,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(fe,{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(Z,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ye,{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(Ae,{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:o,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(fe,{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(ye,{className:"w-4 h-4 mr-1"}),s({id:"mcp.scope.project"})]})]})]}),y==="codex"&&e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Ae,{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:o,onChange:i=>c(i.target.value),className:"pl-9"})]}),y==="claude"&&e.jsx(Ds,{isInstalled:ne.isInstalled,enabledTools:ne.enabledTools,projectRoot:ne.projectRoot,allowedDirs:ne.allowedDirs,enableSandbox:ne.enableSandbox,onToggleTool:P,onUpdateConfig:K,onInstall:_,installedScopes:ne.installedScopes,onInstallToScope:Se,onUninstallScope:De}),y==="codex"&&e.jsx(Ds,{target:"codex",isInstalled:ee.isInstalled,enabledTools:ee.enabledTools,projectRoot:ee.projectRoot,allowedDirs:ee.allowedDirs,enableSandbox:ee.enableSandbox,onToggleTool:Ne,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(Z,{className:"p-8 text-center",children:[e.jsx(qe,{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(ja,{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(La,{server:i,isExpanded:Ns.has(`${i.name}-${i.scope}`),onToggleExpand:()=>bs(`${i.name}-${i.scope}`),onToggle:ve,onEdit:ae,onDelete:q,onSaveAsTemplate:st,conflictInfo:ce.get(i.name)},`${i.name}-${i.scope}`))})]}),t==="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(Z,{className:"p-4",children:e.jsx(Ka,{onSuccess:()=>N()})})]}),e.jsxs("section",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(ye,{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(za,{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(fe,{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(Ia,{onImportSuccess:(i,C)=>{console.log("Imported server:",i,"from:",C),N()}})]})]}),y==="claude"&&e.jsx(ga,{mode:m?"edit":"add",server:m,open:d,onClose:Ee,onSave:We}),e.jsx(Zs,{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{mn as McpManagerPage,mn as default};
|
|
50
|
-
//# sourceMappingURL=McpManagerPage-
|
|
50
|
+
//# sourceMappingURL=McpManagerPage-Bld27yu4.js.map
|