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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/INSTRUCTIONS.md +26 -1
- claude_mpm/agents/agents_metadata.py +57 -0
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +17 -0
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +3 -0
- claude_mpm/agents/templates/agent-manager.json +263 -17
- claude_mpm/agents/templates/agentic_coder_optimizer.json +222 -0
- claude_mpm/agents/templates/code_analyzer.json +18 -8
- claude_mpm/agents/templates/engineer.json +1 -1
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +39 -0
- claude_mpm/agents/templates/qa.json +1 -1
- claude_mpm/agents/templates/research.json +1 -1
- claude_mpm/cli/__init__.py +15 -0
- claude_mpm/cli/commands/__init__.py +6 -0
- claude_mpm/cli/commands/analyze.py +548 -0
- claude_mpm/cli/commands/analyze_code.py +524 -0
- claude_mpm/cli/commands/configure.py +78 -28
- claude_mpm/cli/commands/configure_tui.py +62 -60
- claude_mpm/cli/commands/dashboard.py +288 -0
- claude_mpm/cli/commands/debug.py +1386 -0
- claude_mpm/cli/commands/mpm_init.py +427 -0
- claude_mpm/cli/commands/mpm_init_handler.py +83 -0
- claude_mpm/cli/parsers/analyze_code_parser.py +170 -0
- claude_mpm/cli/parsers/analyze_parser.py +135 -0
- claude_mpm/cli/parsers/base_parser.py +44 -0
- claude_mpm/cli/parsers/dashboard_parser.py +113 -0
- claude_mpm/cli/parsers/debug_parser.py +319 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +122 -0
- claude_mpm/constants.py +13 -1
- claude_mpm/core/framework_loader.py +148 -6
- claude_mpm/core/log_manager.py +16 -13
- claude_mpm/core/logger.py +1 -1
- claude_mpm/core/unified_agent_registry.py +1 -1
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +1 -0
- claude_mpm/dashboard/analysis_runner.py +455 -0
- claude_mpm/dashboard/static/built/components/activity-tree.js +2 -0
- claude_mpm/dashboard/static/built/components/agent-inference.js +1 -1
- claude_mpm/dashboard/static/built/components/code-tree.js +2 -0
- claude_mpm/dashboard/static/built/components/code-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +1 -1
- claude_mpm/dashboard/static/built/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/built/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/built/dashboard.js +1 -1
- claude_mpm/dashboard/static/built/socket-client.js +1 -1
- claude_mpm/dashboard/static/css/activity.css +549 -0
- claude_mpm/dashboard/static/css/code-tree.css +1175 -0
- claude_mpm/dashboard/static/css/dashboard.css +245 -0
- claude_mpm/dashboard/static/dist/components/activity-tree.js +2 -0
- claude_mpm/dashboard/static/dist/components/code-tree.js +2 -0
- claude_mpm/dashboard/static/dist/components/code-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/dist/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/dist/dashboard.js +1 -1
- claude_mpm/dashboard/static/dist/socket-client.js +1 -1
- claude_mpm/dashboard/static/js/components/activity-tree.js +1338 -0
- claude_mpm/dashboard/static/js/components/code-tree.js +2535 -0
- claude_mpm/dashboard/static/js/components/code-viewer.js +480 -0
- claude_mpm/dashboard/static/js/components/event-viewer.js +59 -9
- claude_mpm/dashboard/static/js/components/session-manager.js +40 -4
- claude_mpm/dashboard/static/js/components/socket-manager.js +12 -0
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +4 -0
- claude_mpm/dashboard/static/js/components/working-directory.js +17 -1
- claude_mpm/dashboard/static/js/dashboard.js +51 -0
- claude_mpm/dashboard/static/js/socket-client.js +465 -29
- claude_mpm/dashboard/templates/index.html +182 -4
- claude_mpm/hooks/claude_hooks/hook_handler.py +182 -5
- claude_mpm/hooks/claude_hooks/installer.py +386 -113
- claude_mpm/scripts/claude-hook-handler.sh +161 -0
- claude_mpm/scripts/socketio_daemon.py +121 -8
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +2 -2
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -2
- claude_mpm/services/agents/memory/memory_format_service.py +1 -3
- claude_mpm/services/cli/agent_cleanup_service.py +1 -5
- claude_mpm/services/cli/agent_dependency_service.py +1 -1
- claude_mpm/services/cli/agent_validation_service.py +3 -4
- claude_mpm/services/cli/dashboard_launcher.py +2 -3
- claude_mpm/services/cli/startup_checker.py +0 -11
- claude_mpm/services/core/cache_manager.py +1 -3
- claude_mpm/services/core/path_resolver.py +1 -4
- claude_mpm/services/core/service_container.py +2 -2
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/infrastructure/monitoring/__init__.py +11 -11
- claude_mpm/services/infrastructure/monitoring.py +11 -11
- claude_mpm/services/project/architecture_analyzer.py +1 -1
- claude_mpm/services/project/dependency_analyzer.py +4 -4
- claude_mpm/services/project/language_analyzer.py +3 -3
- claude_mpm/services/project/metrics_collector.py +3 -6
- claude_mpm/services/socketio/event_normalizer.py +64 -0
- claude_mpm/services/socketio/handlers/__init__.py +2 -0
- claude_mpm/services/socketio/handlers/code_analysis.py +672 -0
- claude_mpm/services/socketio/handlers/registry.py +2 -0
- claude_mpm/services/socketio/server/connection_manager.py +6 -4
- claude_mpm/services/socketio/server/core.py +100 -11
- claude_mpm/services/socketio/server/main.py +8 -2
- claude_mpm/services/visualization/__init__.py +19 -0
- claude_mpm/services/visualization/mermaid_generator.py +938 -0
- claude_mpm/tools/__main__.py +208 -0
- claude_mpm/tools/code_tree_analyzer.py +1596 -0
- claude_mpm/tools/code_tree_builder.py +631 -0
- claude_mpm/tools/code_tree_events.py +416 -0
- claude_mpm/tools/socketio_debug.py +671 -0
- {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/METADATA +2 -1
- {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/RECORD +110 -74
- claude_mpm/agents/schema/agent_schema.json +0 -314
- {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.1.8.dist-info → claude_mpm-4.1.11.dist-info}/licenses/LICENSE +0 -0
- {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
|
|
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;
|