claude-mpm 4.1.8__py3-none-any.whl → 4.1.11__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.
Files changed (111) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/INSTRUCTIONS.md +26 -1
  3. claude_mpm/agents/agents_metadata.py +57 -0
  4. claude_mpm/agents/templates/.claude-mpm/memories/README.md +17 -0
  5. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +3 -0
  6. claude_mpm/agents/templates/agent-manager.json +263 -17
  7. claude_mpm/agents/templates/agentic_coder_optimizer.json +222 -0
  8. claude_mpm/agents/templates/code_analyzer.json +18 -8
  9. claude_mpm/agents/templates/engineer.json +1 -1
  10. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +39 -0
  11. claude_mpm/agents/templates/qa.json +1 -1
  12. claude_mpm/agents/templates/research.json +1 -1
  13. claude_mpm/cli/__init__.py +15 -0
  14. claude_mpm/cli/commands/__init__.py +6 -0
  15. claude_mpm/cli/commands/analyze.py +548 -0
  16. claude_mpm/cli/commands/analyze_code.py +524 -0
  17. claude_mpm/cli/commands/configure.py +78 -28
  18. claude_mpm/cli/commands/configure_tui.py +62 -60
  19. claude_mpm/cli/commands/dashboard.py +288 -0
  20. claude_mpm/cli/commands/debug.py +1386 -0
  21. claude_mpm/cli/commands/mpm_init.py +427 -0
  22. claude_mpm/cli/commands/mpm_init_handler.py +83 -0
  23. claude_mpm/cli/parsers/analyze_code_parser.py +170 -0
  24. claude_mpm/cli/parsers/analyze_parser.py +135 -0
  25. claude_mpm/cli/parsers/base_parser.py +44 -0
  26. claude_mpm/cli/parsers/dashboard_parser.py +113 -0
  27. claude_mpm/cli/parsers/debug_parser.py +319 -0
  28. claude_mpm/cli/parsers/mpm_init_parser.py +122 -0
  29. claude_mpm/constants.py +13 -1
  30. claude_mpm/core/framework_loader.py +148 -6
  31. claude_mpm/core/log_manager.py +16 -13
  32. claude_mpm/core/logger.py +1 -1
  33. claude_mpm/core/unified_agent_registry.py +1 -1
  34. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +1 -0
  35. claude_mpm/dashboard/analysis_runner.py +455 -0
  36. claude_mpm/dashboard/static/built/components/activity-tree.js +2 -0
  37. claude_mpm/dashboard/static/built/components/agent-inference.js +1 -1
  38. claude_mpm/dashboard/static/built/components/code-tree.js +2 -0
  39. claude_mpm/dashboard/static/built/components/code-viewer.js +2 -0
  40. claude_mpm/dashboard/static/built/components/event-viewer.js +1 -1
  41. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +1 -1
  42. claude_mpm/dashboard/static/built/components/module-viewer.js +1 -1
  43. claude_mpm/dashboard/static/built/components/session-manager.js +1 -1
  44. claude_mpm/dashboard/static/built/components/working-directory.js +1 -1
  45. claude_mpm/dashboard/static/built/dashboard.js +1 -1
  46. claude_mpm/dashboard/static/built/socket-client.js +1 -1
  47. claude_mpm/dashboard/static/css/activity.css +549 -0
  48. claude_mpm/dashboard/static/css/code-tree.css +1175 -0
  49. claude_mpm/dashboard/static/css/dashboard.css +245 -0
  50. claude_mpm/dashboard/static/dist/components/activity-tree.js +2 -0
  51. claude_mpm/dashboard/static/dist/components/code-tree.js +2 -0
  52. claude_mpm/dashboard/static/dist/components/code-viewer.js +2 -0
  53. claude_mpm/dashboard/static/dist/components/event-viewer.js +1 -1
  54. claude_mpm/dashboard/static/dist/components/session-manager.js +1 -1
  55. claude_mpm/dashboard/static/dist/components/working-directory.js +1 -1
  56. claude_mpm/dashboard/static/dist/dashboard.js +1 -1
  57. claude_mpm/dashboard/static/dist/socket-client.js +1 -1
  58. claude_mpm/dashboard/static/js/components/activity-tree.js +1338 -0
  59. claude_mpm/dashboard/static/js/components/code-tree.js +2535 -0
  60. claude_mpm/dashboard/static/js/components/code-viewer.js +480 -0
  61. claude_mpm/dashboard/static/js/components/event-viewer.js +59 -9
  62. claude_mpm/dashboard/static/js/components/session-manager.js +40 -4
  63. claude_mpm/dashboard/static/js/components/socket-manager.js +12 -0
  64. claude_mpm/dashboard/static/js/components/ui-state-manager.js +4 -0
  65. claude_mpm/dashboard/static/js/components/working-directory.js +17 -1
  66. claude_mpm/dashboard/static/js/dashboard.js +51 -0
  67. claude_mpm/dashboard/static/js/socket-client.js +465 -29
  68. claude_mpm/dashboard/templates/index.html +182 -4
  69. claude_mpm/hooks/claude_hooks/hook_handler.py +182 -5
  70. claude_mpm/hooks/claude_hooks/installer.py +386 -113
  71. claude_mpm/scripts/claude-hook-handler.sh +161 -0
  72. claude_mpm/scripts/socketio_daemon.py +121 -8
  73. claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +2 -2
  74. claude_mpm/services/agents/deployment/agent_record_service.py +1 -2
  75. claude_mpm/services/agents/memory/memory_format_service.py +1 -3
  76. claude_mpm/services/cli/agent_cleanup_service.py +1 -5
  77. claude_mpm/services/cli/agent_dependency_service.py +1 -1
  78. claude_mpm/services/cli/agent_validation_service.py +3 -4
  79. claude_mpm/services/cli/dashboard_launcher.py +2 -3
  80. claude_mpm/services/cli/startup_checker.py +0 -11
  81. claude_mpm/services/core/cache_manager.py +1 -3
  82. claude_mpm/services/core/path_resolver.py +1 -4
  83. claude_mpm/services/core/service_container.py +2 -2
  84. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  85. claude_mpm/services/infrastructure/monitoring/__init__.py +11 -11
  86. claude_mpm/services/infrastructure/monitoring.py +11 -11
  87. claude_mpm/services/project/architecture_analyzer.py +1 -1
  88. claude_mpm/services/project/dependency_analyzer.py +4 -4
  89. claude_mpm/services/project/language_analyzer.py +3 -3
  90. claude_mpm/services/project/metrics_collector.py +3 -6
  91. claude_mpm/services/socketio/event_normalizer.py +64 -0
  92. claude_mpm/services/socketio/handlers/__init__.py +2 -0
  93. claude_mpm/services/socketio/handlers/code_analysis.py +672 -0
  94. claude_mpm/services/socketio/handlers/registry.py +2 -0
  95. claude_mpm/services/socketio/server/connection_manager.py +6 -4
  96. claude_mpm/services/socketio/server/core.py +100 -11
  97. claude_mpm/services/socketio/server/main.py +8 -2
  98. claude_mpm/services/visualization/__init__.py +19 -0
  99. claude_mpm/services/visualization/mermaid_generator.py +938 -0
  100. claude_mpm/tools/__main__.py +208 -0
  101. claude_mpm/tools/code_tree_analyzer.py +1596 -0
  102. claude_mpm/tools/code_tree_builder.py +631 -0
  103. claude_mpm/tools/code_tree_events.py +416 -0
  104. claude_mpm/tools/socketio_debug.py +671 -0
  105. {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/METADATA +2 -1
  106. {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/RECORD +110 -74
  107. claude_mpm/agents/schema/agent_schema.json +0 -314
  108. {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/WHEEL +0 -0
  109. {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/entry_points.txt +0 -0
  110. {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/licenses/LICENSE +0 -0
  111. {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/top_level.txt +0 -0
@@ -59,6 +59,7 @@ class EventType(Enum):
59
59
  PERFORMANCE = "performance" # Performance metrics
60
60
  CLAUDE = "claude" # Claude process events
61
61
  TEST = "test" # Test events
62
+ CODE = "code" # Code analysis events
62
63
  TOOL = "tool" # Tool events
63
64
  SUBAGENT = "subagent" # Subagent events
64
65
 
@@ -351,6 +352,41 @@ class EventNormalizer:
351
352
  event_type.value if isinstance(event_type, EventType) else event_type
352
353
  ), subtype
353
354
 
355
+ # Handle colon-separated event names (e.g., "code:analysis:queued", "code:progress")
356
+ # These are commonly used by the code analysis system
357
+ if ":" in event_name:
358
+ parts = event_name.split(":", 2) # Split into max 3 parts
359
+ if len(parts) >= 2:
360
+ type_part = parts[0].lower()
361
+ # For events like "code:analysis:queued", combine the last parts as subtype
362
+ # Replace colons with underscores for clean subtypes
363
+ if len(parts) == 3:
364
+ subtype_part = f"{parts[1]}_{parts[2]}"
365
+ else:
366
+ subtype_part = parts[1].replace(":", "_")
367
+
368
+ # Map the type part to known types
369
+ if type_part in [
370
+ "code", # Code analysis events
371
+ "hook",
372
+ "session",
373
+ "file",
374
+ "system",
375
+ "connection",
376
+ "memory",
377
+ "git",
378
+ "todo",
379
+ "ticket",
380
+ "agent",
381
+ "claude",
382
+ "error",
383
+ "performance",
384
+ "test",
385
+ "tool",
386
+ "subagent",
387
+ ]:
388
+ return type_part, subtype_part
389
+
354
390
  # Handle dotted event names (e.g., "connection.status", "session.started")
355
391
  if "." in event_name:
356
392
  parts = event_name.split(".", 1)
@@ -443,6 +479,34 @@ class EventNormalizer:
443
479
  return EventType.MEMORY.value, "injected"
444
480
  return EventType.MEMORY.value, "generic"
445
481
 
482
+ # Code analysis events - using underscores for clean subtypes
483
+ if "code" in event_lower:
484
+ if "analysis" in event_lower:
485
+ if "queue" in event_lower:
486
+ return EventType.CODE.value, "analysis_queued"
487
+ if "start" in event_lower:
488
+ return EventType.CODE.value, "analysis_start"
489
+ if "complete" in event_lower:
490
+ return EventType.CODE.value, "analysis_complete"
491
+ if "error" in event_lower:
492
+ return EventType.CODE.value, "analysis_error"
493
+ if "cancel" in event_lower:
494
+ return EventType.CODE.value, "analysis_cancelled"
495
+ return EventType.CODE.value, "analysis_generic"
496
+ if "progress" in event_lower:
497
+ return EventType.CODE.value, "progress"
498
+ if "file" in event_lower:
499
+ if "discovered" in event_lower:
500
+ return EventType.CODE.value, "file_discovered"
501
+ if "analyzed" in event_lower:
502
+ return EventType.CODE.value, "file_analyzed"
503
+ return EventType.CODE.value, "file_complete"
504
+ if "directory" in event_lower:
505
+ return EventType.CODE.value, "directory_discovered"
506
+ if "node" in event_lower:
507
+ return EventType.CODE.value, "node_found"
508
+ return EventType.CODE.value, "generic"
509
+
446
510
  # Default to unknown with lowercase subtype
447
511
  return "unknown", event_name.lower() if event_name else ""
448
512
 
@@ -7,6 +7,7 @@ and maintainability.
7
7
  """
8
8
 
9
9
  from .base import BaseEventHandler
10
+ from .code_analysis import CodeAnalysisEventHandler
10
11
  from .connection import ConnectionEventHandler
11
12
  from .file import FileEventHandler
12
13
  from .git import GitEventHandler
@@ -16,6 +17,7 @@ from .registry import EventHandlerRegistry
16
17
 
17
18
  __all__ = [
18
19
  "BaseEventHandler",
20
+ "CodeAnalysisEventHandler",
19
21
  "ConnectionEventHandler",
20
22
  "EventHandlerRegistry",
21
23
  "FileEventHandler",