claude-mpm 4.1.7__py3-none-any.whl → 4.1.10__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 (109) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/INSTRUCTIONS.md +26 -1
  3. claude_mpm/agents/OUTPUT_STYLE.md +73 -0
  4. claude_mpm/agents/agents_metadata.py +57 -0
  5. claude_mpm/agents/templates/.claude-mpm/memories/README.md +17 -0
  6. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +3 -0
  7. claude_mpm/agents/templates/agent-manager.json +263 -17
  8. claude_mpm/agents/templates/agent-manager.md +248 -10
  9. claude_mpm/agents/templates/agentic_coder_optimizer.json +222 -0
  10. claude_mpm/agents/templates/code_analyzer.json +18 -8
  11. claude_mpm/agents/templates/engineer.json +1 -1
  12. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +39 -0
  13. claude_mpm/agents/templates/qa.json +1 -1
  14. claude_mpm/agents/templates/research.json +1 -1
  15. claude_mpm/cli/__init__.py +4 -0
  16. claude_mpm/cli/commands/__init__.py +6 -0
  17. claude_mpm/cli/commands/analyze.py +547 -0
  18. claude_mpm/cli/commands/analyze_code.py +524 -0
  19. claude_mpm/cli/commands/configure.py +223 -25
  20. claude_mpm/cli/commands/configure_tui.py +65 -61
  21. claude_mpm/cli/commands/debug.py +1387 -0
  22. claude_mpm/cli/parsers/analyze_code_parser.py +170 -0
  23. claude_mpm/cli/parsers/analyze_parser.py +135 -0
  24. claude_mpm/cli/parsers/base_parser.py +29 -0
  25. claude_mpm/cli/parsers/configure_parser.py +23 -0
  26. claude_mpm/cli/parsers/debug_parser.py +319 -0
  27. claude_mpm/config/socketio_config.py +21 -21
  28. claude_mpm/constants.py +3 -1
  29. claude_mpm/core/framework_loader.py +148 -6
  30. claude_mpm/core/log_manager.py +16 -13
  31. claude_mpm/core/logger.py +1 -1
  32. claude_mpm/core/unified_agent_registry.py +1 -1
  33. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +1 -0
  34. claude_mpm/dashboard/analysis_runner.py +428 -0
  35. claude_mpm/dashboard/static/built/components/activity-tree.js +2 -0
  36. claude_mpm/dashboard/static/built/components/agent-inference.js +1 -1
  37. claude_mpm/dashboard/static/built/components/event-viewer.js +1 -1
  38. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +1 -1
  39. claude_mpm/dashboard/static/built/components/module-viewer.js +1 -1
  40. claude_mpm/dashboard/static/built/components/session-manager.js +1 -1
  41. claude_mpm/dashboard/static/built/components/working-directory.js +1 -1
  42. claude_mpm/dashboard/static/built/dashboard.js +1 -1
  43. claude_mpm/dashboard/static/built/socket-client.js +1 -1
  44. claude_mpm/dashboard/static/css/activity.css +549 -0
  45. claude_mpm/dashboard/static/css/code-tree.css +846 -0
  46. claude_mpm/dashboard/static/css/dashboard.css +245 -0
  47. claude_mpm/dashboard/static/dist/components/activity-tree.js +2 -0
  48. claude_mpm/dashboard/static/dist/components/code-tree.js +2 -0
  49. claude_mpm/dashboard/static/dist/components/code-viewer.js +2 -0
  50. claude_mpm/dashboard/static/dist/components/event-viewer.js +1 -1
  51. claude_mpm/dashboard/static/dist/components/session-manager.js +1 -1
  52. claude_mpm/dashboard/static/dist/components/working-directory.js +1 -1
  53. claude_mpm/dashboard/static/dist/dashboard.js +1 -1
  54. claude_mpm/dashboard/static/dist/socket-client.js +1 -1
  55. claude_mpm/dashboard/static/js/components/activity-tree.js +1139 -0
  56. claude_mpm/dashboard/static/js/components/code-tree.js +1357 -0
  57. claude_mpm/dashboard/static/js/components/code-viewer.js +480 -0
  58. claude_mpm/dashboard/static/js/components/event-viewer.js +11 -0
  59. claude_mpm/dashboard/static/js/components/session-manager.js +40 -4
  60. claude_mpm/dashboard/static/js/components/socket-manager.js +12 -0
  61. claude_mpm/dashboard/static/js/components/ui-state-manager.js +4 -0
  62. claude_mpm/dashboard/static/js/components/working-directory.js +17 -1
  63. claude_mpm/dashboard/static/js/dashboard.js +39 -0
  64. claude_mpm/dashboard/static/js/socket-client.js +414 -20
  65. claude_mpm/dashboard/templates/index.html +184 -4
  66. claude_mpm/hooks/claude_hooks/hook_handler.py +182 -5
  67. claude_mpm/hooks/claude_hooks/installer.py +728 -0
  68. claude_mpm/scripts/claude-hook-handler.sh +161 -0
  69. claude_mpm/scripts/socketio_daemon.py +121 -8
  70. claude_mpm/services/agents/deployment/agent_config_provider.py +127 -27
  71. claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +2 -2
  72. claude_mpm/services/agents/deployment/agent_record_service.py +1 -2
  73. claude_mpm/services/agents/memory/memory_format_service.py +1 -5
  74. claude_mpm/services/cli/agent_cleanup_service.py +1 -2
  75. claude_mpm/services/cli/agent_dependency_service.py +1 -1
  76. claude_mpm/services/cli/agent_validation_service.py +3 -4
  77. claude_mpm/services/cli/dashboard_launcher.py +2 -3
  78. claude_mpm/services/cli/startup_checker.py +0 -10
  79. claude_mpm/services/core/cache_manager.py +1 -2
  80. claude_mpm/services/core/path_resolver.py +1 -4
  81. claude_mpm/services/core/service_container.py +2 -2
  82. claude_mpm/services/diagnostics/checks/instructions_check.py +2 -5
  83. claude_mpm/services/event_bus/direct_relay.py +98 -20
  84. claude_mpm/services/infrastructure/monitoring/__init__.py +11 -11
  85. claude_mpm/services/infrastructure/monitoring.py +11 -11
  86. claude_mpm/services/project/architecture_analyzer.py +1 -1
  87. claude_mpm/services/project/dependency_analyzer.py +4 -4
  88. claude_mpm/services/project/language_analyzer.py +3 -3
  89. claude_mpm/services/project/metrics_collector.py +3 -6
  90. claude_mpm/services/socketio/handlers/__init__.py +2 -0
  91. claude_mpm/services/socketio/handlers/code_analysis.py +170 -0
  92. claude_mpm/services/socketio/handlers/registry.py +2 -0
  93. claude_mpm/services/socketio/server/connection_manager.py +95 -65
  94. claude_mpm/services/socketio/server/core.py +125 -17
  95. claude_mpm/services/socketio/server/main.py +44 -5
  96. claude_mpm/services/visualization/__init__.py +19 -0
  97. claude_mpm/services/visualization/mermaid_generator.py +938 -0
  98. claude_mpm/tools/__main__.py +208 -0
  99. claude_mpm/tools/code_tree_analyzer.py +778 -0
  100. claude_mpm/tools/code_tree_builder.py +632 -0
  101. claude_mpm/tools/code_tree_events.py +318 -0
  102. claude_mpm/tools/socketio_debug.py +671 -0
  103. {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/METADATA +1 -1
  104. {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/RECORD +108 -77
  105. claude_mpm/agents/schema/agent_schema.json +0 -314
  106. {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/WHEEL +0 -0
  107. {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/entry_points.txt +0 -0
  108. {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/licenses/LICENSE +0 -0
  109. {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/top_level.txt +0 -0
@@ -58,7 +58,7 @@ class AgentConfig:
58
58
  """Agent configuration model matching the existing implementation."""
59
59
 
60
60
  def __init__(
61
- self, name: str, description: str = "", dependencies: List[str] = None
61
+ self, name: str, description: str = "", dependencies: Optional[List[str]] = None
62
62
  ):
63
63
  self.name = name
64
64
  self.description = description
@@ -123,7 +123,7 @@ class SimpleAgentManager:
123
123
 
124
124
  agent_id = template_data.get("agent_id", template_file.stem)
125
125
  metadata = template_data.get("metadata", {})
126
- name = metadata.get("name", agent_id)
126
+ metadata.get("name", agent_id)
127
127
  description = metadata.get(
128
128
  "description", "No description available"
129
129
  )
@@ -225,8 +225,8 @@ class AgentInfo:
225
225
  template_path: Path,
226
226
  description: str = "",
227
227
  version: str = "1.0.0",
228
- tools: List[str] = None,
229
- model: str = None,
228
+ tools: Optional[List[str]] = None,
229
+ model: Optional[str] = None,
230
230
  ):
231
231
  self.name = name
232
232
  self.category = category # "system", "project", "user"
@@ -1200,7 +1200,11 @@ class SettingsScreen(Container):
1200
1200
  import subprocess
1201
1201
 
1202
1202
  result = subprocess.run(
1203
- ["claude", "--version"], capture_output=True, text=True, timeout=5, check=False
1203
+ ["claude", "--version"],
1204
+ capture_output=True,
1205
+ text=True,
1206
+ timeout=5,
1207
+ check=False,
1204
1208
  )
1205
1209
  if result.returncode == 0:
1206
1210
  claude_version = result.stdout.strip()
@@ -1286,7 +1290,7 @@ class ConfigureTUI(App):
1286
1290
  Container {
1287
1291
  background: $surface;
1288
1292
  }
1289
-
1293
+
1290
1294
  #screen-title {
1291
1295
  text-style: bold;
1292
1296
  text-align: left;
@@ -1297,18 +1301,18 @@ class ConfigureTUI(App):
1297
1301
  margin-bottom: 1;
1298
1302
  border-bottom: solid $primary;
1299
1303
  }
1300
-
1304
+
1301
1305
  /* Header styles */
1302
1306
  Header {
1303
1307
  background: $primary;
1304
1308
  border-bottom: solid $accent;
1305
1309
  }
1306
-
1310
+
1307
1311
  /* Main layout */
1308
1312
  #main-layout {
1309
1313
  height: 100%;
1310
1314
  }
1311
-
1315
+
1312
1316
  /* Sidebar navigation - Clean minimal style */
1313
1317
  #sidebar {
1314
1318
  width: 25;
@@ -1316,7 +1320,7 @@ class ConfigureTUI(App):
1316
1320
  border-right: solid $primary;
1317
1321
  padding: 0;
1318
1322
  }
1319
-
1323
+
1320
1324
  .sidebar-title {
1321
1325
  text-style: bold;
1322
1326
  padding: 0 1;
@@ -1326,13 +1330,13 @@ class ConfigureTUI(App):
1326
1330
  margin-bottom: 0;
1327
1331
  border-bottom: solid $primary;
1328
1332
  }
1329
-
1333
+
1330
1334
  #nav-list {
1331
1335
  height: 100%;
1332
1336
  padding: 0;
1333
1337
  margin: 0;
1334
1338
  }
1335
-
1339
+
1336
1340
  /* Single-line list items with minimal styling */
1337
1341
  #nav-list > ListItem {
1338
1342
  padding: 0 2;
@@ -1340,49 +1344,49 @@ class ConfigureTUI(App):
1340
1344
  height: 1; /* Single line height */
1341
1345
  background: transparent;
1342
1346
  }
1343
-
1347
+
1344
1348
  #nav-list > ListItem Label {
1345
1349
  padding: 0;
1346
1350
  margin: 0;
1347
1351
  width: 100%;
1348
1352
  }
1349
-
1353
+
1350
1354
  /* Hover state - light background */
1351
1355
  #nav-list > ListItem:hover {
1352
1356
  background: $boost;
1353
1357
  }
1354
-
1358
+
1355
1359
  /* Highlighted/Selected state - accent background */
1356
1360
  #nav-list > ListItem.--highlight {
1357
1361
  background: $accent 30%;
1358
1362
  text-style: bold;
1359
1363
  }
1360
-
1364
+
1361
1365
  /* Active selected state - primary background with bold text */
1362
1366
  #nav-list > ListItem.active {
1363
1367
  background: $primary 50%;
1364
1368
  text-style: bold;
1365
1369
  }
1366
-
1370
+
1367
1371
  /* Main content area */
1368
1372
  #content-switcher {
1369
1373
  padding: 1;
1370
1374
  height: 100%;
1371
1375
  width: 100%;
1372
1376
  }
1373
-
1377
+
1374
1378
  /* Content screens (Containers) */
1375
1379
  #agents, #templates, #behaviors, #settings {
1376
1380
  height: 100%;
1377
1381
  width: 100%;
1378
1382
  }
1379
-
1383
+
1380
1384
  /* Agent Management simplified layout styles */
1381
1385
  #agent-management-screen {
1382
1386
  height: 100%;
1383
1387
  padding: 1;
1384
1388
  }
1385
-
1389
+
1386
1390
  #screen-title {
1387
1391
  text-style: bold;
1388
1392
  padding: 0 1;
@@ -1392,7 +1396,7 @@ class ConfigureTUI(App):
1392
1396
  margin-bottom: 1;
1393
1397
  border-bottom: solid $primary;
1394
1398
  }
1395
-
1399
+
1396
1400
  /* Compact headers for all screens */
1397
1401
  #list-title, #viewer-title, #tree-title, #editor-title {
1398
1402
  text-style: bold;
@@ -1403,44 +1407,44 @@ class ConfigureTUI(App):
1403
1407
  margin-bottom: 1;
1404
1408
  border-bottom: solid $primary;
1405
1409
  }
1406
-
1410
+
1407
1411
  #agent-search {
1408
1412
  margin-bottom: 1;
1409
1413
  width: 100%;
1410
1414
  }
1411
-
1415
+
1412
1416
  #agent-list-table {
1413
1417
  height: 20;
1414
1418
  min-height: 15;
1415
1419
  margin-bottom: 1;
1416
1420
  border: solid $primary;
1417
1421
  }
1418
-
1422
+
1419
1423
  #agent-details {
1420
1424
  padding: 1;
1421
1425
  height: 10;
1422
1426
  border: solid $primary;
1423
1427
  margin-bottom: 1;
1424
1428
  }
1425
-
1429
+
1426
1430
  #agent-action-buttons {
1427
1431
  height: 3;
1428
1432
  align: center middle;
1429
1433
  }
1430
-
1434
+
1431
1435
  #agent-action-buttons Button {
1432
1436
  margin: 0 1;
1433
1437
  }
1434
-
1438
+
1435
1439
  #agent-category-tabs {
1436
1440
  height: 3;
1437
1441
  margin-bottom: 1;
1438
1442
  }
1439
-
1443
+
1440
1444
  #agent-category-tabs TabPane {
1441
1445
  padding: 0;
1442
1446
  }
1443
-
1447
+
1444
1448
  #view-properties-dialog {
1445
1449
  align: center middle;
1446
1450
  background: $panel;
@@ -1450,96 +1454,96 @@ class ConfigureTUI(App):
1450
1454
  width: 90%;
1451
1455
  height: 80%;
1452
1456
  }
1453
-
1457
+
1454
1458
  #properties-title {
1455
1459
  text-style: bold;
1456
1460
  margin-bottom: 1;
1457
1461
  }
1458
-
1462
+
1459
1463
  #properties-viewer {
1460
1464
  width: 100%;
1461
1465
  height: 100%;
1462
1466
  margin: 1 0;
1463
1467
  }
1464
-
1468
+
1465
1469
  #properties-buttons {
1466
1470
  align: center middle;
1467
1471
  height: 3;
1468
1472
  margin-top: 1;
1469
1473
  }
1470
-
1474
+
1471
1475
  /* Template screen styles */
1472
1476
  #template-layout {
1473
1477
  height: 100%;
1474
1478
  }
1475
-
1479
+
1476
1480
  #template-list-container {
1477
1481
  width: 40%;
1478
1482
  border-right: solid $primary;
1479
1483
  padding-right: 1;
1480
1484
  }
1481
-
1485
+
1482
1486
  #template-viewer-container {
1483
1487
  width: 60%;
1484
1488
  padding-left: 1;
1485
1489
  }
1486
-
1490
+
1487
1491
  #template-viewer {
1488
1492
  height: 100%;
1489
1493
  }
1490
-
1494
+
1491
1495
  #template-actions {
1492
1496
  align: center middle;
1493
1497
  height: 3;
1494
1498
  margin-top: 1;
1495
1499
  }
1496
-
1500
+
1497
1501
  #template-actions Button {
1498
1502
  margin: 0 1;
1499
1503
  }
1500
-
1504
+
1501
1505
  /* Behavior screen styles */
1502
1506
  #behavior-layout {
1503
1507
  height: 100%;
1504
1508
  }
1505
-
1509
+
1506
1510
  #file-tree-container {
1507
1511
  width: 30%;
1508
1512
  border-right: solid $primary;
1509
1513
  padding-right: 1;
1510
1514
  }
1511
-
1515
+
1512
1516
  #file-editor-container {
1513
1517
  width: 70%;
1514
1518
  padding-left: 1;
1515
1519
  }
1516
-
1520
+
1517
1521
  #behavior-editor {
1518
1522
  height: 100%;
1519
1523
  }
1520
-
1524
+
1521
1525
  #behavior-actions {
1522
1526
  align: center middle;
1523
1527
  height: 3;
1524
1528
  margin-top: 1;
1525
1529
  }
1526
-
1530
+
1527
1531
  #behavior-actions Button {
1528
1532
  margin: 0 1;
1529
1533
  }
1530
-
1534
+
1531
1535
  /* Settings screen styles */
1532
1536
  #settings-content {
1533
1537
  padding: 2;
1534
1538
  max-width: 80;
1535
1539
  }
1536
-
1540
+
1537
1541
  .settings-section {
1538
1542
  margin-bottom: 2;
1539
1543
  border: solid $primary;
1540
1544
  padding: 1;
1541
1545
  }
1542
-
1546
+
1543
1547
  .section-title {
1544
1548
  text-style: bold;
1545
1549
  padding: 0 1;
@@ -1548,26 +1552,26 @@ class ConfigureTUI(App):
1548
1552
  color: $primary;
1549
1553
  border-bottom: solid $primary;
1550
1554
  }
1551
-
1555
+
1552
1556
  .setting-row {
1553
1557
  align: left middle;
1554
1558
  height: 3;
1555
1559
  }
1556
-
1560
+
1557
1561
  .setting-label {
1558
1562
  width: 20;
1559
1563
  }
1560
-
1564
+
1561
1565
  .setting-value {
1562
1566
  width: 40;
1563
1567
  color: $text-muted;
1564
1568
  }
1565
-
1569
+
1566
1570
  .version-line {
1567
1571
  padding: 0 1;
1568
1572
  margin: 0;
1569
1573
  }
1570
-
1574
+
1571
1575
  /* Modal dialog styles */
1572
1576
  #confirm-dialog, #edit-dialog {
1573
1577
  align: center middle;
@@ -1576,31 +1580,31 @@ class ConfigureTUI(App):
1576
1580
  padding: 2;
1577
1581
  margin: 4 8;
1578
1582
  }
1579
-
1583
+
1580
1584
  #confirm-title, #edit-title {
1581
1585
  text-style: bold;
1582
1586
  margin-bottom: 1;
1583
1587
  }
1584
-
1588
+
1585
1589
  #confirm-message {
1586
1590
  margin-bottom: 2;
1587
1591
  }
1588
-
1592
+
1589
1593
  #confirm-buttons, #edit-buttons {
1590
1594
  align: center middle;
1591
1595
  height: 3;
1592
1596
  }
1593
-
1597
+
1594
1598
  #confirm-buttons Button, #edit-buttons Button {
1595
1599
  margin: 0 1;
1596
1600
  }
1597
-
1601
+
1598
1602
  #template-editor {
1599
1603
  width: 80;
1600
1604
  height: 30;
1601
1605
  margin: 1 0;
1602
1606
  }
1603
-
1607
+
1604
1608
  /* Footer styles */
1605
1609
  Footer {
1606
1610
  background: $panel;
@@ -1619,7 +1623,7 @@ class ConfigureTUI(App):
1619
1623
  Binding("ctrl+left", "focus_prev_pane", "Prev Pane", show=False),
1620
1624
  ]
1621
1625
 
1622
- def __init__(self, current_scope: str = "project", project_dir: Path = None):
1626
+ def __init__(self, current_scope: str = "project", project_dir: Optional[Path] = None):
1623
1627
  super().__init__()
1624
1628
  self.current_scope = current_scope
1625
1629
  self.project_dir = project_dir or Path.cwd()
@@ -1640,7 +1644,7 @@ class ConfigureTUI(App):
1640
1644
  def compose(self) -> ComposeResult:
1641
1645
  """Create the main application layout."""
1642
1646
  # Header with version info
1643
- mpm_version = self.version_service.get_version()
1647
+ self.version_service.get_version()
1644
1648
  yield Header(show_clock=True)
1645
1649
  yield Rule(line_style="heavy")
1646
1650
 
@@ -1908,7 +1912,7 @@ def can_use_tui() -> bool:
1908
1912
 
1909
1913
 
1910
1914
  def launch_tui(
1911
- current_scope: str = "project", project_dir: Path = None
1915
+ current_scope: str = "project", project_dir: Optional[Path] = None
1912
1916
  ) -> CommandResult:
1913
1917
  """Launch the Textual TUI application."""
1914
1918
  try: