claude-mpm 5.1.9__py3-none-any.whl → 5.4.48__py3-none-any.whl

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.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

Files changed (248) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/BASE_AGENT.md +164 -0
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +1 -1
  5. claude_mpm/agents/MEMORY.md +1 -1
  6. claude_mpm/agents/PM_INSTRUCTIONS.md +843 -900
  7. claude_mpm/agents/WORKFLOW.md +5 -254
  8. claude_mpm/agents/agent_loader.py +13 -44
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/frontmatter_validator.py +2 -2
  11. claude_mpm/agents/templates/circuit-breakers.md +138 -1
  12. claude_mpm/cli/__main__.py +4 -0
  13. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  14. claude_mpm/cli/commands/agent_state_manager.py +18 -27
  15. claude_mpm/cli/commands/agents.py +9 -40
  16. claude_mpm/cli/commands/auto_configure.py +210 -25
  17. claude_mpm/cli/commands/config.py +88 -2
  18. claude_mpm/cli/commands/configure.py +1098 -159
  19. claude_mpm/cli/commands/configure_agent_display.py +25 -6
  20. claude_mpm/cli/commands/mpm_init/core.py +225 -46
  21. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  22. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  23. claude_mpm/cli/commands/postmortem.py +1 -1
  24. claude_mpm/cli/commands/profile.py +277 -0
  25. claude_mpm/cli/commands/skills.py +218 -197
  26. claude_mpm/cli/commands/summarize.py +413 -0
  27. claude_mpm/cli/executor.py +21 -3
  28. claude_mpm/cli/interactive/agent_wizard.py +2 -2
  29. claude_mpm/cli/parsers/agents_parser.py +0 -9
  30. claude_mpm/cli/parsers/auto_configure_parser.py +0 -138
  31. claude_mpm/cli/parsers/base_parser.py +12 -0
  32. claude_mpm/cli/parsers/config_parser.py +153 -83
  33. claude_mpm/cli/parsers/profile_parser.py +148 -0
  34. claude_mpm/cli/parsers/skills_parser.py +0 -5
  35. claude_mpm/cli/startup.py +876 -149
  36. claude_mpm/commands/mpm-config.md +28 -0
  37. claude_mpm/commands/mpm-doctor.md +9 -22
  38. claude_mpm/commands/mpm-help.md +5 -287
  39. claude_mpm/commands/mpm-init.md +81 -507
  40. claude_mpm/commands/mpm-monitor.md +15 -402
  41. claude_mpm/commands/mpm-organize.md +120 -0
  42. claude_mpm/commands/mpm-postmortem.md +6 -108
  43. claude_mpm/commands/mpm-session-resume.md +12 -363
  44. claude_mpm/commands/mpm-status.md +5 -69
  45. claude_mpm/commands/mpm-ticket-view.md +52 -495
  46. claude_mpm/commands/mpm-version.md +5 -107
  47. claude_mpm/config/agent_sources.py +27 -0
  48. claude_mpm/core/config.py +2 -4
  49. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  50. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  51. claude_mpm/core/framework/loaders/instruction_loader.py +52 -11
  52. claude_mpm/core/framework_loader.py +4 -2
  53. claude_mpm/core/logger.py +13 -0
  54. claude_mpm/core/optimized_startup.py +59 -0
  55. claude_mpm/core/shared/config_loader.py +1 -1
  56. claude_mpm/core/socketio_pool.py +3 -3
  57. claude_mpm/core/unified_agent_registry.py +5 -15
  58. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  59. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  60. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  61. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  62. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  63. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  64. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  65. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  66. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  67. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  68. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  69. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  70. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  71. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  72. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  73. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  74. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  75. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  76. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  77. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  78. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  79. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  80. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  81. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  82. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  83. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  84. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  85. claude_mpm/hooks/claude_hooks/event_handlers.py +211 -78
  86. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  87. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  88. claude_mpm/hooks/claude_hooks/memory_integration.py +26 -9
  89. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  90. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  91. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  92. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  93. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  94. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  95. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  96. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  97. claude_mpm/hooks/kuzu_memory_hook.py +5 -5
  98. claude_mpm/hooks/memory_integration_hook.py +46 -1
  99. claude_mpm/init.py +63 -19
  100. claude_mpm/models/git_repository.py +3 -3
  101. claude_mpm/scripts/claude-hook-handler.sh +58 -18
  102. claude_mpm/scripts/launch_monitor.py +93 -13
  103. claude_mpm/services/agents/agent_builder.py +3 -3
  104. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  105. claude_mpm/services/agents/agent_review_service.py +280 -0
  106. claude_mpm/services/agents/cache_git_manager.py +6 -6
  107. claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
  108. claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -5
  109. claude_mpm/services/agents/deployment/agent_format_converter.py +23 -13
  110. claude_mpm/services/agents/deployment/agent_template_builder.py +32 -20
  111. claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
  112. claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
  113. claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
  114. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +247 -35
  115. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +392 -87
  116. claude_mpm/services/agents/git_source_manager.py +53 -4
  117. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  118. claude_mpm/services/agents/recommender.py +5 -3
  119. claude_mpm/services/agents/single_tier_deployment_service.py +2 -2
  120. claude_mpm/services/agents/sources/git_source_sync_service.py +120 -7
  121. claude_mpm/services/agents/startup_sync.py +22 -2
  122. claude_mpm/services/agents/toolchain_detector.py +10 -6
  123. claude_mpm/services/analysis/__init__.py +11 -1
  124. claude_mpm/services/analysis/clone_detector.py +1030 -0
  125. claude_mpm/services/command_deployment_service.py +81 -10
  126. claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
  127. claude_mpm/services/diagnostics/checks/agent_sources_check.py +1 -1
  128. claude_mpm/services/event_bus/config.py +3 -1
  129. claude_mpm/services/git/git_operations_service.py +101 -16
  130. claude_mpm/services/monitor/daemon.py +9 -2
  131. claude_mpm/services/monitor/daemon_manager.py +39 -3
  132. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  133. claude_mpm/services/monitor/server.py +698 -22
  134. claude_mpm/services/pm_skills_deployer.py +711 -0
  135. claude_mpm/services/profile_manager.py +331 -0
  136. claude_mpm/services/self_upgrade_service.py +120 -12
  137. claude_mpm/services/skills/__init__.py +3 -0
  138. claude_mpm/services/skills/git_skill_source_manager.py +130 -2
  139. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  140. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  141. claude_mpm/services/skills_deployer.py +127 -9
  142. claude_mpm/services/socketio/dashboard_server.py +1 -0
  143. claude_mpm/services/socketio/event_normalizer.py +51 -6
  144. claude_mpm/services/socketio/server/core.py +386 -108
  145. claude_mpm/services/version_control/git_operations.py +103 -0
  146. claude_mpm/skills/skill_manager.py +92 -3
  147. claude_mpm/utils/agent_dependency_loader.py +14 -2
  148. claude_mpm/utils/agent_filters.py +17 -44
  149. claude_mpm/utils/migration.py +4 -4
  150. claude_mpm/utils/robust_installer.py +47 -3
  151. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/METADATA +53 -87
  152. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/RECORD +157 -197
  153. claude_mpm-5.4.48.dist-info/entry_points.txt +5 -0
  154. claude_mpm-5.4.48.dist-info/licenses/LICENSE +94 -0
  155. claude_mpm-5.4.48.dist-info/licenses/LICENSE-FAQ.md +153 -0
  156. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  157. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  158. claude_mpm/agents/BASE_OPS.md +0 -219
  159. claude_mpm/agents/BASE_PM.md +0 -480
  160. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  161. claude_mpm/agents/BASE_QA.md +0 -167
  162. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  163. claude_mpm/agents/base_agent_loader.py +0 -601
  164. claude_mpm/cli/commands/agents_detect.py +0 -380
  165. claude_mpm/cli/commands/agents_recommend.py +0 -309
  166. claude_mpm/cli/ticket_cli.py +0 -35
  167. claude_mpm/commands/mpm-agents-auto-configure.md +0 -278
  168. claude_mpm/commands/mpm-agents-detect.md +0 -177
  169. claude_mpm/commands/mpm-agents-list.md +0 -131
  170. claude_mpm/commands/mpm-agents-recommend.md +0 -223
  171. claude_mpm/commands/mpm-config-view.md +0 -150
  172. claude_mpm/commands/mpm-ticket-organize.md +0 -304
  173. claude_mpm/dashboard/analysis_runner.py +0 -455
  174. claude_mpm/dashboard/index.html +0 -13
  175. claude_mpm/dashboard/open_dashboard.py +0 -66
  176. claude_mpm/dashboard/static/css/activity.css +0 -1958
  177. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  178. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  179. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  180. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  181. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  182. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  183. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  184. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  185. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  186. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  187. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  188. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  189. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  190. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  191. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  192. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  193. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  194. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  195. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  196. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  197. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  198. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  199. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  200. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  201. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  202. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  203. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  204. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  205. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  206. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  207. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  208. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  209. claude_mpm/dashboard/templates/code_simple.html +0 -153
  210. claude_mpm/dashboard/templates/index.html +0 -606
  211. claude_mpm/dashboard/test_dashboard.html +0 -372
  212. claude_mpm/scripts/mcp_server.py +0 -75
  213. claude_mpm/scripts/mcp_wrapper.py +0 -39
  214. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  215. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  216. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  217. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  218. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  219. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  220. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  221. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  222. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  223. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  224. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  225. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  226. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  227. claude_mpm/services/mcp_gateway/main.py +0 -589
  228. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  229. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  230. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  231. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  232. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  233. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  234. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  235. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  236. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  237. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  238. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  239. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  240. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  241. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  242. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  243. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  244. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  245. claude_mpm-5.1.9.dist-info/entry_points.txt +0 -10
  246. claude_mpm-5.1.9.dist-info/licenses/LICENSE +0 -21
  247. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/WHEEL +0 -0
  248. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.48.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,15 @@
1
1
  """
2
2
  Config command parser for claude-mpm CLI.
3
3
 
4
- WHY: This module provides the config command which is synonymous with configure.
5
- Both launch the interactive configuration TUI.
4
+ WHY: This module provides the unified config command with subcommands for
5
+ auto-configuration, viewing, validation, and status checks.
6
6
 
7
- DESIGN DECISION: 'config' and 'configure' are aliases - both commands provide
8
- identical functionality through the interactive configuration interface.
7
+ DESIGN DECISION: 'config' provides both auto-configuration (default) and
8
+ manual configuration management through subcommands.
9
9
  """
10
10
 
11
11
  import argparse
12
+ from pathlib import Path
12
13
 
13
14
  from ...constants import CLICommands
14
15
  from .base_parser import add_common_arguments
@@ -16,11 +17,10 @@ from .base_parser import add_common_arguments
16
17
 
17
18
  def add_config_subparser(subparsers) -> argparse.ArgumentParser:
18
19
  """
19
- Add the config subparser (alias for configure).
20
+ Add the unified config subparser with all configuration subcommands.
20
21
 
21
- WHY: 'config' and 'configure' are synonymous commands that both launch
22
- the interactive configuration interface. This provides a consistent
23
- parser setup matching the configure command.
22
+ WHY: 'config' provides comprehensive configuration management including
23
+ auto-detection, manual viewing, validation, and status checks.
24
24
 
25
25
  Args:
26
26
  subparsers: The subparsers object from the main parser
@@ -28,111 +28,181 @@ def add_config_subparser(subparsers) -> argparse.ArgumentParser:
28
28
  Returns:
29
29
  The configured config subparser
30
30
  """
31
- # Config command - alias for configure (interactive configuration)
31
+ # Config command with subcommands
32
32
  config_parser = subparsers.add_parser(
33
33
  CLICommands.CONFIG.value,
34
- help="Interactive configuration interface for managing agents and behaviors (alias for 'configure')",
35
- description="Launch an interactive Rich-based menu for configuring claude-mpm agents, templates, and behavior files",
36
- )
34
+ help="Unified configuration management with auto-detection and manual viewing",
35
+ description="""
36
+ Unified configuration management for Claude MPM.
37
37
 
38
- # Add common arguments
39
- add_common_arguments(config_parser)
38
+ Available commands:
39
+ auto Auto-configure agents and skills based on detected toolchain (default)
40
+ view View current configuration settings
41
+ validate Validate configuration files
42
+ status Show configuration health and status
40
43
 
41
- # Configuration scope options
42
- scope_group = config_parser.add_argument_group("configuration scope")
43
- scope_group.add_argument(
44
- "--scope",
45
- choices=["project", "user"],
46
- default="project",
47
- help="Configuration scope to manage (default: project)",
44
+ Running 'config' with no subcommand defaults to 'auto' in preview mode.
45
+ """,
46
+ formatter_class=argparse.RawDescriptionHelpFormatter,
48
47
  )
48
+ add_common_arguments(config_parser)
49
49
 
50
- # Direct navigation options (skip main menu)
51
- nav_group = config_parser.add_argument_group("direct navigation")
52
- nav_group.add_argument(
53
- "--agents", action="store_true", help="Jump directly to agent management"
50
+ # Add subcommands
51
+ config_subparsers = config_parser.add_subparsers(
52
+ dest="config_command", help="Configuration commands", metavar="SUBCOMMAND"
53
+ )
54
+
55
+ # Auto-configure subcommand (default)
56
+ auto_parser = config_subparsers.add_parser(
57
+ "auto",
58
+ help="Auto-configure agents and skills based on detected toolchain",
59
+ description="""
60
+ Auto-configure agents and skills for your project based on detected toolchain.
61
+
62
+ This command analyzes your project to detect languages, frameworks, and
63
+ deployment targets, then recommends and deploys appropriate specialized
64
+ agents and skills automatically.
65
+
66
+ The command provides safety features including:
67
+ • Preview mode to see changes before applying
68
+ • Confidence thresholds to ensure quality matches
69
+ • Validation gates to block invalid configurations
70
+ • Rollback on failure to maintain consistency
71
+ """,
72
+ formatter_class=argparse.RawDescriptionHelpFormatter,
73
+ )
74
+ add_common_arguments(auto_parser)
75
+
76
+ # Configuration mode
77
+ mode_group = auto_parser.add_mutually_exclusive_group()
78
+ mode_group.add_argument(
79
+ "--preview",
80
+ "--dry-run",
81
+ dest="preview",
82
+ action="store_true",
83
+ help="Show what would be configured without deploying (preview mode)",
54
84
  )
55
- nav_group.add_argument(
56
- "--templates", action="store_true", help="Jump directly to template editing"
85
+ mode_group.add_argument(
86
+ "--yes",
87
+ "-y",
88
+ action="store_true",
89
+ help="Skip confirmation prompts and deploy automatically",
57
90
  )
58
- nav_group.add_argument(
59
- "--behaviors",
91
+
92
+ # Scope selection
93
+ scope_group = auto_parser.add_mutually_exclusive_group()
94
+ scope_group.add_argument(
95
+ "--agents-only",
60
96
  action="store_true",
61
- help="Jump directly to behavior file management",
97
+ help="Configure agents only (skip skills)",
62
98
  )
63
- nav_group.add_argument(
64
- "--startup",
99
+ scope_group.add_argument(
100
+ "--skills-only",
65
101
  action="store_true",
66
- help="Configure startup services and agents",
102
+ help="Configure skills only (skip agents)",
103
+ )
104
+
105
+ # Configuration options
106
+ auto_parser.add_argument(
107
+ "--min-confidence",
108
+ type=float,
109
+ default=0.8,
110
+ metavar="FLOAT",
111
+ help="Minimum confidence threshold for recommendations (0.0-1.0, default: 0.8)",
112
+ )
113
+
114
+ auto_parser.add_argument(
115
+ "--project-path",
116
+ type=Path,
117
+ metavar="PATH",
118
+ help="Project path to analyze (default: current directory)",
67
119
  )
68
- nav_group.add_argument(
69
- "--version-info",
120
+
121
+ auto_parser.add_argument(
122
+ "--json",
70
123
  action="store_true",
71
- help="Display version information and exit",
124
+ help="Output results in JSON format",
72
125
  )
73
126
 
74
- # Non-interactive options
75
- noninteractive_group = config_parser.add_argument_group("non-interactive options")
76
- noninteractive_group.add_argument(
77
- "--list-agents", action="store_true", help="List all available agents and exit"
127
+ # View subcommand
128
+ view_parser = config_subparsers.add_parser(
129
+ "view",
130
+ help="View current configuration settings",
78
131
  )
79
- noninteractive_group.add_argument(
80
- "--enable-agent",
132
+ add_common_arguments(view_parser)
133
+
134
+ view_parser.add_argument(
135
+ "--section",
81
136
  type=str,
82
- metavar="AGENT_NAME",
83
- help="Enable a specific agent and exit",
137
+ metavar="SECTION",
138
+ help="Specific configuration section to view (agents, memory, websocket, etc.)",
84
139
  )
85
- noninteractive_group.add_argument(
86
- "--disable-agent",
87
- type=str,
88
- metavar="AGENT_NAME",
89
- help="Disable a specific agent and exit",
140
+ view_parser.add_argument(
141
+ "--format",
142
+ choices=["yaml", "json", "table", "text"],
143
+ default="table",
144
+ help="Output format (default: table)",
90
145
  )
91
- noninteractive_group.add_argument(
92
- "--export-config",
93
- type=str,
94
- metavar="FILE",
95
- help="Export current configuration to a file",
146
+ view_parser.add_argument(
147
+ "--show-defaults",
148
+ action="store_true",
149
+ help="Include default values in output",
96
150
  )
97
- noninteractive_group.add_argument(
98
- "--import-config",
99
- type=str,
100
- metavar="FILE",
101
- help="Import configuration from a file",
151
+ view_parser.add_argument(
152
+ "--config-file",
153
+ type=Path,
154
+ metavar="PATH",
155
+ help="Specific config file to view (default: all)",
102
156
  )
103
157
 
104
- # Hook management options
105
- hooks_group = config_parser.add_argument_group("hook management")
106
- hooks_group.add_argument(
107
- "--install-hooks",
108
- action="store_true",
109
- help="Install Claude MPM hooks for Claude Code integration",
158
+ # Validate subcommand
159
+ validate_parser = config_subparsers.add_parser(
160
+ "validate",
161
+ help="Validate configuration files for correctness",
110
162
  )
111
- hooks_group.add_argument(
112
- "--verify-hooks",
113
- action="store_true",
114
- help="Verify that Claude MPM hooks are properly installed",
163
+ add_common_arguments(validate_parser)
164
+
165
+ validate_parser.add_argument(
166
+ "--config-file",
167
+ type=Path,
168
+ metavar="PATH",
169
+ help="Validate specific config file (default: all)",
115
170
  )
116
- hooks_group.add_argument(
117
- "--uninstall-hooks",
171
+ validate_parser.add_argument(
172
+ "--strict",
118
173
  action="store_true",
119
- help="Uninstall Claude MPM hooks",
174
+ help="Use strict validation rules",
120
175
  )
121
- hooks_group.add_argument(
122
- "--force",
176
+ validate_parser.add_argument(
177
+ "--fix",
123
178
  action="store_true",
124
- help="Force reinstallation of hooks even if they already exist",
179
+ help="Attempt to fix validation errors automatically",
125
180
  )
126
181
 
127
- # Display options
128
- display_group = config_parser.add_argument_group("display options")
129
- display_group.add_argument(
130
- "--no-colors",
131
- action="store_true",
132
- help="Disable colored output in the interface",
182
+ # Status subcommand
183
+ status_parser = config_subparsers.add_parser(
184
+ "status",
185
+ help="Show configuration health and status",
133
186
  )
134
- display_group.add_argument(
135
- "--compact", action="store_true", help="Use compact display mode"
187
+ add_common_arguments(status_parser)
188
+
189
+ # Note: --verbose is provided by add_common_arguments()
190
+ status_parser.add_argument(
191
+ "--check-response-logging",
192
+ action="store_true",
193
+ help="Check response logging configuration",
194
+ )
195
+ status_parser.add_argument(
196
+ "--format",
197
+ choices=["yaml", "json", "text"],
198
+ default="text",
199
+ help="Output format (default: text)",
200
+ )
201
+ status_parser.add_argument(
202
+ "--config-file",
203
+ type=Path,
204
+ metavar="PATH",
205
+ help="Specific config file to check (default: all)",
136
206
  )
137
207
 
138
208
  return config_parser
@@ -0,0 +1,148 @@
1
+ """
2
+ Profile command parser for claude-mpm CLI.
3
+
4
+ WHY: This module provides the profile command for managing deployment profiles
5
+ that control which agents and skills are deployed.
6
+
7
+ DESIGN DECISION: Provides intuitive subcommands for listing, activating,
8
+ and inspecting profiles to reduce context usage by limiting deployed components.
9
+ """
10
+
11
+ import argparse
12
+
13
+ from ...constants import CLICommands
14
+ from .base_parser import add_common_arguments
15
+
16
+
17
+ def add_profile_subparser(subparsers) -> argparse.ArgumentParser:
18
+ """
19
+ Add the profile subparser for deployment profile management.
20
+
21
+ WHY: Users need to manage which agents and skills are deployed to reduce
22
+ context usage and improve performance. Profiles define enabled/disabled
23
+ agents and skills for specific workflows.
24
+
25
+ Args:
26
+ subparsers: The subparsers object from the main parser
27
+
28
+ Returns:
29
+ The configured profile subparser
30
+ """
31
+ # Profile command with subcommands
32
+ profile_parser = subparsers.add_parser(
33
+ "profile",
34
+ help="Manage deployment profiles for agents and skills",
35
+ description="""
36
+ Deployment profile management for Claude MPM.
37
+
38
+ Profiles control which agents and skills are deployed, reducing context usage
39
+ by limiting available agents to only what's needed for your workflow.
40
+
41
+ Available commands:
42
+ list List all available profiles
43
+ set Set the active profile
44
+ status Show current active profile and filtering summary
45
+ show Show detailed configuration of a profile
46
+
47
+ Example workflows:
48
+ # List available profiles
49
+ claude-mpm profile list
50
+
51
+ # Activate a profile
52
+ claude-mpm profile set framework-development
53
+
54
+ # Check current profile status
55
+ claude-mpm profile status
56
+
57
+ # View profile details
58
+ claude-mpm profile show framework-development
59
+ """,
60
+ formatter_class=argparse.RawDescriptionHelpFormatter,
61
+ )
62
+ add_common_arguments(profile_parser)
63
+
64
+ # Add subcommands
65
+ profile_subparsers = profile_parser.add_subparsers(
66
+ dest="profile_command",
67
+ help="Profile management commands",
68
+ metavar="SUBCOMMAND",
69
+ )
70
+
71
+ # List subcommand
72
+ list_parser = profile_subparsers.add_parser(
73
+ "list",
74
+ help="List all available deployment profiles",
75
+ description="""
76
+ List all profiles found in .claude-mpm/profiles/ directory.
77
+
78
+ Shows profile names, descriptions, and indicates which profile is currently active.
79
+ """,
80
+ formatter_class=argparse.RawDescriptionHelpFormatter,
81
+ )
82
+ add_common_arguments(list_parser)
83
+
84
+ # Set subcommand
85
+ set_parser = profile_subparsers.add_parser(
86
+ "set",
87
+ help="Set the active deployment profile",
88
+ description="""
89
+ Set the active deployment profile.
90
+
91
+ This updates configuration.yaml with the selected profile, which will be
92
+ applied on next startup or when running 'claude-mpm init'.
93
+
94
+ Examples:
95
+ # Activate framework development profile
96
+ claude-mpm profile set framework-development
97
+
98
+ # Activate minimal profile for focused work
99
+ claude-mpm profile set minimal
100
+ """,
101
+ formatter_class=argparse.RawDescriptionHelpFormatter,
102
+ )
103
+ add_common_arguments(set_parser)
104
+ set_parser.add_argument(
105
+ "profile_name",
106
+ help="Name of profile to activate (without .yaml extension)",
107
+ )
108
+
109
+ # Status subcommand
110
+ status_parser = profile_subparsers.add_parser(
111
+ "status",
112
+ help="Show current active profile and filtering summary",
113
+ description="""
114
+ Display current active profile with filtering summary.
115
+
116
+ Shows:
117
+ - Active profile name
118
+ - Number of agents enabled/disabled
119
+ - Number of skills enabled/disabled
120
+ - Disabled skill patterns
121
+ """,
122
+ formatter_class=argparse.RawDescriptionHelpFormatter,
123
+ )
124
+ add_common_arguments(status_parser)
125
+
126
+ # Show subcommand
127
+ show_parser = profile_subparsers.add_parser(
128
+ "show",
129
+ help="Show detailed configuration of a profile",
130
+ description="""
131
+ Display detailed configuration of a specific profile.
132
+
133
+ Shows complete lists of enabled/disabled agents and skills, including
134
+ glob patterns for skill filtering.
135
+
136
+ Examples:
137
+ # Show framework development profile details
138
+ claude-mpm profile show framework-development
139
+ """,
140
+ formatter_class=argparse.RawDescriptionHelpFormatter,
141
+ )
142
+ add_common_arguments(show_parser)
143
+ show_parser.add_argument(
144
+ "profile_name",
145
+ help="Name of profile to display (without .yaml extension)",
146
+ )
147
+
148
+ return profile_parser
@@ -167,11 +167,6 @@ def add_skills_subparser(subparsers) -> argparse.ArgumentParser:
167
167
  action="store_true",
168
168
  help="Force redeployment of already deployed skills",
169
169
  )
170
- deploy_github_parser.add_argument(
171
- "--all",
172
- action="store_true",
173
- help="Deploy all available skills (no filtering)",
174
- )
175
170
 
176
171
  # List available GitHub skills
177
172
  list_available_parser = skills_subparsers.add_parser(