@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__ */ jsxs(Text, { color: "green", bold: true, children: [
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__ */ jsxs(Text, { children: [
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
- const watchBadge = watch.watching ? /* @__PURE__ */ jsxs(Text, { color: "green", children: [
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
- watchBadge,
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, { color: "cyan", children: "[" }),
1300
+ /* @__PURE__ */ jsx3(Text2, { dimColor: true, children: "[" }),
1380
1301
  /* @__PURE__ */ jsx3(Text2, { bold: true, children: k }),
1381
- /* @__PURE__ */ jsx3(Text2, { color: "cyan", children: "]" }),
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: "cyan", bold: true, inverse: true, children: ` ${label} ` }, v) : /* @__PURE__ */ jsx3(Text2, { dimColor: true, children: ` ${label} ` }, v);
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: "cyan", borderTop: false, borderLeft: false, borderRight: false, children: /* @__PURE__ */ jsx3(Box2, { gap: 0, children: viewTabs }) }),
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: "cyan", paddingX: 1, paddingY: 0, children: [
1573
- /* @__PURE__ */ jsx5(Text4, { color: "cyan", bold: true, children: sectionTitle }),
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: "magenta", children: "\u25B6 " }) : /* @__PURE__ */ jsx5(Text4, { children: " " }),
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: "cyan", children: "\u258C" })
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 { issuesBySeverity, totalIssues, processedFiles } = progress;
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, { color: "cyan", bold: true, children: "DECISION LEDGER" }),
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, { color: "cyan", bold: true, children: "ACTIVITY LOG" }),
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, { color: "cyan", bold: true, children: "TRIE AGENT INSIGHTS" }),
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: "magenta", children: "\u25B6 " }) : /* @__PURE__ */ jsx7(Text6, { children: " " }),
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, { color: "cyan", bold: true, children: "Files:" }),
1883
- insight.details.affectedFiles.slice(0, 8).map((f, fi) => /* @__PURE__ */ jsxs6(Text6, { color: "cyan", children: [
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, { color: "cyan", bold: true, children: "Examples:" }),
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, { color: "cyan", bold: true, children: "GOALS" }),
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: "cyan", children: "\u258C" })
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: "magenta", children: "\u25B6 " }) : /* @__PURE__ */ jsx8(Text7, { children: " " }),
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, { color: "cyan", bold: true, children: "HYPOTHESES" }),
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: "cyan", children: "\u258C" })
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: "magenta", children: "\u25B6 " }) : /* @__PURE__ */ jsx9(Text8, { children: " " }),
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, { color: "cyan", bold: true, children: "MEMORY TREE" }),
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: "By Severity" }) : /* @__PURE__ */ jsx10(Text9, { color: "cyan", bold: true, children: "By Severity" })
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: sev }) : /* @__PURE__ */ jsx10(SevText, { children: sev }),
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: "By File (Hot Spots)" }) : /* @__PURE__ */ jsx10(Text9, { color: "cyan", bold: true, children: "By File (Hot Spots)" })
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: filename }) : /* @__PURE__ */ jsx10(Text9, { children: filename }),
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: "By Agent" }) : /* @__PURE__ */ jsx10(Text9, { color: "cyan", bold: true, children: "By Agent" })
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: agent }) : /* @__PURE__ */ jsx10(Text9, { children: agent }),
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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: "magenta", children: [
2488
- "Cross-Project Patterns (",
2414
+ sel("patterns") ? /* @__PURE__ */ jsxs9(Text9, { bold: true, color: "green", children: [
2415
+ "Patterns (",
2489
2416
  globalPatterns.length,
2490
2417
  " recurring)"
2491
- ] }) : /* @__PURE__ */ jsxs9(Text9, { color: "cyan", bold: true, children: [
2492
- "Cross-Project Patterns (",
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: "magenta", children: "\u2192 " }) : /* @__PURE__ */ jsx10(Text9, { children: " " }),
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, { color: "cyan", bold: true, children: "RAW LOG" }),
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 (input === "t") dispatch({ type: "SET_VIEW", view: "memory" });
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-M4YMTHGG.js.map
2764
+ //# sourceMappingURL=chunk-M3WF7ZXI.js.map