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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/INSTRUCTIONS.md +26 -1
- claude_mpm/agents/OUTPUT_STYLE.md +73 -0
- claude_mpm/agents/agents_metadata.py +57 -0
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +17 -0
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +3 -0
- claude_mpm/agents/templates/agent-manager.json +263 -17
- claude_mpm/agents/templates/agent-manager.md +248 -10
- claude_mpm/agents/templates/agentic_coder_optimizer.json +222 -0
- claude_mpm/agents/templates/code_analyzer.json +18 -8
- claude_mpm/agents/templates/engineer.json +1 -1
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +39 -0
- claude_mpm/agents/templates/qa.json +1 -1
- claude_mpm/agents/templates/research.json +1 -1
- claude_mpm/cli/__init__.py +4 -0
- claude_mpm/cli/commands/__init__.py +6 -0
- claude_mpm/cli/commands/analyze.py +547 -0
- claude_mpm/cli/commands/analyze_code.py +524 -0
- claude_mpm/cli/commands/configure.py +223 -25
- claude_mpm/cli/commands/configure_tui.py +65 -61
- claude_mpm/cli/commands/debug.py +1387 -0
- claude_mpm/cli/parsers/analyze_code_parser.py +170 -0
- claude_mpm/cli/parsers/analyze_parser.py +135 -0
- claude_mpm/cli/parsers/base_parser.py +29 -0
- claude_mpm/cli/parsers/configure_parser.py +23 -0
- claude_mpm/cli/parsers/debug_parser.py +319 -0
- claude_mpm/config/socketio_config.py +21 -21
- claude_mpm/constants.py +3 -1
- claude_mpm/core/framework_loader.py +148 -6
- claude_mpm/core/log_manager.py +16 -13
- claude_mpm/core/logger.py +1 -1
- claude_mpm/core/unified_agent_registry.py +1 -1
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +1 -0
- claude_mpm/dashboard/analysis_runner.py +428 -0
- claude_mpm/dashboard/static/built/components/activity-tree.js +2 -0
- claude_mpm/dashboard/static/built/components/agent-inference.js +1 -1
- claude_mpm/dashboard/static/built/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +1 -1
- claude_mpm/dashboard/static/built/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/built/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/built/dashboard.js +1 -1
- claude_mpm/dashboard/static/built/socket-client.js +1 -1
- claude_mpm/dashboard/static/css/activity.css +549 -0
- claude_mpm/dashboard/static/css/code-tree.css +846 -0
- claude_mpm/dashboard/static/css/dashboard.css +245 -0
- claude_mpm/dashboard/static/dist/components/activity-tree.js +2 -0
- claude_mpm/dashboard/static/dist/components/code-tree.js +2 -0
- claude_mpm/dashboard/static/dist/components/code-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/dist/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/dist/dashboard.js +1 -1
- claude_mpm/dashboard/static/dist/socket-client.js +1 -1
- claude_mpm/dashboard/static/js/components/activity-tree.js +1139 -0
- claude_mpm/dashboard/static/js/components/code-tree.js +1357 -0
- claude_mpm/dashboard/static/js/components/code-viewer.js +480 -0
- claude_mpm/dashboard/static/js/components/event-viewer.js +11 -0
- claude_mpm/dashboard/static/js/components/session-manager.js +40 -4
- claude_mpm/dashboard/static/js/components/socket-manager.js +12 -0
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +4 -0
- claude_mpm/dashboard/static/js/components/working-directory.js +17 -1
- claude_mpm/dashboard/static/js/dashboard.js +39 -0
- claude_mpm/dashboard/static/js/socket-client.js +414 -20
- claude_mpm/dashboard/templates/index.html +184 -4
- claude_mpm/hooks/claude_hooks/hook_handler.py +182 -5
- claude_mpm/hooks/claude_hooks/installer.py +728 -0
- claude_mpm/scripts/claude-hook-handler.sh +161 -0
- claude_mpm/scripts/socketio_daemon.py +121 -8
- claude_mpm/services/agents/deployment/agent_config_provider.py +127 -27
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +2 -2
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -2
- claude_mpm/services/agents/memory/memory_format_service.py +1 -5
- claude_mpm/services/cli/agent_cleanup_service.py +1 -2
- claude_mpm/services/cli/agent_dependency_service.py +1 -1
- claude_mpm/services/cli/agent_validation_service.py +3 -4
- claude_mpm/services/cli/dashboard_launcher.py +2 -3
- claude_mpm/services/cli/startup_checker.py +0 -10
- claude_mpm/services/core/cache_manager.py +1 -2
- claude_mpm/services/core/path_resolver.py +1 -4
- claude_mpm/services/core/service_container.py +2 -2
- claude_mpm/services/diagnostics/checks/instructions_check.py +2 -5
- claude_mpm/services/event_bus/direct_relay.py +98 -20
- claude_mpm/services/infrastructure/monitoring/__init__.py +11 -11
- claude_mpm/services/infrastructure/monitoring.py +11 -11
- claude_mpm/services/project/architecture_analyzer.py +1 -1
- claude_mpm/services/project/dependency_analyzer.py +4 -4
- claude_mpm/services/project/language_analyzer.py +3 -3
- claude_mpm/services/project/metrics_collector.py +3 -6
- claude_mpm/services/socketio/handlers/__init__.py +2 -0
- claude_mpm/services/socketio/handlers/code_analysis.py +170 -0
- claude_mpm/services/socketio/handlers/registry.py +2 -0
- claude_mpm/services/socketio/server/connection_manager.py +95 -65
- claude_mpm/services/socketio/server/core.py +125 -17
- claude_mpm/services/socketio/server/main.py +44 -5
- claude_mpm/services/visualization/__init__.py +19 -0
- claude_mpm/services/visualization/mermaid_generator.py +938 -0
- claude_mpm/tools/__main__.py +208 -0
- claude_mpm/tools/code_tree_analyzer.py +778 -0
- claude_mpm/tools/code_tree_builder.py +632 -0
- claude_mpm/tools/code_tree_events.py +318 -0
- claude_mpm/tools/socketio_debug.py +671 -0
- {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/METADATA +1 -1
- {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/RECORD +108 -77
- claude_mpm/agents/schema/agent_schema.json +0 -314
- {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.1.7.dist-info → claude_mpm-4.1.10.dist-info}/licenses/LICENSE +0 -0
- {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
|
-
|
|
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"],
|
|
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
|
-
|
|
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:
|