@triedotdev/mcp 1.0.149 → 1.0.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +116 -30
  3. package/dist/{autonomy-config-ZCOSTMPD.js → autonomy-config-3APNC6QF.js} +3 -3
  4. package/dist/{chat-store-OJLJCJFI.js → chat-store-HMTDL7I2.js} +3 -3
  5. package/dist/{chunk-LD7ZEFNY.js → chunk-3KZBC3RJ.js} +2 -2
  6. package/dist/{chunk-SH7H3WRU.js → chunk-4TQQP7JD.js} +3 -3
  7. package/dist/{chunk-SH7H3WRU.js.map → chunk-4TQQP7JD.js.map} +1 -1
  8. package/dist/{chunk-GAL7OIYU.js → chunk-4UDBGYI3.js} +15 -15
  9. package/dist/{chunk-72KSLD7A.js → chunk-74R4XSFB.js} +5 -5
  10. package/dist/{chunk-ZDDE442Q.js → chunk-7HYOJ4Q7.js} +8 -8
  11. package/dist/{chunk-ZDDE442Q.js.map → chunk-7HYOJ4Q7.js.map} +1 -1
  12. package/dist/{chunk-OTQEFXHU.js → chunk-ABY2R7OK.js} +2 -2
  13. package/dist/{chunk-QH77RQB3.js → chunk-ED7PLRQA.js} +5 -6
  14. package/dist/chunk-ED7PLRQA.js.map +1 -0
  15. package/dist/{chunk-23RJT5WT.js → chunk-F7BMFOZ6.js} +2 -2
  16. package/dist/{chunk-53KUI7RQ.js → chunk-G7Q23IGF.js} +35 -10
  17. package/dist/{chunk-53KUI7RQ.js.map → chunk-G7Q23IGF.js.map} +1 -1
  18. package/dist/{chunk-CU5VDH6F.js → chunk-GLY76TSI.js} +2 -2
  19. package/dist/{chunk-B2AHQ2IR.js → chunk-IFBEAOHH.js} +12 -12
  20. package/dist/{chunk-ILGMFND2.js → chunk-JIS2OCZR.js} +4 -4
  21. package/dist/{chunk-FG467PDD.js → chunk-LNUMECBJ.js} +2 -2
  22. package/dist/{chunk-FPEMP54L.js → chunk-OJXFQRUE.js} +2 -2
  23. package/dist/{chunk-5KJ4UJOY.js → chunk-QQG42HCI.js} +2 -2
  24. package/dist/{chunk-7OJ6JIPL.js → chunk-REHKDCI6.js} +7 -150
  25. package/dist/chunk-REHKDCI6.js.map +1 -0
  26. package/dist/{chunk-HYNDXZAU.js → chunk-SU3WCAC4.js} +103 -75
  27. package/dist/chunk-SU3WCAC4.js.map +1 -0
  28. package/dist/{chunk-4C67GV3O.js → chunk-TCNCNWGV.js} +2 -2
  29. package/dist/{chunk-NKHO34UZ.js → chunk-TU7D5DEW.js} +2 -2
  30. package/dist/{chunk-ZUEAHFSY.js → chunk-TWPX6PHF.js} +313 -61
  31. package/dist/chunk-TWPX6PHF.js.map +1 -0
  32. package/dist/{chunk-FH335WL5.js → chunk-TWQPOVRA.js} +2 -2
  33. package/dist/{chunk-YOJGSRZK.js → chunk-V3O7C2LY.js} +2 -2
  34. package/dist/{chunk-V7AY2EJO.js → chunk-WOTLY5NA.js} +2 -2
  35. package/dist/cli/create-agent.js +8 -40
  36. package/dist/cli/create-agent.js.map +1 -1
  37. package/dist/cli/main.js +55 -93
  38. package/dist/cli/main.js.map +1 -1
  39. package/dist/cli/yolo-daemon.js +20 -20
  40. package/dist/{client-INNE2GGZ.js → client-5L64D5SQ.js} +3 -3
  41. package/dist/{codebase-index-FMIULFZQ.js → codebase-index-OOE7OAHP.js} +3 -3
  42. package/dist/{fast-analyzer-CTT3MCPE.js → fast-analyzer-FMU3X4AZ.js} +5 -5
  43. package/dist/github-ingester-C66ZRUYC.js +11 -0
  44. package/dist/{goal-manager-IGUMDGCA.js → goal-manager-VTBFFYN4.js} +7 -7
  45. package/dist/{goal-validator-DV6DRSGF.js → goal-validator-EM5XVWVC.js} +6 -6
  46. package/dist/{graph-J4OGTYCO.js → graph-26JPZ3DF.js} +3 -3
  47. package/dist/{hypothesis-O72ZLVOW.js → hypothesis-4UPE7KXU.js} +7 -7
  48. package/dist/{incident-index-BWW2UEY7.js → incident-index-H6APJ4S3.js} +3 -3
  49. package/dist/index.js +118 -313
  50. package/dist/index.js.map +1 -1
  51. package/dist/{insight-store-Q62UGMTF.js → insight-store-QEEUQR5L.js} +3 -3
  52. package/dist/{issue-store-4FPABLC6.js → issue-store-C6XYENE5.js} +4 -4
  53. package/dist/{ledger-43SIVE7X.js → ledger-VNA4DX3Z.js} +13 -5
  54. package/dist/linear-ingester-WIUBWF55.js +11 -0
  55. package/dist/{tiered-storage-VZL7KK64.js → tiered-storage-P6Z3NV2Q.js} +3 -3
  56. package/dist/trie-agent-GJJJCL6P.js +27 -0
  57. package/package.json +4 -6
  58. package/dist/chunk-7OJ6JIPL.js.map +0 -1
  59. package/dist/chunk-G76DYVGX.js +0 -136
  60. package/dist/chunk-G76DYVGX.js.map +0 -1
  61. package/dist/chunk-HYNDXZAU.js.map +0 -1
  62. package/dist/chunk-QH77RQB3.js.map +0 -1
  63. package/dist/chunk-ZUEAHFSY.js.map +0 -1
  64. package/dist/comprehension-46F7ZNKL.js +0 -821
  65. package/dist/comprehension-46F7ZNKL.js.map +0 -1
  66. package/dist/github-ingester-J2ZFYXVE.js +0 -11
  67. package/dist/linear-ingester-JRDQAIAA.js +0 -11
  68. package/dist/trie-agent-ET3DAP5Y.js +0 -27
  69. package/dist/workers/agent-worker.d.ts +0 -2
  70. package/dist/workers/agent-worker.js +0 -28
  71. package/dist/workers/agent-worker.js.map +0 -1
  72. /package/dist/{autonomy-config-ZCOSTMPD.js.map → autonomy-config-3APNC6QF.js.map} +0 -0
  73. /package/dist/{chat-store-OJLJCJFI.js.map → chat-store-HMTDL7I2.js.map} +0 -0
  74. /package/dist/{chunk-LD7ZEFNY.js.map → chunk-3KZBC3RJ.js.map} +0 -0
  75. /package/dist/{chunk-GAL7OIYU.js.map → chunk-4UDBGYI3.js.map} +0 -0
  76. /package/dist/{chunk-72KSLD7A.js.map → chunk-74R4XSFB.js.map} +0 -0
  77. /package/dist/{chunk-OTQEFXHU.js.map → chunk-ABY2R7OK.js.map} +0 -0
  78. /package/dist/{chunk-23RJT5WT.js.map → chunk-F7BMFOZ6.js.map} +0 -0
  79. /package/dist/{chunk-CU5VDH6F.js.map → chunk-GLY76TSI.js.map} +0 -0
  80. /package/dist/{chunk-B2AHQ2IR.js.map → chunk-IFBEAOHH.js.map} +0 -0
  81. /package/dist/{chunk-ILGMFND2.js.map → chunk-JIS2OCZR.js.map} +0 -0
  82. /package/dist/{chunk-FG467PDD.js.map → chunk-LNUMECBJ.js.map} +0 -0
  83. /package/dist/{chunk-FPEMP54L.js.map → chunk-OJXFQRUE.js.map} +0 -0
  84. /package/dist/{chunk-5KJ4UJOY.js.map → chunk-QQG42HCI.js.map} +0 -0
  85. /package/dist/{chunk-4C67GV3O.js.map → chunk-TCNCNWGV.js.map} +0 -0
  86. /package/dist/{chunk-NKHO34UZ.js.map → chunk-TU7D5DEW.js.map} +0 -0
  87. /package/dist/{chunk-FH335WL5.js.map → chunk-TWQPOVRA.js.map} +0 -0
  88. /package/dist/{chunk-YOJGSRZK.js.map → chunk-V3O7C2LY.js.map} +0 -0
  89. /package/dist/{chunk-V7AY2EJO.js.map → chunk-WOTLY5NA.js.map} +0 -0
  90. /package/dist/{client-INNE2GGZ.js.map → client-5L64D5SQ.js.map} +0 -0
  91. /package/dist/{codebase-index-FMIULFZQ.js.map → codebase-index-OOE7OAHP.js.map} +0 -0
  92. /package/dist/{fast-analyzer-CTT3MCPE.js.map → fast-analyzer-FMU3X4AZ.js.map} +0 -0
  93. /package/dist/{github-ingester-J2ZFYXVE.js.map → github-ingester-C66ZRUYC.js.map} +0 -0
  94. /package/dist/{goal-manager-IGUMDGCA.js.map → goal-manager-VTBFFYN4.js.map} +0 -0
  95. /package/dist/{goal-validator-DV6DRSGF.js.map → goal-validator-EM5XVWVC.js.map} +0 -0
  96. /package/dist/{graph-J4OGTYCO.js.map → graph-26JPZ3DF.js.map} +0 -0
  97. /package/dist/{hypothesis-O72ZLVOW.js.map → hypothesis-4UPE7KXU.js.map} +0 -0
  98. /package/dist/{incident-index-BWW2UEY7.js.map → incident-index-H6APJ4S3.js.map} +0 -0
  99. /package/dist/{insight-store-Q62UGMTF.js.map → insight-store-QEEUQR5L.js.map} +0 -0
  100. /package/dist/{issue-store-4FPABLC6.js.map → issue-store-C6XYENE5.js.map} +0 -0
  101. /package/dist/{ledger-43SIVE7X.js.map → ledger-VNA4DX3Z.js.map} +0 -0
  102. /package/dist/{linear-ingester-JRDQAIAA.js.map → linear-ingester-WIUBWF55.js.map} +0 -0
  103. /package/dist/{tiered-storage-VZL7KK64.js.map → tiered-storage-P6Z3NV2Q.js.map} +0 -0
  104. /package/dist/{trie-agent-ET3DAP5Y.js.map → trie-agent-GJJJCL6P.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getChatStore
3
- } from "./chunk-23RJT5WT.js";
3
+ } from "./chunk-F7BMFOZ6.js";
4
4
  import {
5
5
  getTrieAgent
6
- } from "./chunk-GAL7OIYU.js";
6
+ } from "./chunk-4UDBGYI3.js";
7
7
  import {
8
8
  getOutputManager
9
9
  } from "./chunk-TIMIKBY2.js";
@@ -16,47 +16,47 @@ import {
16
16
  perceiveCurrentChanges,
17
17
  reasonAboutChangesHumanReadable,
18
18
  saveCheckpoint
19
- } from "./chunk-53KUI7RQ.js";
19
+ } from "./chunk-G7Q23IGF.js";
20
20
  import {
21
21
  loadConfig,
22
22
  saveConfig
23
- } from "./chunk-NKHO34UZ.js";
23
+ } from "./chunk-TU7D5DEW.js";
24
24
  import {
25
25
  IncidentIndex
26
- } from "./chunk-4C67GV3O.js";
26
+ } from "./chunk-TCNCNWGV.js";
27
27
  import {
28
28
  findCrossProjectPatterns
29
- } from "./chunk-B2AHQ2IR.js";
30
- import {
31
- TieredStorage,
32
- getStorage
33
- } from "./chunk-FG467PDD.js";
29
+ } from "./chunk-IFBEAOHH.js";
34
30
  import {
35
31
  ContextGraph
36
- } from "./chunk-FH335WL5.js";
32
+ } from "./chunk-TWQPOVRA.js";
37
33
  import {
38
34
  measureInitialGoalValue
39
- } from "./chunk-ZDDE442Q.js";
35
+ } from "./chunk-7HYOJ4Q7.js";
40
36
  import {
41
37
  getKeyFromKeychain,
42
38
  isAIAvailable,
43
39
  runAIWithTools,
44
40
  setAPIKey
45
- } from "./chunk-FPEMP54L.js";
41
+ } from "./chunk-OJXFQRUE.js";
46
42
  import {
47
43
  getProjectState
48
- } from "./chunk-CU5VDH6F.js";
44
+ } from "./chunk-GLY76TSI.js";
45
+ import {
46
+ TieredStorage,
47
+ getStorage
48
+ } from "./chunk-LNUMECBJ.js";
49
49
  import {
50
50
  loadAutonomyConfig,
51
51
  saveAutonomyConfig
52
- } from "./chunk-5KJ4UJOY.js";
52
+ } from "./chunk-QQG42HCI.js";
53
53
  import {
54
54
  getLedgerBlocks
55
- } from "./chunk-ZUEAHFSY.js";
55
+ } from "./chunk-TWPX6PHF.js";
56
56
  import {
57
57
  getTrieDirectory,
58
58
  getWorkingDirectory
59
- } from "./chunk-SH7H3WRU.js";
59
+ } from "./chunk-4TQQP7JD.js";
60
60
  import {
61
61
  isInteractiveMode
62
62
  } from "./chunk-APMV77PU.js";
@@ -1194,7 +1194,7 @@ function ConfigDialog({ onClose }) {
1194
1194
  const loadStats = async () => {
1195
1195
  try {
1196
1196
  const workDir = getWorkingDirectory(void 0, true);
1197
- const { CodebaseIndex } = await import("./codebase-index-FMIULFZQ.js");
1197
+ const { CodebaseIndex } = await import("./codebase-index-OOE7OAHP.js");
1198
1198
  const index = new CodebaseIndex(workDir);
1199
1199
  const stats = index.getStats();
1200
1200
  let lastUpdatedDisplay = "Never";
@@ -1387,7 +1387,7 @@ function ConfigDialog({ onClose }) {
1387
1387
  const loadStats = async () => {
1388
1388
  try {
1389
1389
  const workDir = getWorkingDirectory(void 0, true);
1390
- const { CodebaseIndex } = await import("./codebase-index-FMIULFZQ.js");
1390
+ const { CodebaseIndex } = await import("./codebase-index-OOE7OAHP.js");
1391
1391
  const index = new CodebaseIndex(workDir);
1392
1392
  const stats = index.getStats();
1393
1393
  setIndexStats({
@@ -1462,7 +1462,7 @@ function ConfigDialog({ onClose }) {
1462
1462
  }
1463
1463
  async function reindexCodebase() {
1464
1464
  const workDir = getWorkingDirectory(void 0, true);
1465
- const { CodebaseIndex } = await import("./codebase-index-FMIULFZQ.js");
1465
+ const { CodebaseIndex } = await import("./codebase-index-OOE7OAHP.js");
1466
1466
  const { glob } = await import("glob");
1467
1467
  const index = new CodebaseIndex(workDir);
1468
1468
  const indexPattern = `${workDir}/**/*.{ts,tsx,js,jsx,mjs,vue,svelte,astro,py,go,rs,java,c,cpp,h,hpp,cs,rb,php,css,scss,html}`;
@@ -1925,10 +1925,10 @@ function AgentView() {
1925
1925
  if (!insight) return;
1926
1926
  try {
1927
1927
  const workDir = getWorkingDirectory(void 0, true);
1928
- const { getInsightStore } = await import("./insight-store-Q62UGMTF.js");
1928
+ const { getInsightStore } = await import("./insight-store-QEEUQR5L.js");
1929
1929
  const store = getInsightStore(workDir);
1930
1930
  await store.dismissInsight(insight.id);
1931
- const { getStorage: getStorage2 } = await import("./tiered-storage-VZL7KK64.js");
1931
+ const { getStorage: getStorage2 } = await import("./tiered-storage-P6Z3NV2Q.js");
1932
1932
  const storage = getStorage2(workDir);
1933
1933
  await storage.dismissNudge(insight.id).catch(() => {
1934
1934
  });
@@ -2144,10 +2144,20 @@ function GoalsView() {
2144
2144
  const goals = agentState.getAllGoals();
2145
2145
  dispatch({
2146
2146
  type: "SET_GOALS",
2147
- goals: goals.map((g) => {
2148
- const base = { id: g.id, description: g.description, type: g.type, target: g.target, currentValue: g.currentValue, startValue: g.startValue, status: g.status, autoGenerated: g.autoGenerated, updatedAt: g.updatedAt, ...g.achievedAt != null ? { achievedAt: g.achievedAt } : {}, ...g.achievedBy != null ? { achievedBy: g.achievedBy } : {}, ...g.category != null ? { category: g.category } : {} };
2149
- return base;
2150
- })
2147
+ goals: goals.map((g) => ({
2148
+ id: g.id,
2149
+ description: g.description,
2150
+ type: g.type,
2151
+ target: g.target,
2152
+ currentValue: g.currentValue,
2153
+ status: g.status,
2154
+ autoGenerated: g.autoGenerated,
2155
+ updatedAt: g.updatedAt,
2156
+ ...g.startValue !== void 0 && { startValue: g.startValue },
2157
+ ...g.achievedAt != null && { achievedAt: g.achievedAt },
2158
+ ...g.achievedBy != null && { achievedBy: g.achievedBy },
2159
+ ...g.category != null && { category: g.category }
2160
+ }))
2151
2161
  });
2152
2162
  } catch (err) {
2153
2163
  }
@@ -2277,7 +2287,7 @@ function GoalsView() {
2277
2287
  dispatch({ type: "SET_GOAL_SCANNING", goalId, progress: "Starting scan..." });
2278
2288
  dispatch({ type: "ADD_ACTIVITY", message: `Scanning goal: ${goalSummary.description}...` });
2279
2289
  dispatch({ type: "SET_GOAL_SCANNING", goalId, progress: "Loading goal configuration..." });
2280
- const { checkFilesForGoalViolations } = await import("./goal-validator-DV6DRSGF.js");
2290
+ const { checkFilesForGoalViolations } = await import("./goal-validator-EM5XVWVC.js");
2281
2291
  const agentState = getProjectState(workDir);
2282
2292
  await agentState.load();
2283
2293
  const fullGoal = agentState.getAllGoals().find((g) => g.id === goalId);
@@ -2388,7 +2398,7 @@ function GoalsView() {
2388
2398
  const sourceLabel = goal.autoGenerated ? "AI" : "you";
2389
2399
  if (isScanning) {
2390
2400
  return /* @__PURE__ */ jsx9(Box8, { borderStyle: "round", borderColor: "cyan", paddingX: 1, children: /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
2391
- /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", overflow: "visible", children: [
2401
+ /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", children: [
2392
2402
  /* @__PURE__ */ jsx9(Text8, { bold: true, color: "cyan", children: "\u27F3 " }),
2393
2403
  /* @__PURE__ */ jsx9(Text8, { color: "cyan", bold: true, children: goal.description })
2394
2404
  ] }),
@@ -2397,7 +2407,7 @@ function GoalsView() {
2397
2407
  ] }) }, goal.id);
2398
2408
  }
2399
2409
  return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
2400
- /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", overflow: "visible", children: [
2410
+ /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", children: [
2401
2411
  isSelected ? /* @__PURE__ */ jsx9(Text8, { bold: true, color: "green", children: "> " }) : " ",
2402
2412
  goal.autoGenerated ? /* @__PURE__ */ jsx9(Text8, { color: "cyan", children: "\u25C7" }) : /* @__PURE__ */ jsx9(Text8, { color: "green", children: "\u25CB" }),
2403
2413
  " ",
@@ -2429,7 +2439,7 @@ function GoalsView() {
2429
2439
  /* @__PURE__ */ jsx9(Text8, { dimColor: true, children: " Achieved" }),
2430
2440
  achievedGoals.slice(0, 5).map((g) => {
2431
2441
  const byLabel = g.achievedBy === "agent" ? "AI" : "you";
2432
- return /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", overflow: "visible", children: [
2442
+ return /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", children: [
2433
2443
  " ",
2434
2444
  g.achievedBy === "agent" ? /* @__PURE__ */ jsx9(Text8, { color: "cyan", children: "\u25CF" }) : /* @__PURE__ */ jsx9(Text8, { color: "green", children: "\u25CF" }),
2435
2445
  " ",
@@ -2450,7 +2460,7 @@ function GoalsView() {
2450
2460
  otherGoals.length > 0 && /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", marginTop: 1, children: [
2451
2461
  /* @__PURE__ */ jsx9(Text8, { dimColor: true, children: " Other" }),
2452
2462
  otherGoals.slice(0, 2).map((g) => {
2453
- return /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", overflow: "visible", children: [
2463
+ return /* @__PURE__ */ jsxs8(Text8, { wrap: "wrap", children: [
2454
2464
  " ",
2455
2465
  /* @__PURE__ */ jsx9(Text8, { dimColor: true, children: "\u25CB" }),
2456
2466
  " ",
@@ -2475,7 +2485,6 @@ function HypothesesView() {
2475
2485
  const { stdout } = useStdout7();
2476
2486
  const cols = stdout?.columns || 80;
2477
2487
  const narrow = cols < 60;
2478
- const contentWidth = Math.max(20, cols - 4);
2479
2488
  const testing = hypothesesPanel.hypotheses.filter((h) => h.status === "testing");
2480
2489
  const validated = hypothesesPanel.hypotheses.filter((h) => h.status === "validated");
2481
2490
  const invalidated = hypothesesPanel.hypotheses.filter((h) => h.status === "invalidated");
@@ -2553,7 +2562,7 @@ function HypothesesView() {
2553
2562
  dispatch({ type: "SET_HYPOTHESIS_SCANNING", hypothesisId: hypoId, progress: "Gathering evidence..." });
2554
2563
  dispatch({ type: "ADD_ACTIVITY", message: `Testing hypothesis: ${hypo.statement}` });
2555
2564
  dispatch({ type: "SHOW_NOTIFICATION", message: `Gathering evidence for hypothesis...`, severity: "info", autoHideMs: 3e3 });
2556
- const { gatherEvidenceForHypothesis } = await import("./hypothesis-O72ZLVOW.js");
2565
+ const { gatherEvidenceForHypothesis } = await import("./hypothesis-4UPE7KXU.js");
2557
2566
  const evidence = await gatherEvidenceForHypothesis(hypoId, workDir, signal);
2558
2567
  scanAbortRef.current = null;
2559
2568
  dispatch({ type: "SET_HYPOTHESIS_SCANNING", hypothesisId: null, progress: "" });
@@ -5861,23 +5870,23 @@ var TrieFixTool = class {
5861
5870
  const pending = getPendingFixes();
5862
5871
  if (pending.length === 0) {
5863
5872
  return {
5864
- content: [{ type: "text", text: "No pending issues. Run trie_scan to detect new issues, or check memory with trie_memory action:recent." }]
5873
+ content: [{ type: "text", text: "No pending issues. Run trie watch to detect new issues, or check memory with trie_memory action:recent." }]
5865
5874
  };
5866
5875
  }
5867
5876
  const issues = pending.map((p) => ({
5868
5877
  id: p.id,
5869
5878
  severity: p.severity ?? "moderate",
5870
- effort: p.effort,
5871
5879
  issue: p.issue,
5872
5880
  fix: p.suggestedFix,
5873
5881
  file: p.file,
5874
5882
  line: p.line,
5875
5883
  confidence: p.confidence,
5876
5884
  autoFixable: p.autoFixable ?? false,
5877
- agent: "trie_scan",
5878
- cwe: p.cwe,
5879
- owasp: p.owasp,
5880
- category: p.category
5885
+ agent: "trie_fix",
5886
+ ...p.effort && { effort: p.effort },
5887
+ ...p.cwe && { cwe: p.cwe },
5888
+ ...p.owasp && { owasp: p.owasp },
5889
+ ...p.category && { category: p.category }
5881
5890
  }));
5882
5891
  const filtered = issueIds && issueIds.length > 0 ? issues.filter((i) => issueIds.includes(i.id)) : issues;
5883
5892
  const workDir = getWorkingDirectory(void 0, true);
@@ -6176,7 +6185,7 @@ trie_fix
6176
6185
 
6177
6186
  ## Workflow
6178
6187
 
6179
- 1. Run \`trie_scan\` to detect issues
6188
+ 1. Run \`trie watch\` to detect issues
6180
6189
  2. Review the issues found
6181
6190
  3. Run \`trie_fix\` to apply fixes
6182
6191
 
@@ -6197,7 +6206,7 @@ The AI will analyze each issue, generate the fix, and you can review before appl
6197
6206
  line: p.line,
6198
6207
  confidence: p.confidence,
6199
6208
  autoFixable: false,
6200
- agent: "trie_scan"
6209
+ agent: "trie_fix"
6201
6210
  }));
6202
6211
  const workDir = getWorkingDirectory(void 0, true);
6203
6212
  const config = await loadAutonomyConfig(workDir);
@@ -6229,14 +6238,14 @@ function getPendingFixes() {
6229
6238
  }
6230
6239
  async function loadPendingFixesFromMemory() {
6231
6240
  try {
6232
- const { getRecentIssues } = await import("./issue-store-4FPABLC6.js");
6241
+ const { getRecentIssues } = await import("./issue-store-C6XYENE5.js");
6233
6242
  pendingFixes.clear();
6234
6243
  const recentIssues = await getRecentIssues({ limit: 50, includeResolved: false });
6235
6244
  for (const storedIssue of recentIssues) {
6236
6245
  const fix = {
6237
6246
  id: storedIssue.id,
6238
6247
  file: storedIssue.file,
6239
- line: storedIssue.line || 0,
6248
+ line: storedIssue.line ?? 0,
6240
6249
  issue: storedIssue.issue,
6241
6250
  suggestedFix: storedIssue.fix,
6242
6251
  confidence: 0.8,
@@ -6244,8 +6253,7 @@ async function loadPendingFixesFromMemory() {
6244
6253
  status: "pending",
6245
6254
  severity: storedIssue.severity,
6246
6255
  autoFixable: true,
6247
- // Memory issues are generally auto-fixable
6248
- category: storedIssue.category
6256
+ ...storedIssue.category && { category: storedIssue.category }
6249
6257
  };
6250
6258
  pendingFixes.set(fix.id, fix);
6251
6259
  }
@@ -6319,11 +6327,12 @@ var TrieCloudFixTool = class {
6319
6327
  allIssues = await this.resolveIssues(args?.issueIds);
6320
6328
  }
6321
6329
  if (allIssues.length === 0) {
6322
- return this.text("No issues to dispatch. Run trie_scan to detect new issues, or check memory with trie_memory action:recent. For ad-hoc fixes, pass file, issue, and fix.");
6330
+ return this.text("No issues to dispatch. Run trie watch to detect new issues, or check memory with trie_memory action:recent. For ad-hoc fixes, pass file, issue, and fix.");
6323
6331
  }
6324
6332
  const isAdHocMode = args?.file && args?.issue && args?.fix;
6325
6333
  if (isAdHocMode) {
6326
- console.log(`Ad-hoc mode: dispatching single issue (${allIssues[0].file})`);
6334
+ const first = allIssues[0];
6335
+ console.log(`Ad-hoc mode: dispatching single issue (${first?.file ?? "unknown"})`);
6327
6336
  } else {
6328
6337
  console.log(`Memory mode: loaded ${allIssues.length} issue(s) from memory/scan`);
6329
6338
  }
@@ -6333,7 +6342,8 @@ var TrieCloudFixTool = class {
6333
6342
  if (isAdHocMode) {
6334
6343
  lines.push("FIX ROUTING PLAN (ad-hoc single incident mode)");
6335
6344
  lines.push("\u2500".repeat(68));
6336
- lines.push(` ${shortPath2(allIssues[0].file)}:${allIssues[0].line ?? "?"} \u2192 cloud-agent (single incident)`);
6345
+ const firstIssue = allIssues[0];
6346
+ lines.push(` ${shortPath2(firstIssue?.file ?? "")}:${firstIssue?.line ?? "?"} \u2192 cloud-agent (single incident)`);
6337
6347
  lines.push("");
6338
6348
  } else if (forceCloud) {
6339
6349
  lines.push("FIX ROUTING PLAN (forceCloud: bypassing triage)");
@@ -6531,7 +6541,7 @@ var TrieCloudFixTool = class {
6531
6541
  if (pending.length === 0) {
6532
6542
  try {
6533
6543
  console.log("Loading issues from memory...");
6534
- const { getRecentIssues } = await import("./issue-store-4FPABLC6.js");
6544
+ const { getRecentIssues } = await import("./issue-store-C6XYENE5.js");
6535
6545
  const recentIssues = await getRecentIssues({ limit: 50, includeResolved: false });
6536
6546
  console.log(`Found ${recentIssues.length} recent issues in memory`);
6537
6547
  const memoryIssues = recentIssues.map((storedIssue) => ({
@@ -6540,13 +6550,13 @@ var TrieCloudFixTool = class {
6540
6550
  issue: storedIssue.issue,
6541
6551
  fix: storedIssue.fix,
6542
6552
  file: storedIssue.file,
6543
- line: storedIssue.line,
6553
+ ...storedIssue.line !== void 0 && { line: storedIssue.line },
6544
6554
  confidence: 0.8,
6545
6555
  // Default confidence for memory issues
6546
6556
  autoFixable: true,
6547
6557
  // Memory issues are generally auto-fixable
6548
6558
  agent: storedIssue.agent,
6549
- category: storedIssue.category
6559
+ ...storedIssue.category && { category: storedIssue.category }
6550
6560
  }));
6551
6561
  console.log(`Converted ${memoryIssues.length} memory issues for cloud dispatch`);
6552
6562
  if (issueIds && issueIds.length > 0) {
@@ -6561,17 +6571,17 @@ var TrieCloudFixTool = class {
6561
6571
  const issues = pending.map((p) => ({
6562
6572
  id: p.id,
6563
6573
  severity: p.severity ?? "moderate",
6564
- effort: p.effort,
6565
6574
  issue: p.issue,
6566
6575
  fix: p.suggestedFix,
6567
6576
  file: p.file,
6568
6577
  line: p.line,
6569
6578
  confidence: p.confidence,
6570
6579
  autoFixable: p.autoFixable ?? false,
6571
- agent: "trie_scan",
6572
- cwe: p.cwe,
6573
- owasp: p.owasp,
6574
- category: p.category
6580
+ agent: "trie_fix",
6581
+ ...p.effort && { effort: p.effort },
6582
+ ...p.cwe && { cwe: p.cwe },
6583
+ ...p.owasp && { owasp: p.owasp },
6584
+ ...p.category && { category: p.category }
6575
6585
  }));
6576
6586
  if (issueIds && issueIds.length > 0) {
6577
6587
  return issues.filter((i) => issueIds.includes(i.id));
@@ -6971,7 +6981,7 @@ var TrieQueryContextTool = class {
6971
6981
  }
6972
6982
  if (includeIncidents) {
6973
6983
  try {
6974
- const { ContextGraph: ContextGraph2 } = await import("./graph-J4OGTYCO.js");
6984
+ const { ContextGraph: ContextGraph2 } = await import("./graph-26JPZ3DF.js");
6975
6985
  const graph = new ContextGraph2(workDir);
6976
6986
  const allNodes = await graph.listNodes();
6977
6987
  const incidentNodes = allNodes.filter((n) => n.type === "incident");
@@ -8236,7 +8246,7 @@ ${truncated}`;
8236
8246
  const goalId = input.goalId ? String(input.goalId).trim() : void 0;
8237
8247
  try {
8238
8248
  onProgress?.("Loading goals...");
8239
- const { getActiveGoals } = await import("./goal-validator-DV6DRSGF.js");
8249
+ const { getActiveGoals } = await import("./goal-validator-EM5XVWVC.js");
8240
8250
  const agentState = getProjectState(directory);
8241
8251
  await agentState.load();
8242
8252
  const allGoals = await getActiveGoals(directory);
@@ -8245,7 +8255,7 @@ ${truncated}`;
8245
8255
  return goalId ? `No active goal found with ID: ${goalId}` : "No active goals to check. Add goals in the Goals view first.";
8246
8256
  }
8247
8257
  onProgress?.("Scanning codebase for violations...");
8248
- const { analyzeFilesRapidly } = await import("./fast-analyzer-CTT3MCPE.js");
8258
+ const { analyzeFilesRapidly } = await import("./fast-analyzer-FMU3X4AZ.js");
8249
8259
  const analysisOptions = {
8250
8260
  maxFiles: 50,
8251
8261
  enableSmartBatching: true
@@ -8259,7 +8269,7 @@ ${truncated}`;
8259
8269
  const cacheInfo2 = analysisResult.cacheHitRatio > 0 ? ` (${Math.round(analysisResult.cacheHitRatio * 100)}% cache hit, ${analysisResult.timeMs}ms)` : ` (${analysisResult.timeMs}ms)`;
8260
8270
  return `\u2713 Scan complete! No violations found for ${goalsToCheck.length} goal(s).${cacheInfo2}`;
8261
8271
  }
8262
- const { storeIssues } = await import("./issue-store-4FPABLC6.js");
8272
+ const { storeIssues } = await import("./issue-store-C6XYENE5.js");
8263
8273
  const { basename } = await import("path");
8264
8274
  const issuesToStore = violations.map((v, i) => ({
8265
8275
  id: `goal-violation-${Date.now()}-${i}`,
@@ -8338,7 +8348,7 @@ ${truncated}`;
8338
8348
  }
8339
8349
  try {
8340
8350
  onProgress?.("Gathering evidence for hypothesis...");
8341
- const { gatherEvidenceForHypothesis } = await import("./hypothesis-O72ZLVOW.js");
8351
+ const { gatherEvidenceForHypothesis } = await import("./hypothesis-4UPE7KXU.js");
8342
8352
  const evidence = await gatherEvidenceForHypothesis(hypothesisId, directory);
8343
8353
  if (evidence.length === 0) {
8344
8354
  return `No evidence found for this hypothesis yet. The codebase may not have enough data to validate it \u2014 try running trie_scan_for_goal_violations first to populate issues, or add more context.`;
@@ -8602,7 +8612,7 @@ function ChatView() {
8602
8612
  const saveChat = async () => {
8603
8613
  try {
8604
8614
  const workDir = getWorkingDirectory(void 0, true);
8605
- const { getChatStore: getChatStore2 } = await import("./chat-store-OJLJCJFI.js");
8615
+ const { getChatStore: getChatStore2 } = await import("./chat-store-HMTDL7I2.js");
8606
8616
  const store = getChatStore2(workDir);
8607
8617
  const sessionId = await store.saveSession(
8608
8618
  messages,
@@ -8802,10 +8812,18 @@ ${contextBlock}`;
8802
8812
  const goals = agentState.getAllGoals();
8803
8813
  dispatch({
8804
8814
  type: "SET_GOALS",
8805
- goals: goals.map((g) => {
8806
- const base = { id: g.id, description: g.description, type: g.type, target: g.target, currentValue: g.currentValue, startValue: g.startValue, status: g.status, autoGenerated: g.autoGenerated, updatedAt: g.updatedAt, ...g.category != null ? { category: g.category } : {} };
8807
- return base;
8808
- })
8815
+ goals: goals.map((g) => ({
8816
+ id: g.id,
8817
+ description: g.description,
8818
+ type: g.type,
8819
+ target: g.target,
8820
+ currentValue: g.currentValue,
8821
+ status: g.status,
8822
+ autoGenerated: g.autoGenerated,
8823
+ updatedAt: g.updatedAt,
8824
+ ...g.startValue !== void 0 && { startValue: g.startValue },
8825
+ ...g.category != null && { category: g.category }
8826
+ }))
8809
8827
  });
8810
8828
  }
8811
8829
  if (toolNames.has("trie_add_hypothesis") || toolNames.has("trie_test_hypothesis")) {
@@ -9229,7 +9247,7 @@ import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
9229
9247
  var MAIN_VIEWS = ["overview", "memory", "goals", "hypotheses", "agent", "chat"];
9230
9248
  async function applyGoalFix(fix, dispatch) {
9231
9249
  try {
9232
- const { runAIAnalysis, isAIAvailable: isAIAvailable2 } = await import("./client-INNE2GGZ.js");
9250
+ const { runAIAnalysis, isAIAvailable: isAIAvailable2 } = await import("./client-5L64D5SQ.js");
9233
9251
  if (!isAIAvailable2()) {
9234
9252
  dispatch({ type: "DISMISS_FIX", id: fix.id });
9235
9253
  getOutputManager().nudge("AI not available for fix", "warning");
@@ -9264,7 +9282,7 @@ ${content}
9264
9282
  fixedContent = fixedContent.replace(/^```\w*\n?/, "").replace(/\n?```$/, "");
9265
9283
  }
9266
9284
  await writeFile2(fullPath, fixedContent, "utf-8");
9267
- const { recordGoalViolationFixed, getActiveGoals } = await import("./goal-validator-DV6DRSGF.js");
9285
+ const { recordGoalViolationFixed, getActiveGoals } = await import("./goal-validator-EM5XVWVC.js");
9268
9286
  const goals = await getActiveGoals(projectPath);
9269
9287
  const matchedGoal = goals.find((g) => g.description === fix.goalDescription);
9270
9288
  if (matchedGoal) {
@@ -9302,7 +9320,7 @@ function DashboardApp({ onReady }) {
9302
9320
  const workDir = getWorkingDirectory(void 0, true);
9303
9321
  await mkdir2(getTrieDirectory(workDir), { recursive: true });
9304
9322
  await writeFile2(configPath, JSON.stringify(stateRef.current.agentConfig, null, 2), "utf-8");
9305
- const { saveAutonomyConfig: saveAutonomyConfig2, loadAutonomyConfig: loadAutonomyConfig2 } = await import("./autonomy-config-ZCOSTMPD.js");
9323
+ const { saveAutonomyConfig: saveAutonomyConfig2, loadAutonomyConfig: loadAutonomyConfig2 } = await import("./autonomy-config-3APNC6QF.js");
9306
9324
  const autonomy = await loadAutonomyConfig2(workDir);
9307
9325
  autonomy.aiWatcher = stateRef.current.agentConfig.aiWatcher;
9308
9326
  await saveAutonomyConfig2(workDir, autonomy);
@@ -9343,10 +9361,20 @@ function DashboardApp({ onReady }) {
9343
9361
  const goals = agentState.getAllGoals();
9344
9362
  dispatchRef.current({
9345
9363
  type: "SET_GOALS",
9346
- goals: goals.map((g) => {
9347
- const base = { id: g.id, description: g.description, type: g.type, target: g.target, currentValue: g.currentValue, startValue: g.startValue, status: g.status, autoGenerated: g.autoGenerated, updatedAt: g.updatedAt, ...g.achievedAt != null ? { achievedAt: g.achievedAt } : {}, ...g.achievedBy != null ? { achievedBy: g.achievedBy } : {}, ...g.category != null ? { category: g.category } : {} };
9348
- return base;
9349
- })
9364
+ goals: goals.map((g) => ({
9365
+ id: g.id,
9366
+ description: g.description,
9367
+ type: g.type,
9368
+ target: g.target,
9369
+ currentValue: g.currentValue,
9370
+ status: g.status,
9371
+ autoGenerated: g.autoGenerated,
9372
+ updatedAt: g.updatedAt,
9373
+ ...g.startValue !== void 0 && { startValue: g.startValue },
9374
+ ...g.achievedAt != null && { achievedAt: g.achievedAt },
9375
+ ...g.achievedBy != null && { achievedBy: g.achievedBy },
9376
+ ...g.category != null && { category: g.category }
9377
+ }))
9350
9378
  });
9351
9379
  } catch {
9352
9380
  }
@@ -9370,7 +9398,7 @@ function DashboardApp({ onReady }) {
9370
9398
  const loadPersistedNudges = useCallback7(async () => {
9371
9399
  try {
9372
9400
  const workDir = getWorkingDirectory(void 0, true);
9373
- const { getStorage: getStorage2 } = await import("./tiered-storage-VZL7KK64.js");
9401
+ const { getStorage: getStorage2 } = await import("./tiered-storage-P6Z3NV2Q.js");
9374
9402
  const storage = getStorage2(workDir);
9375
9403
  await storage.initialize();
9376
9404
  const nudges = await storage.queryNudges({ resolved: false, limit: 50 });
@@ -9649,4 +9677,4 @@ export {
9649
9677
  GitHubBranchesTool,
9650
9678
  InteractiveDashboard
9651
9679
  };
9652
- //# sourceMappingURL=chunk-HYNDXZAU.js.map
9680
+ //# sourceMappingURL=chunk-SU3WCAC4.js.map