@triedotdev/mcp 1.0.103 → 1.0.104
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.
|
@@ -1255,109 +1255,30 @@ import { join } from "path";
|
|
|
1255
1255
|
|
|
1256
1256
|
// src/cli/dashboard/components/Header.tsx
|
|
1257
1257
|
import { Box, Text } from "ink";
|
|
1258
|
-
|
|
1259
|
-
// src/cli/dashboard/theme.ts
|
|
1260
|
-
import pc2 from "picocolors";
|
|
1261
|
-
var colors = {
|
|
1262
|
-
border: (s) => pc2.cyan(s),
|
|
1263
|
-
header: (s) => pc2.bold(pc2.cyan(s)),
|
|
1264
|
-
brand: (s) => pc2.bold(pc2.cyan(s)),
|
|
1265
|
-
dim: (s) => pc2.dim(s),
|
|
1266
|
-
critical: (s) => pc2.bold(pc2.red(s)),
|
|
1267
|
-
serious: (s) => pc2.yellow(s),
|
|
1268
|
-
moderate: (s) => pc2.blue(s),
|
|
1269
|
-
low: (s) => pc2.dim(s),
|
|
1270
|
-
success: (s) => pc2.green(s),
|
|
1271
|
-
running: (s) => pc2.yellow(s),
|
|
1272
|
-
waiting: (s) => pc2.dim(s),
|
|
1273
|
-
alert: (s) => pc2.bold(pc2.red(s)),
|
|
1274
|
-
selected: (s) => pc2.bold(pc2.magenta(s)),
|
|
1275
|
-
highlight: (s) => pc2.bold(pc2.white(s)),
|
|
1276
|
-
yellow: (s) => pc2.yellow(s)
|
|
1277
|
-
};
|
|
1278
|
-
var WATCH_FRAMES = ["\u25D0", "\u25D3", "\u25D1", "\u25D2"];
|
|
1279
|
-
function formatTimeAgo(timestamp) {
|
|
1280
|
-
const seconds = Math.floor((Date.now() - timestamp) / 1e3);
|
|
1281
|
-
if (seconds < 10) return "just now";
|
|
1282
|
-
if (seconds < 60) return `${seconds}s ago`;
|
|
1283
|
-
const minutes = Math.floor(seconds / 60);
|
|
1284
|
-
if (minutes < 60) return `${minutes}m ago`;
|
|
1285
|
-
const hours = Math.floor(minutes / 60);
|
|
1286
|
-
return `${hours}h ago`;
|
|
1287
|
-
}
|
|
1288
|
-
function insightIcon(type) {
|
|
1289
|
-
switch (type) {
|
|
1290
|
-
case "warning":
|
|
1291
|
-
return { icon: "[!]", color: colors.critical };
|
|
1292
|
-
case "observation":
|
|
1293
|
-
return { icon: "[>]", color: colors.serious };
|
|
1294
|
-
case "suggestion":
|
|
1295
|
-
return { icon: "[?]", color: colors.highlight };
|
|
1296
|
-
case "celebration":
|
|
1297
|
-
return { icon: "[+]", color: colors.success };
|
|
1298
|
-
case "question":
|
|
1299
|
-
return { icon: "[?]", color: colors.moderate };
|
|
1300
|
-
default:
|
|
1301
|
-
return { icon: "[>]", color: colors.dim };
|
|
1302
|
-
}
|
|
1303
|
-
}
|
|
1304
|
-
function progressBar(current, total, width = 10) {
|
|
1305
|
-
if (total <= 0) return colors.dim("[" + "\u2591".repeat(width) + "]");
|
|
1306
|
-
const progress = Math.min(1, current / total);
|
|
1307
|
-
const filled = Math.round(width * progress);
|
|
1308
|
-
const empty = width - filled;
|
|
1309
|
-
return colors.border("[") + colors.success("\u2588".repeat(filled)) + colors.dim("\u2591".repeat(empty)) + colors.border("]");
|
|
1310
|
-
}
|
|
1311
|
-
function stripEmojis(s) {
|
|
1312
|
-
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();
|
|
1313
|
-
}
|
|
1314
|
-
|
|
1315
|
-
// src/cli/dashboard/components/Header.tsx
|
|
1316
1258
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
1317
1259
|
function Header() {
|
|
1318
1260
|
const { state } = useDashboard();
|
|
1319
1261
|
const time = (/* @__PURE__ */ new Date()).toLocaleTimeString("en-US", { hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" });
|
|
1320
|
-
const frameIdx = Math.floor(Date.now() / 200) % WATCH_FRAMES.length;
|
|
1321
|
-
const spinner = WATCH_FRAMES[frameIdx] || "\u25D0";
|
|
1322
1262
|
const { signalExtraction, watch, alerts } = state;
|
|
1323
1263
|
const totalExtracted = signalExtraction.decisionsExtracted + signalExtraction.factsExtracted + signalExtraction.blockersExtracted + signalExtraction.questionsExtracted;
|
|
1324
1264
|
let statusLabel;
|
|
1325
1265
|
if (watch.watching) {
|
|
1326
1266
|
statusLabel = totalExtracted > 0 ? /* @__PURE__ */ jsxs(Text, { children: [
|
|
1327
|
-
/* @__PURE__ */
|
|
1328
|
-
spinner,
|
|
1329
|
-
" LEARNING"
|
|
1330
|
-
] }),
|
|
1267
|
+
/* @__PURE__ */ jsx2(Text, { color: "green", bold: true, children: "\u25CF LEARNING" }),
|
|
1331
1268
|
" ",
|
|
1332
1269
|
/* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
|
|
1333
1270
|
totalExtracted,
|
|
1334
1271
|
" signals"
|
|
1335
1272
|
] })
|
|
1336
|
-
] }) : /* @__PURE__ */
|
|
1337
|
-
/* @__PURE__ */ jsxs(Text, { color: "yellow", children: [
|
|
1338
|
-
spinner,
|
|
1339
|
-
" WATCHING"
|
|
1340
|
-
] }),
|
|
1341
|
-
" ",
|
|
1342
|
-
/* @__PURE__ */ jsx2(Text, { dimColor: true, children: "ready" })
|
|
1343
|
-
] });
|
|
1273
|
+
] }) : /* @__PURE__ */ jsx2(Text, { children: /* @__PURE__ */ jsx2(Text, { color: "yellow", bold: true, children: "\u25CF WATCHING" }) });
|
|
1344
1274
|
} else {
|
|
1345
|
-
statusLabel = /* @__PURE__ */ jsx2(Text, { dimColor: true, children: "IDLE" });
|
|
1346
|
-
}
|
|
1347
|
-
|
|
1348
|
-
"
|
|
1349
|
-
spinner,
|
|
1350
|
-
" WATCHING]"
|
|
1351
|
-
] }) : /* @__PURE__ */ jsx2(Text, { dimColor: true, children: "[WATCH OFF]" });
|
|
1352
|
-
return /* @__PURE__ */ jsxs(Box, { borderStyle: "single", borderColor: "cyan", paddingX: 1, justifyContent: "space-between", children: [
|
|
1353
|
-
/* @__PURE__ */ jsxs(Box, { children: [
|
|
1354
|
-
/* @__PURE__ */ jsx2(Text, { color: "cyan", bold: true, children: "TRIE" }),
|
|
1355
|
-
watch.watching && /* @__PURE__ */ jsx2(Text, { dimColor: true, children: " [autonomous]" })
|
|
1356
|
-
] }),
|
|
1275
|
+
statusLabel = /* @__PURE__ */ jsx2(Text, { dimColor: true, children: "\u25CB IDLE" });
|
|
1276
|
+
}
|
|
1277
|
+
return /* @__PURE__ */ jsxs(Box, { borderStyle: "round", borderColor: "gray", paddingX: 1, justifyContent: "space-between", children: [
|
|
1278
|
+
/* @__PURE__ */ jsx2(Box, { children: /* @__PURE__ */ jsx2(Text, { color: "green", bold: true, children: "trie" }) }),
|
|
1357
1279
|
/* @__PURE__ */ jsxs(Box, { gap: 2, children: [
|
|
1358
1280
|
statusLabel,
|
|
1359
|
-
|
|
1360
|
-
alerts.hasCritical && /* @__PURE__ */ jsx2(Text, { color: "red", bold: true, children: "\u2502 ALERT: CRITICAL" }),
|
|
1281
|
+
alerts.hasCritical && /* @__PURE__ */ jsx2(Text, { color: "red", bold: true, children: "\u2502 ALERT" }),
|
|
1361
1282
|
/* @__PURE__ */ jsx2(Text, { dimColor: true, children: time })
|
|
1362
1283
|
] })
|
|
1363
1284
|
] });
|
|
@@ -1376,9 +1297,9 @@ var VIEW_LABELS = {
|
|
|
1376
1297
|
};
|
|
1377
1298
|
function Hint({ k, label }) {
|
|
1378
1299
|
return /* @__PURE__ */ jsxs2(Text2, { children: [
|
|
1379
|
-
/* @__PURE__ */ jsx3(Text2, {
|
|
1300
|
+
/* @__PURE__ */ jsx3(Text2, { dimColor: true, children: "[" }),
|
|
1380
1301
|
/* @__PURE__ */ jsx3(Text2, { bold: true, children: k }),
|
|
1381
|
-
/* @__PURE__ */ jsx3(Text2, {
|
|
1302
|
+
/* @__PURE__ */ jsx3(Text2, { dimColor: true, children: "]" }),
|
|
1382
1303
|
/* @__PURE__ */ jsxs2(Text2, { dimColor: true, children: [
|
|
1383
1304
|
" ",
|
|
1384
1305
|
label
|
|
@@ -1391,7 +1312,7 @@ function Footer() {
|
|
|
1391
1312
|
const viewTabs = ["overview", "memory", "goals", "hypotheses", "agent"].map((v) => {
|
|
1392
1313
|
const isActive = v === view;
|
|
1393
1314
|
const label = VIEW_LABELS[v];
|
|
1394
|
-
return isActive ? /* @__PURE__ */ jsx3(Text2, { color: "
|
|
1315
|
+
return isActive ? /* @__PURE__ */ jsx3(Text2, { color: "green", bold: true, children: ` ${label} ` }, v) : /* @__PURE__ */ jsx3(Text2, { dimColor: true, children: ` ${label} ` }, v);
|
|
1395
1316
|
});
|
|
1396
1317
|
let hints;
|
|
1397
1318
|
if (view === "goals" && state.goalsPanel.inputMode === "add") {
|
|
@@ -1445,7 +1366,7 @@ function Footer() {
|
|
|
1445
1366
|
] });
|
|
1446
1367
|
}
|
|
1447
1368
|
return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
|
|
1448
|
-
/* @__PURE__ */ jsx3(Box2, { borderStyle: "single", borderColor: "
|
|
1369
|
+
/* @__PURE__ */ jsx3(Box2, { borderStyle: "single", borderColor: "gray", borderTop: false, borderLeft: false, borderRight: false, children: /* @__PURE__ */ jsx3(Box2, { gap: 0, children: viewTabs }) }),
|
|
1449
1370
|
/* @__PURE__ */ jsxs2(Box2, { paddingX: 1, justifyContent: "space-between", children: [
|
|
1450
1371
|
hints,
|
|
1451
1372
|
/* @__PURE__ */ jsx3(Hint, { k: "q", label: "Quit" })
|
|
@@ -1569,20 +1490,20 @@ function ConfigDialog({ onClose }) {
|
|
|
1569
1490
|
}
|
|
1570
1491
|
});
|
|
1571
1492
|
const sectionTitle = section === "main" ? "TRIE AGENT CONFIGURATION" : section === "performance" ? "PERFORMANCE SETTINGS" : section === "riskThresholds" ? "RISK THRESHOLDS" : section === "agentSmith" ? "AGENT SMITH SETTINGS" : "CONFIGURATION";
|
|
1572
|
-
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
1573
|
-
/* @__PURE__ */ jsx5(Text4, {
|
|
1493
|
+
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, paddingY: 0, children: [
|
|
1494
|
+
/* @__PURE__ */ jsx5(Text4, { bold: true, children: sectionTitle }),
|
|
1574
1495
|
/* @__PURE__ */ jsx5(Text4, { children: " " }),
|
|
1575
1496
|
items.map((item, idx) => {
|
|
1576
1497
|
const isSelected = selectedIndex === idx;
|
|
1577
1498
|
return /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
1578
|
-
isSelected ? /* @__PURE__ */ jsx5(Text4, { bold: true, color: "
|
|
1499
|
+
isSelected ? /* @__PURE__ */ jsx5(Text4, { bold: true, color: "green", children: "\u25B6 " }) : /* @__PURE__ */ jsx5(Text4, { children: " " }),
|
|
1579
1500
|
/* @__PURE__ */ jsxs4(Text4, { bold: isSelected, children: [
|
|
1580
1501
|
item.label,
|
|
1581
1502
|
": "
|
|
1582
1503
|
] }),
|
|
1583
1504
|
editing && isSelected ? /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
1584
1505
|
editBuffer,
|
|
1585
|
-
/* @__PURE__ */ jsx5(Text4, { bold: true, color: "
|
|
1506
|
+
/* @__PURE__ */ jsx5(Text4, { bold: true, color: "green", children: "\u258C" })
|
|
1586
1507
|
] }) : /* @__PURE__ */ jsx5(Text4, { dimColor: true, children: item.value })
|
|
1587
1508
|
] }, item.key);
|
|
1588
1509
|
}),
|
|
@@ -1597,10 +1518,9 @@ import { Fragment, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
|
1597
1518
|
function OverviewView() {
|
|
1598
1519
|
const { state } = useDashboard();
|
|
1599
1520
|
const { progress, signalExtraction, watch, issues, activityLog, activityPage } = state;
|
|
1600
|
-
const {
|
|
1521
|
+
const { totalIssues, processedFiles } = progress;
|
|
1601
1522
|
const endTime = state.scanComplete && state.scanEndTime ? state.scanEndTime : Date.now();
|
|
1602
1523
|
const elapsed = ((endTime - state.scanStartTime) / 1e3).toFixed(1);
|
|
1603
|
-
const totalExtracted = signalExtraction.decisionsExtracted + signalExtraction.factsExtracted + signalExtraction.blockersExtracted + signalExtraction.questionsExtracted;
|
|
1604
1524
|
const criticalIssues = issues.filter((i) => i.severity === "critical").slice(0, 3);
|
|
1605
1525
|
const activityRows = 8;
|
|
1606
1526
|
const startIdx = activityPage * activityRows;
|
|
@@ -1614,60 +1534,10 @@ function OverviewView() {
|
|
|
1614
1534
|
"s"
|
|
1615
1535
|
] })
|
|
1616
1536
|
] }),
|
|
1617
|
-
watch.watching && /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1618
|
-
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1619
|
-
signalExtraction.enabled ? "[+]" : "[!]",
|
|
1620
|
-
" Signal extraction:",
|
|
1621
|
-
" ",
|
|
1622
|
-
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: signalExtraction.enabled ? "enabled" : "limited (set ANTHROPIC_API_KEY)" })
|
|
1623
|
-
] }),
|
|
1624
|
-
totalExtracted > 0 && /* @__PURE__ */ jsxs5(Text5, { dimColor: true, children: [
|
|
1625
|
-
" \u2514 ",
|
|
1626
|
-
signalExtraction.decisionsExtracted,
|
|
1627
|
-
" decisions, ",
|
|
1628
|
-
signalExtraction.factsExtracted,
|
|
1629
|
-
" facts, ",
|
|
1630
|
-
signalExtraction.blockersExtracted,
|
|
1631
|
-
" blockers extracted"
|
|
1632
|
-
] })
|
|
1633
|
-
] }),
|
|
1634
|
-
/* @__PURE__ */ jsx6(Text5, { children: " " }),
|
|
1635
|
-
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1636
|
-
/* @__PURE__ */ jsx6(Text5, { color: "cyan", bold: true, children: "SUMMARY" }),
|
|
1637
|
-
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1638
|
-
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1639
|
-
/* @__PURE__ */ jsxs5(Text5, { color: "red", bold: true, children: [
|
|
1640
|
-
"[!] ",
|
|
1641
|
-
String(issuesBySeverity.critical).padStart(4),
|
|
1642
|
-
" Critical issues"
|
|
1643
|
-
] }),
|
|
1644
|
-
issuesBySeverity.critical > 0 && /* @__PURE__ */ jsxs5(Text5, { color: "red", bold: true, children: [
|
|
1645
|
-
" ",
|
|
1646
|
-
"<-",
|
|
1647
|
-
" FIX NOW"
|
|
1648
|
-
] })
|
|
1649
|
-
] }),
|
|
1650
|
-
/* @__PURE__ */ jsxs5(Text5, { color: "yellow", children: [
|
|
1651
|
-
"[x] ",
|
|
1652
|
-
String(issuesBySeverity.serious).padStart(4),
|
|
1653
|
-
" Serious issues"
|
|
1654
|
-
] }),
|
|
1655
|
-
/* @__PURE__ */ jsxs5(Text5, { color: "blue", children: [
|
|
1656
|
-
"[~] ",
|
|
1657
|
-
String(issuesBySeverity.moderate).padStart(4),
|
|
1658
|
-
" Moderate issues"
|
|
1659
|
-
] }),
|
|
1660
|
-
/* @__PURE__ */ jsxs5(Text5, { dimColor: true, children: [
|
|
1661
|
-
"[-] ",
|
|
1662
|
-
String(issuesBySeverity.low).padStart(4),
|
|
1663
|
-
" Low issues"
|
|
1664
|
-
] })
|
|
1665
|
-
] })
|
|
1666
|
-
] }),
|
|
1667
1537
|
watch.watching && signalExtraction.enabled && /* @__PURE__ */ jsxs5(Fragment, { children: [
|
|
1668
1538
|
/* @__PURE__ */ jsx6(Text5, { children: " " }),
|
|
1669
1539
|
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1670
|
-
/* @__PURE__ */ jsx6(Text5, {
|
|
1540
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, children: "Decision Ledger" }),
|
|
1671
1541
|
/* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1672
1542
|
/* @__PURE__ */ jsx6(Text5, { bold: true, children: "Agent Learning" }),
|
|
1673
1543
|
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: " - Building institutional knowledge" })
|
|
@@ -1731,7 +1601,7 @@ function OverviewView() {
|
|
|
1731
1601
|
] }),
|
|
1732
1602
|
/* @__PURE__ */ jsx6(Text5, { children: " " }),
|
|
1733
1603
|
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
1734
|
-
/* @__PURE__ */ jsx6(Text5, {
|
|
1604
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, children: "Activity" }),
|
|
1735
1605
|
pageActivities.map((entry, i) => /* @__PURE__ */ jsxs5(Text5, { children: [
|
|
1736
1606
|
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: entry.time }),
|
|
1737
1607
|
" ",
|
|
@@ -1744,6 +1614,63 @@ function OverviewView() {
|
|
|
1744
1614
|
|
|
1745
1615
|
// src/cli/dashboard/views/AgentView.tsx
|
|
1746
1616
|
import { Box as Box6, Text as Text6, useInput as useInput2 } from "ink";
|
|
1617
|
+
|
|
1618
|
+
// src/cli/dashboard/theme.ts
|
|
1619
|
+
import pc2 from "picocolors";
|
|
1620
|
+
var colors = {
|
|
1621
|
+
border: (s) => pc2.dim(s),
|
|
1622
|
+
header: (s) => pc2.bold(pc2.white(s)),
|
|
1623
|
+
brand: (s) => pc2.bold(pc2.green(s)),
|
|
1624
|
+
dim: (s) => pc2.dim(s),
|
|
1625
|
+
critical: (s) => pc2.bold(pc2.red(s)),
|
|
1626
|
+
serious: (s) => pc2.yellow(s),
|
|
1627
|
+
moderate: (s) => pc2.blue(s),
|
|
1628
|
+
low: (s) => pc2.dim(s),
|
|
1629
|
+
success: (s) => pc2.green(s),
|
|
1630
|
+
running: (s) => pc2.yellow(s),
|
|
1631
|
+
waiting: (s) => pc2.dim(s),
|
|
1632
|
+
alert: (s) => pc2.bold(pc2.red(s)),
|
|
1633
|
+
selected: (s) => pc2.bold(pc2.green(s)),
|
|
1634
|
+
highlight: (s) => pc2.bold(pc2.white(s)),
|
|
1635
|
+
yellow: (s) => pc2.yellow(s)
|
|
1636
|
+
};
|
|
1637
|
+
function formatTimeAgo(timestamp) {
|
|
1638
|
+
const seconds = Math.floor((Date.now() - timestamp) / 1e3);
|
|
1639
|
+
if (seconds < 10) return "just now";
|
|
1640
|
+
if (seconds < 60) return `${seconds}s ago`;
|
|
1641
|
+
const minutes = Math.floor(seconds / 60);
|
|
1642
|
+
if (minutes < 60) return `${minutes}m ago`;
|
|
1643
|
+
const hours = Math.floor(minutes / 60);
|
|
1644
|
+
return `${hours}h ago`;
|
|
1645
|
+
}
|
|
1646
|
+
function insightIcon(type) {
|
|
1647
|
+
switch (type) {
|
|
1648
|
+
case "warning":
|
|
1649
|
+
return { icon: "[!]", color: colors.critical };
|
|
1650
|
+
case "observation":
|
|
1651
|
+
return { icon: "[>]", color: colors.serious };
|
|
1652
|
+
case "suggestion":
|
|
1653
|
+
return { icon: "[?]", color: colors.highlight };
|
|
1654
|
+
case "celebration":
|
|
1655
|
+
return { icon: "[+]", color: colors.success };
|
|
1656
|
+
case "question":
|
|
1657
|
+
return { icon: "[?]", color: colors.moderate };
|
|
1658
|
+
default:
|
|
1659
|
+
return { icon: "[>]", color: colors.dim };
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
function progressBar(current, total, width = 10) {
|
|
1663
|
+
if (total <= 0) return colors.dim("[" + "\u2591".repeat(width) + "]");
|
|
1664
|
+
const progress = Math.min(1, current / total);
|
|
1665
|
+
const filled = Math.round(width * progress);
|
|
1666
|
+
const empty = width - filled;
|
|
1667
|
+
return colors.dim("[") + colors.success("\u2588".repeat(filled)) + colors.dim("\u2591".repeat(empty)) + colors.dim("]");
|
|
1668
|
+
}
|
|
1669
|
+
function stripEmojis(s) {
|
|
1670
|
+
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();
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
// src/cli/dashboard/views/AgentView.tsx
|
|
1747
1674
|
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1748
1675
|
function AgentView() {
|
|
1749
1676
|
const { state, dispatch } = useDashboard();
|
|
@@ -1769,7 +1696,7 @@ function AgentView() {
|
|
|
1769
1696
|
const agency = agencyStatus;
|
|
1770
1697
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", paddingX: 1, children: [
|
|
1771
1698
|
/* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1772
|
-
/* @__PURE__ */ jsx7(Text6, {
|
|
1699
|
+
/* @__PURE__ */ jsx7(Text6, { bold: true, children: "Agent Insights" }),
|
|
1773
1700
|
activeCount > 0 ? /* @__PURE__ */ jsxs6(Text6, { color: "red", bold: true, children: [
|
|
1774
1701
|
" (",
|
|
1775
1702
|
activeCount,
|
|
@@ -1843,7 +1770,7 @@ function AgentView() {
|
|
|
1843
1770
|
const status = isExpanded ? "v" : ">";
|
|
1844
1771
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", marginBottom: 1, children: [
|
|
1845
1772
|
/* @__PURE__ */ jsxs6(Text6, { children: [
|
|
1846
|
-
isSelected ? /* @__PURE__ */ jsx7(Text6, { bold: true, color: "
|
|
1773
|
+
isSelected ? /* @__PURE__ */ jsx7(Text6, { bold: true, color: "green", children: "\u25B6 " }) : /* @__PURE__ */ jsx7(Text6, { children: " " }),
|
|
1847
1774
|
/* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1848
1775
|
status,
|
|
1849
1776
|
" "
|
|
@@ -1879,8 +1806,8 @@ function AgentView() {
|
|
|
1879
1806
|
] }) : null
|
|
1880
1807
|
] }),
|
|
1881
1808
|
insight.details.affectedFiles && insight.details.affectedFiles.length > 0 && /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
1882
|
-
/* @__PURE__ */ jsx7(Text6, {
|
|
1883
|
-
insight.details.affectedFiles.slice(0, 8).map((f, fi) => /* @__PURE__ */ jsxs6(Text6, {
|
|
1809
|
+
/* @__PURE__ */ jsx7(Text6, { bold: true, children: "Files:" }),
|
|
1810
|
+
insight.details.affectedFiles.slice(0, 8).map((f, fi) => /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1884
1811
|
" \u2022 ",
|
|
1885
1812
|
f
|
|
1886
1813
|
] }, fi)),
|
|
@@ -1891,7 +1818,7 @@ function AgentView() {
|
|
|
1891
1818
|
] })
|
|
1892
1819
|
] }),
|
|
1893
1820
|
insight.details.examples && insight.details.examples.length > 0 && /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
1894
|
-
/* @__PURE__ */ jsx7(Text6, {
|
|
1821
|
+
/* @__PURE__ */ jsx7(Text6, { bold: true, children: "Examples:" }),
|
|
1895
1822
|
insight.details.examples.slice(0, 5).map((ex, ei) => /* @__PURE__ */ jsxs6(Text6, { dimColor: true, children: [
|
|
1896
1823
|
" \u2022 ",
|
|
1897
1824
|
ex.slice(0, 60),
|
|
@@ -2070,7 +1997,7 @@ function GoalsView() {
|
|
|
2070
1997
|
});
|
|
2071
1998
|
return /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", paddingX: 1, children: [
|
|
2072
1999
|
/* @__PURE__ */ jsxs7(Text7, { children: [
|
|
2073
|
-
/* @__PURE__ */ jsx8(Text7, {
|
|
2000
|
+
/* @__PURE__ */ jsx8(Text7, { bold: true, children: "Goals" }),
|
|
2074
2001
|
" ",
|
|
2075
2002
|
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "Track progress, achieve targets" })
|
|
2076
2003
|
] }),
|
|
@@ -2080,7 +2007,7 @@ function GoalsView() {
|
|
|
2080
2007
|
/* @__PURE__ */ jsx8(Text7, { bold: true, children: "New goal:" }),
|
|
2081
2008
|
" ",
|
|
2082
2009
|
goalsPanel.inputBuffer,
|
|
2083
|
-
/* @__PURE__ */ jsx8(Text7, { bold: true, color: "
|
|
2010
|
+
/* @__PURE__ */ jsx8(Text7, { bold: true, color: "green", children: "\u258C" })
|
|
2084
2011
|
] }),
|
|
2085
2012
|
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: 'Examples: "Reduce auth bugs by 50%", "Eliminate critical issues"' }),
|
|
2086
2013
|
/* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "Press Enter to add, Escape to cancel" })
|
|
@@ -2096,7 +2023,7 @@ function GoalsView() {
|
|
|
2096
2023
|
const bar = progressBar(progress, 100, 10);
|
|
2097
2024
|
const source = goal.autoGenerated ? /* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "[auto]" }) : /* @__PURE__ */ jsx8(Text7, { dimColor: true, children: "[manual]" });
|
|
2098
2025
|
return /* @__PURE__ */ jsxs7(Text7, { children: [
|
|
2099
|
-
isSelected ? /* @__PURE__ */ jsx8(Text7, { bold: true, color: "
|
|
2026
|
+
isSelected ? /* @__PURE__ */ jsx8(Text7, { bold: true, color: "green", children: "\u25B6 " }) : /* @__PURE__ */ jsx8(Text7, { children: " " }),
|
|
2100
2027
|
bar,
|
|
2101
2028
|
" ",
|
|
2102
2029
|
goal.description.slice(0, 50),
|
|
@@ -2251,7 +2178,7 @@ function HypothesesView() {
|
|
|
2251
2178
|
});
|
|
2252
2179
|
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", paddingX: 1, children: [
|
|
2253
2180
|
/* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2254
|
-
/* @__PURE__ */ jsx9(Text8, {
|
|
2181
|
+
/* @__PURE__ */ jsx9(Text8, { bold: true, children: "Hypotheses" }),
|
|
2255
2182
|
" ",
|
|
2256
2183
|
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: "Test theories about your codebase" })
|
|
2257
2184
|
] }),
|
|
@@ -2261,7 +2188,7 @@ function HypothesesView() {
|
|
|
2261
2188
|
/* @__PURE__ */ jsx9(Text8, { bold: true, children: "New hypothesis:" }),
|
|
2262
2189
|
" ",
|
|
2263
2190
|
hypothesesPanel.inputBuffer,
|
|
2264
|
-
/* @__PURE__ */ jsx9(Text8, { bold: true, color: "
|
|
2191
|
+
/* @__PURE__ */ jsx9(Text8, { bold: true, color: "green", children: "\u258C" })
|
|
2265
2192
|
] }),
|
|
2266
2193
|
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: 'Examples: "Mondays have more bugs", "Code reviews reduce issues"' }),
|
|
2267
2194
|
/* @__PURE__ */ jsx9(Text8, { dimColor: true, children: "Press Enter to add, Escape to cancel" })
|
|
@@ -2277,7 +2204,7 @@ function HypothesesView() {
|
|
|
2277
2204
|
const conf = Math.round(hypo.confidence * 100);
|
|
2278
2205
|
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
2279
2206
|
/* @__PURE__ */ jsxs8(Text8, { children: [
|
|
2280
|
-
isSelected ? /* @__PURE__ */ jsx9(Text8, { bold: true, color: "
|
|
2207
|
+
isSelected ? /* @__PURE__ */ jsx9(Text8, { bold: true, color: "green", children: "\u25B6 " }) : /* @__PURE__ */ jsx9(Text8, { children: " " }),
|
|
2281
2208
|
'[?] "',
|
|
2282
2209
|
hypo.statement.slice(0, 50),
|
|
2283
2210
|
'" ',
|
|
@@ -2390,7 +2317,7 @@ function MemoryTreeView() {
|
|
|
2390
2317
|
const sel = (nodeId) => selectedNode === nodeId;
|
|
2391
2318
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", paddingX: 1, children: [
|
|
2392
2319
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2393
|
-
/* @__PURE__ */ jsx10(Text9, {
|
|
2320
|
+
/* @__PURE__ */ jsx10(Text9, { bold: true, children: "Memory" }),
|
|
2394
2321
|
" ",
|
|
2395
2322
|
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
2396
2323
|
"[",
|
|
@@ -2404,10 +2331,10 @@ function MemoryTreeView() {
|
|
|
2404
2331
|
/* @__PURE__ */ jsx10(Text9, { dimColor: true, children: "Run a scan to populate the memory tree." })
|
|
2405
2332
|
] }) : /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
2406
2333
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2407
|
-
sel("severity") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2334
|
+
sel("severity") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u25B6 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2408
2335
|
expandedNodes.has("severity") ? "\u25BC" : "\u25B6",
|
|
2409
2336
|
" ",
|
|
2410
|
-
sel("severity") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2337
|
+
sel("severity") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "By Severity" }) : /* @__PURE__ */ jsx10(Text9, { bold: true, children: "By Severity" })
|
|
2411
2338
|
] }),
|
|
2412
2339
|
expandedNodes.has("severity") && ["critical", "serious", "moderate", "low"].map((sev) => {
|
|
2413
2340
|
const count = bySeverity[sev]?.length || 0;
|
|
@@ -2419,9 +2346,9 @@ function MemoryTreeView() {
|
|
|
2419
2346
|
const SevText = ({ children }) => isLow ? /* @__PURE__ */ jsx10(Text9, { dimColor: true, children }) : sevColor ? /* @__PURE__ */ jsx10(Text9, { color: sevColor, children }) : /* @__PURE__ */ jsx10(Text9, { children });
|
|
2420
2347
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
2421
2348
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2422
|
-
sel(nodeId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2349
|
+
sel(nodeId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2423
2350
|
" \u2502 ",
|
|
2424
|
-
sel(nodeId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2351
|
+
sel(nodeId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: sev }) : /* @__PURE__ */ jsx10(SevText, { children: sev }),
|
|
2425
2352
|
` (${count}) `,
|
|
2426
2353
|
/* @__PURE__ */ jsx10(SevText, { children: barStr })
|
|
2427
2354
|
] }),
|
|
@@ -2431,7 +2358,7 @@ function MemoryTreeView() {
|
|
|
2431
2358
|
const line = issue.line ? `:${issue.line}` : "";
|
|
2432
2359
|
const desc = issue.issue.slice(0, 35) + (issue.issue.length > 35 ? "..." : "");
|
|
2433
2360
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2434
|
-
sel(issueId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2361
|
+
sel(issueId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2435
2362
|
" \u2502 ",
|
|
2436
2363
|
i === Math.min(5, bySeverity[sev]?.length || 0) - 1 ? "\u2514\u2500 " : "\u251C\u2500 ",
|
|
2437
2364
|
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
@@ -2445,10 +2372,10 @@ function MemoryTreeView() {
|
|
|
2445
2372
|
] }, sev);
|
|
2446
2373
|
}),
|
|
2447
2374
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2448
|
-
sel("files") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2375
|
+
sel("files") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2449
2376
|
expandedNodes.has("files") ? "\u25BC" : "\u25B6",
|
|
2450
2377
|
" ",
|
|
2451
|
-
sel("files") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2378
|
+
sel("files") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "By File (Hot Spots)" }) : /* @__PURE__ */ jsx10(Text9, { bold: true, children: "By File (Hot Spots)" })
|
|
2452
2379
|
] }),
|
|
2453
2380
|
expandedNodes.has("files") && sortedFiles.map(([file, fileIssues], idx) => {
|
|
2454
2381
|
const fileId = `file-${file}`;
|
|
@@ -2456,40 +2383,40 @@ function MemoryTreeView() {
|
|
|
2456
2383
|
const count = fileIssues.length;
|
|
2457
2384
|
const isLast = idx === sortedFiles.length - 1;
|
|
2458
2385
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2459
|
-
sel(fileId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2386
|
+
sel(fileId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2460
2387
|
" ",
|
|
2461
2388
|
isLast ? "\u2514\u2500 " : "\u251C\u2500 ",
|
|
2462
|
-
sel(fileId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2389
|
+
sel(fileId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: filename }) : /* @__PURE__ */ jsx10(Text9, { children: filename }),
|
|
2463
2390
|
` (${count})`
|
|
2464
2391
|
] }, file);
|
|
2465
2392
|
}),
|
|
2466
2393
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2467
|
-
sel("agents") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2394
|
+
sel("agents") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2468
2395
|
expandedNodes.has("agents") ? "\u25BC" : "\u25B6",
|
|
2469
2396
|
" ",
|
|
2470
|
-
sel("agents") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2397
|
+
sel("agents") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "By Agent" }) : /* @__PURE__ */ jsx10(Text9, { bold: true, children: "By Agent" })
|
|
2471
2398
|
] }),
|
|
2472
2399
|
expandedNodes.has("agents") && sortedAgents.map(([agent, agentIssues], idx) => {
|
|
2473
2400
|
const agentId = `agent-${agent}`;
|
|
2474
2401
|
const isLast = idx === sortedAgents.length - 1;
|
|
2475
2402
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2476
|
-
sel(agentId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2403
|
+
sel(agentId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2477
2404
|
" ",
|
|
2478
2405
|
isLast ? "\u2514\u2500 " : "\u251C\u2500 ",
|
|
2479
|
-
sel(agentId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2406
|
+
sel(agentId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: agent }) : /* @__PURE__ */ jsx10(Text9, { children: agent }),
|
|
2480
2407
|
` (${agentIssues.length})`
|
|
2481
2408
|
] }, agent);
|
|
2482
2409
|
}),
|
|
2483
2410
|
/* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2484
|
-
sel("patterns") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2411
|
+
sel("patterns") ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2485
2412
|
expandedNodes.has("patterns") ? "\u25BC" : "\u25B6",
|
|
2486
2413
|
" ",
|
|
2487
|
-
sel("patterns") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "
|
|
2488
|
-
"
|
|
2414
|
+
sel("patterns") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
|
|
2415
|
+
"Patterns (",
|
|
2489
2416
|
globalPatterns.length,
|
|
2490
2417
|
" recurring)"
|
|
2491
|
-
] }) : /* @__PURE__ */ jsxs9(Text9, {
|
|
2492
|
-
"
|
|
2418
|
+
] }) : /* @__PURE__ */ jsxs9(Text9, { bold: true, children: [
|
|
2419
|
+
"Patterns (",
|
|
2493
2420
|
globalPatterns.length,
|
|
2494
2421
|
" recurring)"
|
|
2495
2422
|
] })
|
|
@@ -2499,7 +2426,7 @@ function MemoryTreeView() {
|
|
|
2499
2426
|
const isLast = idx === Math.min(4, globalPatterns.length - 1);
|
|
2500
2427
|
const desc = pattern.pattern.slice(0, 40) + (pattern.pattern.length > 40 ? "..." : "");
|
|
2501
2428
|
return /* @__PURE__ */ jsxs9(Text9, { children: [
|
|
2502
|
-
sel(patternId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "
|
|
2429
|
+
sel(patternId) ? /* @__PURE__ */ jsx10(Text9, { bold: true, color: "green", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
|
|
2503
2430
|
" ",
|
|
2504
2431
|
isLast ? "\u2514\u2500 " : "\u251C\u2500 ",
|
|
2505
2432
|
/* @__PURE__ */ jsxs9(Text9, { dimColor: true, children: [
|
|
@@ -2551,7 +2478,7 @@ function RawLogView() {
|
|
|
2551
2478
|
const logs = rawLog.slice(startIdx, startIdx + pageSize);
|
|
2552
2479
|
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", paddingX: 1, children: [
|
|
2553
2480
|
/* @__PURE__ */ jsxs10(Text10, { children: [
|
|
2554
|
-
/* @__PURE__ */ jsx11(Text10, {
|
|
2481
|
+
/* @__PURE__ */ jsx11(Text10, { bold: true, children: "Log" }),
|
|
2555
2482
|
" ",
|
|
2556
2483
|
/* @__PURE__ */ jsxs10(Text10, { dimColor: true, children: [
|
|
2557
2484
|
"Page ",
|
|
@@ -2715,7 +2642,6 @@ function DashboardApp({ onReady }) {
|
|
|
2715
2642
|
if (showConfig) return;
|
|
2716
2643
|
if (state.view === "goals" && state.goalsPanel.inputMode === "add") return;
|
|
2717
2644
|
if (state.view === "hypotheses" && state.hypothesesPanel.inputMode === "add") return;
|
|
2718
|
-
if (state.view === "agent" || state.view === "memory") return;
|
|
2719
2645
|
if (input === "q" || key.escape) {
|
|
2720
2646
|
exit();
|
|
2721
2647
|
process.exit(0);
|
|
@@ -2724,22 +2650,38 @@ function DashboardApp({ onReady }) {
|
|
|
2724
2650
|
const currentIndex = MAIN_VIEWS.indexOf(state.view);
|
|
2725
2651
|
const nextIndex = currentIndex >= 0 ? (currentIndex + 1) % MAIN_VIEWS.length : 0;
|
|
2726
2652
|
dispatch({ type: "SET_VIEW", view: MAIN_VIEWS[nextIndex] || "overview" });
|
|
2653
|
+
return;
|
|
2654
|
+
}
|
|
2655
|
+
if (input === "c") {
|
|
2656
|
+
setShowConfig(true);
|
|
2657
|
+
return;
|
|
2658
|
+
}
|
|
2659
|
+
if (input === "l") {
|
|
2660
|
+
dispatch({ type: "SET_VIEW", view: "rawlog" });
|
|
2661
|
+
return;
|
|
2662
|
+
}
|
|
2663
|
+
if (input === "g") {
|
|
2664
|
+
dispatch({ type: "SET_VIEW", view: "agent" });
|
|
2665
|
+
return;
|
|
2727
2666
|
}
|
|
2728
|
-
if (input === "b") dispatch({ type: "GO_BACK" });
|
|
2729
|
-
if (input === "c") setShowConfig(true);
|
|
2730
|
-
if (input === "n") dispatch({ type: "NEXT_PAGE" });
|
|
2731
|
-
if (input === "p") dispatch({ type: "PREV_PAGE" });
|
|
2732
|
-
if (input === "l") dispatch({ type: "SET_VIEW", view: "rawlog" });
|
|
2733
|
-
if (input === "g") dispatch({ type: "SET_VIEW", view: "agent" });
|
|
2734
2667
|
if (input === "o") {
|
|
2735
2668
|
dispatch({ type: "SET_VIEW", view: "goals" });
|
|
2736
2669
|
void refreshGoals();
|
|
2670
|
+
return;
|
|
2737
2671
|
}
|
|
2738
2672
|
if (input === "y") {
|
|
2739
2673
|
dispatch({ type: "SET_VIEW", view: "hypotheses" });
|
|
2740
2674
|
void refreshHypotheses();
|
|
2675
|
+
return;
|
|
2676
|
+
}
|
|
2677
|
+
if (input === "t") {
|
|
2678
|
+
dispatch({ type: "SET_VIEW", view: "memory" });
|
|
2679
|
+
return;
|
|
2741
2680
|
}
|
|
2742
|
-
if (
|
|
2681
|
+
if (state.view === "agent" || state.view === "memory") return;
|
|
2682
|
+
if (input === "b") dispatch({ type: "GO_BACK" });
|
|
2683
|
+
if (input === "n") dispatch({ type: "NEXT_PAGE" });
|
|
2684
|
+
if (input === "p") dispatch({ type: "PREV_PAGE" });
|
|
2743
2685
|
});
|
|
2744
2686
|
let viewComponent;
|
|
2745
2687
|
switch (state.view) {
|
|
@@ -2819,4 +2761,4 @@ export {
|
|
|
2819
2761
|
getOutputManager,
|
|
2820
2762
|
InteractiveDashboard
|
|
2821
2763
|
};
|
|
2822
|
-
//# sourceMappingURL=chunk-
|
|
2764
|
+
//# sourceMappingURL=chunk-M3WF7ZXI.js.map
|