claude-mpm 4.1.24__py3-none-any.whl → 4.1.25__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/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/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +2 -0
- claude_mpm/dashboard/static/built/dashboard.js +1 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +1 -1
- claude_mpm/dashboard/static/dist/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/dashboard.js +1 -1
- claude_mpm/dashboard/static/js/components/activity-tree.js +4 -2
- claude_mpm/dashboard/static/js/components/event-processor.js +0 -107
- claude_mpm/dashboard/static/js/components/module-viewer.js +21 -198
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +104 -11
- claude_mpm/dashboard/static/js/dashboard.js +22 -428
- claude_mpm/tools/code_tree_analyzer.py +3 -1
- {claude_mpm-4.1.24.dist-info → claude_mpm-4.1.25.dist-info}/METADATA +1 -1
- {claude_mpm-4.1.24.dist-info → claude_mpm-4.1.25.dist-info}/RECORD +24 -23
- claude_mpm/dashboard/static/dist/chunks/unified-data-viewer.B7wmm2bD.js +0 -2
- {claude_mpm-4.1.24.dist-info → claude_mpm-4.1.25.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.24.dist-info → claude_mpm-4.1.25.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.1.24.dist-info → claude_mpm-4.1.25.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.24.dist-info → claude_mpm-4.1.25.dist-info}/top_level.txt +0 -0
|
@@ -33,6 +33,10 @@ class Dashboard {
|
|
|
33
33
|
this.eventViewer = null;
|
|
34
34
|
this.moduleViewer = null;
|
|
35
35
|
this.sessionManager = null;
|
|
36
|
+
|
|
37
|
+
// Retry prevention
|
|
38
|
+
this.activityTreeRetryCount = 0;
|
|
39
|
+
this.maxRetryAttempts = 10;
|
|
36
40
|
|
|
37
41
|
// New modular components
|
|
38
42
|
this.socketManager = null;
|
|
@@ -385,6 +389,9 @@ class Dashboard {
|
|
|
385
389
|
// Trigger Activity tab rendering through the component
|
|
386
390
|
// Check if ActivityTree class is available (from built module)
|
|
387
391
|
if (window.ActivityTree && typeof window.ActivityTree === 'function') {
|
|
392
|
+
// Reset retry count on successful load
|
|
393
|
+
this.activityTreeRetryCount = 0;
|
|
394
|
+
|
|
388
395
|
// Create or get instance
|
|
389
396
|
if (!window.activityTreeInstance) {
|
|
390
397
|
console.log('Creating new ActivityTree instance...');
|
|
@@ -423,13 +430,22 @@ class Dashboard {
|
|
|
423
430
|
}
|
|
424
431
|
}
|
|
425
432
|
} else {
|
|
426
|
-
// Module not loaded yet, retry after a delay
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
433
|
+
// Module not loaded yet, retry after a delay (with retry limit)
|
|
434
|
+
if (this.activityTreeRetryCount < this.maxRetryAttempts) {
|
|
435
|
+
this.activityTreeRetryCount++;
|
|
436
|
+
console.warn(`Activity tree component not available, retrying in 100ms... (attempt ${this.activityTreeRetryCount}/${this.maxRetryAttempts})`);
|
|
437
|
+
setTimeout(() => {
|
|
438
|
+
if (this.uiStateManager.getCurrentTab() === 'activity') {
|
|
439
|
+
this.renderCurrentTab();
|
|
440
|
+
}
|
|
441
|
+
}, 100);
|
|
442
|
+
} else {
|
|
443
|
+
console.error('Maximum retry attempts reached for ActivityTree initialization. Giving up.');
|
|
444
|
+
const activityContainer = document.getElementById('activity-tree-container') || document.getElementById('activity-tree');
|
|
445
|
+
if (activityContainer) {
|
|
446
|
+
activityContainer.innerHTML = '<div class="error-message">⚠️ Activity Tree failed to load. Please refresh the page.</div>';
|
|
431
447
|
}
|
|
432
|
-
}
|
|
448
|
+
}
|
|
433
449
|
}
|
|
434
450
|
break;
|
|
435
451
|
case 'agents':
|
|
@@ -1485,428 +1501,6 @@ function formatFileSize(bytes) {
|
|
|
1485
1501
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
1486
1502
|
}
|
|
1487
1503
|
|
|
1488
|
-
// Git Diff Modal Functions - restored from original dashboard
|
|
1489
|
-
window.showGitDiffModal = function(filePath, timestamp, workingDir) {
|
|
1490
|
-
// Use the dashboard's current working directory if not provided
|
|
1491
|
-
if (!workingDir && window.dashboard && window.dashboard.currentWorkingDir) {
|
|
1492
|
-
workingDir = window.dashboard.currentWorkingDir;
|
|
1493
|
-
}
|
|
1494
|
-
|
|
1495
|
-
// Create modal if it doesn't exist
|
|
1496
|
-
let modal = document.getElementById('git-diff-modal');
|
|
1497
|
-
if (!modal) {
|
|
1498
|
-
modal = createGitDiffModal();
|
|
1499
|
-
document.body.appendChild(modal);
|
|
1500
|
-
}
|
|
1501
|
-
|
|
1502
|
-
// Update modal content
|
|
1503
|
-
updateGitDiffModal(modal, filePath, timestamp, workingDir);
|
|
1504
|
-
|
|
1505
|
-
// Show the modal as flex container
|
|
1506
|
-
modal.style.display = 'flex';
|
|
1507
|
-
document.body.style.overflow = 'hidden'; // Prevent background scrolling
|
|
1508
|
-
};
|
|
1509
|
-
|
|
1510
|
-
window.hideGitDiffModal = function() {
|
|
1511
|
-
const modal = document.getElementById('git-diff-modal');
|
|
1512
|
-
if (modal) {
|
|
1513
|
-
modal.style.display = 'none';
|
|
1514
|
-
document.body.style.overflow = ''; // Restore background scrolling
|
|
1515
|
-
}
|
|
1516
|
-
};
|
|
1517
|
-
|
|
1518
|
-
window.copyGitDiff = function() {
|
|
1519
|
-
const modal = document.getElementById('git-diff-modal');
|
|
1520
|
-
if (!modal) return;
|
|
1521
|
-
|
|
1522
|
-
const codeElement = modal.querySelector('.git-diff-code');
|
|
1523
|
-
if (!codeElement) return;
|
|
1524
|
-
|
|
1525
|
-
const text = codeElement.textContent;
|
|
1526
|
-
|
|
1527
|
-
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
1528
|
-
navigator.clipboard.writeText(text).then(() => {
|
|
1529
|
-
// Show brief feedback
|
|
1530
|
-
const button = modal.querySelector('.git-diff-copy');
|
|
1531
|
-
const originalText = button.textContent;
|
|
1532
|
-
button.textContent = '✅ Copied!';
|
|
1533
|
-
setTimeout(() => {
|
|
1534
|
-
button.textContent = originalText;
|
|
1535
|
-
}, 2000);
|
|
1536
|
-
}).catch(err => {
|
|
1537
|
-
console.error('Failed to copy text:', err);
|
|
1538
|
-
});
|
|
1539
|
-
} else {
|
|
1540
|
-
// Fallback for older browsers
|
|
1541
|
-
const textarea = document.createElement('textarea');
|
|
1542
|
-
textarea.value = text;
|
|
1543
|
-
document.body.appendChild(textarea);
|
|
1544
|
-
textarea.select();
|
|
1545
|
-
document.execCommand('copy');
|
|
1546
|
-
document.body.removeChild(textarea);
|
|
1547
|
-
|
|
1548
|
-
const button = modal.querySelector('.git-diff-copy');
|
|
1549
|
-
const originalText = button.textContent;
|
|
1550
|
-
button.textContent = '✅ Copied!';
|
|
1551
|
-
setTimeout(() => {
|
|
1552
|
-
button.textContent = originalText;
|
|
1553
|
-
}, 2000);
|
|
1554
|
-
}
|
|
1555
|
-
};
|
|
1556
|
-
|
|
1557
|
-
function createGitDiffModal() {
|
|
1558
|
-
const modal = document.createElement('div');
|
|
1559
|
-
modal.id = 'git-diff-modal';
|
|
1560
|
-
modal.className = 'modal git-diff-modal';
|
|
1561
|
-
|
|
1562
|
-
modal.innerHTML = `
|
|
1563
|
-
<div class="modal-content git-diff-content">
|
|
1564
|
-
<div class="git-diff-header">
|
|
1565
|
-
<h2 class="git-diff-title">
|
|
1566
|
-
<span class="git-diff-icon">📋</span>
|
|
1567
|
-
<span class="git-diff-title-text">Git Diff</span>
|
|
1568
|
-
</h2>
|
|
1569
|
-
<div class="git-diff-meta">
|
|
1570
|
-
<span class="git-diff-file-path"></span>
|
|
1571
|
-
<span class="git-diff-timestamp"></span>
|
|
1572
|
-
</div>
|
|
1573
|
-
<button class="git-diff-close" onclick="hideGitDiffModal()">
|
|
1574
|
-
<span>×</span>
|
|
1575
|
-
</button>
|
|
1576
|
-
</div>
|
|
1577
|
-
<div class="git-diff-body">
|
|
1578
|
-
<div class="git-diff-loading">
|
|
1579
|
-
<div class="loading-spinner"></div>
|
|
1580
|
-
<span>Loading git diff...</span>
|
|
1581
|
-
</div>
|
|
1582
|
-
<div class="git-diff-error" style="display: none;">
|
|
1583
|
-
<div class="error-icon">⚠️</div>
|
|
1584
|
-
<div class="error-message"></div>
|
|
1585
|
-
<div class="error-suggestions"></div>
|
|
1586
|
-
</div>
|
|
1587
|
-
<div class="git-diff-content-area" style="display: none;">
|
|
1588
|
-
<div class="git-diff-toolbar">
|
|
1589
|
-
<div class="git-diff-info">
|
|
1590
|
-
<span class="commit-hash"></span>
|
|
1591
|
-
<span class="diff-method"></span>
|
|
1592
|
-
</div>
|
|
1593
|
-
<div class="git-diff-actions">
|
|
1594
|
-
<button class="git-diff-copy" onclick="copyGitDiff()">
|
|
1595
|
-
📋 Copy
|
|
1596
|
-
</button>
|
|
1597
|
-
</div>
|
|
1598
|
-
</div>
|
|
1599
|
-
<div class="git-diff-scroll-wrapper">
|
|
1600
|
-
<pre class="git-diff-display"><code class="git-diff-code"></code></pre>
|
|
1601
|
-
</div>
|
|
1602
|
-
</div>
|
|
1603
|
-
</div>
|
|
1604
|
-
</div>
|
|
1605
|
-
`;
|
|
1606
|
-
|
|
1607
|
-
// Close modal when clicking outside
|
|
1608
|
-
modal.addEventListener('click', (e) => {
|
|
1609
|
-
if (e.target === modal) {
|
|
1610
|
-
hideGitDiffModal();
|
|
1611
|
-
}
|
|
1612
|
-
});
|
|
1613
|
-
|
|
1614
|
-
// Close modal with Escape key
|
|
1615
|
-
document.addEventListener('keydown', (e) => {
|
|
1616
|
-
if (e.key === 'Escape' && modal.style.display === 'flex') {
|
|
1617
|
-
hideGitDiffModal();
|
|
1618
|
-
}
|
|
1619
|
-
});
|
|
1620
|
-
|
|
1621
|
-
return modal;
|
|
1622
|
-
}
|
|
1623
|
-
|
|
1624
|
-
async function updateGitDiffModal(modal, filePath, timestamp, workingDir) {
|
|
1625
|
-
// Update header info
|
|
1626
|
-
const filePathElement = modal.querySelector('.git-diff-file-path');
|
|
1627
|
-
const timestampElement = modal.querySelector('.git-diff-timestamp');
|
|
1628
|
-
|
|
1629
|
-
filePathElement.textContent = filePath;
|
|
1630
|
-
timestampElement.textContent = timestamp ? new Date(timestamp).toLocaleString() : 'Latest';
|
|
1631
|
-
|
|
1632
|
-
// Show loading state
|
|
1633
|
-
modal.querySelector('.git-diff-loading').style.display = 'flex';
|
|
1634
|
-
modal.querySelector('.git-diff-error').style.display = 'none';
|
|
1635
|
-
modal.querySelector('.git-diff-content-area').style.display = 'none';
|
|
1636
|
-
|
|
1637
|
-
try {
|
|
1638
|
-
// Get the Socket.IO server port with multiple fallbacks
|
|
1639
|
-
let port = 8765; // Default fallback
|
|
1640
|
-
|
|
1641
|
-
// Try to get port from socketClient first
|
|
1642
|
-
if (window.dashboard && window.dashboard.socketClient && window.dashboard.socketClient.port) {
|
|
1643
|
-
port = window.dashboard.socketClient.port;
|
|
1644
|
-
}
|
|
1645
|
-
// Fallback to port input field if socketClient port is not available
|
|
1646
|
-
else {
|
|
1647
|
-
const portInput = document.getElementById('port-input');
|
|
1648
|
-
if (portInput && portInput.value) {
|
|
1649
|
-
port = portInput.value;
|
|
1650
|
-
}
|
|
1651
|
-
}
|
|
1652
|
-
|
|
1653
|
-
// Build URL parameters
|
|
1654
|
-
const params = new URLSearchParams({
|
|
1655
|
-
file: filePath
|
|
1656
|
-
});
|
|
1657
|
-
|
|
1658
|
-
if (timestamp) {
|
|
1659
|
-
params.append('timestamp', timestamp);
|
|
1660
|
-
}
|
|
1661
|
-
if (workingDir) {
|
|
1662
|
-
params.append('working_dir', workingDir);
|
|
1663
|
-
}
|
|
1664
|
-
|
|
1665
|
-
const requestUrl = `http://localhost:${port}/api/git-diff?${params}`;
|
|
1666
|
-
console.log('🌐 Making git diff request to:', requestUrl);
|
|
1667
|
-
console.log('📋 Git diff request parameters:', {
|
|
1668
|
-
filePath,
|
|
1669
|
-
timestamp,
|
|
1670
|
-
workingDir,
|
|
1671
|
-
urlParams: params.toString()
|
|
1672
|
-
});
|
|
1673
|
-
|
|
1674
|
-
// Test server connectivity first
|
|
1675
|
-
try {
|
|
1676
|
-
const healthResponse = await fetch(`http://localhost:${port}/health`, {
|
|
1677
|
-
method: 'GET',
|
|
1678
|
-
headers: {
|
|
1679
|
-
'Accept': 'application/json',
|
|
1680
|
-
'Content-Type': 'application/json'
|
|
1681
|
-
},
|
|
1682
|
-
mode: 'cors'
|
|
1683
|
-
});
|
|
1684
|
-
|
|
1685
|
-
if (!healthResponse.ok) {
|
|
1686
|
-
throw new Error(`Server health check failed: ${healthResponse.status} ${healthResponse.statusText}`);
|
|
1687
|
-
}
|
|
1688
|
-
|
|
1689
|
-
// Server health check passed
|
|
1690
|
-
} catch (healthError) {
|
|
1691
|
-
throw new Error(`Cannot reach server at localhost:${port}. Health check failed: ${healthError.message}`);
|
|
1692
|
-
}
|
|
1693
|
-
|
|
1694
|
-
// Make the actual git diff request
|
|
1695
|
-
const response = await fetch(requestUrl, {
|
|
1696
|
-
method: 'GET',
|
|
1697
|
-
headers: {
|
|
1698
|
-
'Accept': 'application/json',
|
|
1699
|
-
'Content-Type': 'application/json'
|
|
1700
|
-
},
|
|
1701
|
-
mode: 'cors'
|
|
1702
|
-
});
|
|
1703
|
-
|
|
1704
|
-
if (!response.ok) {
|
|
1705
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
1706
|
-
}
|
|
1707
|
-
|
|
1708
|
-
const result = await response.json();
|
|
1709
|
-
// Git diff response received
|
|
1710
|
-
|
|
1711
|
-
// Hide loading
|
|
1712
|
-
modal.querySelector('.git-diff-loading').style.display = 'none';
|
|
1713
|
-
|
|
1714
|
-
if (result.success) {
|
|
1715
|
-
// Displaying successful git diff
|
|
1716
|
-
// Show successful diff
|
|
1717
|
-
displayGitDiff(modal, result);
|
|
1718
|
-
} else {
|
|
1719
|
-
// Displaying git diff error
|
|
1720
|
-
// Show error
|
|
1721
|
-
displayGitDiffError(modal, result);
|
|
1722
|
-
}
|
|
1723
|
-
|
|
1724
|
-
} catch (error) {
|
|
1725
|
-
console.error('❌ Failed to fetch git diff:', error);
|
|
1726
|
-
console.error('Error details:', {
|
|
1727
|
-
name: error.name,
|
|
1728
|
-
message: error.message,
|
|
1729
|
-
stack: error.stack,
|
|
1730
|
-
filePath,
|
|
1731
|
-
timestamp,
|
|
1732
|
-
workingDir
|
|
1733
|
-
});
|
|
1734
|
-
|
|
1735
|
-
modal.querySelector('.git-diff-loading').style.display = 'none';
|
|
1736
|
-
|
|
1737
|
-
// Create detailed error message based on error type
|
|
1738
|
-
let errorMessage = `Network error: ${error.message}`;
|
|
1739
|
-
let suggestions = [];
|
|
1740
|
-
|
|
1741
|
-
if (error.message.includes('Failed to fetch')) {
|
|
1742
|
-
errorMessage = 'Failed to connect to the monitoring server';
|
|
1743
|
-
suggestions = [
|
|
1744
|
-
'Check if the monitoring server is running on port 8765',
|
|
1745
|
-
'Verify the port configuration in the dashboard',
|
|
1746
|
-
'Check browser console for CORS or network errors',
|
|
1747
|
-
'Try refreshing the page and reconnecting'
|
|
1748
|
-
];
|
|
1749
|
-
} else if (error.message.includes('health check failed')) {
|
|
1750
|
-
errorMessage = error.message;
|
|
1751
|
-
suggestions = [
|
|
1752
|
-
'The server may be starting up - try again in a few seconds',
|
|
1753
|
-
'Check if another process is using port 8765',
|
|
1754
|
-
'Restart the claude-mpm monitoring server'
|
|
1755
|
-
];
|
|
1756
|
-
} else if (error.message.includes('HTTP')) {
|
|
1757
|
-
errorMessage = `Server error: ${error.message}`;
|
|
1758
|
-
suggestions = [
|
|
1759
|
-
'The server encountered an internal error',
|
|
1760
|
-
'Check the server logs for more details',
|
|
1761
|
-
'Try with a different file or working directory'
|
|
1762
|
-
];
|
|
1763
|
-
}
|
|
1764
|
-
|
|
1765
|
-
displayGitDiffError(modal, {
|
|
1766
|
-
error: errorMessage,
|
|
1767
|
-
file_path: filePath,
|
|
1768
|
-
working_dir: workingDir,
|
|
1769
|
-
suggestions: suggestions,
|
|
1770
|
-
debug_info: {
|
|
1771
|
-
error_type: error.name,
|
|
1772
|
-
original_message: error.message,
|
|
1773
|
-
port: window.dashboard?.socketClient?.port || document.getElementById('port-input')?.value || '8765',
|
|
1774
|
-
timestamp: new Date().toISOString()
|
|
1775
|
-
}
|
|
1776
|
-
});
|
|
1777
|
-
}
|
|
1778
|
-
}
|
|
1779
|
-
|
|
1780
|
-
function highlightGitDiff(diffText) {
|
|
1781
|
-
/**
|
|
1782
|
-
* Apply basic syntax highlighting to git diff output
|
|
1783
|
-
* WHY: Git diffs have a standard format that can be highlighted for better readability:
|
|
1784
|
-
* - Lines starting with '+' are additions (green)
|
|
1785
|
-
* - Lines starting with '-' are deletions (red)
|
|
1786
|
-
* - Lines starting with '@@' are context headers (blue)
|
|
1787
|
-
* - File headers and metadata get special formatting
|
|
1788
|
-
*/
|
|
1789
|
-
return diffText
|
|
1790
|
-
.split('\n')
|
|
1791
|
-
.map(line => {
|
|
1792
|
-
// Escape HTML entities
|
|
1793
|
-
const escaped = line
|
|
1794
|
-
.replace(/&/g, '&')
|
|
1795
|
-
.replace(/</g, '<')
|
|
1796
|
-
.replace(/>/g, '>');
|
|
1797
|
-
|
|
1798
|
-
// Apply diff highlighting
|
|
1799
|
-
if (line.startsWith('+++') || line.startsWith('---')) {
|
|
1800
|
-
return `<span class="diff-header">${escaped}</span>`;
|
|
1801
|
-
} else if (line.startsWith('@@')) {
|
|
1802
|
-
return `<span class="diff-meta">${escaped}</span>`;
|
|
1803
|
-
} else if (line.startsWith('+')) {
|
|
1804
|
-
return `<span class="diff-addition">${escaped}</span>`;
|
|
1805
|
-
} else if (line.startsWith('-')) {
|
|
1806
|
-
return `<span class="diff-deletion">${escaped}</span>`;
|
|
1807
|
-
} else if (line.startsWith('commit ') || line.startsWith('Author:') || line.startsWith('Date:')) {
|
|
1808
|
-
return `<span class="diff-header">${escaped}</span>`;
|
|
1809
|
-
} else {
|
|
1810
|
-
return `<span class="diff-context">${escaped}</span>`;
|
|
1811
|
-
}
|
|
1812
|
-
})
|
|
1813
|
-
.join('\n');
|
|
1814
|
-
}
|
|
1815
|
-
|
|
1816
|
-
function displayGitDiff(modal, result) {
|
|
1817
|
-
// Display git diff content
|
|
1818
|
-
const contentArea = modal.querySelector('.git-diff-content-area');
|
|
1819
|
-
const commitHashElement = modal.querySelector('.commit-hash');
|
|
1820
|
-
const methodElement = modal.querySelector('.diff-method');
|
|
1821
|
-
const codeElement = modal.querySelector('.git-diff-code');
|
|
1822
|
-
|
|
1823
|
-
// Elements found for diff display
|
|
1824
|
-
|
|
1825
|
-
// Update metadata
|
|
1826
|
-
if (commitHashElement) commitHashElement.textContent = `Commit: ${result.commit_hash}`;
|
|
1827
|
-
if (methodElement) methodElement.textContent = `Method: ${result.method}`;
|
|
1828
|
-
|
|
1829
|
-
// Update diff content with basic syntax highlighting
|
|
1830
|
-
if (codeElement && result.diff) {
|
|
1831
|
-
// Setting diff content
|
|
1832
|
-
codeElement.innerHTML = highlightGitDiff(result.diff);
|
|
1833
|
-
|
|
1834
|
-
// Force scrolling to work by setting explicit heights
|
|
1835
|
-
const wrapper = modal.querySelector('.git-diff-scroll-wrapper');
|
|
1836
|
-
if (wrapper) {
|
|
1837
|
-
// Give it a moment for content to render
|
|
1838
|
-
setTimeout(() => {
|
|
1839
|
-
const modalContent = modal.querySelector('.modal-content');
|
|
1840
|
-
const header = modal.querySelector('.git-diff-header');
|
|
1841
|
-
const toolbar = modal.querySelector('.git-diff-toolbar');
|
|
1842
|
-
|
|
1843
|
-
const modalHeight = modalContent?.offsetHeight || 0;
|
|
1844
|
-
const headerHeight = header?.offsetHeight || 0;
|
|
1845
|
-
const toolbarHeight = toolbar?.offsetHeight || 0;
|
|
1846
|
-
|
|
1847
|
-
const availableHeight = modalHeight - headerHeight - toolbarHeight - 40; // 40px for padding
|
|
1848
|
-
|
|
1849
|
-
// Setting explicit scroll height
|
|
1850
|
-
|
|
1851
|
-
wrapper.style.maxHeight = `${availableHeight}px`;
|
|
1852
|
-
wrapper.style.overflowY = 'auto';
|
|
1853
|
-
}, 50);
|
|
1854
|
-
}
|
|
1855
|
-
} else {
|
|
1856
|
-
console.warn('⚠️ Missing codeElement or diff data');
|
|
1857
|
-
}
|
|
1858
|
-
|
|
1859
|
-
// Show content area
|
|
1860
|
-
if (contentArea) {
|
|
1861
|
-
contentArea.style.display = 'block';
|
|
1862
|
-
// Content area displayed
|
|
1863
|
-
}
|
|
1864
|
-
}
|
|
1865
|
-
|
|
1866
|
-
function displayGitDiffError(modal, result) {
|
|
1867
|
-
const errorArea = modal.querySelector('.git-diff-error');
|
|
1868
|
-
const messageElement = modal.querySelector('.error-message');
|
|
1869
|
-
const suggestionsElement = modal.querySelector('.error-suggestions');
|
|
1870
|
-
|
|
1871
|
-
// Create more user-friendly error messages
|
|
1872
|
-
let errorMessage = result.error || 'Unknown error occurred';
|
|
1873
|
-
let isUntracked = false;
|
|
1874
|
-
|
|
1875
|
-
if (errorMessage.includes('not tracked by git')) {
|
|
1876
|
-
errorMessage = '📝 This file is not tracked by git yet';
|
|
1877
|
-
isUntracked = true;
|
|
1878
|
-
} else if (errorMessage.includes('No git history found')) {
|
|
1879
|
-
errorMessage = '📋 No git history available for this file';
|
|
1880
|
-
}
|
|
1881
|
-
|
|
1882
|
-
messageElement.innerHTML = `
|
|
1883
|
-
<div class="error-main">${errorMessage}</div>
|
|
1884
|
-
${result.file_path ? `<div class="error-file">File: ${result.file_path}</div>` : ''}
|
|
1885
|
-
${result.working_dir ? `<div class="error-dir">Working directory: ${result.working_dir}</div>` : ''}
|
|
1886
|
-
`;
|
|
1887
|
-
|
|
1888
|
-
if (result.suggestions && result.suggestions.length > 0) {
|
|
1889
|
-
const suggestionTitle = isUntracked ? 'How to track this file:' : 'Suggestions:';
|
|
1890
|
-
suggestionsElement.innerHTML = `
|
|
1891
|
-
<h4>${suggestionTitle}</h4>
|
|
1892
|
-
<ul>
|
|
1893
|
-
${result.suggestions.map(s => `<li>${s}</li>`).join('')}
|
|
1894
|
-
</ul>
|
|
1895
|
-
`;
|
|
1896
|
-
} else {
|
|
1897
|
-
suggestionsElement.innerHTML = '';
|
|
1898
|
-
}
|
|
1899
|
-
|
|
1900
|
-
console.log('📋 Displaying git diff error:', {
|
|
1901
|
-
originalError: result.error,
|
|
1902
|
-
processedMessage: errorMessage,
|
|
1903
|
-
isUntracked,
|
|
1904
|
-
suggestions: result.suggestions
|
|
1905
|
-
});
|
|
1906
|
-
|
|
1907
|
-
errorArea.style.display = 'block';
|
|
1908
|
-
}
|
|
1909
|
-
|
|
1910
1504
|
// File Viewer Modal Functions
|
|
1911
1505
|
window.showFileViewerModal = function(filePath) {
|
|
1912
1506
|
// Use the dashboard's current working directory
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
claude_mpm/BUILD_NUMBER,sha256=toytnNjkIKPgQaGwDqQdC1rpNTAdSEc6Vja50d7Ovug,4
|
|
2
|
-
claude_mpm/VERSION,sha256=
|
|
2
|
+
claude_mpm/VERSION,sha256=KXCENAY067PP5Yu9b8ktjjExA4LIy4rK7JsWbLXFy2A,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
|
|
@@ -171,70 +171,71 @@ claude_mpm/dashboard/index.html,sha256=d0DPXBFdtIYWPv0TsLnnYBY8jY2wnoAL9EYAkrUN7
|
|
|
171
171
|
claude_mpm/dashboard/open_dashboard.py,sha256=i4OHdjeQLtZX4UnLVMiFlq6iSENvlCcdcmodmaaU94Q,2205
|
|
172
172
|
claude_mpm/dashboard/test_dashboard.html,sha256=Aakmm9O-pWld_CCXLuUBOJC81Ix9D1avytTN93u0zfc,15090
|
|
173
173
|
claude_mpm/dashboard/.claude-mpm/socketio-instances.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
|
|
174
|
-
claude_mpm/dashboard/static/built/dashboard.js,sha256=
|
|
174
|
+
claude_mpm/dashboard/static/built/dashboard.js,sha256=CcG0fB2BBYUKTiol9scTF8JQCleoaQpDHhyam_lUxxE,44400
|
|
175
175
|
claude_mpm/dashboard/static/built/socket-client.js,sha256=z9HU1HePow8Yvh-7QMcjChwMYsR_p-ZvJVu8HU6d5Xg,29110
|
|
176
|
-
claude_mpm/dashboard/static/built/components/activity-tree.js,sha256=
|
|
176
|
+
claude_mpm/dashboard/static/built/components/activity-tree.js,sha256=chhLu89ZJ9FvoSg4pDnM7v0Pd5GQx1-PHwUby1Ek3ns,29496
|
|
177
177
|
claude_mpm/dashboard/static/built/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
|
|
178
|
-
claude_mpm/dashboard/static/built/components/code-tree.js,sha256=
|
|
178
|
+
claude_mpm/dashboard/static/built/components/code-tree.js,sha256=cM_S8PObjhYpj0CcMgtv5BAn-h1IBSiFtQWmwR2KYrY,46609
|
|
179
179
|
claude_mpm/dashboard/static/built/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
|
|
180
180
|
claude_mpm/dashboard/static/built/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
|
|
181
|
-
claude_mpm/dashboard/static/built/components/event-viewer.js,sha256=
|
|
181
|
+
claude_mpm/dashboard/static/built/components/event-viewer.js,sha256=oyfvK8VO1RNSyN1CRoZiB22cNJ4D05p_ahM8WPCH27k,24902
|
|
182
182
|
claude_mpm/dashboard/static/built/components/export-manager.js,sha256=iEbnirtMJ5bLpKbgBJfMI2bPC1Lf3_UrQntl04OUKEk,4196
|
|
183
183
|
claude_mpm/dashboard/static/built/components/file-tool-tracker.js,sha256=fZgUsg_u52KRYZFQooF_ZZjvKvYHaY9N7uJIS3XR9s8,9824
|
|
184
184
|
claude_mpm/dashboard/static/built/components/hud-library-loader.js,sha256=v08Xntd0Lwf-q6Nww1X2r5AWokYLgg9xUWe6ExHiNAg,2964
|
|
185
185
|
claude_mpm/dashboard/static/built/components/hud-manager.js,sha256=CvgzgqprROjl0DP4yQx4aAypONuNlzU2EP8woGk-8Sc,27392
|
|
186
186
|
claude_mpm/dashboard/static/built/components/hud-visualizer.js,sha256=igUUu1OLKOgwrdsfCEb-bKOsbi61bMLlpKa3hR2wQdI,69
|
|
187
|
-
claude_mpm/dashboard/static/built/components/module-viewer.js,sha256=
|
|
187
|
+
claude_mpm/dashboard/static/built/components/module-viewer.js,sha256=ZcRJFUZ77eH5uKZyzVMDGmmfAk_hdrnaOpgPKzsZ6TU,50919
|
|
188
188
|
claude_mpm/dashboard/static/built/components/session-manager.js,sha256=ZG__csNeB8-cG1VhRNoojD-DSmNHijXI4To410hGf2E,8970
|
|
189
189
|
claude_mpm/dashboard/static/built/components/socket-manager.js,sha256=LEqCS0_EABAsQVUfb6WQk152mSicK2k039zne5cKR8A,131
|
|
190
190
|
claude_mpm/dashboard/static/built/components/ui-state-manager.js,sha256=PtZs6sxNhqMMFwdlr04kDKQbgOvxtMHdjSh56KR2ZBo,134
|
|
191
|
+
claude_mpm/dashboard/static/built/components/unified-data-viewer.js,sha256=bJbMeo8PciFPWLYe9NBtJrTwqpJ92xddRGD9mjDuhOM,29533
|
|
191
192
|
claude_mpm/dashboard/static/built/components/working-directory.js,sha256=xE1ydpKDzRWrzHzfjrCiq5wbf3vDhmgQTGKS7myQcPM,15790
|
|
192
193
|
claude_mpm/dashboard/static/css/activity.css,sha256=0SJUwGB6fr4OlVqMwhvVKrPndg2R3QTZPnN6DkAo4aU,37987
|
|
193
194
|
claude_mpm/dashboard/static/css/code-tree.css,sha256=x0MlVKrBBYr7XU8ndhxx7cjCe35GouhthIM32Zc9SA8,25599
|
|
194
195
|
claude_mpm/dashboard/static/css/connection-status.css,sha256=nQiMLxIFjY5MDgrVCG58VR5H1PpE1vLlgXmnn01-P64,6729
|
|
195
196
|
claude_mpm/dashboard/static/css/dashboard.css,sha256=k_tHegUSiIFHAD2Ez1qX4PJCh4Ut-Tk0BgJ4EANqT54,75294
|
|
196
|
-
claude_mpm/dashboard/static/dist/dashboard.js,sha256=
|
|
197
|
+
claude_mpm/dashboard/static/dist/dashboard.js,sha256=Fm2v_pxM_jISp--n9XasrcL2nHYlfC1wcVZW4zGekw4,44966
|
|
197
198
|
claude_mpm/dashboard/static/dist/socket-client.js,sha256=z9HU1HePow8Yvh-7QMcjChwMYsR_p-ZvJVu8HU6d5Xg,29110
|
|
198
|
-
claude_mpm/dashboard/static/dist/
|
|
199
|
-
claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=lfm--V2-UCjPkfoIuxCc14LNZdskeV1bxXZuPj17LEk,29513
|
|
199
|
+
claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=c7vYmCvMgq7irVrX-EFbNqVMgVuDJ_cwcvsZ4LSO3bU,29594
|
|
200
200
|
claude_mpm/dashboard/static/dist/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
|
|
201
201
|
claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=cM_S8PObjhYpj0CcMgtv5BAn-h1IBSiFtQWmwR2KYrY,46609
|
|
202
202
|
claude_mpm/dashboard/static/dist/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
|
|
203
203
|
claude_mpm/dashboard/static/dist/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
|
|
204
|
-
claude_mpm/dashboard/static/dist/components/event-viewer.js,sha256=
|
|
204
|
+
claude_mpm/dashboard/static/dist/components/event-viewer.js,sha256=oyfvK8VO1RNSyN1CRoZiB22cNJ4D05p_ahM8WPCH27k,24902
|
|
205
205
|
claude_mpm/dashboard/static/dist/components/export-manager.js,sha256=iEbnirtMJ5bLpKbgBJfMI2bPC1Lf3_UrQntl04OUKEk,4196
|
|
206
206
|
claude_mpm/dashboard/static/dist/components/file-tool-tracker.js,sha256=fZgUsg_u52KRYZFQooF_ZZjvKvYHaY9N7uJIS3XR9s8,9824
|
|
207
207
|
claude_mpm/dashboard/static/dist/components/hud-library-loader.js,sha256=v08Xntd0Lwf-q6Nww1X2r5AWokYLgg9xUWe6ExHiNAg,2964
|
|
208
208
|
claude_mpm/dashboard/static/dist/components/hud-manager.js,sha256=CvgzgqprROjl0DP4yQx4aAypONuNlzU2EP8woGk-8Sc,27392
|
|
209
209
|
claude_mpm/dashboard/static/dist/components/hud-visualizer.js,sha256=igUUu1OLKOgwrdsfCEb-bKOsbi61bMLlpKa3hR2wQdI,69
|
|
210
|
-
claude_mpm/dashboard/static/dist/components/module-viewer.js,sha256=
|
|
210
|
+
claude_mpm/dashboard/static/dist/components/module-viewer.js,sha256=ZcRJFUZ77eH5uKZyzVMDGmmfAk_hdrnaOpgPKzsZ6TU,50919
|
|
211
211
|
claude_mpm/dashboard/static/dist/components/session-manager.js,sha256=ZG__csNeB8-cG1VhRNoojD-DSmNHijXI4To410hGf2E,8970
|
|
212
212
|
claude_mpm/dashboard/static/dist/components/socket-manager.js,sha256=LEqCS0_EABAsQVUfb6WQk152mSicK2k039zne5cKR8A,131
|
|
213
213
|
claude_mpm/dashboard/static/dist/components/ui-state-manager.js,sha256=PtZs6sxNhqMMFwdlr04kDKQbgOvxtMHdjSh56KR2ZBo,134
|
|
214
|
+
claude_mpm/dashboard/static/dist/components/unified-data-viewer.js,sha256=bJbMeo8PciFPWLYe9NBtJrTwqpJ92xddRGD9mjDuhOM,29533
|
|
214
215
|
claude_mpm/dashboard/static/dist/components/working-directory.js,sha256=xE1ydpKDzRWrzHzfjrCiq5wbf3vDhmgQTGKS7myQcPM,15790
|
|
215
216
|
claude_mpm/dashboard/static/js/connection-manager.js,sha256=nn7x1jmwEnBClcChbFk1uMhRPu5U1xmXz3sjuo0LNm4,17981
|
|
216
|
-
claude_mpm/dashboard/static/js/dashboard.js,sha256=
|
|
217
|
+
claude_mpm/dashboard/static/js/dashboard.js,sha256=RYzzhNr1pPAHZ12pgWjTpe15Nzaqrm-S9vzTRfqob5A,64712
|
|
217
218
|
claude_mpm/dashboard/static/js/extension-error-handler.js,sha256=DZHrJ3gbfv4nsjmZpNMj-Sc3GKjVJ5ds8lgoaLRnq5I,6274
|
|
218
219
|
claude_mpm/dashboard/static/js/socket-client.js,sha256=wC4vH0oP6xIDcSA-Q8cNI2bPW3hg3SAS9TZ75cD6y9Y,56052
|
|
219
|
-
claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=
|
|
220
|
+
claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=1j46X0qjYReP6gwv0WGRpJSJNuBwuj6bKmumWrCZKUo,72740
|
|
220
221
|
claude_mpm/dashboard/static/js/components/agent-hierarchy.js,sha256=Xihxog_vJrk8VBEkDogV_wbye2GIFWmH71VQ1lETOHk,28243
|
|
221
222
|
claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=RUVZ_fLOyDkHYjrROen_Pzzay79Bh29eXp_GRIPbIRg,37493
|
|
222
223
|
claude_mpm/dashboard/static/js/components/build-tracker.js,sha256=iouv35tNhnyx9UKtD7X1eakJkpCnvZVCrAJ_VdzsKUY,11251
|
|
223
224
|
claude_mpm/dashboard/static/js/components/code-tree.js,sha256=bLLU7MBZmTccIa3h3WCAyEwsyhRn5jicgJ7rpPPAYxQ,117432
|
|
224
225
|
claude_mpm/dashboard/static/js/components/code-viewer.js,sha256=vhesEPYOM6MggweaYvYsv7ufVbuVpIcyJPXpJXyJwpM,14453
|
|
225
226
|
claude_mpm/dashboard/static/js/components/connection-debug.js,sha256=Qxr_ofDNkxDlZAwbLnhZkXVMyuO9jOe-NMWC9VHxNnA,22196
|
|
226
|
-
claude_mpm/dashboard/static/js/components/event-processor.js,sha256=
|
|
227
|
+
claude_mpm/dashboard/static/js/components/event-processor.js,sha256=pP15JIf2yEh7gqEdam42m_B1B4hDlfKbkDcGmQhyjM8,20567
|
|
227
228
|
claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=Ahl9eTxCYMhDC_533Gf4O96S04W5O_Ts0PAGWSVivkI,43672
|
|
228
229
|
claude_mpm/dashboard/static/js/components/export-manager.js,sha256=T1YtaR758FaB9aP_5V1xZC9EBIFQOG5H8f_sLopxR5A,11863
|
|
229
230
|
claude_mpm/dashboard/static/js/components/file-tool-tracker.js,sha256=y8O7kW5uP6KBT2gWvjRoH1aJG-7o1qzyrVnvShsNAK0,28620
|
|
230
231
|
claude_mpm/dashboard/static/js/components/hud-library-loader.js,sha256=SK6tY8TL88lnewi4M-i092HdgYondv_lVfHoQ-A_cWU,7170
|
|
231
232
|
claude_mpm/dashboard/static/js/components/hud-manager.js,sha256=hpvz1Ls5UcNgTbwjl7tK0OgNZ_QHnRXgNqqYaq4jjvM,25956
|
|
232
233
|
claude_mpm/dashboard/static/js/components/hud-visualizer.js,sha256=crgq3eA4xiXDE4SV9m-S94Of2y7znd1a3F4GYn2yjnU,61127
|
|
233
|
-
claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=
|
|
234
|
+
claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=jhgPVOtg_827p6b1-NxkeQQBNF-sztLqur4xdTyflTk,107647
|
|
234
235
|
claude_mpm/dashboard/static/js/components/session-manager.js,sha256=pJrlMcSBNTXoK5nDLWLcIesOosk0FQtkTEM6X7eSI_I,22807
|
|
235
236
|
claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=KC-aOJDEPSiMPYk0ABgvCC1xmO7TVQ4SVqohi2GNsWQ,13303
|
|
236
237
|
claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=EWm0HpPI9TShChitRCyZvZCiUk5rIBVyw10BoHdnTzI,13178
|
|
237
|
-
claude_mpm/dashboard/static/js/components/unified-data-viewer.js,sha256=
|
|
238
|
+
claude_mpm/dashboard/static/js/components/unified-data-viewer.js,sha256=8PmpiYWUdd6m4dgP-wkygmD_AYuZk2M2FkmUtY76RWs,48717
|
|
238
239
|
claude_mpm/dashboard/static/js/components/working-directory.js,sha256=BRsPYwVnhbhFl0mC0Gvb-Ev1zxAu6yZpZcl1T1aJWWA,33558
|
|
239
240
|
claude_mpm/dashboard/templates/index.html,sha256=dGb4Z2vcboxvZdNS8zv41mOM5VtHkD6gt7dlvc3tb2U,30667
|
|
240
241
|
claude_mpm/experimental/__init__.py,sha256=R_aclOvWpvSTHWAx9QXyg9OIPVK2dXT5tQJhxLQN11Y,369
|
|
@@ -573,7 +574,7 @@ claude_mpm/storage/__init__.py,sha256=DXnmee6iGqC6ctFLW7_Ty1cVCjYDFuCMkwO4EV0i25
|
|
|
573
574
|
claude_mpm/storage/state_storage.py,sha256=1fFqkFy63T32JQvhUdVBNhaLQyUlkq4unjeyl0Z6j8I,16865
|
|
574
575
|
claude_mpm/tools/__init__.py,sha256=T3GuCYNAHtjVcKCeivY674PaDm48WX96AriQfTKUknY,347
|
|
575
576
|
claude_mpm/tools/__main__.py,sha256=MKDuxFuujqD5FZcLTqniDNQ2BI8yg5fDSLU3ElV6m6U,5709
|
|
576
|
-
claude_mpm/tools/code_tree_analyzer.py,sha256=
|
|
577
|
+
claude_mpm/tools/code_tree_analyzer.py,sha256=TCjjktDqBxJelW2atVtZEwN-FrEhDb4ISrnCRdXuOKs,59490
|
|
577
578
|
claude_mpm/tools/code_tree_builder.py,sha256=gwnsFO5ajs55UzX3SU34OMZBwhjouruQhGdQ3fJHjeA,18126
|
|
578
579
|
claude_mpm/tools/code_tree_events.py,sha256=ypUmxQRUpxQt2LQfXV_qpdL42KNvLO-K5XstxZIj9-w,13277
|
|
579
580
|
claude_mpm/tools/socketio_debug.py,sha256=H0mKHO6EIYqCVm4YU-SJ4Cw8ssA7VqJ3vU7y6eF7brk,22212
|
|
@@ -597,9 +598,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=zgiwLqh_17WxHpySvUPH65pb4bzIeUGOAYUJ
|
|
|
597
598
|
claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
|
|
598
599
|
claude_mpm/validation/agent_validator.py,sha256=3Lo6LK-Mw9IdnL_bd3zl_R6FkgSVDYKUUM7EeVVD3jc,20865
|
|
599
600
|
claude_mpm/validation/frontmatter_validator.py,sha256=u8g4Eyd_9O6ugj7Un47oSGh3kqv4wMkuks2i_CtWRvM,7028
|
|
600
|
-
claude_mpm-4.1.
|
|
601
|
-
claude_mpm-4.1.
|
|
602
|
-
claude_mpm-4.1.
|
|
603
|
-
claude_mpm-4.1.
|
|
604
|
-
claude_mpm-4.1.
|
|
605
|
-
claude_mpm-4.1.
|
|
601
|
+
claude_mpm-4.1.25.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
|
|
602
|
+
claude_mpm-4.1.25.dist-info/METADATA,sha256=NaZANeklcu-Go63wrBLs9CwR99-Jp3IyJE7ycvffWuo,13777
|
|
603
|
+
claude_mpm-4.1.25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
604
|
+
claude_mpm-4.1.25.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
|
|
605
|
+
claude_mpm-4.1.25.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
|
606
|
+
claude_mpm-4.1.25.dist-info/RECORD,,
|