claude-mpm 5.0.2__py3-none-any.whl → 5.4.3__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 (184) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  3. claude_mpm/agents/PM_INSTRUCTIONS.md +1218 -905
  4. claude_mpm/agents/agent_loader.py +10 -17
  5. claude_mpm/agents/base_agent_loader.py +10 -35
  6. claude_mpm/agents/frontmatter_validator.py +68 -0
  7. claude_mpm/agents/templates/circuit-breakers.md +431 -45
  8. claude_mpm/cli/__init__.py +0 -1
  9. claude_mpm/cli/commands/__init__.py +2 -0
  10. claude_mpm/cli/commands/agent_state_manager.py +67 -23
  11. claude_mpm/cli/commands/agents.py +446 -25
  12. claude_mpm/cli/commands/auto_configure.py +535 -233
  13. claude_mpm/cli/commands/configure.py +1500 -147
  14. claude_mpm/cli/commands/configure_agent_display.py +13 -6
  15. claude_mpm/cli/commands/mpm_init/core.py +158 -1
  16. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  17. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  18. claude_mpm/cli/commands/postmortem.py +401 -0
  19. claude_mpm/cli/commands/run.py +1 -39
  20. claude_mpm/cli/commands/skills.py +322 -19
  21. claude_mpm/cli/commands/summarize.py +413 -0
  22. claude_mpm/cli/executor.py +8 -0
  23. claude_mpm/cli/interactive/agent_wizard.py +302 -195
  24. claude_mpm/cli/parsers/agents_parser.py +137 -0
  25. claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
  26. claude_mpm/cli/parsers/base_parser.py +9 -0
  27. claude_mpm/cli/parsers/skills_parser.py +7 -0
  28. claude_mpm/cli/startup.py +133 -85
  29. claude_mpm/commands/mpm-agents-auto-configure.md +2 -2
  30. claude_mpm/commands/mpm-agents-list.md +2 -2
  31. claude_mpm/commands/mpm-config-view.md +2 -2
  32. claude_mpm/commands/mpm-help.md +3 -0
  33. claude_mpm/commands/{mpm-ticket-organize.md → mpm-organize.md} +4 -5
  34. claude_mpm/commands/mpm-postmortem.md +123 -0
  35. claude_mpm/commands/mpm-session-resume.md +2 -2
  36. claude_mpm/commands/mpm-ticket-view.md +2 -2
  37. claude_mpm/config/agent_presets.py +312 -82
  38. claude_mpm/config/agent_sources.py +27 -0
  39. claude_mpm/config/skill_presets.py +392 -0
  40. claude_mpm/constants.py +1 -0
  41. claude_mpm/core/claude_runner.py +2 -25
  42. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  43. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  44. claude_mpm/core/interactive_session.py +19 -5
  45. claude_mpm/core/oneshot_session.py +16 -4
  46. claude_mpm/core/output_style_manager.py +173 -43
  47. claude_mpm/core/protocols/__init__.py +23 -0
  48. claude_mpm/core/protocols/runner_protocol.py +103 -0
  49. claude_mpm/core/protocols/session_protocol.py +131 -0
  50. claude_mpm/core/shared/singleton_manager.py +11 -4
  51. claude_mpm/core/socketio_pool.py +3 -3
  52. claude_mpm/core/system_context.py +38 -0
  53. claude_mpm/core/unified_agent_registry.py +134 -16
  54. claude_mpm/core/unified_config.py +22 -0
  55. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  56. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-313.pyc +0 -0
  57. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  58. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  59. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  60. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  61. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  62. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  63. claude_mpm/hooks/claude_hooks/event_handlers.py +35 -2
  64. claude_mpm/hooks/claude_hooks/hook_handler.py +4 -0
  65. claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
  66. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  67. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  68. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  69. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  70. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  71. claude_mpm/hooks/claude_hooks/services/connection_manager.py +4 -0
  72. claude_mpm/models/agent_definition.py +7 -0
  73. claude_mpm/scripts/launch_monitor.py +93 -13
  74. claude_mpm/services/agents/agent_recommendation_service.py +279 -0
  75. claude_mpm/services/agents/cache_git_manager.py +621 -0
  76. claude_mpm/services/agents/deployment/agent_template_builder.py +3 -2
  77. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +110 -3
  78. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +518 -55
  79. claude_mpm/services/agents/git_source_manager.py +20 -0
  80. claude_mpm/services/agents/sources/git_source_sync_service.py +45 -6
  81. claude_mpm/services/agents/toolchain_detector.py +6 -5
  82. claude_mpm/services/analysis/__init__.py +35 -0
  83. claude_mpm/services/analysis/clone_detector.py +1030 -0
  84. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  85. claude_mpm/services/analysis/postmortem_service.py +765 -0
  86. claude_mpm/services/command_deployment_service.py +106 -5
  87. claude_mpm/services/core/base.py +7 -2
  88. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  89. claude_mpm/services/event_bus/config.py +3 -1
  90. claude_mpm/services/git/git_operations_service.py +8 -8
  91. claude_mpm/services/mcp_config_manager.py +75 -145
  92. claude_mpm/services/mcp_service_verifier.py +6 -3
  93. claude_mpm/services/monitor/daemon.py +37 -10
  94. claude_mpm/services/monitor/daemon_manager.py +134 -21
  95. claude_mpm/services/monitor/server.py +225 -19
  96. claude_mpm/services/project/project_organizer.py +4 -0
  97. claude_mpm/services/runner_configuration_service.py +16 -3
  98. claude_mpm/services/session_management_service.py +16 -4
  99. claude_mpm/services/socketio/event_normalizer.py +15 -1
  100. claude_mpm/services/socketio/server/core.py +160 -21
  101. claude_mpm/services/version_control/git_operations.py +103 -0
  102. claude_mpm/utils/agent_filters.py +261 -0
  103. claude_mpm/utils/gitignore.py +3 -0
  104. claude_mpm/utils/migration.py +372 -0
  105. claude_mpm/utils/progress.py +5 -1
  106. {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/METADATA +69 -84
  107. {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/RECORD +112 -153
  108. {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/entry_points.txt +0 -2
  109. claude_mpm/dashboard/analysis_runner.py +0 -455
  110. claude_mpm/dashboard/index.html +0 -13
  111. claude_mpm/dashboard/open_dashboard.py +0 -66
  112. claude_mpm/dashboard/static/css/activity.css +0 -1958
  113. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  114. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  115. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  116. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  117. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  118. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  119. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  120. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  121. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  122. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  123. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  124. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  125. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  126. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  127. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  128. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  129. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  130. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  131. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  132. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  133. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  134. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  135. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  136. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  137. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  138. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  139. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  140. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  141. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  142. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  143. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  144. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  145. claude_mpm/dashboard/templates/code_simple.html +0 -153
  146. claude_mpm/dashboard/templates/index.html +0 -606
  147. claude_mpm/dashboard/test_dashboard.html +0 -372
  148. claude_mpm/scripts/mcp_server.py +0 -75
  149. claude_mpm/scripts/mcp_wrapper.py +0 -39
  150. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  151. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  152. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  153. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  154. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  155. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  156. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  157. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  158. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  159. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  160. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -971
  161. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  162. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  163. claude_mpm/services/mcp_gateway/main.py +0 -589
  164. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  165. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  166. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  167. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  168. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  169. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  170. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  171. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  172. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  173. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  174. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  175. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  176. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  177. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  178. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  179. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  180. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  181. /claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +0 -0
  182. {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/WHEEL +0 -0
  183. {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/licenses/LICENSE +0 -0
  184. {claude_mpm-5.0.2.dist-info → claude_mpm-5.4.3.dist-info}/top_level.txt +0 -0
@@ -339,9 +339,29 @@ class GitSourceManager:
339
339
 
340
340
  # Walk cache directory structure
341
341
  logger.debug(f"[DEBUG] Walking cache root: {self.cache_root}")
342
+
343
+ # Known legacy category directories to skip (flat cache structure)
344
+ LEGACY_CATEGORIES = {
345
+ "universal",
346
+ "engineer",
347
+ "ops",
348
+ "qa",
349
+ "security",
350
+ "documentation",
351
+ "claude-mpm",
352
+ }
353
+
342
354
  for owner_dir in self.cache_root.iterdir():
343
355
  if not owner_dir.is_dir():
344
356
  continue
357
+
358
+ # Skip legacy category directories (they're not GitHub owners)
359
+ if owner_dir.name.lower() in LEGACY_CATEGORIES:
360
+ logger.debug(
361
+ f"[DEBUG] Skipping legacy category directory: {owner_dir.name}"
362
+ )
363
+ continue
364
+
345
365
  logger.debug(f"[DEBUG] Processing owner_dir: {owner_dir.name}")
346
366
 
347
367
  for repo_dir in owner_dir.iterdir():
@@ -188,10 +188,10 @@ class GitSourceSyncService:
188
188
 
189
189
  Args:
190
190
  source_url: Base URL for raw files (without trailing slash)
191
- cache_dir: Local cache directory (defaults to ~/.claude-mpm/cache/agents/)
191
+ cache_dir: Local cache directory (defaults to ~/.claude-mpm/cache/remote-agents/)
192
192
  source_id: Unique identifier for this source (for multi-source support)
193
193
 
194
- Design Decision: Cache to ~/.claude-mpm/cache/agents/ (Phase 1 of refactoring)
194
+ Design Decision: Cache to ~/.claude-mpm/cache/remote-agents/ (canonical location)
195
195
 
196
196
  Rationale: Separates cached repository structure from deployed agents.
197
197
  This allows preserving nested directory structure in cache while
@@ -207,13 +207,13 @@ class GitSourceSyncService:
207
207
  self.source_url = source_url.rstrip("/")
208
208
  self.source_id = source_id
209
209
 
210
- # Setup cache directory (Phase 1: Changed to ~/.claude-mpm/cache/agents/)
210
+ # Setup cache directory (canonical: ~/.claude-mpm/cache/remote-agents/)
211
211
  if cache_dir:
212
212
  self.cache_dir = Path(cache_dir)
213
213
  else:
214
- # Default to ~/.claude-mpm/cache/agents/ (shared cache for nested structure)
214
+ # Default to ~/.claude-mpm/cache/remote-agents/ (canonical cache location)
215
215
  home = Path.home()
216
- self.cache_dir = home / ".claude-mpm" / "cache" / "agents"
216
+ self.cache_dir = home / ".claude-mpm" / "cache" / "remote-agents"
217
217
 
218
218
  self.cache_dir.mkdir(parents=True, exist_ok=True)
219
219
 
@@ -237,6 +237,11 @@ class GitSourceSyncService:
237
237
  if etag_cache_file.exists():
238
238
  self._migrate_etag_cache(etag_cache_file)
239
239
 
240
+ # NEW: Initialize git manager for cache (Phase 1 integration)
241
+ from claude_mpm.services.agents.cache_git_manager import CacheGitManager
242
+
243
+ self.git_manager = CacheGitManager(self.cache_dir)
244
+
240
245
  def sync_agents(
241
246
  self,
242
247
  force_refresh: bool = False,
@@ -273,6 +278,33 @@ class GitSourceSyncService:
273
278
 
274
279
  start_time = time.time()
275
280
 
281
+ # NEW: Pre-sync git operations (Phase 1 integration)
282
+ if self.git_manager.is_git_repo():
283
+ logger.debug("Cache is a git repository, checking for updates...")
284
+
285
+ # Warn about uncommitted changes
286
+ if self.git_manager.has_uncommitted_changes():
287
+ uncommitted_count = len(
288
+ self.git_manager.get_status().get("uncommitted", [])
289
+ )
290
+ logger.warning(
291
+ f"Cache has {uncommitted_count} uncommitted change(s). "
292
+ "These will be preserved, but consider committing them."
293
+ )
294
+
295
+ # Pull latest if online (non-blocking)
296
+ try:
297
+ success, msg = self.git_manager.pull_latest()
298
+ if success:
299
+ logger.info(f"✅ Git pull: {msg}")
300
+ else:
301
+ logger.warning(f"⚠️ Git pull failed: {msg}")
302
+ logger.info("Continuing with HTTP sync as fallback")
303
+ except Exception as e:
304
+ logger.warning(f"Git pull error (continuing with HTTP sync): {e}")
305
+ else:
306
+ logger.debug("Cache is not a git repository, skipping git operations")
307
+
276
308
  results = {
277
309
  "synced": [],
278
310
  "cached": [],
@@ -819,6 +851,12 @@ class GitSourceSyncService:
819
851
  if base_path and not path.startswith(base_path + "/"):
820
852
  continue
821
853
 
854
+ # Exclude build/dist directories (prevents double-counting)
855
+ # e.g., both "agents/engineer.md" and "dist/agents/engineer.md"
856
+ path_parts = path.split("/")
857
+ if any(excluded in path_parts for excluded in ["dist", "build", ".cache"]):
858
+ continue
859
+
822
860
  # Remove base_path prefix for relative paths
823
861
  if base_path:
824
862
  relative_path = path[len(base_path) + 1 :]
@@ -939,7 +977,8 @@ class GitSourceSyncService:
939
977
  """
940
978
  import shutil
941
979
 
942
- deployment_dir = project_dir / ".claude-mpm" / "agents"
980
+ # Deploy to .claude/agents/ where Claude Code expects them
981
+ deployment_dir = project_dir / ".claude" / "agents"
943
982
  deployment_dir.mkdir(parents=True, exist_ok=True)
944
983
 
945
984
  results = {
@@ -158,12 +158,13 @@ class ToolchainDetector:
158
158
  "make": ["ops"],
159
159
  }
160
160
 
161
- # Core agents always included
161
+ # Core agents always included (use exact agent IDs from repository)
162
162
  CORE_AGENTS = [
163
- "qa",
164
- "research",
165
- "documentation",
163
+ "qa-agent",
164
+ "research-agent",
165
+ "documentation-agent",
166
166
  "ticketing",
167
+ "local-ops-agent",
167
168
  ]
168
169
 
169
170
  # Directories to exclude from scanning
@@ -365,7 +366,7 @@ class ToolchainDetector:
365
366
  """Map detected toolchain to recommended agents.
366
367
 
367
368
  Combines language-specific, framework-specific, and ops agents with
368
- core agents (qa, research, documentation, ticketing).
369
+ core agents (qa-agent, research-agent, documentation-agent, ticketing, local-ops-agent).
369
370
 
370
371
  Args:
371
372
  toolchain: Detected toolchain dictionary with languages, frameworks, tools
@@ -0,0 +1,35 @@
1
+ """
2
+ Analysis services for Claude MPM.
3
+
4
+ Provides postmortem analysis, error improvement suggestions, and code clone detection.
5
+ """
6
+
7
+ from .clone_detector import (
8
+ CloneDetector,
9
+ CloneReport,
10
+ RefactoringSuggestion,
11
+ SimilarityReport,
12
+ )
13
+ from .postmortem_service import (
14
+ ActionType,
15
+ ErrorAnalysis,
16
+ ErrorCategory,
17
+ ImprovementAction,
18
+ PostmortemReport,
19
+ PostmortemService,
20
+ get_postmortem_service,
21
+ )
22
+
23
+ __all__ = [
24
+ "ActionType",
25
+ "CloneDetector",
26
+ "CloneReport",
27
+ "ErrorAnalysis",
28
+ "ErrorCategory",
29
+ "ImprovementAction",
30
+ "PostmortemReport",
31
+ "PostmortemService",
32
+ "RefactoringSuggestion",
33
+ "SimilarityReport",
34
+ "get_postmortem_service",
35
+ ]