claude-mpm 4.1.12__py3-none-any.whl → 4.1.13__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 (30) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/cli/commands/monitor.py +88 -627
  3. claude_mpm/cli/commands/mpm_init.py +7 -2
  4. claude_mpm/dashboard/static/built/components/activity-tree.js +1 -1
  5. claude_mpm/dashboard/static/built/components/code-tree.js +1 -1
  6. claude_mpm/dashboard/static/built/dashboard.js +1 -1
  7. claude_mpm/dashboard/static/built/socket-client.js +1 -1
  8. claude_mpm/dashboard/static/css/activity.css +1239 -267
  9. claude_mpm/dashboard/static/css/dashboard.css +511 -0
  10. claude_mpm/dashboard/static/dist/components/activity-tree.js +1 -1
  11. claude_mpm/dashboard/static/dist/components/code-tree.js +2 -2593
  12. claude_mpm/dashboard/static/dist/components/module-viewer.js +1 -1
  13. claude_mpm/dashboard/static/dist/dashboard.js +1 -1
  14. claude_mpm/dashboard/static/dist/socket-client.js +1 -1
  15. claude_mpm/dashboard/static/js/components/activity-tree.js +1193 -892
  16. claude_mpm/dashboard/static/js/components/code-tree.js +0 -17
  17. claude_mpm/dashboard/static/js/components/module-viewer.js +21 -7
  18. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +1066 -0
  19. claude_mpm/dashboard/static/js/connection-manager.js +1 -1
  20. claude_mpm/dashboard/static/js/dashboard.js +196 -43
  21. claude_mpm/dashboard/static/js/socket-client.js +2 -2
  22. claude_mpm/dashboard/templates/index.html +95 -25
  23. claude_mpm/services/cli/socketio_manager.py +1 -1
  24. claude_mpm/services/infrastructure/monitoring.py +1 -1
  25. {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.13.dist-info}/METADATA +1 -1
  26. {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.13.dist-info}/RECORD +30 -29
  27. {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.13.dist-info}/WHEEL +0 -0
  28. {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.13.dist-info}/entry_points.txt +0 -0
  29. {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.13.dist-info}/licenses/LICENSE +0 -0
  30. {claude_mpm-4.1.12.dist-info → claude_mpm-4.1.13.dist-info}/top_level.txt +0 -0
@@ -104,7 +104,7 @@ class EnhancedConnectionManager {
104
104
  timeout: 20000,
105
105
  transports: ['websocket', 'polling'],
106
106
  pingInterval: 25000,
107
- pingTimeout: 60000
107
+ pingTimeout: 20000
108
108
  });
109
109
 
110
110
  this.setupSocketHandlers();
@@ -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 hierarchical view
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
- // Build filters object
467
- const filters = {};
468
- if (searchText) filters.searchText = searchText;
469
- if (agentType) filters.agentType = agentType;
467
+ // Generate flat HTML
468
+ const flatHTML = this.renderAgentsFlat(searchText, agentType);
469
+ agentsList.innerHTML = flatHTML;
470
470
 
471
- // Generate hierarchical HTML
472
- const hierarchyHTML = this.agentHierarchy.render(filters);
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
- * Add hierarchy control buttons
480
+ * Remove hierarchy control buttons (flat view doesn't need them)
485
481
  */
486
- addHierarchyControls() {
487
- const tabFilters = document.querySelector('#agents-tab .tab-filters');
488
- if (!tabFilters) return;
489
-
490
- // Check if controls already exist
491
- if (document.getElementById('hierarchy-controls')) return;
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
- // Create control buttons
494
- const controls = document.createElement('div');
495
- controls.id = 'hierarchy-controls';
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
- // Add safe event listeners
509
- controls.addEventListener('click', (event) => {
510
- const action = event.target.dataset.action;
511
- if (action && window.dashboard && window.dashboard.agentHierarchy) {
512
- if (action === 'expand-all') {
513
- window.dashboard.agentHierarchy.expandAllNodes();
514
- window.dashboard.renderAgents();
515
- } else if (action === 'collapse-all') {
516
- window.dashboard.agentHierarchy.collapseAllNodes();
517
- window.dashboard.renderAgents();
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
- tabFilters.appendChild(controls);
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: 45000ms - Matches server configuration
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: 45000, // CRITICAL: Must match server's 45 seconds
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 pm">●</span>
363
- <span>PM</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 todowrite">■</span>
367
- <span>TodoWrite</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 agent">●</span>
371
- <span>Agent</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 tool">●</span>
375
- <span>Tool</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 file">●</span>
379
- <span>File/Command</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 timestamp cache busting -->
512
+ <!-- Load bundled dashboard assets (built with Vite) - with proper initialization order -->
514
513
  <script type="module">
515
- // Add timestamp-based cache busting to all module imports
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
- // Dynamically import each module with cache busting
525
- modules.forEach(modulePath => {
526
- const script = document.createElement('script');
527
- script.type = 'module';
528
- script.src = `${modulePath}?t=${timestamp}`;
529
- document.body.appendChild(script);
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
- # Continue with starting a new server
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 ( # noqa: F401
33
+ from .monitoring import (
34
34
  AdvancedHealthMonitor,
35
35
  HealthChecker,
36
36
  HealthCheckResult,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.1.12
3
+ Version: 4.1.13
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=toytnNjkIKPgQaGwDqQdC1rpNTAdSEc6Vja50d7Ovug,4
2
- claude_mpm/VERSION,sha256=pA0PDcbDd54qtqPLESZNiMjxMry2U5GfMzmfInLXyEA,7
2
+ claude_mpm/VERSION,sha256=E1InPHCtwH8S_MOiQtRRNQYYpQcw7o4xWnOYO1oirn0,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=F4HY3x1A6hJgtHJlLssIWJFgND1xFGfzZSLU0ylwHpM,27308
79
- claude_mpm/cli/commands/mpm_init.py,sha256=H9kDt1DjVZBV7tgLHVcFPYURBKYv01CwMRnKZNMvZkM,16209
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=hJwPqEZ6jWrobIsawl7QKz1a_wJ0D7frWxl8tXhHxCg,51908
165
- claude_mpm/dashboard/static/built/socket-client.js,sha256=SrcjD1q6YBh9R0PtFNAYXAj8IU3WndA5C3t8Llfa9iw,29110
166
- claude_mpm/dashboard/static/built/components/activity-tree.js,sha256=_oc9c4NPD21lTLQyRnog8-FcwYEXPEo_MG9w6kSctQM,20585
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=iZa89wJHUbbwrfCtVKVw2xGTZRtFmnWLMRoL9M155Lc,36628
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=wSulDUcObOR9WKxlKUfvFjwgkv8CLfs1wtuhKnImdOg,9101
182
+ claude_mpm/dashboard/static/css/activity.css,sha256=7RQBekJLMIcavAHBWUsP5CTUV-GmjUbWKsRRowrl7Eo,29093
183
183
  claude_mpm/dashboard/static/css/code-tree.css,sha256=xgWxg5yWOeJhiZ8eirxri6JHETxQs8SQDSv3yYtdgfY,20894
184
184
  claude_mpm/dashboard/static/css/connection-status.css,sha256=nQiMLxIFjY5MDgrVCG58VR5H1PpE1vLlgXmnn01-P64,6729
185
- claude_mpm/dashboard/static/css/dashboard.css,sha256=zhedJp4daAiIstRuasckfwdCLL5s700YRYHYNefz718,66023
186
- claude_mpm/dashboard/static/dist/dashboard.js,sha256=hJwPqEZ6jWrobIsawl7QKz1a_wJ0D7frWxl8tXhHxCg,51908
187
- claude_mpm/dashboard/static/dist/socket-client.js,sha256=SrcjD1q6YBh9R0PtFNAYXAj8IU3WndA5C3t8Llfa9iw,29110
188
- claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=_oc9c4NPD21lTLQyRnog8-FcwYEXPEo_MG9w6kSctQM,20585
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=a6kwZx5fE9rDnfDRAFzS7eXzKKabgXtaA_cPRVJYj1o,91165
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=w8oCXuubv1RGHAkUl2n89gAF6Qu-riP_mxRbDBpf3Bw,56764
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=IJrtihUCQqkECXhiqy53vAJIdxNp7pJVIsV2ocos3As,17981
205
- claude_mpm/dashboard/static/js/dashboard.js,sha256=v8meyOAZiCZ_JEw5wTKNVzQwOtDI0VREQ5L6ptlW0iw,73966
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=l6EfzUVzgq-a1Na0FS7rVwYGbO6CmrRvnVy7iAoJPdc,56052
208
- claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=6Dm-4yMqxjxtz7MJh3HCL1oGCYpTPWAxa6X5v5fxLbI,44719
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=bbNPHSR9WiVf4dkyCS0E2tAkpeGxR_Vr893qua82gtk,105876
212
+ claude_mpm/dashboard/static/js/components/code-tree.js,sha256=Miz1rHQnRKk416fWVM15oRbrg3P6mhPMCfifDcrIlq0,105246
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=tQpKgcN7rY54gpk3Szh0ZhhoZVg3J6UHB_YJyFy9AW8,116248
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=K_Gn-nISwn0SXM3dn1rsmwNU46izl8JYjVN4QCLLB5c,26710
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=j11Q6w-oxFEeXltSfy2riAhYwWPnm4_9G8XZjlnyDy0,18177
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=9JTtIhK4rO7Bko_QWjYlviNkNNrxjbw-uddteKpc9Y8,2143
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.12.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
585
- claude_mpm-4.1.12.dist-info/METADATA,sha256=799EFJYPXgdtoFNFj9o8q12aZH6ytETEbKtOxtcIzlw,13419
586
- claude_mpm-4.1.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
587
- claude_mpm-4.1.12.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
588
- claude_mpm-4.1.12.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
589
- claude_mpm-4.1.12.dist-info/RECORD,,
585
+ claude_mpm-4.1.13.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
586
+ claude_mpm-4.1.13.dist-info/METADATA,sha256=evsLnQuIHu_It8VWFFH-ZssK4rbm83BsTHUI6vganjo,13419
587
+ claude_mpm-4.1.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
588
+ claude_mpm-4.1.13.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
589
+ claude_mpm-4.1.13.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
590
+ claude_mpm-4.1.13.dist-info/RECORD,,