@triedotdev/mcp 1.0.104 → 1.0.105
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.
|
@@ -1258,28 +1258,36 @@ import { Box, Text } from "ink";
|
|
|
1258
1258
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
1259
1259
|
function Header() {
|
|
1260
1260
|
const { state } = useDashboard();
|
|
1261
|
-
const time = (/* @__PURE__ */ new Date()).toLocaleTimeString("en-US", { hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" });
|
|
1262
1261
|
const { signalExtraction, watch, alerts } = state;
|
|
1263
1262
|
const totalExtracted = signalExtraction.decisionsExtracted + signalExtraction.factsExtracted + signalExtraction.blockersExtracted + signalExtraction.questionsExtracted;
|
|
1264
1263
|
let statusLabel;
|
|
1265
1264
|
if (watch.watching) {
|
|
1266
1265
|
statusLabel = totalExtracted > 0 ? /* @__PURE__ */ jsxs(Text, { children: [
|
|
1267
|
-
/* @__PURE__ */ jsx2(Text, { color: "green",
|
|
1266
|
+
/* @__PURE__ */ jsx2(Text, { color: "green", children: "\u25CF" }),
|
|
1267
|
+
" ",
|
|
1268
|
+
/* @__PURE__ */ jsx2(Text, { color: "green", bold: true, children: "Learning" }),
|
|
1268
1269
|
" ",
|
|
1269
1270
|
/* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
|
|
1270
1271
|
totalExtracted,
|
|
1271
1272
|
" signals"
|
|
1272
1273
|
] })
|
|
1273
|
-
] }) : /* @__PURE__ */
|
|
1274
|
+
] }) : /* @__PURE__ */ jsxs(Text, { children: [
|
|
1275
|
+
/* @__PURE__ */ jsx2(Text, { color: "green", children: "\u25CF" }),
|
|
1276
|
+
" ",
|
|
1277
|
+
/* @__PURE__ */ jsx2(Text, { bold: true, children: "Watching" })
|
|
1278
|
+
] });
|
|
1274
1279
|
} else {
|
|
1275
|
-
statusLabel = /* @__PURE__ */
|
|
1280
|
+
statusLabel = /* @__PURE__ */ jsxs(Text, { children: [
|
|
1281
|
+
/* @__PURE__ */ jsx2(Text, { dimColor: true, children: "\u25CB" }),
|
|
1282
|
+
" ",
|
|
1283
|
+
/* @__PURE__ */ jsx2(Text, { dimColor: true, children: "Idle" })
|
|
1284
|
+
] });
|
|
1276
1285
|
}
|
|
1277
|
-
return /* @__PURE__ */ jsxs(Box, {
|
|
1278
|
-
/* @__PURE__ */ jsx2(
|
|
1286
|
+
return /* @__PURE__ */ jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [
|
|
1287
|
+
/* @__PURE__ */ jsx2(Text, { color: "green", bold: true, children: "trie" }),
|
|
1279
1288
|
/* @__PURE__ */ jsxs(Box, { gap: 2, children: [
|
|
1280
1289
|
statusLabel,
|
|
1281
|
-
alerts.hasCritical && /* @__PURE__ */ jsx2(Text, { color: "red", bold: true, children: "\
|
|
1282
|
-
/* @__PURE__ */ jsx2(Text, { dimColor: true, children: time })
|
|
1290
|
+
alerts.hasCritical && /* @__PURE__ */ jsx2(Text, { color: "red", bold: true, children: "\u25CF Alert" })
|
|
1283
1291
|
] })
|
|
1284
1292
|
] });
|
|
1285
1293
|
}
|
|
@@ -1295,82 +1303,39 @@ var VIEW_LABELS = {
|
|
|
1295
1303
|
hypotheses: "Hypotheses",
|
|
1296
1304
|
memory: "Memory"
|
|
1297
1305
|
};
|
|
1298
|
-
function Hint({ k, label }) {
|
|
1299
|
-
return /* @__PURE__ */ jsxs2(Text2, { children: [
|
|
1300
|
-
/* @__PURE__ */ jsx3(Text2, { dimColor: true, children: "[" }),
|
|
1301
|
-
/* @__PURE__ */ jsx3(Text2, { bold: true, children: k }),
|
|
1302
|
-
/* @__PURE__ */ jsx3(Text2, { dimColor: true, children: "]" }),
|
|
1303
|
-
/* @__PURE__ */ jsxs2(Text2, { dimColor: true, children: [
|
|
1304
|
-
" ",
|
|
1305
|
-
label
|
|
1306
|
-
] })
|
|
1307
|
-
] });
|
|
1308
|
-
}
|
|
1309
1306
|
function Footer() {
|
|
1310
1307
|
const { state } = useDashboard();
|
|
1311
1308
|
const { view } = state;
|
|
1312
|
-
const
|
|
1313
|
-
|
|
1314
|
-
const label = VIEW_LABELS[v];
|
|
1315
|
-
return isActive ? /* @__PURE__ */ jsx3(Text2, { color: "green", bold: true, children: ` ${label} ` }, v) : /* @__PURE__ */ jsx3(Text2, { dimColor: true, children: ` ${label} ` }, v);
|
|
1316
|
-
});
|
|
1317
|
-
let hints;
|
|
1309
|
+
const label = VIEW_LABELS[view];
|
|
1310
|
+
let contextHints;
|
|
1318
1311
|
if (view === "goals" && state.goalsPanel.inputMode === "add") {
|
|
1319
|
-
|
|
1320
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Enter", label: "Save" }),
|
|
1321
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Esc", label: "Cancel" })
|
|
1322
|
-
] });
|
|
1312
|
+
contextHints = "enter save \xB7 esc cancel";
|
|
1323
1313
|
} else if (view === "hypotheses" && state.hypothesesPanel.inputMode === "add") {
|
|
1324
|
-
|
|
1325
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Enter", label: "Save" }),
|
|
1326
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Esc", label: "Cancel" })
|
|
1327
|
-
] });
|
|
1314
|
+
contextHints = "enter save \xB7 esc cancel";
|
|
1328
1315
|
} else if (view === "goals") {
|
|
1329
|
-
|
|
1330
|
-
/* @__PURE__ */ jsx3(Hint, { k: "j/k", label: "Nav" }),
|
|
1331
|
-
/* @__PURE__ */ jsx3(Hint, { k: "a", label: "Add" }),
|
|
1332
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Enter", label: "Complete" }),
|
|
1333
|
-
/* @__PURE__ */ jsx3(Hint, { k: "d", label: "Delete" })
|
|
1334
|
-
] });
|
|
1316
|
+
contextHints = "j/k nav \xB7 a add \xB7 enter complete \xB7 d delete";
|
|
1335
1317
|
} else if (view === "hypotheses") {
|
|
1336
|
-
|
|
1337
|
-
/* @__PURE__ */ jsx3(Hint, { k: "j/k", label: "Nav" }),
|
|
1338
|
-
/* @__PURE__ */ jsx3(Hint, { k: "a", label: "Add" }),
|
|
1339
|
-
/* @__PURE__ */ jsx3(Hint, { k: "v", label: "Validate" }),
|
|
1340
|
-
/* @__PURE__ */ jsx3(Hint, { k: "x", label: "Invalidate" })
|
|
1341
|
-
] });
|
|
1318
|
+
contextHints = "j/k nav \xB7 a add \xB7 v validate \xB7 x invalidate";
|
|
1342
1319
|
} else if (view === "agent") {
|
|
1343
|
-
|
|
1344
|
-
/* @__PURE__ */ jsx3(Hint, { k: "j/k", label: "Nav" }),
|
|
1345
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Enter", label: "Expand" }),
|
|
1346
|
-
/* @__PURE__ */ jsx3(Hint, { k: "d", label: "Dismiss" }),
|
|
1347
|
-
/* @__PURE__ */ jsx3(Hint, { k: "i", label: "Ignore" }),
|
|
1348
|
-
/* @__PURE__ */ jsx3(Hint, { k: "x", label: "Clear" })
|
|
1349
|
-
] });
|
|
1320
|
+
contextHints = "j/k nav \xB7 enter expand \xB7 d dismiss";
|
|
1350
1321
|
} else if (view === "memory") {
|
|
1351
|
-
|
|
1352
|
-
/* @__PURE__ */ jsx3(Hint, { k: "j/k", label: "Nav" }),
|
|
1353
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Enter", label: "Expand" }),
|
|
1354
|
-
/* @__PURE__ */ jsx3(Hint, { k: "b", label: "Back" })
|
|
1355
|
-
] });
|
|
1322
|
+
contextHints = "j/k nav \xB7 enter expand \xB7 b back";
|
|
1356
1323
|
} else if (view === "rawlog") {
|
|
1357
|
-
|
|
1358
|
-
/* @__PURE__ */ jsx3(Hint, { k: "n/p", label: "Pages" }),
|
|
1359
|
-
/* @__PURE__ */ jsx3(Hint, { k: "b", label: "Back" })
|
|
1360
|
-
] });
|
|
1324
|
+
contextHints = "n/p pages \xB7 b back";
|
|
1361
1325
|
} else {
|
|
1362
|
-
|
|
1363
|
-
/* @__PURE__ */ jsx3(Hint, { k: "Tab", label: "Views" }),
|
|
1364
|
-
/* @__PURE__ */ jsx3(Hint, { k: "n/p", label: "Pages" }),
|
|
1365
|
-
/* @__PURE__ */ jsx3(Hint, { k: "h", label: "Help" })
|
|
1366
|
-
] });
|
|
1326
|
+
contextHints = "n/p pages \xB7 h help";
|
|
1367
1327
|
}
|
|
1368
|
-
return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
|
|
1369
|
-
/* @__PURE__ */
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1328
|
+
return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", paddingX: 1, children: [
|
|
1329
|
+
/* @__PURE__ */ jsxs2(Box2, { justifyContent: "space-between", children: [
|
|
1330
|
+
/* @__PURE__ */ jsxs2(Text2, { children: [
|
|
1331
|
+
/* @__PURE__ */ jsx3(Text2, { color: "green", children: "\u25CF" }),
|
|
1332
|
+
" ",
|
|
1333
|
+
/* @__PURE__ */ jsx3(Text2, { color: "green", bold: true, children: label }),
|
|
1334
|
+
/* @__PURE__ */ jsx3(Text2, { dimColor: true, children: " (tab to cycle)" })
|
|
1335
|
+
] }),
|
|
1336
|
+
/* @__PURE__ */ jsx3(Text2, { dimColor: true, children: "q quit" })
|
|
1337
|
+
] }),
|
|
1338
|
+
/* @__PURE__ */ jsx3(Text2, { dimColor: true, children: contextHints })
|
|
1374
1339
|
] });
|
|
1375
1340
|
}
|
|
1376
1341
|
|
|
@@ -1496,25 +1461,28 @@ function ConfigDialog({ onClose }) {
|
|
|
1496
1461
|
items.map((item, idx) => {
|
|
1497
1462
|
const isSelected = selectedIndex === idx;
|
|
1498
1463
|
return /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
1499
|
-
isSelected ? /* @__PURE__ */
|
|
1464
|
+
isSelected ? /* @__PURE__ */ jsxs4(Text4, { bold: true, color: "green", children: [
|
|
1465
|
+
">",
|
|
1466
|
+
" "
|
|
1467
|
+
] }) : /* @__PURE__ */ jsx5(Text4, { children: " " }),
|
|
1500
1468
|
/* @__PURE__ */ jsxs4(Text4, { bold: isSelected, children: [
|
|
1501
1469
|
item.label,
|
|
1502
1470
|
": "
|
|
1503
1471
|
] }),
|
|
1504
1472
|
editing && isSelected ? /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
1505
1473
|
editBuffer,
|
|
1506
|
-
/* @__PURE__ */ jsx5(Text4, { bold: true, color: "green", children: "
|
|
1474
|
+
/* @__PURE__ */ jsx5(Text4, { bold: true, color: "green", children: "|" })
|
|
1507
1475
|
] }) : /* @__PURE__ */ jsx5(Text4, { dimColor: true, children: item.value })
|
|
1508
1476
|
] }, item.key);
|
|
1509
1477
|
}),
|
|
1510
1478
|
/* @__PURE__ */ jsx5(Text4, { children: " " }),
|
|
1511
|
-
/* @__PURE__ */ jsx5(Text4, { dimColor: true, children: section === "main" ? "
|
|
1479
|
+
/* @__PURE__ */ jsx5(Text4, { dimColor: true, children: section === "main" ? "enter select \xB7 esc close" : "enter edit \xB7 esc/b back" })
|
|
1512
1480
|
] });
|
|
1513
1481
|
}
|
|
1514
1482
|
|
|
1515
1483
|
// src/cli/dashboard/views/OverviewView.tsx
|
|
1516
1484
|
import { Box as Box5, Text as Text5 } from "ink";
|
|
1517
|
-
import {
|
|
1485
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1518
1486
|
function OverviewView() {
|
|
1519
1487
|
const { state } = useDashboard();
|
|
1520
1488
|
const { progress, signalExtraction, watch, issues, activityLog, activityPage } = state;
|
|
@@ -1527,87 +1495,69 @@ function OverviewView() {
|
|
|
1527
1495
|
const pageActivities = activityLog.slice(startIdx, startIdx + activityRows);
|
|
1528
1496
|
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", paddingX: 1, children: [
|
|
1529
1497
|
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1498
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "\u25CF" }),
|
|
1499
|
+
" Scanned ",
|
|
1530
1500
|
/* @__PURE__ */ jsx6(Text5, { bold: true, children: processedFiles }),
|
|
1501
|
+
" files ",
|
|
1531
1502
|
/* @__PURE__ */ jsxs5(Text5, { dimColor: true, children: [
|
|
1532
|
-
" files scanned in ",
|
|
1533
1503
|
elapsed,
|
|
1534
1504
|
"s"
|
|
1535
1505
|
] })
|
|
1536
1506
|
] }),
|
|
1537
|
-
watch.watching && signalExtraction.enabled && /* @__PURE__ */ jsxs5(
|
|
1538
|
-
/* @__PURE__ */
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
/* @__PURE__ */
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
/* @__PURE__ */ jsx6(Text5, {
|
|
1546
|
-
|
|
1547
|
-
/* @__PURE__ */
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
/* @__PURE__ */
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " facts" })
|
|
1556
|
-
] }),
|
|
1557
|
-
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1558
|
-
" ",
|
|
1559
|
-
/* @__PURE__ */ jsx6(Text5, { bold: true, children: signalExtraction.blockersExtracted }),
|
|
1560
|
-
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " blockers" })
|
|
1561
|
-
] }),
|
|
1562
|
-
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1563
|
-
" ",
|
|
1564
|
-
/* @__PURE__ */ jsx6(Text5, { bold: true, children: signalExtraction.questionsExtracted }),
|
|
1565
|
-
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " questions" })
|
|
1566
|
-
] }),
|
|
1567
|
-
/* @__PURE__ */ jsx6(Text5, { children: " " }),
|
|
1568
|
-
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1569
|
-
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "Use " }),
|
|
1570
|
-
/* @__PURE__ */ jsx6(Text5, { bold: true, children: "trie gotcha" }),
|
|
1571
|
-
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " to query the ledger" })
|
|
1572
|
-
] })
|
|
1507
|
+
watch.watching && signalExtraction.enabled && /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1508
|
+
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1509
|
+
/* @__PURE__ */ jsx6(Text5, { color: "green", children: "\u25CF" }),
|
|
1510
|
+
" Signal extraction ",
|
|
1511
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "enabled" })
|
|
1512
|
+
] }),
|
|
1513
|
+
(signalExtraction.decisionsExtracted > 0 || signalExtraction.factsExtracted > 0 || signalExtraction.blockersExtracted > 0) && /* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1514
|
+
" ",
|
|
1515
|
+
/* @__PURE__ */ jsx6(Text5, { color: "green", children: "\u25CB" }),
|
|
1516
|
+
" ",
|
|
1517
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, children: signalExtraction.decisionsExtracted }),
|
|
1518
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " decisions" }),
|
|
1519
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " \xB7 " }),
|
|
1520
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, children: signalExtraction.factsExtracted }),
|
|
1521
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " facts" }),
|
|
1522
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " \xB7 " }),
|
|
1523
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, children: signalExtraction.blockersExtracted }),
|
|
1524
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " blockers" })
|
|
1573
1525
|
] })
|
|
1574
1526
|
] }),
|
|
1575
|
-
criticalIssues.length > 0 && /* @__PURE__ */ jsxs5(
|
|
1527
|
+
criticalIssues.length > 0 && /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1576
1528
|
/* @__PURE__ */ jsx6(Text5, { children: " " }),
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
lineNum
|
|
1593
|
-
] })
|
|
1594
|
-
] }, i);
|
|
1595
|
-
})
|
|
1596
|
-
] })
|
|
1529
|
+
criticalIssues.map((issue, i) => {
|
|
1530
|
+
const filename = issue.file.split("/").pop() || issue.file;
|
|
1531
|
+
const lineNum = issue.line ? `:${issue.line}` : "";
|
|
1532
|
+
const desc = issue.issue.slice(0, 50) + (issue.issue.length > 50 ? "..." : "");
|
|
1533
|
+
return /* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1534
|
+
/* @__PURE__ */ jsx6(Text5, { color: "red", children: "\u25CF" }),
|
|
1535
|
+
" ",
|
|
1536
|
+
/* @__PURE__ */ jsx6(Text5, { color: "red", children: desc }),
|
|
1537
|
+
/* @__PURE__ */ jsxs5(Text5, { dimColor: true, children: [
|
|
1538
|
+
" ",
|
|
1539
|
+
filename,
|
|
1540
|
+
lineNum
|
|
1541
|
+
] })
|
|
1542
|
+
] }, i);
|
|
1543
|
+
})
|
|
1597
1544
|
] }),
|
|
1598
|
-
totalIssues === 0 && criticalIssues.length === 0 && /* @__PURE__ */ jsxs5(
|
|
1599
|
-
/* @__PURE__ */ jsx6(Text5, {
|
|
1600
|
-
|
|
1545
|
+
totalIssues === 0 && criticalIssues.length === 0 && /* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1546
|
+
/* @__PURE__ */ jsx6(Text5, { color: "green", children: "\u25CF" }),
|
|
1547
|
+
" No issues found"
|
|
1601
1548
|
] }),
|
|
1602
1549
|
/* @__PURE__ */ jsx6(Text5, { children: " " }),
|
|
1603
1550
|
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1604
1551
|
/* @__PURE__ */ jsx6(Text5, { bold: true, children: "Activity" }),
|
|
1605
1552
|
pageActivities.map((entry, i) => /* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1606
|
-
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: entry.time }),
|
|
1607
1553
|
" ",
|
|
1608
|
-
|
|
1554
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "\u25CF" }),
|
|
1555
|
+
" ",
|
|
1556
|
+
entry.message,
|
|
1557
|
+
" ",
|
|
1558
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: entry.time })
|
|
1609
1559
|
] }, i)),
|
|
1610
|
-
pageActivities.length === 0 && /* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "No activity yet." })
|
|
1560
|
+
pageActivities.length === 0 && /* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " No activity yet." })
|
|
1611
1561
|
] })
|
|
1612
1562
|
] });
|
|
1613
1563
|
}
|
|
@@ -1646,25 +1596,25 @@ function formatTimeAgo(timestamp) {
|
|
|
1646
1596
|
function insightIcon(type) {
|
|
1647
1597
|
switch (type) {
|
|
1648
1598
|
case "warning":
|
|
1649
|
-
return { icon: "
|
|
1599
|
+
return { icon: "\u25CF", color: colors.critical };
|
|
1650
1600
|
case "observation":
|
|
1651
|
-
return { icon: "
|
|
1601
|
+
return { icon: "\u25CB", color: colors.serious };
|
|
1652
1602
|
case "suggestion":
|
|
1653
|
-
return { icon: "
|
|
1603
|
+
return { icon: "\u25CB", color: colors.highlight };
|
|
1654
1604
|
case "celebration":
|
|
1655
|
-
return { icon: "
|
|
1605
|
+
return { icon: "\u25CF", color: colors.success };
|
|
1656
1606
|
case "question":
|
|
1657
|
-
return { icon: "
|
|
1607
|
+
return { icon: "\u25CB", color: colors.moderate };
|
|
1658
1608
|
default:
|
|
1659
|
-
return { icon: "
|
|
1609
|
+
return { icon: "\u25CB", color: colors.dim };
|
|
1660
1610
|
}
|
|
1661
1611
|
}
|
|
1662
1612
|
function progressBar(current, total, width = 10) {
|
|
1663
|
-
if (total <= 0) return colors.dim("
|
|
1613
|
+
if (total <= 0) return colors.dim("\u2591".repeat(width));
|
|
1664
1614
|
const progress = Math.min(1, current / total);
|
|
1665
1615
|
const filled = Math.round(width * progress);
|
|
1666
1616
|
const empty = width - filled;
|
|
1667
|
-
return colors.
|
|
1617
|
+
return colors.success("\u2588".repeat(filled)) + colors.dim("\u2591".repeat(empty));
|
|
1668
1618
|
}
|
|
1669
1619
|
function stripEmojis(s) {
|
|
1670
1620
|
return s.replace(/[\u{1F300}-\u{1F9FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}\u{FE00}-\u{FE0F}\u{200D}\u{20E3}\u{FE0F}\u{E0020}-\u{E007F}]/gu, "").trim();
|
|
@@ -1697,67 +1647,52 @@ function AgentView() {
|
|
|
1697
1647
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", paddingX: 1, children: [
|
|
1698
1648
|
/* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1699
1649
|
/* @__PURE__ */ jsx7(Text6, { bold: true, children: "Agent Insights" }),
|
|
1700
|
-
activeCount > 0 ? /* @__PURE__ */ jsxs6(Text6, {
|
|
1701
|
-
"
|
|
1650
|
+
activeCount > 0 ? /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1651
|
+
" ",
|
|
1702
1652
|
activeCount,
|
|
1703
|
-
" active
|
|
1653
|
+
" active"
|
|
1704
1654
|
] }) : /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1705
|
-
"
|
|
1655
|
+
" ",
|
|
1706
1656
|
totalInsights,
|
|
1707
|
-
" total
|
|
1708
|
-
] })
|
|
1709
|
-
" ",
|
|
1710
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "Your autonomous code companion" })
|
|
1657
|
+
" total"
|
|
1658
|
+
] })
|
|
1711
1659
|
] }),
|
|
1712
|
-
agency && /* @__PURE__ */ jsxs6(
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
" ",
|
|
1729
|
-
/* @__PURE__ */ jsx7(Text6, { color: agency.riskLevel === "critical" ? "red" : agency.riskLevel === "high" ? "yellow" : agency.riskLevel === "medium" ? "yellow" : "green", children: agency.riskLevel.toUpperCase() })
|
|
1730
|
-
] }),
|
|
1731
|
-
/* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1732
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "Effect:" }),
|
|
1733
|
-
" ",
|
|
1734
|
-
/* @__PURE__ */ jsxs6(Text6, { color: agency.effectiveness >= 80 ? "green" : agency.effectiveness >= 50 ? "yellow" : "yellow", children: [
|
|
1735
|
-
agency.effectiveness,
|
|
1736
|
-
"%"
|
|
1737
|
-
] })
|
|
1738
|
-
] }),
|
|
1739
|
-
agency.isQuietHours && /* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "[quiet]" })
|
|
1660
|
+
agency && /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1661
|
+
"Goals ",
|
|
1662
|
+
agency.goals.active,
|
|
1663
|
+
"/",
|
|
1664
|
+
agency.goals.completed + agency.goals.active,
|
|
1665
|
+
" \xB7 ",
|
|
1666
|
+
"Hypo ",
|
|
1667
|
+
agency.hypotheses.testing,
|
|
1668
|
+
" testing",
|
|
1669
|
+
" \xB7 ",
|
|
1670
|
+
"Risk ",
|
|
1671
|
+
agency.riskLevel,
|
|
1672
|
+
" \xB7 ",
|
|
1673
|
+
agency.effectiveness,
|
|
1674
|
+
"% effective",
|
|
1675
|
+
agency.isQuietHours ? " \xB7 quiet" : ""
|
|
1740
1676
|
] }),
|
|
1741
1677
|
/* @__PURE__ */ jsx7(Text6, { children: " " }),
|
|
1742
1678
|
visibleInsights.length === 0 && state.notificationHistory.length === 0 ? /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
1743
|
-
/* @__PURE__ */
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " \u2022 Speaks conversationally about what matters" }),
|
|
1748
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " \u2022 Suggests specific actions to take" }),
|
|
1749
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " \u2022 Celebrates when you fix issues" }),
|
|
1750
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " \u2022 Tracks patterns over time" }),
|
|
1679
|
+
/* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1680
|
+
/* @__PURE__ */ jsx7(Text6, { color: "green", children: "\u25CF" }),
|
|
1681
|
+
" The Trie Agent is watching over your code."
|
|
1682
|
+
] }),
|
|
1751
1683
|
/* @__PURE__ */ jsx7(Text6, { children: " " }),
|
|
1752
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "
|
|
1684
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " Synthesizes insights from all skills" }),
|
|
1685
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " Suggests specific actions to take" }),
|
|
1686
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " Tracks patterns over time" }),
|
|
1753
1687
|
/* @__PURE__ */ jsx7(Text6, { children: " " }),
|
|
1754
1688
|
isAIAvailable() ? /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1755
|
-
/* @__PURE__ */ jsx7(Text6, { color: "green", children: "
|
|
1689
|
+
/* @__PURE__ */ jsx7(Text6, { color: "green", children: "\u25CF" }),
|
|
1756
1690
|
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " AI-enhanced insights enabled" })
|
|
1757
1691
|
] }) : /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1758
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "
|
|
1692
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "\u25CB" }),
|
|
1693
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " Set " }),
|
|
1759
1694
|
/* @__PURE__ */ jsx7(Text6, { bold: true, children: "ANTHROPIC_API_KEY" }),
|
|
1760
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " for AI
|
|
1695
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: " for AI insights" })
|
|
1761
1696
|
] })
|
|
1762
1697
|
] }) : /* @__PURE__ */ jsx7(Box6, { flexDirection: "column", children: visibleInsights.map((insight, idx) => {
|
|
1763
1698
|
const isSelected = idx === selectedInsight;
|
|
@@ -1765,66 +1700,47 @@ function AgentView() {
|
|
|
1765
1700
|
const ago = formatTimeAgo(insight.timestamp);
|
|
1766
1701
|
const { icon, color } = insightIcon(insight.type);
|
|
1767
1702
|
const cleanMessage = stripEmojis(insight.message);
|
|
1768
|
-
const msgMaxLen =
|
|
1703
|
+
const msgMaxLen = 65;
|
|
1769
1704
|
const msg = cleanMessage.length > msgMaxLen ? cleanMessage.slice(0, msgMaxLen - 3) + "..." : cleanMessage;
|
|
1770
|
-
const status = isExpanded ? "v" : ">";
|
|
1771
1705
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", marginBottom: 1, children: [
|
|
1772
1706
|
/* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1773
|
-
isSelected ? /* @__PURE__ */
|
|
1774
|
-
|
|
1775
|
-
status,
|
|
1707
|
+
isSelected ? /* @__PURE__ */ jsxs6(Text6, { bold: true, color: "green", children: [
|
|
1708
|
+
">",
|
|
1776
1709
|
" "
|
|
1777
|
-
] }),
|
|
1778
|
-
isSelected ? /* @__PURE__ */
|
|
1779
|
-
icon,
|
|
1710
|
+
] }) : /* @__PURE__ */ jsx7(Text6, { children: " " }),
|
|
1711
|
+
isSelected ? /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1712
|
+
/* @__PURE__ */ jsx7(Text6, { color: "green", children: icon }),
|
|
1713
|
+
" ",
|
|
1714
|
+
/* @__PURE__ */ jsx7(Text6, { bold: true, children: msg })
|
|
1715
|
+
] }) : /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1716
|
+
color(icon),
|
|
1780
1717
|
" ",
|
|
1781
1718
|
color(msg)
|
|
1719
|
+
] }),
|
|
1720
|
+
/* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1721
|
+
" ",
|
|
1722
|
+
insight.category,
|
|
1723
|
+
" \xB7 ",
|
|
1724
|
+
ago
|
|
1782
1725
|
] })
|
|
1783
1726
|
] }),
|
|
1784
|
-
/* @__PURE__ */ jsxs6(
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
isSelected && !isExpanded ? " \u2022 Press Enter to expand" : ""
|
|
1790
|
-
] }),
|
|
1791
|
-
isExpanded && insight.details && /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", marginLeft: 7, children: [
|
|
1792
|
-
insight.details.issueBreakdown && Object.keys(insight.details.issueBreakdown).length > 0 && /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1793
|
-
insight.details.issueBreakdown["critical"] ? /* @__PURE__ */ jsxs6(Text6, { color: "red", children: [
|
|
1794
|
-
insight.details.issueBreakdown["critical"],
|
|
1795
|
-
" critical"
|
|
1796
|
-
] }) : null,
|
|
1797
|
-
insight.details.issueBreakdown["serious"] ? /* @__PURE__ */ jsxs6(Text6, { color: "yellow", children: [
|
|
1798
|
-
" \u2022 ",
|
|
1799
|
-
insight.details.issueBreakdown["serious"],
|
|
1800
|
-
" serious"
|
|
1801
|
-
] }) : null,
|
|
1802
|
-
insight.details.issueBreakdown["moderate"] ? /* @__PURE__ */ jsxs6(Text6, { color: "blue", children: [
|
|
1803
|
-
" \u2022 ",
|
|
1804
|
-
insight.details.issueBreakdown["moderate"],
|
|
1805
|
-
" moderate"
|
|
1806
|
-
] }) : null
|
|
1727
|
+
isExpanded && insight.details && /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", marginLeft: 4, children: [
|
|
1728
|
+
insight.details.issueBreakdown && Object.keys(insight.details.issueBreakdown).length > 0 && /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1729
|
+
insight.details.issueBreakdown["critical"] ? `${insight.details.issueBreakdown["critical"]} critical` : "",
|
|
1730
|
+
insight.details.issueBreakdown["serious"] ? ` \xB7 ${insight.details.issueBreakdown["serious"]} serious` : "",
|
|
1731
|
+
insight.details.issueBreakdown["moderate"] ? ` \xB7 ${insight.details.issueBreakdown["moderate"]} moderate` : ""
|
|
1807
1732
|
] }),
|
|
1808
1733
|
insight.details.affectedFiles && insight.details.affectedFiles.length > 0 && /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
1809
|
-
/* @__PURE__ */
|
|
1810
|
-
|
|
1811
|
-
" \u2022 ",
|
|
1734
|
+
insight.details.affectedFiles.slice(0, 5).map((f, fi) => /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1735
|
+
" ",
|
|
1812
1736
|
f
|
|
1813
1737
|
] }, fi)),
|
|
1814
|
-
insight.details.affectedFiles.length >
|
|
1815
|
-
"
|
|
1816
|
-
insight.details.affectedFiles.length -
|
|
1738
|
+
insight.details.affectedFiles.length > 5 && /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1739
|
+
" +",
|
|
1740
|
+
insight.details.affectedFiles.length - 5,
|
|
1817
1741
|
" more"
|
|
1818
1742
|
] })
|
|
1819
1743
|
] }),
|
|
1820
|
-
insight.details.examples && insight.details.examples.length > 0 && /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
1821
|
-
/* @__PURE__ */ jsx7(Text6, { bold: true, children: "Examples:" }),
|
|
1822
|
-
insight.details.examples.slice(0, 5).map((ex, ei) => /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1823
|
-
" \u2022 ",
|
|
1824
|
-
ex.slice(0, 60),
|
|
1825
|
-
ex.length > 60 ? "..." : ""
|
|
1826
|
-
] }, ei))
|
|
1827
|
-
] }),
|
|
1828
1744
|
insight.details.comparison && /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1829
1745
|
insight.details.trend === "improving" ? "\u2193" : insight.details.trend === "worsening" ? "\u2191" : "\u2192",
|
|
1830
1746
|
" ",
|
|
@@ -1832,35 +1748,50 @@ function AgentView() {
|
|
|
1832
1748
|
] })
|
|
1833
1749
|
] }),
|
|
1834
1750
|
insight.suggestedAction && (isExpanded || isSelected) && /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1835
|
-
"
|
|
1836
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "\u2192
|
|
1751
|
+
" ",
|
|
1752
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "\u2192" }),
|
|
1753
|
+
" ",
|
|
1837
1754
|
/* @__PURE__ */ jsx7(Text6, { bold: true, children: insight.suggestedAction })
|
|
1838
1755
|
] }),
|
|
1839
1756
|
insight.actionCommand && isExpanded && /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1840
|
-
"
|
|
1841
|
-
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "$
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
isSelected && /* @__PURE__ */ jsx7(Text6, { bold: true, children: "[Enter to run]" })
|
|
1757
|
+
" ",
|
|
1758
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "$" }),
|
|
1759
|
+
" ",
|
|
1760
|
+
/* @__PURE__ */ jsx7(Text6, { color: "green", children: insight.actionCommand })
|
|
1845
1761
|
] })
|
|
1846
1762
|
] }, insight.id);
|
|
1847
1763
|
}) }),
|
|
1848
1764
|
/* @__PURE__ */ jsx7(Text6, { children: " " }),
|
|
1849
1765
|
/* @__PURE__ */ jsxs6(Box6, { gap: 2, children: [
|
|
1850
|
-
agentInsights.filter((i) => i.type === "warning").length > 0 && /* @__PURE__ */ jsxs6(Text6, {
|
|
1851
|
-
|
|
1852
|
-
"
|
|
1766
|
+
agentInsights.filter((i) => i.type === "warning").length > 0 && /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1767
|
+
/* @__PURE__ */ jsx7(Text6, { color: "red", children: "\u25CF" }),
|
|
1768
|
+
" ",
|
|
1769
|
+
/* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1770
|
+
agentInsights.filter((i) => i.type === "warning").length,
|
|
1771
|
+
" warnings"
|
|
1772
|
+
] })
|
|
1853
1773
|
] }),
|
|
1854
|
-
agentInsights.filter((i) => i.type === "suggestion").length > 0 && /* @__PURE__ */ jsxs6(Text6, {
|
|
1855
|
-
|
|
1856
|
-
"
|
|
1774
|
+
agentInsights.filter((i) => i.type === "suggestion").length > 0 && /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1775
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "\u25CB" }),
|
|
1776
|
+
" ",
|
|
1777
|
+
/* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1778
|
+
agentInsights.filter((i) => i.type === "suggestion").length,
|
|
1779
|
+
" suggestions"
|
|
1780
|
+
] })
|
|
1857
1781
|
] }),
|
|
1858
|
-
agentInsights.filter((i) => i.type === "celebration").length > 0 && /* @__PURE__ */ jsxs6(Text6, {
|
|
1859
|
-
|
|
1860
|
-
"
|
|
1782
|
+
agentInsights.filter((i) => i.type === "celebration").length > 0 && /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1783
|
+
/* @__PURE__ */ jsx7(Text6, { color: "green", children: "\u25CF" }),
|
|
1784
|
+
" ",
|
|
1785
|
+
/* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1786
|
+
agentInsights.filter((i) => i.type === "celebration").length,
|
|
1787
|
+
" wins"
|
|
1788
|
+
] })
|
|
1861
1789
|
] }),
|
|
1862
|
-
/* @__PURE__ */
|
|
1863
|
-
|
|
1790
|
+
isAIAvailable() ? /* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1791
|
+
/* @__PURE__ */ jsx7(Text6, { color: "green", children: "\u25CF" }),
|
|
1792
|
+
" ",
|
|
1793
|
+
/* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "AI" })
|
|
1794
|
+
] }) : /* @__PURE__ */ jsx7(Text6, { children: /* @__PURE__ */ jsx7(Text6, { dimColor: true, children: "\u25CB AI off" }) })
|
|
1864
1795
|
] })
|
|
1865
1796
|
] });
|
|
1866
1797
|
}
|
|
@@ -1868,7 +1799,7 @@ function AgentView() {
|
|
|
1868
1799
|
// src/cli/dashboard/views/GoalsView.tsx
|
|
1869
1800
|
import { useCallback } from "react";
|
|
1870
1801
|
import { Box as Box7, Text as Text7, useInput as useInput3 } from "ink";
|
|
1871
|
-
import { Fragment
|
|
1802
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1872
1803
|
function calculateGoalProgress(goal) {
|
|
1873
1804
|
if (goal.target <= 0) return 0;
|
|
1874
1805
|
const startValue = goal.startValue ?? goal.currentValue;
|
|
@@ -2003,68 +1934,69 @@ function GoalsView() {
|
|
|
2003
1934
|
] }),
|
|
2004
1935
|
/* @__PURE__ */ jsx8(Text7, { children: " " }),
|
|
2005
1936
|
goalsPanel.inputMode === "add" ? /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", children: [
|
|
2006
|
-
/* @__PURE__ */ jsxs7(Text7, { children: [
|
|
2007
|
-
/* @__PURE__ */ jsx8(Text7, { bold: true, children: "New goal:" }),
|
|
2008
|
-
" ",
|
|
1937
|
+
/* @__PURE__ */ jsx8(Box7, { borderStyle: "round", borderColor: "green", paddingX: 1, children: /* @__PURE__ */ jsxs7(Text7, { children: [
|
|
2009
1938
|
goalsPanel.inputBuffer,
|
|
2010
|
-
/* @__PURE__ */ jsx8(Text7, { bold: true, color: "green", children: "
|
|
2011
|
-
] }),
|
|
2012
|
-
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children:
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "
|
|
2016
|
-
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "Press [a] to add your first goal, or wait for auto-generated goals." })
|
|
1939
|
+
/* @__PURE__ */ jsx8(Text7, { bold: true, color: "green", children: "|" })
|
|
1940
|
+
] }) }),
|
|
1941
|
+
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: " enter save \xB7 esc cancel" })
|
|
1942
|
+
] }) : /* @__PURE__ */ jsx8(Fragment, { children: goalsPanel.goals.length === 0 ? /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", children: [
|
|
1943
|
+
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: " No goals yet." }),
|
|
1944
|
+
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: " Press a to add your first goal." })
|
|
2017
1945
|
] }) : /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", children: [
|
|
2018
1946
|
activeGoals.length > 0 && /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", children: [
|
|
2019
|
-
/* @__PURE__ */ jsx8(Text7, { bold: true, children: "Active:" }),
|
|
2020
1947
|
activeGoals.map((goal, idx) => {
|
|
2021
1948
|
const isSelected = goalsPanel.selectedIndex === idx;
|
|
2022
1949
|
const progress = calculateGoalProgress(goal);
|
|
2023
|
-
const bar = progressBar(progress, 100,
|
|
2024
|
-
const source = goal.autoGenerated ?
|
|
1950
|
+
const bar = progressBar(progress, 100, 8);
|
|
1951
|
+
const source = goal.autoGenerated ? "auto" : "manual";
|
|
2025
1952
|
return /* @__PURE__ */ jsxs7(Text7, { children: [
|
|
2026
|
-
isSelected ? /* @__PURE__ */
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
1953
|
+
isSelected ? /* @__PURE__ */ jsxs7(Text7, { bold: true, color: "green", children: [
|
|
1954
|
+
">",
|
|
1955
|
+
" "
|
|
1956
|
+
] }) : /* @__PURE__ */ jsx8(Text7, { children: " " }),
|
|
1957
|
+
/* @__PURE__ */ jsx8(Text7, { color: "green", children: "\u25CB" }),
|
|
2030
1958
|
" ",
|
|
2031
|
-
|
|
1959
|
+
goal.description.slice(0, 45),
|
|
1960
|
+
/* @__PURE__ */ jsxs7(Text7, { dimColor: true, children: [
|
|
1961
|
+
" ",
|
|
1962
|
+
source,
|
|
1963
|
+
" ",
|
|
1964
|
+
bar,
|
|
1965
|
+
" ",
|
|
1966
|
+
progress,
|
|
1967
|
+
"%"
|
|
1968
|
+
] })
|
|
2032
1969
|
] }, goal.id);
|
|
2033
1970
|
}),
|
|
2034
1971
|
/* @__PURE__ */ jsx8(Text7, { children: " " })
|
|
2035
1972
|
] }),
|
|
2036
1973
|
achievedGoals.length > 0 && /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", children: [
|
|
2037
|
-
/* @__PURE__ */
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
" [+] ",
|
|
1974
|
+
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: " Achieved" }),
|
|
1975
|
+
achievedGoals.slice(0, 5).map((g) => /* @__PURE__ */ jsxs7(Text7, { children: [
|
|
1976
|
+
" ",
|
|
1977
|
+
/* @__PURE__ */ jsx8(Text7, { color: "green", children: "\u25CF" }),
|
|
1978
|
+
" ",
|
|
2043
1979
|
g.description.slice(0, 50)
|
|
2044
1980
|
] }, g.id)),
|
|
2045
1981
|
achievedGoals.length > 5 && /* @__PURE__ */ jsxs7(Text7, { dimColor: true, children: [
|
|
2046
|
-
"
|
|
1982
|
+
" +",
|
|
2047
1983
|
achievedGoals.length - 5,
|
|
2048
1984
|
" more"
|
|
2049
1985
|
] }),
|
|
2050
1986
|
/* @__PURE__ */ jsx8(Text7, { children: " " })
|
|
2051
1987
|
] }),
|
|
2052
1988
|
otherGoals.length > 0 && /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", children: [
|
|
2053
|
-
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "Other
|
|
2054
|
-
otherGoals.slice(0, 2).map((g) => {
|
|
2055
|
-
|
|
2056
|
-
|
|
1989
|
+
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: " Other" }),
|
|
1990
|
+
otherGoals.slice(0, 2).map((g) => /* @__PURE__ */ jsxs7(Text7, { children: [
|
|
1991
|
+
" ",
|
|
1992
|
+
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "\u25CB" }),
|
|
1993
|
+
" ",
|
|
1994
|
+
g.description.slice(0, 50),
|
|
1995
|
+
/* @__PURE__ */ jsxs7(Text7, { dimColor: true, children: [
|
|
2057
1996
|
" ",
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
/* @__PURE__ */ jsxs7(Text7, { dimColor: true, children: [
|
|
2062
|
-
" (",
|
|
2063
|
-
g.status,
|
|
2064
|
-
")"
|
|
2065
|
-
] })
|
|
2066
|
-
] }, g.id);
|
|
2067
|
-
})
|
|
1997
|
+
g.status
|
|
1998
|
+
] })
|
|
1999
|
+
] }, g.id))
|
|
2068
2000
|
] })
|
|
2069
2001
|
] }) })
|
|
2070
2002
|
] });
|
|
@@ -2073,7 +2005,7 @@ function GoalsView() {
|
|
|
2073
2005
|
// src/cli/dashboard/views/HypothesesView.tsx
|
|
2074
2006
|
import { useCallback as useCallback2 } from "react";
|
|
2075
2007
|
import { Box as Box8, Text as Text8, useInput as useInput4 } from "ink";
|
|
2076
|
-
import { Fragment as
|
|
2008
|
+
import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2077
2009
|
function HypothesesView() {
|
|
2078
2010
|
const { state, dispatch } = useDashboard();
|
|
2079
2011
|
const { hypothesesPanel } = state;
|
|
@@ -2184,74 +2116,63 @@ function HypothesesView() {
|
|
|
2184
2116
|
] }),
|
|
2185
2117
|
/* @__PURE__ */ jsx9(Text8, { children: " " }),
|
|
2186
2118
|
hypothesesPanel.inputMode === "add" ? /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
2187
|
-
/* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2188
|
-
/* @__PURE__ */ jsx9(Text8, { bold: true, children: "New hypothesis:" }),
|
|
2189
|
-
" ",
|
|
2119
|
+
/* @__PURE__ */ jsx9(Box8, { borderStyle: "round", borderColor: "green", paddingX: 1, children: /* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2190
2120
|
hypothesesPanel.inputBuffer,
|
|
2191
|
-
/* @__PURE__ */ jsx9(Text8, { bold: true, color: "green", children: "
|
|
2192
|
-
] }),
|
|
2193
|
-
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children:
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: "
|
|
2197
|
-
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: "Press [a] to add your first hypothesis." }),
|
|
2198
|
-
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: "The agent will collect evidence and update confidence over time." })
|
|
2121
|
+
/* @__PURE__ */ jsx9(Text8, { bold: true, color: "green", children: "|" })
|
|
2122
|
+
] }) }),
|
|
2123
|
+
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: " enter save \xB7 esc cancel" })
|
|
2124
|
+
] }) : /* @__PURE__ */ jsx9(Fragment2, { children: hypothesesPanel.hypotheses.length === 0 ? /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
2125
|
+
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: " No hypotheses yet." }),
|
|
2126
|
+
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: " Press a to add your first hypothesis." })
|
|
2199
2127
|
] }) : /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
2200
2128
|
testing.length > 0 && /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
2201
|
-
/* @__PURE__ */ jsx9(Text8, { bold: true, children: "Testing:" }),
|
|
2202
2129
|
testing.map((hypo, idx) => {
|
|
2203
2130
|
const isSelected = hypothesesPanel.selectedIndex === idx;
|
|
2204
2131
|
const conf = Math.round(hypo.confidence * 100);
|
|
2205
|
-
return /* @__PURE__ */
|
|
2206
|
-
/* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
conf,
|
|
2214
|
-
"%)"
|
|
2215
|
-
] })
|
|
2216
|
-
] }),
|
|
2132
|
+
return /* @__PURE__ */ jsx9(Box8, { flexDirection: "column", children: /* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2133
|
+
isSelected ? /* @__PURE__ */ jsxs8(Text8, { bold: true, color: "green", children: [
|
|
2134
|
+
">",
|
|
2135
|
+
" "
|
|
2136
|
+
] }) : /* @__PURE__ */ jsx9(Text8, { children: " " }),
|
|
2137
|
+
/* @__PURE__ */ jsx9(Text8, { color: "yellow", children: "\u25CB" }),
|
|
2138
|
+
" ",
|
|
2139
|
+
hypo.statement.slice(0, 50),
|
|
2217
2140
|
/* @__PURE__ */ jsxs8(Text8, { dimColor: true, children: [
|
|
2218
|
-
"
|
|
2141
|
+
" ",
|
|
2142
|
+
conf,
|
|
2143
|
+
"% \xB7 ",
|
|
2219
2144
|
hypo.evidenceCount,
|
|
2220
|
-
"
|
|
2145
|
+
" evidence"
|
|
2221
2146
|
] })
|
|
2222
|
-
] }, hypo.id);
|
|
2147
|
+
] }) }, hypo.id);
|
|
2223
2148
|
}),
|
|
2224
2149
|
/* @__PURE__ */ jsx9(Text8, { children: " " })
|
|
2225
2150
|
] }),
|
|
2226
2151
|
validated.length > 0 && /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
2227
|
-
/* @__PURE__ */
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
h.statement.slice(0, 50),
|
|
2234
|
-
'"'
|
|
2152
|
+
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: " Validated" }),
|
|
2153
|
+
validated.slice(0, 3).map((h) => /* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2154
|
+
" ",
|
|
2155
|
+
/* @__PURE__ */ jsx9(Text8, { color: "green", children: "\u25CF" }),
|
|
2156
|
+
" ",
|
|
2157
|
+
h.statement.slice(0, 50)
|
|
2235
2158
|
] }, h.id)),
|
|
2236
2159
|
validated.length > 3 && /* @__PURE__ */ jsxs8(Text8, { dimColor: true, children: [
|
|
2237
|
-
"
|
|
2160
|
+
" +",
|
|
2238
2161
|
validated.length - 3,
|
|
2239
2162
|
" more"
|
|
2240
2163
|
] }),
|
|
2241
2164
|
/* @__PURE__ */ jsx9(Text8, { children: " " })
|
|
2242
2165
|
] }),
|
|
2243
2166
|
invalidated.length > 0 && /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
2244
|
-
/* @__PURE__ */
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
'"'
|
|
2252
|
-
] }) }, h.id)),
|
|
2167
|
+
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: " Invalidated" }),
|
|
2168
|
+
invalidated.slice(0, 2).map((h) => /* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2169
|
+
" ",
|
|
2170
|
+
/* @__PURE__ */ jsx9(Text8, { color: "red", children: "\u25CF" }),
|
|
2171
|
+
" ",
|
|
2172
|
+
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: h.statement.slice(0, 50) })
|
|
2173
|
+
] }, h.id)),
|
|
2253
2174
|
invalidated.length > 2 && /* @__PURE__ */ jsxs8(Text8, { dimColor: true, children: [
|
|
2254
|
-
"
|
|
2175
|
+
" +",
|
|
2255
2176
|
invalidated.length - 2,
|
|
2256
2177
|
" more"
|
|
2257
2178
|
] })
|
|
@@ -2320,19 +2241,21 @@ function MemoryTreeView() {
|
|
|
2320
2241
|
/* @__PURE__ */ jsx10(Text9, { bold: true, children: "Memory" }),
|
|
2321
2242
|
" ",
|
|
2322
2243
|
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2323
|
-
"[",
|
|
2324
2244
|
totalIssues,
|
|
2325
|
-
" issues
|
|
2245
|
+
" issues"
|
|
2326
2246
|
] })
|
|
2327
2247
|
] }),
|
|
2328
2248
|
/* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2329
|
-
!loaded ? /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "Loading memory data..." }) : issues.length === 0 && globalPatterns.length === 0 ? /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
2330
|
-
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "No issues in memory yet." }),
|
|
2331
|
-
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "Run a scan to populate the memory tree." })
|
|
2249
|
+
!loaded ? /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: " Loading memory data..." }) : issues.length === 0 && globalPatterns.length === 0 ? /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
2250
|
+
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: " No issues in memory yet." }),
|
|
2251
|
+
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: " Run a scan to populate the memory tree." })
|
|
2332
2252
|
] }) : /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
2333
2253
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2334
|
-
sel("severity") ? /* @__PURE__ */
|
|
2335
|
-
|
|
2254
|
+
sel("severity") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2255
|
+
">",
|
|
2256
|
+
" "
|
|
2257
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2258
|
+
expandedNodes.has("severity") ? /* @__PURE__ */ jsx10(Text9, { color: "green", children: "\u25CF" }) : /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "\u25CB" }),
|
|
2336
2259
|
" ",
|
|
2337
2260
|
sel("severity") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "By Severity" }) : /* @__PURE__ */ jsx10(Text9, { bold: true, children: "By Severity" })
|
|
2338
2261
|
] }),
|
|
@@ -2340,17 +2263,33 @@ function MemoryTreeView() {
|
|
|
2340
2263
|
const count = bySeverity[sev]?.length || 0;
|
|
2341
2264
|
const nodeId = `severity-${sev}`;
|
|
2342
2265
|
const barStr = severityBar(count, maxCount);
|
|
2343
|
-
const
|
|
2344
|
-
const
|
|
2345
|
-
const sevColor = isLow ? void 0 : sevColorMap[sev];
|
|
2346
|
-
const SevText = ({ children }) => isLow ? /* @__PURE__ */ jsx10(Text9, { dimColor: true, children }) : sevColor ? /* @__PURE__ */ jsx10(Text9, { color: sevColor, children }) : /* @__PURE__ */ jsx10(Text9, { children });
|
|
2266
|
+
const sevColorMap = { critical: "red", serious: "yellow", moderate: "blue", low: void 0 };
|
|
2267
|
+
const sevColor = sevColorMap[sev];
|
|
2347
2268
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
2348
2269
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2349
|
-
sel(nodeId) ? /* @__PURE__ */
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2270
|
+
sel(nodeId) ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2271
|
+
">",
|
|
2272
|
+
" "
|
|
2273
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2274
|
+
" ",
|
|
2275
|
+
sel(nodeId) ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2276
|
+
sev,
|
|
2277
|
+
" (",
|
|
2278
|
+
count,
|
|
2279
|
+
")"
|
|
2280
|
+
] }) : sevColor ? /* @__PURE__ */ jsxs9(Text9, { color: sevColor, children: [
|
|
2281
|
+
sev,
|
|
2282
|
+
" (",
|
|
2283
|
+
count,
|
|
2284
|
+
")"
|
|
2285
|
+
] }) : /* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2286
|
+
sev,
|
|
2287
|
+
" (",
|
|
2288
|
+
count,
|
|
2289
|
+
")"
|
|
2290
|
+
] }),
|
|
2291
|
+
" ",
|
|
2292
|
+
sevColor ? /* @__PURE__ */ jsx10(Text9, { color: sevColor, children: barStr }) : /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: barStr })
|
|
2354
2293
|
] }),
|
|
2355
2294
|
expandedNodes.has(nodeId) && (bySeverity[sev] || []).slice(0, 5).map((issue, i) => {
|
|
2356
2295
|
const issueId = `severity-${sev}-${issue.id}`;
|
|
@@ -2358,58 +2297,79 @@ function MemoryTreeView() {
|
|
|
2358
2297
|
const line = issue.line ? `:${issue.line}` : "";
|
|
2359
2298
|
const desc = issue.issue.slice(0, 35) + (issue.issue.length > 35 ? "..." : "");
|
|
2360
2299
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2361
|
-
sel(issueId) ? /* @__PURE__ */
|
|
2362
|
-
|
|
2363
|
-
|
|
2300
|
+
sel(issueId) ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2301
|
+
">",
|
|
2302
|
+
" "
|
|
2303
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2304
|
+
" ",
|
|
2364
2305
|
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2365
2306
|
filename,
|
|
2366
2307
|
line
|
|
2367
2308
|
] }),
|
|
2368
|
-
"
|
|
2369
|
-
/* @__PURE__ */ jsx10(
|
|
2309
|
+
" ",
|
|
2310
|
+
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: desc })
|
|
2370
2311
|
] }, i);
|
|
2371
2312
|
})
|
|
2372
2313
|
] }, sev);
|
|
2373
2314
|
}),
|
|
2374
2315
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2375
|
-
sel("files") ? /* @__PURE__ */
|
|
2376
|
-
|
|
2316
|
+
sel("files") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2317
|
+
">",
|
|
2318
|
+
" "
|
|
2319
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2320
|
+
expandedNodes.has("files") ? /* @__PURE__ */ jsx10(Text9, { color: "green", children: "\u25CF" }) : /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "\u25CB" }),
|
|
2377
2321
|
" ",
|
|
2378
2322
|
sel("files") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "By File (Hot Spots)" }) : /* @__PURE__ */ jsx10(Text9, { bold: true, children: "By File (Hot Spots)" })
|
|
2379
2323
|
] }),
|
|
2380
|
-
expandedNodes.has("files") && sortedFiles.map(([file, fileIssues]
|
|
2324
|
+
expandedNodes.has("files") && sortedFiles.map(([file, fileIssues]) => {
|
|
2381
2325
|
const fileId = `file-${file}`;
|
|
2382
2326
|
const filename = file.split("/").pop() || file;
|
|
2383
2327
|
const count = fileIssues.length;
|
|
2384
|
-
const isLast = idx === sortedFiles.length - 1;
|
|
2385
2328
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2386
|
-
sel(fileId) ? /* @__PURE__ */
|
|
2329
|
+
sel(fileId) ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2330
|
+
">",
|
|
2331
|
+
" "
|
|
2332
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2387
2333
|
" ",
|
|
2388
|
-
isLast ? "\u2514\u2500 " : "\u251C\u2500 ",
|
|
2389
2334
|
sel(fileId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: filename }) : /* @__PURE__ */ jsx10(Text9, { children: filename }),
|
|
2390
|
-
|
|
2335
|
+
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2336
|
+
" (",
|
|
2337
|
+
count,
|
|
2338
|
+
")"
|
|
2339
|
+
] })
|
|
2391
2340
|
] }, file);
|
|
2392
2341
|
}),
|
|
2393
2342
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2394
|
-
sel("agents") ? /* @__PURE__ */
|
|
2395
|
-
|
|
2343
|
+
sel("agents") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2344
|
+
">",
|
|
2345
|
+
" "
|
|
2346
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2347
|
+
expandedNodes.has("agents") ? /* @__PURE__ */ jsx10(Text9, { color: "green", children: "\u25CF" }) : /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "\u25CB" }),
|
|
2396
2348
|
" ",
|
|
2397
2349
|
sel("agents") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "By Agent" }) : /* @__PURE__ */ jsx10(Text9, { bold: true, children: "By Agent" })
|
|
2398
2350
|
] }),
|
|
2399
|
-
expandedNodes.has("agents") && sortedAgents.map(([agent, agentIssues]
|
|
2351
|
+
expandedNodes.has("agents") && sortedAgents.map(([agent, agentIssues]) => {
|
|
2400
2352
|
const agentId = `agent-${agent}`;
|
|
2401
|
-
const isLast = idx === sortedAgents.length - 1;
|
|
2402
2353
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2403
|
-
sel(agentId) ? /* @__PURE__ */
|
|
2354
|
+
sel(agentId) ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2355
|
+
">",
|
|
2356
|
+
" "
|
|
2357
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2404
2358
|
" ",
|
|
2405
|
-
isLast ? "\u2514\u2500 " : "\u251C\u2500 ",
|
|
2406
2359
|
sel(agentId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: agent }) : /* @__PURE__ */ jsx10(Text9, { children: agent }),
|
|
2407
|
-
|
|
2360
|
+
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2361
|
+
" (",
|
|
2362
|
+
agentIssues.length,
|
|
2363
|
+
")"
|
|
2364
|
+
] })
|
|
2408
2365
|
] }, agent);
|
|
2409
2366
|
}),
|
|
2410
2367
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2411
|
-
sel("patterns") ? /* @__PURE__ */
|
|
2412
|
-
|
|
2368
|
+
sel("patterns") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2369
|
+
">",
|
|
2370
|
+
" "
|
|
2371
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2372
|
+
expandedNodes.has("patterns") ? /* @__PURE__ */ jsx10(Text9, { color: "green", children: "\u25CF" }) : /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "\u25CB" }),
|
|
2413
2373
|
" ",
|
|
2414
2374
|
sel("patterns") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2415
2375
|
"Patterns (",
|
|
@@ -2421,18 +2381,18 @@ function MemoryTreeView() {
|
|
|
2421
2381
|
" recurring)"
|
|
2422
2382
|
] })
|
|
2423
2383
|
] }),
|
|
2424
|
-
expandedNodes.has("patterns") && globalPatterns.slice(0, 5).map((pattern
|
|
2384
|
+
expandedNodes.has("patterns") && globalPatterns.slice(0, 5).map((pattern) => {
|
|
2425
2385
|
const patternId = `pattern-${pattern.id}`;
|
|
2426
|
-
const isLast = idx === Math.min(4, globalPatterns.length - 1);
|
|
2427
2386
|
const desc = pattern.pattern.slice(0, 40) + (pattern.pattern.length > 40 ? "..." : "");
|
|
2428
2387
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2429
|
-
sel(patternId) ? /* @__PURE__ */
|
|
2388
|
+
sel(patternId) ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2389
|
+
">",
|
|
2390
|
+
" "
|
|
2391
|
+
] }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2430
2392
|
" ",
|
|
2431
|
-
isLast ? "\u2514\u2500 " : "\u251C\u2500 ",
|
|
2432
2393
|
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2433
|
-
'"',
|
|
2434
2394
|
desc,
|
|
2435
|
-
|
|
2395
|
+
" \xB7 ",
|
|
2436
2396
|
pattern.projects.length,
|
|
2437
2397
|
" projects"
|
|
2438
2398
|
] })
|
|
@@ -2440,19 +2400,14 @@ function MemoryTreeView() {
|
|
|
2440
2400
|
}),
|
|
2441
2401
|
/* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2442
2402
|
/* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
|
|
2403
|
+
/* @__PURE__ */ jsx10(Text9, { children: stats?.improvementTrend === "improving" ? /* @__PURE__ */ jsx10(Text9, { color: "green", children: "\u25CF Improving" }) : stats?.improvementTrend === "declining" ? /* @__PURE__ */ jsx10(Text9, { color: "red", children: "\u25CF Declining" }) : /* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "\u25CB Stable" }) }),
|
|
2443
2404
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2444
|
-
/* @__PURE__ */ jsx10(Text9, {
|
|
2445
|
-
|
|
2405
|
+
/* @__PURE__ */ jsx10(Text9, { color: "green", children: stats?.resolvedCount || 0 }),
|
|
2406
|
+
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: " resolved" })
|
|
2446
2407
|
] }),
|
|
2447
|
-
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2448
|
-
|
|
2449
|
-
" "
|
|
2450
|
-
/* @__PURE__ */ jsx10(Text9, { color: "green", children: stats?.resolvedCount || 0 })
|
|
2451
|
-
] }),
|
|
2452
|
-
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2453
|
-
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "Historical:" }),
|
|
2454
|
-
" ",
|
|
2455
|
-
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: stats?.historicalIssues || 0 })
|
|
2408
|
+
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2409
|
+
stats?.historicalIssues || 0,
|
|
2410
|
+
" historical"
|
|
2456
2411
|
] })
|
|
2457
2412
|
] })
|
|
2458
2413
|
] })
|
|
@@ -2491,15 +2446,15 @@ function RawLogView() {
|
|
|
2491
2446
|
/* @__PURE__ */ jsx11(Text10, { dimColor: true, children: " entries" })
|
|
2492
2447
|
] }),
|
|
2493
2448
|
/* @__PURE__ */ jsx11(Text10, { children: " " }),
|
|
2494
|
-
rawLog.length === 0 ? /* @__PURE__ */ jsx11(Text10, { dimColor: true, children: "No log entries yet." }) : /* @__PURE__ */ jsx11(Box10, { flexDirection: "column", children: logs.map((entry, i) => {
|
|
2495
|
-
const
|
|
2496
|
-
const levelEl = entry.level === "error" ? /* @__PURE__ */ jsx11(Text10, { color: "red", children: levelTag }) : entry.level === "warn" ? /* @__PURE__ */ jsx11(Text10, { color: "yellow", children: levelTag }) : entry.level === "info" ? /* @__PURE__ */ jsx11(Text10, { color: "green", children: levelTag }) : /* @__PURE__ */ jsx11(Text10, { dimColor: true, children: levelTag });
|
|
2449
|
+
rawLog.length === 0 ? /* @__PURE__ */ jsx11(Text10, { dimColor: true, children: " No log entries yet." }) : /* @__PURE__ */ jsx11(Box10, { flexDirection: "column", children: logs.map((entry, i) => {
|
|
2450
|
+
const dot = entry.level === "error" ? /* @__PURE__ */ jsx11(Text10, { color: "red", children: "\u25CF" }) : entry.level === "warn" ? /* @__PURE__ */ jsx11(Text10, { color: "yellow", children: "\u25CF" }) : entry.level === "info" ? /* @__PURE__ */ jsx11(Text10, { color: "green", children: "\u25CF" }) : /* @__PURE__ */ jsx11(Text10, { dimColor: true, children: "\u25CB" });
|
|
2497
2451
|
return /* @__PURE__ */ jsxs10(Text10, { children: [
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
levelEl,
|
|
2452
|
+
" ",
|
|
2453
|
+
dot,
|
|
2501
2454
|
" ",
|
|
2502
|
-
entry.message.slice(0,
|
|
2455
|
+
entry.message.slice(0, 70),
|
|
2456
|
+
" ",
|
|
2457
|
+
/* @__PURE__ */ jsx11(Text10, { dimColor: true, children: entry.time })
|
|
2503
2458
|
] }, i);
|
|
2504
2459
|
}) })
|
|
2505
2460
|
] });
|
|
@@ -2761,4 +2716,4 @@ export {
|
|
|
2761
2716
|
getOutputManager,
|
|
2762
2717
|
InteractiveDashboard
|
|
2763
2718
|
};
|
|
2764
|
-
//# sourceMappingURL=chunk-
|
|
2719
|
+
//# sourceMappingURL=chunk-HBPTBNFJ.js.map
|