claude-mpm 4.2.2__py3-none-any.whl → 4.2.3__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 CHANGED
@@ -1 +1 @@
1
- 4.2.2
1
+ 4.2.3
@@ -73,7 +73,7 @@ class MonitorCommand(BaseCommand):
73
73
 
74
74
  def _start_monitor(self, args) -> CommandResult:
75
75
  """Start the monitor server."""
76
- port = getattr(args, "port", 8766) # Default to 8766 for monitor
76
+ port = getattr(args, "port", 8765) # Default to 8765 for monitor
77
77
  host = getattr(args, "host", "localhost")
78
78
  background = getattr(
79
79
  args, "background", True
claude_mpm/core/config.py CHANGED
@@ -530,7 +530,7 @@ class Config:
530
530
  # Monitor server configuration (decoupled from dashboard)
531
531
  "monitor_server": {
532
532
  "host": "localhost",
533
- "port": 8766, # Default monitor port (separate from dashboard)
533
+ "port": 8765, # Default monitor port (shared with dashboard)
534
534
  "enable_health_monitoring": True,
535
535
  "auto_start": False, # Don't auto-start with dashboard by default
536
536
  "event_buffer_size": 2000, # Larger buffer for monitor server
@@ -541,7 +541,7 @@ class Config:
541
541
  "host": "localhost",
542
542
  "port": 8765, # Dashboard UI port
543
543
  "monitor_host": "localhost", # Monitor server host to connect to
544
- "monitor_port": 8766, # Monitor server port to connect to
544
+ "monitor_port": 8765, # Monitor server port to connect to
545
545
  "auto_connect_monitor": True, # Automatically connect to monitor
546
546
  "monitor_reconnect": True, # Auto-reconnect to monitor if disconnected
547
547
  "fallback_standalone": True, # Run in standalone mode if monitor unavailable
@@ -459,7 +459,7 @@
459
459
  border-radius: 8px;
460
460
  padding: 20px;
461
461
  position: relative;
462
- overflow: auto;
462
+ overflow: hidden;
463
463
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
464
464
  border-left: 1px solid #e2e8f0;
465
465
  }
@@ -828,6 +828,8 @@
828
828
  .code-node text {
829
829
  font: 12px sans-serif;
830
830
  pointer-events: none;
831
+ /* Smooth transitions for zoom-based text scaling */
832
+ transition: font-size 0.2s ease;
831
833
  }
832
834
 
833
835
  .code-node.module circle {
@@ -974,6 +976,8 @@
974
976
  text-anchor: middle;
975
977
  dominant-baseline: central;
976
978
  font-weight: 500;
979
+ /* Smooth transitions for zoom-based scaling */
980
+ transition: font-size 0.2s ease;
977
981
  }
978
982
 
979
983
  .code-node.directory:hover .item-count-badge {
@@ -1405,4 +1409,219 @@
1405
1409
  transform: translateX(0);
1406
1410
  opacity: 1;
1407
1411
  }
1412
+ }
1413
+
1414
+ /* Back Button for Focused Directory View */
1415
+ .tree-control-btn.back-btn {
1416
+ background: #3182ce !important;
1417
+ color: white !important;
1418
+ border: 1px solid #2c5aa0 !important;
1419
+ font-weight: 600;
1420
+ margin-right: 10px;
1421
+ }
1422
+
1423
+ .tree-control-btn.back-btn:hover {
1424
+ background: #2c5aa0 !important;
1425
+ transform: translateY(-1px);
1426
+ box-shadow: 0 4px 8px rgba(49, 130, 206, 0.3);
1427
+ }
1428
+
1429
+ /* Focused Directory View Styling */
1430
+ .code-tree-container.focused {
1431
+ border: 2px solid #3182ce;
1432
+ border-radius: 8px;
1433
+ background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
1434
+ }
1435
+
1436
+ .code-tree-container.focused .tree-controls-toolbar {
1437
+ background: #e6fffa;
1438
+ border-bottom: 1px solid #81e6d9;
1439
+ }
1440
+
1441
+ /* Corner Controls Styling */
1442
+ .tree-corner-controls {
1443
+ position: absolute;
1444
+ z-index: 1000;
1445
+ background: rgba(255, 255, 255, 0.95);
1446
+ border: 1px solid #e2e8f0;
1447
+ border-radius: 6px;
1448
+ padding: 8px 12px;
1449
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
1450
+ backdrop-filter: blur(4px);
1451
+ font-size: 12px;
1452
+ }
1453
+
1454
+ .tree-corner-controls.top-left {
1455
+ top: 10px;
1456
+ left: 10px;
1457
+ }
1458
+
1459
+ .tree-corner-controls.top-right {
1460
+ top: 10px;
1461
+ right: 10px;
1462
+ }
1463
+
1464
+ .tree-corner-controls.bottom-left {
1465
+ bottom: 10px;
1466
+ left: 10px;
1467
+ display: flex;
1468
+ flex-direction: column;
1469
+ align-items: flex-start;
1470
+ gap: 4px;
1471
+ }
1472
+
1473
+ .tree-corner-controls.bottom-right {
1474
+ bottom: 10px;
1475
+ right: 10px;
1476
+ }
1477
+
1478
+ .tree-corner-controls .control-group {
1479
+ display: flex;
1480
+ align-items: center;
1481
+ gap: 8px;
1482
+ flex-wrap: wrap;
1483
+ }
1484
+
1485
+ .tree-corner-controls .control-label {
1486
+ font-weight: 600;
1487
+ color: #4a5568;
1488
+ white-space: nowrap;
1489
+ }
1490
+
1491
+ .tree-corner-controls .checkbox-group {
1492
+ display: flex;
1493
+ gap: 12px;
1494
+ flex-wrap: wrap;
1495
+ }
1496
+
1497
+ .tree-corner-controls .checkbox-label {
1498
+ display: flex;
1499
+ align-items: center;
1500
+ gap: 4px;
1501
+ font-size: 11px;
1502
+ color: #4a5568;
1503
+ cursor: pointer;
1504
+ white-space: nowrap;
1505
+ }
1506
+
1507
+ .tree-corner-controls .checkbox-label input[type="checkbox"] {
1508
+ margin: 0;
1509
+ transform: scale(0.9);
1510
+ }
1511
+
1512
+ .tree-corner-controls .select-compact,
1513
+ .tree-corner-controls .search-compact,
1514
+ .tree-corner-controls .input-compact {
1515
+ font-size: 11px;
1516
+ padding: 4px 8px;
1517
+ border: 1px solid #d1d5db;
1518
+ border-radius: 4px;
1519
+ background: white;
1520
+ }
1521
+
1522
+ .tree-corner-controls .search-compact {
1523
+ width: 120px;
1524
+ }
1525
+
1526
+ .tree-corner-controls .input-compact {
1527
+ width: 140px;
1528
+ }
1529
+
1530
+ .tree-corner-controls .stats-display {
1531
+ font-size: 11px;
1532
+ color: #6b7280;
1533
+ font-weight: 500;
1534
+ margin-bottom: 4px;
1535
+ }
1536
+
1537
+ .tree-corner-controls .status-display {
1538
+ font-size: 10px;
1539
+ color: #4b5563;
1540
+ font-style: italic;
1541
+ opacity: 0.8;
1542
+ max-width: 200px;
1543
+ overflow: hidden;
1544
+ text-overflow: ellipsis;
1545
+ white-space: nowrap;
1546
+ }
1547
+
1548
+ .tree-corner-controls .status-display .breadcrumb-ticker {
1549
+ display: block;
1550
+ }
1551
+
1552
+ .tree-corner-controls .status-display #breadcrumb-content {
1553
+ display: inline-block;
1554
+ animation: none; /* Disable any existing animations for corner display */
1555
+ }
1556
+
1557
+ /* Hide corner controls when in focused mode to avoid clutter */
1558
+ .code-tree-container.focused .tree-corner-controls {
1559
+ opacity: 0.7;
1560
+ }
1561
+
1562
+ .code-tree-container.focused .tree-corner-controls:hover {
1563
+ opacity: 1;
1564
+ }
1565
+
1566
+ /* Force horizontal text for specific nodes */
1567
+ .node-label.horizontal-text {
1568
+ writing-mode: horizontal-tb !important;
1569
+ text-orientation: mixed !important;
1570
+ transform: rotate(0deg) !important;
1571
+ }
1572
+
1573
+ /* Zoom controls styling */
1574
+ .zoom-level-display {
1575
+ display: inline-block;
1576
+ padding: 2px 6px;
1577
+ background: rgba(0, 0, 0, 0.05);
1578
+ border-radius: 3px;
1579
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1580
+ font-size: 11px !important;
1581
+ color: #718096 !important;
1582
+ margin-left: 8px !important;
1583
+ vertical-align: middle;
1584
+ min-width: 35px;
1585
+ text-align: center;
1586
+ }
1587
+
1588
+ /* Enhanced tree control buttons for zoom */
1589
+ .tree-control-btn {
1590
+ background: #f8f9fa;
1591
+ border: 1px solid #e2e8f0;
1592
+ border-radius: 4px;
1593
+ padding: 6px 8px;
1594
+ margin: 0 2px;
1595
+ cursor: pointer;
1596
+ font-size: 12px;
1597
+ color: #4a5568;
1598
+ transition: all 0.2s;
1599
+ display: inline-block;
1600
+ vertical-align: middle;
1601
+ }
1602
+
1603
+ .tree-control-btn:hover {
1604
+ background: #e2e8f0;
1605
+ border-color: #cbd5e0;
1606
+ color: #2d3748;
1607
+ }
1608
+
1609
+ .tree-control-btn:active {
1610
+ background: #cbd5e0;
1611
+ transform: translateY(1px);
1612
+ }
1613
+
1614
+ /* Zoom-specific button styling */
1615
+ .tree-control-btn[title*="Zoom"] {
1616
+ font-family: system-ui, -apple-system, sans-serif;
1617
+ font-weight: 500;
1618
+ }
1619
+
1620
+ /* Pan cursor when dragging */
1621
+ .code-tree-container svg {
1622
+ cursor: grab;
1623
+ }
1624
+
1625
+ .code-tree-container svg:active {
1626
+ cursor: grabbing;
1408
1627
  }
@@ -1575,6 +1575,292 @@ button:active {
1575
1575
  padding: 12px;
1576
1576
  }
1577
1577
 
1578
+ /* AST Data Viewer Items */
1579
+ .ast-data-viewer-item {
1580
+ border-bottom: 1px solid #f1f5f9;
1581
+ padding: 12px 16px;
1582
+ cursor: pointer;
1583
+ transition: background-color 0.2s;
1584
+ background: white;
1585
+ margin-bottom: 2px;
1586
+ border-radius: 4px;
1587
+ }
1588
+
1589
+ .ast-data-viewer-item:hover {
1590
+ background: #f8fafc;
1591
+ }
1592
+
1593
+ .ast-data-viewer-item:last-child {
1594
+ border-bottom: none;
1595
+ }
1596
+
1597
+ .ast-data-viewer-item.selected {
1598
+ background: #ebf8ff;
1599
+ border-left: 3px solid #3182ce;
1600
+ }
1601
+
1602
+ .ast-data-item-header {
1603
+ display: flex;
1604
+ align-items: center;
1605
+ justify-content: space-between;
1606
+ margin-bottom: 4px;
1607
+ }
1608
+
1609
+ .ast-data-item-name {
1610
+ font-weight: 600;
1611
+ color: #2d3748;
1612
+ font-size: 14px;
1613
+ display: flex;
1614
+ align-items: center;
1615
+ gap: 6px;
1616
+ }
1617
+
1618
+ .ast-data-item-type {
1619
+ font-size: 11px;
1620
+ padding: 2px 6px;
1621
+ border-radius: 10px;
1622
+ background: #e2e8f0;
1623
+ color: #4a5568;
1624
+ text-transform: uppercase;
1625
+ font-weight: 500;
1626
+ }
1627
+
1628
+ .ast-data-item-type.class { background: #fed7d7; color: #c53030; }
1629
+ .ast-data-item-type.function { background: #c6f6d5; color: #2f855a; }
1630
+ .ast-data-item-type.method { background: #bee3f8; color: #2b6cb0; }
1631
+ .ast-data-item-type.variable { background: #feebc8; color: #c05621; }
1632
+ .ast-data-item-type.import { background: #e9d8fd; color: #6b46c1; }
1633
+
1634
+ .ast-data-item-details {
1635
+ font-size: 12px;
1636
+ color: #718096;
1637
+ line-height: 1.4;
1638
+ }
1639
+
1640
+ .ast-data-item-line {
1641
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1642
+ background: #f7fafc;
1643
+ padding: 2px 4px;
1644
+ border-radius: 3px;
1645
+ margin-right: 8px;
1646
+ }
1647
+
1648
+ .ast-data-item-complexity {
1649
+ display: inline-flex;
1650
+ align-items: center;
1651
+ gap: 4px;
1652
+ }
1653
+
1654
+ .ast-complexity-indicator {
1655
+ width: 8px;
1656
+ height: 8px;
1657
+ border-radius: 50%;
1658
+ background: #e2e8f0;
1659
+ }
1660
+
1661
+ .ast-complexity-indicator.low { background: #48bb78; }
1662
+ .ast-complexity-indicator.medium { background: #ed8936; }
1663
+ .ast-complexity-indicator.high { background: #e53e3e; }
1664
+
1665
+ .ast-data-placeholder {
1666
+ display: flex;
1667
+ flex-direction: column;
1668
+ align-items: center;
1669
+ justify-content: center;
1670
+ height: 200px;
1671
+ color: #a0aec0;
1672
+ text-align: center;
1673
+ padding: 20px;
1674
+ }
1675
+
1676
+ .ast-placeholder-icon {
1677
+ font-size: 48px;
1678
+ margin-bottom: 12px;
1679
+ opacity: 0.5;
1680
+ }
1681
+
1682
+ .ast-placeholder-text {
1683
+ font-size: 14px;
1684
+ line-height: 1.5;
1685
+ }
1686
+
1687
+ /* Hierarchical Source Viewer */
1688
+ .source-viewer {
1689
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1690
+ font-size: 12px;
1691
+ line-height: 1.4;
1692
+ background: #f8fafc;
1693
+ border-radius: 6px;
1694
+ overflow: hidden;
1695
+ }
1696
+
1697
+ .source-viewer-header {
1698
+ background: #e2e8f0;
1699
+ padding: 8px 12px;
1700
+ border-bottom: 1px solid #cbd5e0;
1701
+ font-weight: 600;
1702
+ color: #2d3748;
1703
+ display: flex;
1704
+ align-items: center;
1705
+ justify-content: space-between;
1706
+ }
1707
+
1708
+ .source-viewer-controls {
1709
+ display: flex;
1710
+ gap: 4px;
1711
+ }
1712
+
1713
+ .source-control-btn {
1714
+ background: none;
1715
+ border: none;
1716
+ padding: 2px 6px;
1717
+ border-radius: 3px;
1718
+ cursor: pointer;
1719
+ font-size: 11px;
1720
+ color: #718096;
1721
+ transition: all 0.2s;
1722
+ }
1723
+
1724
+ .source-control-btn:hover {
1725
+ background: #cbd5e0;
1726
+ color: #4a5568;
1727
+ }
1728
+
1729
+ .source-viewer-content {
1730
+ max-height: 600px;
1731
+ overflow-y: auto;
1732
+ background: white;
1733
+ }
1734
+
1735
+ /* Source Lines */
1736
+ .source-line {
1737
+ display: flex;
1738
+ align-items: flex-start;
1739
+ padding: 2px 0;
1740
+ border-left: 3px solid transparent;
1741
+ transition: all 0.2s;
1742
+ }
1743
+
1744
+ .source-line:hover {
1745
+ background: #f7fafc;
1746
+ }
1747
+
1748
+ .source-line.highlighted {
1749
+ background: #ebf8ff;
1750
+ border-left-color: #3182ce;
1751
+ }
1752
+
1753
+ .source-line.collapsible {
1754
+ cursor: pointer;
1755
+ }
1756
+
1757
+ .source-line.collapsible:hover {
1758
+ background: #edf2f7;
1759
+ }
1760
+
1761
+ .line-number {
1762
+ width: 40px;
1763
+ text-align: right;
1764
+ color: #a0aec0;
1765
+ padding-right: 8px;
1766
+ user-select: none;
1767
+ flex-shrink: 0;
1768
+ }
1769
+
1770
+ .line-content {
1771
+ flex: 1;
1772
+ padding-right: 12px;
1773
+ white-space: pre;
1774
+ overflow-x: auto;
1775
+ }
1776
+
1777
+ .collapse-indicator {
1778
+ width: 16px;
1779
+ text-align: center;
1780
+ color: #718096;
1781
+ cursor: pointer;
1782
+ user-select: none;
1783
+ flex-shrink: 0;
1784
+ }
1785
+
1786
+ .collapse-indicator:hover {
1787
+ color: #4a5568;
1788
+ }
1789
+
1790
+ .collapse-indicator.expanded::before {
1791
+ content: '▼';
1792
+ }
1793
+
1794
+ .collapse-indicator.collapsed::before {
1795
+ content: '▶';
1796
+ }
1797
+
1798
+ .collapse-indicator.none::before {
1799
+ content: '';
1800
+ }
1801
+
1802
+ /* Collapsed Content */
1803
+ .collapsed-content {
1804
+ display: none;
1805
+ }
1806
+
1807
+ .collapsed-placeholder {
1808
+ color: #a0aec0;
1809
+ font-style: italic;
1810
+ padding-left: 16px;
1811
+ }
1812
+
1813
+ /* Syntax Highlighting */
1814
+ .source-line .keyword {
1815
+ color: #805ad5;
1816
+ font-weight: 600;
1817
+ }
1818
+
1819
+ .source-line .string {
1820
+ color: #38a169;
1821
+ }
1822
+
1823
+ .source-line .comment {
1824
+ color: #718096;
1825
+ font-style: italic;
1826
+ }
1827
+
1828
+ .source-line .function-def {
1829
+ color: #3182ce;
1830
+ font-weight: 600;
1831
+ }
1832
+
1833
+ .source-line .class-def {
1834
+ color: #d69e2e;
1835
+ font-weight: 600;
1836
+ }
1837
+
1838
+ .source-line .decorator {
1839
+ color: #805ad5;
1840
+ }
1841
+
1842
+ /* AST Integration */
1843
+ .source-line.ast-element {
1844
+ position: relative;
1845
+ }
1846
+
1847
+ .source-line.ast-element::after {
1848
+ content: '';
1849
+ position: absolute;
1850
+ right: 8px;
1851
+ top: 50%;
1852
+ transform: translateY(-50%);
1853
+ width: 6px;
1854
+ height: 6px;
1855
+ border-radius: 50%;
1856
+ background: #48bb78;
1857
+ }
1858
+
1859
+ .source-line.ast-element.selected::after {
1860
+ background: #3182ce;
1861
+ box-shadow: 0 0 0 2px rgba(49, 130, 206, 0.3);
1862
+ }
1863
+
1578
1864
  .structured-field {
1579
1865
  margin-bottom: 8px;
1580
1866
  font-size: 13px;