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
@@ -81,6 +81,10 @@ class SocketManager {
81
81
 
82
82
  // Set up git branch listener when connected
83
83
  if (type === 'connected' && this.socketClient && this.socketClient.socket) {
84
+ // Expose socket globally for components like CodeTree
85
+ window.socket = this.socketClient.socket;
86
+ console.log('SocketManager: Exposed socket globally as window.socket');
87
+
84
88
  this.setupGitBranchListener();
85
89
  }
86
90
  }
@@ -105,6 +109,9 @@ class SocketManager {
105
109
 
106
110
  if (this.socketClient.socket.connected) {
107
111
  console.log('SocketManager: Socket is already connected, updating status');
112
+ // Expose socket globally for components like CodeTree
113
+ window.socket = this.socketClient.socket;
114
+ console.log('SocketManager: Exposed socket globally as window.socket');
108
115
  this.updateConnectionStatus('Connected', 'connected');
109
116
  } else if (this.socketClient.isConnecting || this.socketClient.socket.connecting) {
110
117
  console.log('SocketManager: Socket is connecting, updating status');
@@ -123,6 +130,11 @@ class SocketManager {
123
130
  console.log('SocketManager: Secondary status check after 1 second');
124
131
  if (this.socketClient && this.socketClient.socket && this.socketClient.socket.connected) {
125
132
  console.log('SocketManager: Socket connected in secondary check, updating status');
133
+ // Expose socket globally if not already done
134
+ if (!window.socket) {
135
+ window.socket = this.socketClient.socket;
136
+ console.log('SocketManager: Exposed socket globally as window.socket (secondary check)');
137
+ }
126
138
  this.updateConnectionStatus('Connected', 'connected');
127
139
  }
128
140
  }, 1000);
@@ -92,9 +92,13 @@ class UIStateManager {
92
92
  getTabNameFromButton(button) {
93
93
  const text = button.textContent.toLowerCase();
94
94
  if (text.includes('events')) return 'events';
95
+ if (text.includes('activity')) return 'activity';
95
96
  if (text.includes('agents')) return 'agents';
96
97
  if (text.includes('tools')) return 'tools';
97
98
  if (text.includes('files')) return 'files';
99
+ if (text.includes('code')) return 'code';
100
+ if (text.includes('sessions')) return 'sessions';
101
+ if (text.includes('system')) return 'system';
98
102
  return 'events';
99
103
  }
100
104
 
@@ -310,8 +310,24 @@ class WorkingDirectoryManager {
310
310
  */
311
311
  getDefaultWorkingDir() {
312
312
  console.log('[WORKING-DIR-DEBUG] getDefaultWorkingDir called');
313
+
314
+ // Try to get from the current working directory if set
315
+ if (this.currentWorkingDir && this.validateDirectoryPath(this.currentWorkingDir)) {
316
+ console.log('[WORKING-DIR-DEBUG] Using current working directory:', this.currentWorkingDir);
317
+ return this.currentWorkingDir;
318
+ }
319
+
320
+ // Try to get from header display
321
+ const headerWorkingDir = document.querySelector('.working-dir-text');
322
+ if (headerWorkingDir?.textContent?.trim()) {
323
+ const headerPath = headerWorkingDir.textContent.trim();
324
+ if (headerPath !== 'Loading...' && headerPath !== 'Unknown' && this.validateDirectoryPath(headerPath)) {
325
+ console.log('[WORKING-DIR-DEBUG] Using header working directory:', headerPath);
326
+ return headerPath;
327
+ }
328
+ }
313
329
 
314
- // Try to get from footer first
330
+ // Try to get from footer
315
331
  const footerDir = document.getElementById('footer-working-dir');
316
332
  if (footerDir?.textContent?.trim()) {
317
333
  const footerPath = footerDir.textContent.trim();
@@ -372,6 +372,57 @@ class Dashboard {
372
372
  case 'events':
373
373
  // Events tab is handled by EventViewer
374
374
  break;
375
+ case 'activity':
376
+ // Trigger Activity tab rendering through the component
377
+ // Check if ActivityTree class is available (from built module)
378
+ if (window.ActivityTree && typeof window.ActivityTree === 'function') {
379
+ // Create or get instance
380
+ if (!window.activityTreeInstance) {
381
+ console.log('Creating new ActivityTree instance...');
382
+ window.activityTreeInstance = new window.ActivityTree();
383
+ }
384
+
385
+ // Initialize if needed and render
386
+ if (window.activityTreeInstance) {
387
+ if (!window.activityTreeInstance.initialized) {
388
+ console.log('Initializing ActivityTree...');
389
+ window.activityTreeInstance.initialize();
390
+ }
391
+
392
+ if (typeof window.activityTreeInstance.renderWhenVisible === 'function') {
393
+ console.log('Dashboard triggering activity tree render...');
394
+ window.activityTreeInstance.renderWhenVisible();
395
+ }
396
+
397
+ // Force show to ensure the tree is visible
398
+ if (typeof window.activityTreeInstance.forceShow === 'function') {
399
+ console.log('Dashboard forcing activity tree to show...');
400
+ window.activityTreeInstance.forceShow();
401
+ }
402
+ }
403
+ } else if (window.activityTree && typeof window.activityTree === 'function') {
404
+ // Fallback to legacy approach if available
405
+ const activityTreeInstance = window.activityTree();
406
+ if (activityTreeInstance) {
407
+ if (typeof activityTreeInstance.renderWhenVisible === 'function') {
408
+ console.log('Dashboard triggering activity tree render (legacy)...');
409
+ activityTreeInstance.renderWhenVisible();
410
+ }
411
+ if (typeof activityTreeInstance.forceShow === 'function') {
412
+ console.log('Dashboard forcing activity tree to show (legacy)...');
413
+ activityTreeInstance.forceShow();
414
+ }
415
+ }
416
+ } else {
417
+ // Module not loaded yet, retry after a delay
418
+ console.warn('Activity tree component not available, retrying in 100ms...');
419
+ setTimeout(() => {
420
+ if (this.currentTab === 'activity') {
421
+ this.renderCurrentTab();
422
+ }
423
+ }, 100);
424
+ }
425
+ break;
375
426
  case 'agents':
376
427
  this.renderAgents();
377
428
  break;