claude-mpm 4.1.12__py3-none-any.whl → 4.1.14__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/cli/commands/monitor.py +88 -627
- claude_mpm/cli/commands/mpm_init.py +7 -2
- claude_mpm/dashboard/static/built/components/activity-tree.js +1 -1
- claude_mpm/dashboard/static/built/components/code-tree.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 +1239 -267
- claude_mpm/dashboard/static/css/code-tree.css +235 -2
- claude_mpm/dashboard/static/css/dashboard.css +511 -0
- claude_mpm/dashboard/static/dist/components/activity-tree.js +1 -1
- claude_mpm/dashboard/static/dist/components/code-tree.js +2 -2593
- claude_mpm/dashboard/static/dist/components/module-viewer.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 +1193 -892
- claude_mpm/dashboard/static/js/components/code-tree.js +535 -258
- claude_mpm/dashboard/static/js/components/module-viewer.js +21 -7
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +1066 -0
- claude_mpm/dashboard/static/js/connection-manager.js +1 -1
- claude_mpm/dashboard/static/js/dashboard.js +196 -43
- claude_mpm/dashboard/static/js/socket-client.js +2 -2
- claude_mpm/dashboard/templates/index.html +95 -25
- claude_mpm/services/cli/socketio_manager.py +1 -1
- claude_mpm/services/infrastructure/monitoring.py +1 -1
- {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.14.dist-info}/METADATA +1 -1
- {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.14.dist-info}/RECORD +31 -30
- {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.14.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.14.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.14.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.14.dist-info}/top_level.txt +0 -0
|
@@ -26,6 +26,7 @@ import { ExportManager } from '@components/export-manager.js';
|
|
|
26
26
|
import { WorkingDirectoryManager } from '@components/working-directory.js';
|
|
27
27
|
import { FileToolTracker } from '@components/file-tool-tracker.js';
|
|
28
28
|
import { BuildTracker } from '@components/build-tracker.js';
|
|
29
|
+
import { UnifiedDataViewer } from '@components/unified-data-viewer.js';
|
|
29
30
|
class Dashboard {
|
|
30
31
|
constructor() {
|
|
31
32
|
// Core components (existing)
|
|
@@ -453,7 +454,7 @@ class Dashboard {
|
|
|
453
454
|
}
|
|
454
455
|
|
|
455
456
|
/**
|
|
456
|
-
* Render agents tab with
|
|
457
|
+
* Render agents tab with flat chronological view
|
|
457
458
|
*/
|
|
458
459
|
renderAgents() {
|
|
459
460
|
const agentsList = document.getElementById('agents-list');
|
|
@@ -463,17 +464,12 @@ class Dashboard {
|
|
|
463
464
|
const searchText = document.getElementById('agents-search-input')?.value || '';
|
|
464
465
|
const agentType = document.getElementById('agents-type-filter')?.value || '';
|
|
465
466
|
|
|
466
|
-
//
|
|
467
|
-
const
|
|
468
|
-
|
|
469
|
-
if (agentType) filters.agentType = agentType;
|
|
467
|
+
// Generate flat HTML
|
|
468
|
+
const flatHTML = this.renderAgentsFlat(searchText, agentType);
|
|
469
|
+
agentsList.innerHTML = flatHTML;
|
|
470
470
|
|
|
471
|
-
//
|
|
472
|
-
|
|
473
|
-
agentsList.innerHTML = hierarchyHTML;
|
|
474
|
-
|
|
475
|
-
// Add expand/collapse all buttons if not present
|
|
476
|
-
this.addHierarchyControls();
|
|
471
|
+
// Remove hierarchy controls if they exist
|
|
472
|
+
this.removeHierarchyControls();
|
|
477
473
|
|
|
478
474
|
// Update filter dropdowns with available agent types
|
|
479
475
|
const uniqueInstances = this.agentInference.getUniqueAgentInstances();
|
|
@@ -481,45 +477,202 @@ class Dashboard {
|
|
|
481
477
|
}
|
|
482
478
|
|
|
483
479
|
/**
|
|
484
|
-
*
|
|
480
|
+
* Remove hierarchy control buttons (flat view doesn't need them)
|
|
485
481
|
*/
|
|
486
|
-
|
|
487
|
-
const
|
|
488
|
-
if (
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
482
|
+
removeHierarchyControls() {
|
|
483
|
+
const existingControls = document.getElementById('hierarchy-controls');
|
|
484
|
+
if (existingControls) {
|
|
485
|
+
existingControls.remove();
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Render agents as a flat chronological list
|
|
491
|
+
* @param {string} searchText - Search filter
|
|
492
|
+
* @param {string} agentType - Agent type filter
|
|
493
|
+
* @returns {string} HTML for flat agent list
|
|
494
|
+
*/
|
|
495
|
+
renderAgentsFlat(searchText, agentType) {
|
|
496
|
+
const events = this.eventViewer.events;
|
|
497
|
+
if (!events || events.length === 0) {
|
|
498
|
+
return '<div class="no-events">No agent events found...</div>';
|
|
499
|
+
}
|
|
492
500
|
|
|
493
|
-
//
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
controls.className = 'hierarchy-controls';
|
|
497
|
-
controls.innerHTML = `
|
|
498
|
-
<button data-action="expand-all"
|
|
499
|
-
class="hierarchy-btn hierarchy-expand-all">
|
|
500
|
-
Expand All
|
|
501
|
-
</button>
|
|
502
|
-
<button data-action="collapse-all"
|
|
503
|
-
class="hierarchy-btn hierarchy-collapse-all">
|
|
504
|
-
Collapse All
|
|
505
|
-
</button>
|
|
506
|
-
`;
|
|
501
|
+
// Process agent inference to get agent mappings
|
|
502
|
+
this.agentInference.processAgentInference();
|
|
503
|
+
const eventAgentMap = this.agentInference.getEventAgentMap();
|
|
507
504
|
|
|
508
|
-
//
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
505
|
+
// Collect all agent events with metadata
|
|
506
|
+
const agentEvents = [];
|
|
507
|
+
events.forEach((event, index) => {
|
|
508
|
+
const inference = eventAgentMap.get(index);
|
|
509
|
+
if (inference && (inference.type === 'subagent' || inference.type === 'main_agent')) {
|
|
510
|
+
// Apply filters
|
|
511
|
+
let includeEvent = true;
|
|
512
|
+
|
|
513
|
+
if (searchText) {
|
|
514
|
+
const searchLower = searchText.toLowerCase();
|
|
515
|
+
includeEvent = includeEvent && (
|
|
516
|
+
inference.agentName.toLowerCase().includes(searchLower) ||
|
|
517
|
+
(event.tool_name && event.tool_name.toLowerCase().includes(searchLower)) ||
|
|
518
|
+
(event.data && JSON.stringify(event.data).toLowerCase().includes(searchLower))
|
|
519
|
+
);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
if (agentType) {
|
|
523
|
+
includeEvent = includeEvent && inference.agentName.includes(agentType);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
if (includeEvent) {
|
|
527
|
+
agentEvents.push({
|
|
528
|
+
event,
|
|
529
|
+
inference,
|
|
530
|
+
index,
|
|
531
|
+
timestamp: new Date(event.timestamp)
|
|
532
|
+
});
|
|
518
533
|
}
|
|
519
534
|
}
|
|
520
535
|
});
|
|
521
536
|
|
|
522
|
-
|
|
537
|
+
if (agentEvents.length === 0) {
|
|
538
|
+
return '<div class="no-events">No agent events match the current filters...</div>';
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
// Generate HTML for each event
|
|
542
|
+
const html = agentEvents.map((item, listIndex) => {
|
|
543
|
+
const { event, inference, index, timestamp } = item;
|
|
544
|
+
|
|
545
|
+
// Determine action/tool
|
|
546
|
+
let action = 'Activity';
|
|
547
|
+
let actionIcon = '📋';
|
|
548
|
+
let details = '';
|
|
549
|
+
|
|
550
|
+
if (event.event_type === 'SubagentStart') {
|
|
551
|
+
action = 'Started';
|
|
552
|
+
actionIcon = '🟢';
|
|
553
|
+
details = 'Agent session began';
|
|
554
|
+
} else if (event.event_type === 'SubagentStop') {
|
|
555
|
+
action = 'Stopped';
|
|
556
|
+
actionIcon = '🔴';
|
|
557
|
+
details = 'Agent session ended';
|
|
558
|
+
} else if (event.tool_name) {
|
|
559
|
+
action = `Tool: ${event.tool_name}`;
|
|
560
|
+
actionIcon = this.getToolIcon(event.tool_name);
|
|
561
|
+
|
|
562
|
+
// Add tool parameters as details
|
|
563
|
+
if (event.data && event.data.tool_parameters) {
|
|
564
|
+
const params = event.data.tool_parameters;
|
|
565
|
+
if (params.file_path) {
|
|
566
|
+
details = params.file_path;
|
|
567
|
+
} else if (params.command) {
|
|
568
|
+
details = params.command.substring(0, 50) + (params.command.length > 50 ? '...' : '');
|
|
569
|
+
} else if (params.pattern) {
|
|
570
|
+
details = `pattern="${params.pattern}"`;
|
|
571
|
+
} else if (params.query) {
|
|
572
|
+
details = `query="${params.query}"`;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// Status based on event type
|
|
578
|
+
let status = 'completed';
|
|
579
|
+
if (event.event_type === 'SubagentStart') {
|
|
580
|
+
status = 'active';
|
|
581
|
+
} else if (event.data && event.data.error) {
|
|
582
|
+
status = 'error';
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
return `
|
|
586
|
+
<div class="agent-event-item" data-index="${listIndex}" onclick="window.dashboard.showCardDetails('agents', ${index})">
|
|
587
|
+
<div class="agent-event-header">
|
|
588
|
+
<div class="agent-event-time">${this.formatTimestamp(timestamp)}</div>
|
|
589
|
+
<div class="agent-event-agent">
|
|
590
|
+
${this.getAgentIcon(inference.agentName)} ${inference.agentName}
|
|
591
|
+
</div>
|
|
592
|
+
<div class="agent-event-action">
|
|
593
|
+
${actionIcon} ${action}
|
|
594
|
+
</div>
|
|
595
|
+
<div class="agent-event-status status-${status}">
|
|
596
|
+
${this.getStatusIcon(status)}
|
|
597
|
+
</div>
|
|
598
|
+
</div>
|
|
599
|
+
${details ? `<div class="agent-event-details">${this.escapeHtml(details)}</div>` : ''}
|
|
600
|
+
</div>
|
|
601
|
+
`;
|
|
602
|
+
}).join('');
|
|
603
|
+
|
|
604
|
+
return `<div class="agent-events-flat">${html}</div>`;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* Get icon for agent type
|
|
609
|
+
*/
|
|
610
|
+
getAgentIcon(agentName) {
|
|
611
|
+
const agentIcons = {
|
|
612
|
+
'PM': '🎯',
|
|
613
|
+
'Engineer Agent': '🔧',
|
|
614
|
+
'Research Agent': '🔍',
|
|
615
|
+
'QA Agent': '✅',
|
|
616
|
+
'Documentation Agent': '📝',
|
|
617
|
+
'Security Agent': '🔒',
|
|
618
|
+
'Ops Agent': '⚙️',
|
|
619
|
+
'Version Control Agent': '📦',
|
|
620
|
+
'Data Engineer Agent': '💾',
|
|
621
|
+
'Test Integration Agent': '🧪'
|
|
622
|
+
};
|
|
623
|
+
return agentIcons[agentName] || '🤖';
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Get icon for tool
|
|
628
|
+
*/
|
|
629
|
+
getToolIcon(toolName) {
|
|
630
|
+
const toolIcons = {
|
|
631
|
+
'Read': '📖',
|
|
632
|
+
'Write': '✏️',
|
|
633
|
+
'Edit': '📝',
|
|
634
|
+
'Bash': '💻',
|
|
635
|
+
'Grep': '🔍',
|
|
636
|
+
'Glob': '📂',
|
|
637
|
+
'LS': '📁',
|
|
638
|
+
'Task': '📋'
|
|
639
|
+
};
|
|
640
|
+
return toolIcons[toolName] || '🔧';
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
/**
|
|
644
|
+
* Get icon for status
|
|
645
|
+
*/
|
|
646
|
+
getStatusIcon(status) {
|
|
647
|
+
const statusIcons = {
|
|
648
|
+
'active': '🟢',
|
|
649
|
+
'completed': '✅',
|
|
650
|
+
'error': '❌',
|
|
651
|
+
'pending': '🟡'
|
|
652
|
+
};
|
|
653
|
+
return statusIcons[status] || '❓';
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* Format timestamp for display
|
|
658
|
+
*/
|
|
659
|
+
formatTimestamp(timestamp) {
|
|
660
|
+
return timestamp.toLocaleTimeString('en-US', {
|
|
661
|
+
hour: '2-digit',
|
|
662
|
+
minute: '2-digit',
|
|
663
|
+
second: '2-digit',
|
|
664
|
+
hour12: false
|
|
665
|
+
});
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Escape HTML for safe display
|
|
670
|
+
*/
|
|
671
|
+
escapeHtml(text) {
|
|
672
|
+
if (!text) return '';
|
|
673
|
+
const div = document.createElement('div');
|
|
674
|
+
div.textContent = text;
|
|
675
|
+
return div.innerHTML;
|
|
523
676
|
}
|
|
524
677
|
|
|
525
678
|
/**
|
|
@@ -315,7 +315,7 @@ class SocketClient {
|
|
|
315
315
|
* Configuration Details:
|
|
316
316
|
* - autoConnect: true - Immediate connection attempt
|
|
317
317
|
* - reconnection: true - Built-in reconnection enabled
|
|
318
|
-
* - pingInterval:
|
|
318
|
+
* - pingInterval: 25000ms - Matches server configuration
|
|
319
319
|
* - pingTimeout: 20000ms - Health check timeout
|
|
320
320
|
* - transports: ['websocket', 'polling'] - Fallback options
|
|
321
321
|
*
|
|
@@ -351,7 +351,7 @@ class SocketClient {
|
|
|
351
351
|
timeout: 20000, // Connection timeout
|
|
352
352
|
forceNew: true,
|
|
353
353
|
transports: ['websocket', 'polling'],
|
|
354
|
-
pingInterval:
|
|
354
|
+
pingInterval: 25000, // CRITICAL: Must match server's 25 seconds
|
|
355
355
|
pingTimeout: 20000 // CRITICAL: Must match server's 20 seconds
|
|
356
356
|
});
|
|
357
357
|
|
|
@@ -331,7 +331,6 @@
|
|
|
331
331
|
<div class="activity-controls">
|
|
332
332
|
<button id="expand-all" class="btn-sm">Expand All</button>
|
|
333
333
|
<button id="collapse-all" class="btn-sm">Collapse All</button>
|
|
334
|
-
<button id="reset-zoom" class="btn-sm">Reset Zoom</button>
|
|
335
334
|
<select id="time-range">
|
|
336
335
|
<option value="all">All Time</option>
|
|
337
336
|
<option value="hour">Last Hour</option>
|
|
@@ -359,24 +358,24 @@
|
|
|
359
358
|
<div id="activity-tree"></div>
|
|
360
359
|
<div class="tree-legend">
|
|
361
360
|
<div class="legend-item">
|
|
362
|
-
<span class="legend-icon
|
|
363
|
-
<span>
|
|
361
|
+
<span class="legend-icon">📁</span>
|
|
362
|
+
<span>Project Root</span>
|
|
364
363
|
</div>
|
|
365
364
|
<div class="legend-item">
|
|
366
|
-
<span class="legend-icon
|
|
367
|
-
<span>
|
|
365
|
+
<span class="legend-icon pm">🎯</span>
|
|
366
|
+
<span>PM Session</span>
|
|
368
367
|
</div>
|
|
369
368
|
<div class="legend-item">
|
|
370
|
-
<span class="legend-icon
|
|
371
|
-
<span>
|
|
369
|
+
<span class="legend-icon todowrite">📝</span>
|
|
370
|
+
<span>Todo Item</span>
|
|
372
371
|
</div>
|
|
373
372
|
<div class="legend-item">
|
|
374
|
-
<span class="legend-icon
|
|
375
|
-
<span>
|
|
373
|
+
<span class="legend-icon agent">🤖</span>
|
|
374
|
+
<span>Agent</span>
|
|
376
375
|
</div>
|
|
377
376
|
<div class="legend-item">
|
|
378
|
-
<span class="legend-icon
|
|
379
|
-
<span>
|
|
377
|
+
<span class="legend-icon tool">🔧</span>
|
|
378
|
+
<span>Tool</span>
|
|
380
379
|
</div>
|
|
381
380
|
</div>
|
|
382
381
|
</div>
|
|
@@ -510,23 +509,94 @@
|
|
|
510
509
|
</div>
|
|
511
510
|
|
|
512
511
|
<!-- JavaScript Modules -->
|
|
513
|
-
<!-- Load bundled dashboard assets (built with Vite) - with
|
|
512
|
+
<!-- Load bundled dashboard assets (built with Vite) - with proper initialization order -->
|
|
514
513
|
<script type="module">
|
|
515
|
-
// Add timestamp-based cache busting
|
|
514
|
+
// Add timestamp-based cache busting and ensure proper loading order
|
|
516
515
|
const timestamp = Date.now();
|
|
517
|
-
const modules = [
|
|
518
|
-
'/static/dist/dashboard.js',
|
|
519
|
-
'/static/dist/components/activity-tree.js',
|
|
520
|
-
'/static/dist/components/code-tree.js',
|
|
521
|
-
'/static/dist/components/code-viewer.js'
|
|
522
|
-
];
|
|
523
516
|
|
|
524
|
-
//
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
517
|
+
// Load modules sequentially to ensure dashboard.js loads first
|
|
518
|
+
const loadModule = (src) => {
|
|
519
|
+
return new Promise((resolve, reject) => {
|
|
520
|
+
const script = document.createElement('script');
|
|
521
|
+
script.type = 'module';
|
|
522
|
+
script.src = `${src}?t=${timestamp}`;
|
|
523
|
+
script.onload = resolve;
|
|
524
|
+
script.onerror = reject;
|
|
525
|
+
document.body.appendChild(script);
|
|
526
|
+
});
|
|
527
|
+
};
|
|
528
|
+
|
|
529
|
+
// Load dashboard.js first, then other components
|
|
530
|
+
Promise.all([
|
|
531
|
+
loadModule('/static/dist/dashboard.js'),
|
|
532
|
+
loadModule('/static/dist/components/activity-tree.js'),
|
|
533
|
+
loadModule('/static/dist/components/code-tree.js'),
|
|
534
|
+
loadModule('/static/dist/components/code-viewer.js')
|
|
535
|
+
]).then(() => {
|
|
536
|
+
console.log('All dashboard modules loaded successfully');
|
|
537
|
+
|
|
538
|
+
// Give modules time to execute and initialize dashboard
|
|
539
|
+
setTimeout(() => {
|
|
540
|
+
console.log('Checking dashboard initialization...');
|
|
541
|
+
|
|
542
|
+
if (window.dashboard) {
|
|
543
|
+
console.log('Dashboard found, checking auto-connect status...');
|
|
544
|
+
|
|
545
|
+
// Force auto-connect if not already connected
|
|
546
|
+
if (window.dashboard.socketManager) {
|
|
547
|
+
const socketManager = window.dashboard.socketManager;
|
|
548
|
+
|
|
549
|
+
if (!socketManager.isConnected() && !socketManager.isConnecting()) {
|
|
550
|
+
console.log('Dashboard loaded but not connected, forcing auto-connect...');
|
|
551
|
+
|
|
552
|
+
// Try to trigger auto-connect manually
|
|
553
|
+
const params = new URLSearchParams(window.location.search);
|
|
554
|
+
socketManager.initializeFromURL(params);
|
|
555
|
+
} else {
|
|
556
|
+
console.log('Dashboard already connected or connecting');
|
|
557
|
+
}
|
|
558
|
+
} else {
|
|
559
|
+
console.warn('Dashboard found but socketManager not available');
|
|
560
|
+
}
|
|
561
|
+
} else {
|
|
562
|
+
console.warn('Dashboard still not initialized after module loading');
|
|
563
|
+
|
|
564
|
+
// Try to manually trigger initialization
|
|
565
|
+
if (document.readyState === 'complete' || document.readyState === 'interactive') {
|
|
566
|
+
console.log('Document ready, attempting to trigger dashboard initialization...');
|
|
567
|
+
document.dispatchEvent(new Event('DOMContentLoaded'));
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// Debug: Test connection settings button
|
|
572
|
+
const connectionToggleBtn = document.getElementById('connection-toggle-btn');
|
|
573
|
+
if (connectionToggleBtn) {
|
|
574
|
+
console.log('Connection toggle button found, testing functionality...');
|
|
575
|
+
|
|
576
|
+
// Add a debug click handler to ensure the button works
|
|
577
|
+
connectionToggleBtn.addEventListener('click', () => {
|
|
578
|
+
console.log('Connection toggle button clicked (debug handler)');
|
|
579
|
+
|
|
580
|
+
if (window.dashboard && window.dashboard.socketManager) {
|
|
581
|
+
console.log('Calling socketManager.toggleConnectionControls()');
|
|
582
|
+
window.dashboard.socketManager.toggleConnectionControls();
|
|
583
|
+
} else {
|
|
584
|
+
console.log('Manual toggle fallback');
|
|
585
|
+
const controlsRow = document.getElementById('connection-controls-row');
|
|
586
|
+
if (controlsRow) {
|
|
587
|
+
const isVisible = controlsRow.style.display !== 'none';
|
|
588
|
+
controlsRow.style.display = isVisible ? 'none' : 'block';
|
|
589
|
+
connectionToggleBtn.textContent = isVisible ? 'Connection Settings' : 'Hide Settings';
|
|
590
|
+
console.log(`Manually toggled controls visibility: ${!isVisible}`);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
});
|
|
594
|
+
} else {
|
|
595
|
+
console.error('Connection toggle button not found in DOM');
|
|
596
|
+
}
|
|
597
|
+
}, 1000);
|
|
598
|
+
}).catch(error => {
|
|
599
|
+
console.error('Failed to load dashboard modules:', error);
|
|
530
600
|
});
|
|
531
601
|
</script>
|
|
532
602
|
</body>
|
|
@@ -183,7 +183,7 @@ class SocketIOManager(ISocketIOManager):
|
|
|
183
183
|
f"Socket.IO server on port {target_port} not responding, attempting cleanup"
|
|
184
184
|
)
|
|
185
185
|
self.stop_server(port=target_port, timeout=5)
|
|
186
|
-
|
|
186
|
+
# Continue with starting a new server
|
|
187
187
|
|
|
188
188
|
# Ensure dependencies are available
|
|
189
189
|
deps_ok, error_msg = self.ensure_dependencies()
|
|
@@ -30,7 +30,7 @@ For backward compatibility, legacy classes are still available:
|
|
|
30
30
|
"""
|
|
31
31
|
|
|
32
32
|
# Re-export all components from the modular implementation
|
|
33
|
-
from .monitoring import (
|
|
33
|
+
from .monitoring import (
|
|
34
34
|
AdvancedHealthMonitor,
|
|
35
35
|
HealthChecker,
|
|
36
36
|
HealthCheckResult,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
claude_mpm/BUILD_NUMBER,sha256=toytnNjkIKPgQaGwDqQdC1rpNTAdSEc6Vja50d7Ovug,4
|
|
2
|
-
claude_mpm/VERSION,sha256=
|
|
2
|
+
claude_mpm/VERSION,sha256=sAWQ1JyXU3b9eFcjVh2abG2B2O4q2zU4-5wBB_cdSLo,7
|
|
3
3
|
claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
|
|
4
4
|
claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
|
|
5
5
|
claude_mpm/constants.py,sha256=I946iCQzIIPRZVVJ8aO7lA4euiyDnNw2IX7EelAOkIE,5915
|
|
@@ -75,8 +75,8 @@ claude_mpm/cli/commands/mcp_pipx_config.py,sha256=sE62VD6Q1CcO2k1nlbIhHMfAJFQTZf
|
|
|
75
75
|
claude_mpm/cli/commands/mcp_server_commands.py,sha256=-1G_2Y5ScTvzDd-kY8fTAao2H6FH7DnsLimleF1rVqQ,6197
|
|
76
76
|
claude_mpm/cli/commands/mcp_tool_commands.py,sha256=q17GzlFT3JiLTrDqwPO2tz1-fKmPO5QU449syTnKTz4,1283
|
|
77
77
|
claude_mpm/cli/commands/memory.py,sha256=Yzfs3_oiKciv3sfOoDm2lJL4M9idG7ARV3-sNw1ge_g,26186
|
|
78
|
-
claude_mpm/cli/commands/monitor.py,sha256=
|
|
79
|
-
claude_mpm/cli/commands/mpm_init.py,sha256=
|
|
78
|
+
claude_mpm/cli/commands/monitor.py,sha256=iALHEe8jh7H3sdZlTANjKPopKUwGLdzx8vs7j0iVoCI,6069
|
|
79
|
+
claude_mpm/cli/commands/mpm_init.py,sha256=M5JMsdMz0HiRGCnwOmoBun4MCibuZOtPq5ftY3xbkW4,16314
|
|
80
80
|
claude_mpm/cli/commands/mpm_init_handler.py,sha256=bubidVBlXQQ_NucU3FBn14W7_pfuj47AS5eBarTjnPw,2854
|
|
81
81
|
claude_mpm/cli/commands/run.py,sha256=7jvKy4emK8szoHR9nEigXnOrkugx4MduLmUadfWnUv0,43113
|
|
82
82
|
claude_mpm/cli/commands/socketio_monitor.py,sha256=GHHY5pKg0XCffoqLoO0l0Nxa9HQY4gdrpYebLVahzl4,9540
|
|
@@ -161,11 +161,11 @@ claude_mpm/dashboard/index.html,sha256=d0DPXBFdtIYWPv0TsLnnYBY8jY2wnoAL9EYAkrUN7
|
|
|
161
161
|
claude_mpm/dashboard/open_dashboard.py,sha256=i4OHdjeQLtZX4UnLVMiFlq6iSENvlCcdcmodmaaU94Q,2205
|
|
162
162
|
claude_mpm/dashboard/test_dashboard.html,sha256=Aakmm9O-pWld_CCXLuUBOJC81Ix9D1avytTN93u0zfc,15090
|
|
163
163
|
claude_mpm/dashboard/.claude-mpm/socketio-instances.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
|
|
164
|
-
claude_mpm/dashboard/static/built/dashboard.js,sha256=
|
|
165
|
-
claude_mpm/dashboard/static/built/socket-client.js,sha256=
|
|
166
|
-
claude_mpm/dashboard/static/built/components/activity-tree.js,sha256=
|
|
164
|
+
claude_mpm/dashboard/static/built/dashboard.js,sha256=kShaKMMdwk1cKcHnXsn-3kLfYMHI14HUgGu_QJQpzZc,52792
|
|
165
|
+
claude_mpm/dashboard/static/built/socket-client.js,sha256=z9HU1HePow8Yvh-7QMcjChwMYsR_p-ZvJVu8HU6d5Xg,29110
|
|
166
|
+
claude_mpm/dashboard/static/built/components/activity-tree.js,sha256=UQqob5vOBJZ2NGfyfDDypRd_4Y8DHDFAVYnNq2RpdoY,27791
|
|
167
167
|
claude_mpm/dashboard/static/built/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
|
|
168
|
-
claude_mpm/dashboard/static/built/components/code-tree.js,sha256=
|
|
168
|
+
claude_mpm/dashboard/static/built/components/code-tree.js,sha256=uYGXTz8XhNmZ5HP03scjhiPo6FJLA7CGotQGzij_0BY,41165
|
|
169
169
|
claude_mpm/dashboard/static/built/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
|
|
170
170
|
claude_mpm/dashboard/static/built/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
|
|
171
171
|
claude_mpm/dashboard/static/built/components/event-viewer.js,sha256=D5tFt75KIj6NINZ0pd1cS3xLQr2XEXyV6-Xk4d6eZGY,26423
|
|
@@ -179,15 +179,15 @@ claude_mpm/dashboard/static/built/components/session-manager.js,sha256=ZG__csNeB
|
|
|
179
179
|
claude_mpm/dashboard/static/built/components/socket-manager.js,sha256=LEqCS0_EABAsQVUfb6WQk152mSicK2k039zne5cKR8A,131
|
|
180
180
|
claude_mpm/dashboard/static/built/components/ui-state-manager.js,sha256=PtZs6sxNhqMMFwdlr04kDKQbgOvxtMHdjSh56KR2ZBo,134
|
|
181
181
|
claude_mpm/dashboard/static/built/components/working-directory.js,sha256=xE1ydpKDzRWrzHzfjrCiq5wbf3vDhmgQTGKS7myQcPM,15790
|
|
182
|
-
claude_mpm/dashboard/static/css/activity.css,sha256=
|
|
183
|
-
claude_mpm/dashboard/static/css/code-tree.css,sha256=
|
|
182
|
+
claude_mpm/dashboard/static/css/activity.css,sha256=ClwqYuLrq7X0-Uj8jVuMFUvsr7BPtacaeaxLoPM-nAo,29141
|
|
183
|
+
claude_mpm/dashboard/static/css/code-tree.css,sha256=x0MlVKrBBYr7XU8ndhxx7cjCe35GouhthIM32Zc9SA8,25599
|
|
184
184
|
claude_mpm/dashboard/static/css/connection-status.css,sha256=nQiMLxIFjY5MDgrVCG58VR5H1PpE1vLlgXmnn01-P64,6729
|
|
185
|
-
claude_mpm/dashboard/static/css/dashboard.css,sha256=
|
|
186
|
-
claude_mpm/dashboard/static/dist/dashboard.js,sha256=
|
|
187
|
-
claude_mpm/dashboard/static/dist/socket-client.js,sha256=
|
|
188
|
-
claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=
|
|
185
|
+
claude_mpm/dashboard/static/css/dashboard.css,sha256=7QlDMl1GKluf2MA_jlijTUVlMlK0RgdyfS1RLD7uv9k,75201
|
|
186
|
+
claude_mpm/dashboard/static/dist/dashboard.js,sha256=kShaKMMdwk1cKcHnXsn-3kLfYMHI14HUgGu_QJQpzZc,52792
|
|
187
|
+
claude_mpm/dashboard/static/dist/socket-client.js,sha256=z9HU1HePow8Yvh-7QMcjChwMYsR_p-ZvJVu8HU6d5Xg,29110
|
|
188
|
+
claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=273Cnf9kGJIaZIUapVTstYTikIOjldKMY9k1rA85lJM,29771
|
|
189
189
|
claude_mpm/dashboard/static/dist/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
|
|
190
|
-
claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=
|
|
190
|
+
claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=uYGXTz8XhNmZ5HP03scjhiPo6FJLA7CGotQGzij_0BY,41165
|
|
191
191
|
claude_mpm/dashboard/static/dist/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
|
|
192
192
|
claude_mpm/dashboard/static/dist/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
|
|
193
193
|
claude_mpm/dashboard/static/dist/components/event-viewer.js,sha256=D5tFt75KIj6NINZ0pd1cS3xLQr2XEXyV6-Xk4d6eZGY,26423
|
|
@@ -196,20 +196,20 @@ claude_mpm/dashboard/static/dist/components/file-tool-tracker.js,sha256=fZgUsg_u
|
|
|
196
196
|
claude_mpm/dashboard/static/dist/components/hud-library-loader.js,sha256=v08Xntd0Lwf-q6Nww1X2r5AWokYLgg9xUWe6ExHiNAg,2964
|
|
197
197
|
claude_mpm/dashboard/static/dist/components/hud-manager.js,sha256=CvgzgqprROjl0DP4yQx4aAypONuNlzU2EP8woGk-8Sc,27392
|
|
198
198
|
claude_mpm/dashboard/static/dist/components/hud-visualizer.js,sha256=igUUu1OLKOgwrdsfCEb-bKOsbi61bMLlpKa3hR2wQdI,69
|
|
199
|
-
claude_mpm/dashboard/static/dist/components/module-viewer.js,sha256=
|
|
199
|
+
claude_mpm/dashboard/static/dist/components/module-viewer.js,sha256=am9K06JJjlrFcp1VJHP78hkk8wO803IhIzUX5_oQi3Q,80083
|
|
200
200
|
claude_mpm/dashboard/static/dist/components/session-manager.js,sha256=ZG__csNeB8-cG1VhRNoojD-DSmNHijXI4To410hGf2E,8970
|
|
201
201
|
claude_mpm/dashboard/static/dist/components/socket-manager.js,sha256=LEqCS0_EABAsQVUfb6WQk152mSicK2k039zne5cKR8A,131
|
|
202
202
|
claude_mpm/dashboard/static/dist/components/ui-state-manager.js,sha256=PtZs6sxNhqMMFwdlr04kDKQbgOvxtMHdjSh56KR2ZBo,134
|
|
203
203
|
claude_mpm/dashboard/static/dist/components/working-directory.js,sha256=xE1ydpKDzRWrzHzfjrCiq5wbf3vDhmgQTGKS7myQcPM,15790
|
|
204
|
-
claude_mpm/dashboard/static/js/connection-manager.js,sha256=
|
|
205
|
-
claude_mpm/dashboard/static/js/dashboard.js,sha256=
|
|
204
|
+
claude_mpm/dashboard/static/js/connection-manager.js,sha256=nn7x1jmwEnBClcChbFk1uMhRPu5U1xmXz3sjuo0LNm4,17981
|
|
205
|
+
claude_mpm/dashboard/static/js/dashboard.js,sha256=SFVWeJTG2w0fzAbVKzunN1NMPx13tJs7RqORVMAfuNI,79401
|
|
206
206
|
claude_mpm/dashboard/static/js/extension-error-handler.js,sha256=DZHrJ3gbfv4nsjmZpNMj-Sc3GKjVJ5ds8lgoaLRnq5I,6274
|
|
207
|
-
claude_mpm/dashboard/static/js/socket-client.js,sha256=
|
|
208
|
-
claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=
|
|
207
|
+
claude_mpm/dashboard/static/js/socket-client.js,sha256=wC4vH0oP6xIDcSA-Q8cNI2bPW3hg3SAS9TZ75cD6y9Y,56052
|
|
208
|
+
claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=358pc-N6lrJ1bfBwgIgt1P16pzwLI0r1dUDV0nrjSLU,59224
|
|
209
209
|
claude_mpm/dashboard/static/js/components/agent-hierarchy.js,sha256=Xihxog_vJrk8VBEkDogV_wbye2GIFWmH71VQ1lETOHk,28243
|
|
210
210
|
claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=RUVZ_fLOyDkHYjrROen_Pzzay79Bh29eXp_GRIPbIRg,37493
|
|
211
211
|
claude_mpm/dashboard/static/js/components/build-tracker.js,sha256=iouv35tNhnyx9UKtD7X1eakJkpCnvZVCrAJ_VdzsKUY,11251
|
|
212
|
-
claude_mpm/dashboard/static/js/components/code-tree.js,sha256=
|
|
212
|
+
claude_mpm/dashboard/static/js/components/code-tree.js,sha256=bLLU7MBZmTccIa3h3WCAyEwsyhRn5jicgJ7rpPPAYxQ,117432
|
|
213
213
|
claude_mpm/dashboard/static/js/components/code-viewer.js,sha256=vhesEPYOM6MggweaYvYsv7ufVbuVpIcyJPXpJXyJwpM,14453
|
|
214
214
|
claude_mpm/dashboard/static/js/components/connection-debug.js,sha256=Qxr_ofDNkxDlZAwbLnhZkXVMyuO9jOe-NMWC9VHxNnA,22196
|
|
215
215
|
claude_mpm/dashboard/static/js/components/event-processor.js,sha256=_GnAz8pxN1iyXw0O4AIR482QFyQAigEKO9IDUOUbGqc,24844
|
|
@@ -219,12 +219,13 @@ claude_mpm/dashboard/static/js/components/file-tool-tracker.js,sha256=y8O7kW5uP6
|
|
|
219
219
|
claude_mpm/dashboard/static/js/components/hud-library-loader.js,sha256=SK6tY8TL88lnewi4M-i092HdgYondv_lVfHoQ-A_cWU,7170
|
|
220
220
|
claude_mpm/dashboard/static/js/components/hud-manager.js,sha256=hpvz1Ls5UcNgTbwjl7tK0OgNZ_QHnRXgNqqYaq4jjvM,25956
|
|
221
221
|
claude_mpm/dashboard/static/js/components/hud-visualizer.js,sha256=crgq3eA4xiXDE4SV9m-S94Of2y7znd1a3F4GYn2yjnU,61127
|
|
222
|
-
claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=
|
|
222
|
+
claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=5OQpPfBr0AmNF4tKPw5eZ9HRVCFegHp4lVBs4iOb_JA,116834
|
|
223
223
|
claude_mpm/dashboard/static/js/components/session-manager.js,sha256=pJrlMcSBNTXoK5nDLWLcIesOosk0FQtkTEM6X7eSI_I,22807
|
|
224
224
|
claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=KC-aOJDEPSiMPYk0ABgvCC1xmO7TVQ4SVqohi2GNsWQ,13303
|
|
225
225
|
claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=EWm0HpPI9TShChitRCyZvZCiUk5rIBVyw10BoHdnTzI,13178
|
|
226
|
+
claude_mpm/dashboard/static/js/components/unified-data-viewer.js,sha256=FKz0H4lVuHwnxXzgNA3bbIGWvQRE2ToY4kHKd-g9HqU,36173
|
|
226
227
|
claude_mpm/dashboard/static/js/components/working-directory.js,sha256=BRsPYwVnhbhFl0mC0Gvb-Ev1zxAu6yZpZcl1T1aJWWA,33558
|
|
227
|
-
claude_mpm/dashboard/templates/index.html,sha256=
|
|
228
|
+
claude_mpm/dashboard/templates/index.html,sha256=dGb4Z2vcboxvZdNS8zv41mOM5VtHkD6gt7dlvc3tb2U,30667
|
|
228
229
|
claude_mpm/experimental/cli_enhancements.py,sha256=rlYOMVlj8vQzuyCkHWQ7TtjcsDeFq3y1Ng5qty2fyY8,11486
|
|
229
230
|
claude_mpm/generators/__init__.py,sha256=rG8vwF_BjPmeMKvyMXpUA8uJ-7mtW2HTNfalZzgRlNk,153
|
|
230
231
|
claude_mpm/generators/agent_profile_generator.py,sha256=0C4Cziee6qqXOe1t0J7JO8L5cAudV-xJT_bPw1jS_9k,5695
|
|
@@ -388,7 +389,7 @@ claude_mpm/services/cli/dashboard_launcher.py,sha256=PCqk9e6E7SHrKmjrXZJ5Ak8yuB7
|
|
|
388
389
|
claude_mpm/services/cli/memory_crud_service.py,sha256=ciN9Pl_12iDAqF9zPBWOzu-iXiAzpy3CiIwXRoeB5m0,22645
|
|
389
390
|
claude_mpm/services/cli/memory_output_formatter.py,sha256=nbf7VsjGvH4e9fLv9c7PzjuO9COZhbK5P2fNZ79055w,24783
|
|
390
391
|
claude_mpm/services/cli/session_manager.py,sha256=rla_Stbcvt93wa9G9MCMu9UqB3FLGqlPt_eN5lQb3Gg,16599
|
|
391
|
-
claude_mpm/services/cli/socketio_manager.py,sha256=
|
|
392
|
+
claude_mpm/services/cli/socketio_manager.py,sha256=pM5ztJjezdN9tr8Ob5mZTgZFg9ARLR_fmmLvxhP7FjE,18173
|
|
392
393
|
claude_mpm/services/cli/startup_checker.py,sha256=efhuvu8ns5G16jcQ0nQZKVddmD2AktUEdlvjNcXjAuk,12232
|
|
393
394
|
claude_mpm/services/communication/__init__.py,sha256=b4qc7_Rqy4DE9q7BAUlfUZjoYG4uimAyUnE0irPcXyU,560
|
|
394
395
|
claude_mpm/services/core/__init__.py,sha256=evEayLlBqJvxMZhrhuK6aagXmNrKGSj8Jm9OOxKzqvU,2195
|
|
@@ -459,7 +460,7 @@ claude_mpm/services/infrastructure/__init__.py,sha256=dKXYEeDbAHMImXmefgcHrlTdcg
|
|
|
459
460
|
claude_mpm/services/infrastructure/context_preservation.py,sha256=QzN0SOaFx7PndLZTNn2rO8G6XGnbZvasm7Y-zOU0x-E,21060
|
|
460
461
|
claude_mpm/services/infrastructure/daemon_manager.py,sha256=ZfEmSSwyP7nYRfdpEl7GdNuFOxPV99XlGnSTg_akEHI,8555
|
|
461
462
|
claude_mpm/services/infrastructure/logging.py,sha256=3bYMJi-qzpPNgs1-Epfp6EAuRm5iP-hypIluSpgy0Eg,6473
|
|
462
|
-
claude_mpm/services/infrastructure/monitoring.py,sha256=
|
|
463
|
+
claude_mpm/services/infrastructure/monitoring.py,sha256=XkcTMRj9R4gST77Yoxg2OyAYWWeF9iF9brw8aGeU2GA,2129
|
|
463
464
|
claude_mpm/services/infrastructure/monitoring/__init__.py,sha256=4Wo3CV8F2Gcc0OyPHEf1Uz1JkMYksdKky_yUDxF0vTE,1066
|
|
464
465
|
claude_mpm/services/infrastructure/monitoring/aggregator.py,sha256=vvPSDrvJmO2l9QhUajz4ZxBNT1Yk3XOVp-8wZKxv_wc,15201
|
|
465
466
|
claude_mpm/services/infrastructure/monitoring/base.py,sha256=f4sOTWbfH5p9P7n4N2iOVe3GWGxhqlLv6UD1LdKzV70,3864
|
|
@@ -581,9 +582,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=zgiwLqh_17WxHpySvUPH65pb4bzIeUGOAYUJ
|
|
|
581
582
|
claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
|
|
582
583
|
claude_mpm/validation/agent_validator.py,sha256=3Lo6LK-Mw9IdnL_bd3zl_R6FkgSVDYKUUM7EeVVD3jc,20865
|
|
583
584
|
claude_mpm/validation/frontmatter_validator.py,sha256=u8g4Eyd_9O6ugj7Un47oSGh3kqv4wMkuks2i_CtWRvM,7028
|
|
584
|
-
claude_mpm-4.1.
|
|
585
|
-
claude_mpm-4.1.
|
|
586
|
-
claude_mpm-4.1.
|
|
587
|
-
claude_mpm-4.1.
|
|
588
|
-
claude_mpm-4.1.
|
|
589
|
-
claude_mpm-4.1.
|
|
585
|
+
claude_mpm-4.1.14.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
|
|
586
|
+
claude_mpm-4.1.14.dist-info/METADATA,sha256=zKwH7YdmTVCBMXRnV5qY9iD5_PN660U4C9_DRFlhO9M,13419
|
|
587
|
+
claude_mpm-4.1.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
588
|
+
claude_mpm-4.1.14.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
|
|
589
|
+
claude_mpm-4.1.14.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
|
590
|
+
claude_mpm-4.1.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|