@triedotdev/mcp 1.0.148 → 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 (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +225 -78
  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-N2EDZTKG.js → chunk-4UDBGYI3.js} +13 -13
  9. package/dist/{chunk-XTTZAQWJ.js → chunk-74R4XSFB.js} +5 -5
  10. package/dist/{chunk-T6PS3MXJ.js → chunk-7HYOJ4Q7.js} +8 -8
  11. package/dist/{chunk-T6PS3MXJ.js.map → chunk-7HYOJ4Q7.js.map} +1 -1
  12. package/dist/{chunk-3MUCUZ46.js → chunk-ABY2R7OK.js} +3 -3
  13. package/dist/chunk-ED7PLRQA.js +782 -0
  14. package/dist/chunk-ED7PLRQA.js.map +1 -0
  15. package/dist/{chunk-4MJ52WBH.js → chunk-EFWVF6TI.js} +4 -2
  16. package/dist/chunk-EFWVF6TI.js.map +1 -0
  17. package/dist/{chunk-23RJT5WT.js → chunk-F7BMFOZ6.js} +2 -2
  18. package/dist/{chunk-4PAAGLKO.js → chunk-G7Q23IGF.js} +36 -9
  19. package/dist/{chunk-4PAAGLKO.js.map → chunk-G7Q23IGF.js.map} +1 -1
  20. package/dist/{chunk-LT6VUZG2.js → chunk-GLY76TSI.js} +3 -3
  21. package/dist/{chunk-WMDFK7LI.js → chunk-IFBEAOHH.js} +5 -5
  22. package/dist/{chunk-YEIJW6X6.js → chunk-JIS2OCZR.js} +4 -4
  23. package/dist/{chunk-FG467PDD.js → chunk-LNUMECBJ.js} +2 -2
  24. package/dist/{chunk-FPEMP54L.js → chunk-OJXFQRUE.js} +2 -2
  25. package/dist/{chunk-5KJ4UJOY.js → chunk-QQG42HCI.js} +2 -2
  26. package/dist/{chunk-7OJ6JIPL.js → chunk-REHKDCI6.js} +7 -150
  27. package/dist/chunk-REHKDCI6.js.map +1 -0
  28. package/dist/{chunk-J7CEBSEB.js → chunk-SU3WCAC4.js} +102 -163
  29. package/dist/chunk-SU3WCAC4.js.map +1 -0
  30. package/dist/{chunk-4C67GV3O.js → chunk-TCNCNWGV.js} +2 -2
  31. package/dist/{chunk-NKHO34UZ.js → chunk-TU7D5DEW.js} +2 -2
  32. package/dist/{chunk-62POBLFC.js → chunk-TWPX6PHF.js} +453 -986
  33. package/dist/chunk-TWPX6PHF.js.map +1 -0
  34. package/dist/{chunk-FH335WL5.js → chunk-TWQPOVRA.js} +2 -2
  35. package/dist/{chunk-YOJGSRZK.js → chunk-V3O7C2LY.js} +2 -2
  36. package/dist/{chunk-V7AY2EJO.js → chunk-WOTLY5NA.js} +2 -2
  37. package/dist/cli/create-agent.js +8 -40
  38. package/dist/cli/create-agent.js.map +1 -1
  39. package/dist/cli/main.js +121 -164
  40. package/dist/cli/main.js.map +1 -1
  41. package/dist/cli/yolo-daemon.js +31 -155
  42. package/dist/cli/yolo-daemon.js.map +1 -1
  43. package/dist/{client-INNE2GGZ.js → client-5L64D5SQ.js} +3 -3
  44. package/dist/{codebase-index-FMIULFZQ.js → codebase-index-OOE7OAHP.js} +3 -3
  45. package/dist/{fast-analyzer-MWKCDRGD.js → fast-analyzer-FMU3X4AZ.js} +5 -5
  46. package/dist/github-ingester-C66ZRUYC.js +11 -0
  47. package/dist/{goal-manager-ZBWKWEML.js → goal-manager-VTBFFYN4.js} +8 -7
  48. package/dist/{goal-validator-DA3JQ6JN.js → goal-validator-EM5XVWVC.js} +7 -6
  49. package/dist/{graph-J4OGTYCO.js → graph-26JPZ3DF.js} +3 -3
  50. package/dist/{hypothesis-JCUMZKTG.js → hypothesis-4UPE7KXU.js} +8 -7
  51. package/dist/{incident-index-BWW2UEY7.js → incident-index-H6APJ4S3.js} +3 -3
  52. package/dist/index.js +116 -397
  53. package/dist/index.js.map +1 -1
  54. package/dist/{insight-store-A5XXMFD6.js → insight-store-QEEUQR5L.js} +4 -4
  55. package/dist/{issue-store-LZWZIGM7.js → issue-store-C6XYENE5.js} +7 -4
  56. package/dist/ledger-VNA4DX3Z.js +51 -0
  57. package/dist/linear-ingester-WIUBWF55.js +11 -0
  58. package/dist/{tiered-storage-VZL7KK64.js → tiered-storage-P6Z3NV2Q.js} +3 -3
  59. package/dist/trie-agent-GJJJCL6P.js +27 -0
  60. package/dist/trie-agent-GJJJCL6P.js.map +1 -0
  61. package/package.json +8 -6
  62. package/dist/chunk-4MJ52WBH.js.map +0 -1
  63. package/dist/chunk-62POBLFC.js.map +0 -1
  64. package/dist/chunk-7OJ6JIPL.js.map +0 -1
  65. package/dist/chunk-G76DYVGX.js +0 -136
  66. package/dist/chunk-G76DYVGX.js.map +0 -1
  67. package/dist/chunk-J7CEBSEB.js.map +0 -1
  68. package/dist/comprehension-46F7ZNKL.js +0 -821
  69. package/dist/comprehension-46F7ZNKL.js.map +0 -1
  70. package/dist/github-ingester-J2ZFYXVE.js +0 -11
  71. package/dist/linear-ingester-JRDQAIAA.js +0 -11
  72. package/dist/trie-agent-6A7YBNTQ.js +0 -26
  73. package/dist/workers/agent-worker.d.ts +0 -2
  74. package/dist/workers/agent-worker.js +0 -28
  75. package/dist/workers/agent-worker.js.map +0 -1
  76. /package/dist/{autonomy-config-ZCOSTMPD.js.map → autonomy-config-3APNC6QF.js.map} +0 -0
  77. /package/dist/{chat-store-OJLJCJFI.js.map → chat-store-HMTDL7I2.js.map} +0 -0
  78. /package/dist/{chunk-LD7ZEFNY.js.map → chunk-3KZBC3RJ.js.map} +0 -0
  79. /package/dist/{chunk-N2EDZTKG.js.map → chunk-4UDBGYI3.js.map} +0 -0
  80. /package/dist/{chunk-XTTZAQWJ.js.map → chunk-74R4XSFB.js.map} +0 -0
  81. /package/dist/{chunk-3MUCUZ46.js.map → chunk-ABY2R7OK.js.map} +0 -0
  82. /package/dist/{chunk-23RJT5WT.js.map → chunk-F7BMFOZ6.js.map} +0 -0
  83. /package/dist/{chunk-LT6VUZG2.js.map → chunk-GLY76TSI.js.map} +0 -0
  84. /package/dist/{chunk-WMDFK7LI.js.map → chunk-IFBEAOHH.js.map} +0 -0
  85. /package/dist/{chunk-YEIJW6X6.js.map → chunk-JIS2OCZR.js.map} +0 -0
  86. /package/dist/{chunk-FG467PDD.js.map → chunk-LNUMECBJ.js.map} +0 -0
  87. /package/dist/{chunk-FPEMP54L.js.map → chunk-OJXFQRUE.js.map} +0 -0
  88. /package/dist/{chunk-5KJ4UJOY.js.map → chunk-QQG42HCI.js.map} +0 -0
  89. /package/dist/{chunk-4C67GV3O.js.map → chunk-TCNCNWGV.js.map} +0 -0
  90. /package/dist/{chunk-NKHO34UZ.js.map → chunk-TU7D5DEW.js.map} +0 -0
  91. /package/dist/{chunk-FH335WL5.js.map → chunk-TWQPOVRA.js.map} +0 -0
  92. /package/dist/{chunk-YOJGSRZK.js.map → chunk-V3O7C2LY.js.map} +0 -0
  93. /package/dist/{chunk-V7AY2EJO.js.map → chunk-WOTLY5NA.js.map} +0 -0
  94. /package/dist/{client-INNE2GGZ.js.map → client-5L64D5SQ.js.map} +0 -0
  95. /package/dist/{codebase-index-FMIULFZQ.js.map → codebase-index-OOE7OAHP.js.map} +0 -0
  96. /package/dist/{fast-analyzer-MWKCDRGD.js.map → fast-analyzer-FMU3X4AZ.js.map} +0 -0
  97. /package/dist/{github-ingester-J2ZFYXVE.js.map → github-ingester-C66ZRUYC.js.map} +0 -0
  98. /package/dist/{goal-manager-ZBWKWEML.js.map → goal-manager-VTBFFYN4.js.map} +0 -0
  99. /package/dist/{goal-validator-DA3JQ6JN.js.map → goal-validator-EM5XVWVC.js.map} +0 -0
  100. /package/dist/{graph-J4OGTYCO.js.map → graph-26JPZ3DF.js.map} +0 -0
  101. /package/dist/{hypothesis-JCUMZKTG.js.map → hypothesis-4UPE7KXU.js.map} +0 -0
  102. /package/dist/{incident-index-BWW2UEY7.js.map → incident-index-H6APJ4S3.js.map} +0 -0
  103. /package/dist/{insight-store-A5XXMFD6.js.map → insight-store-QEEUQR5L.js.map} +0 -0
  104. /package/dist/{issue-store-LZWZIGM7.js.map → issue-store-C6XYENE5.js.map} +0 -0
  105. /package/dist/{linear-ingester-JRDQAIAA.js.map → ledger-VNA4DX3Z.js.map} +0 -0
  106. /package/dist/{tiered-storage-VZL7KK64.js.map → linear-ingester-WIUBWF55.js.map} +0 -0
  107. /package/dist/{trie-agent-6A7YBNTQ.js.map → tiered-storage-P6Z3NV2Q.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  GitHubIngester
4
- } from "./chunk-YOJGSRZK.js";
4
+ } from "./chunk-V3O7C2LY.js";
5
5
  import {
6
6
  CodebaseIndex
7
- } from "./chunk-V7AY2EJO.js";
7
+ } from "./chunk-WOTLY5NA.js";
8
8
  import {
9
9
  appendToSection,
10
10
  completeBootstrap,
@@ -22,10 +22,10 @@ import {
22
22
  needsBootstrap,
23
23
  projectInfoExists,
24
24
  updateProjectSection
25
- } from "./chunk-7OJ6JIPL.js";
25
+ } from "./chunk-REHKDCI6.js";
26
26
  import {
27
27
  LinearIngester
28
- } from "./chunk-LD7ZEFNY.js";
28
+ } from "./chunk-3KZBC3RJ.js";
29
29
  import {
30
30
  ExtractionPipeline,
31
31
  GitHubBranchesTool,
@@ -43,76 +43,74 @@ import {
43
43
  TrieGetRelatedGovernanceTool,
44
44
  TriePipelineTool,
45
45
  TrieQueryContextTool,
46
- TrieScanTool,
47
46
  TrieTellTool,
48
47
  getPrompt,
49
48
  getSystemPrompt,
50
49
  handleCheckpointTool
51
- } from "./chunk-J7CEBSEB.js";
52
- import "./chunk-23RJT5WT.js";
53
- import "./chunk-N2EDZTKG.js";
50
+ } from "./chunk-SU3WCAC4.js";
51
+ import "./chunk-F7BMFOZ6.js";
52
+ import "./chunk-4UDBGYI3.js";
54
53
  import {
55
54
  getOutputManager
56
55
  } from "./chunk-TIMIKBY2.js";
57
- import "./chunk-YEIJW6X6.js";
58
- import "./chunk-XTTZAQWJ.js";
59
- import "./chunk-3MUCUZ46.js";
56
+ import "./chunk-JIS2OCZR.js";
57
+ import "./chunk-74R4XSFB.js";
58
+ import "./chunk-ABY2R7OK.js";
60
59
  import {
61
60
  exportToJson,
62
61
  formatFriendlyError,
63
62
  importFromJson,
64
63
  isTrieInitialized
65
- } from "./chunk-4PAAGLKO.js";
64
+ } from "./chunk-G7Q23IGF.js";
66
65
  import {
67
66
  loadConfig
68
- } from "./chunk-NKHO34UZ.js";
69
- import "./chunk-4C67GV3O.js";
67
+ } from "./chunk-TU7D5DEW.js";
68
+ import "./chunk-TCNCNWGV.js";
70
69
  import "./chunk-ZV2K6M7T.js";
71
70
  import {
72
71
  findCrossProjectPatterns,
73
72
  getGlobalMemoryStats,
74
73
  listTrackedProjects,
75
74
  searchGlobalPatterns
76
- } from "./chunk-WMDFK7LI.js";
75
+ } from "./chunk-IFBEAOHH.js";
77
76
  import {
78
77
  ContextGraph
79
- } from "./chunk-FH335WL5.js";
80
- import "./chunk-T6PS3MXJ.js";
78
+ } from "./chunk-TWQPOVRA.js";
79
+ import "./chunk-7HYOJ4Q7.js";
81
80
  import {
82
81
  isAIAvailable,
83
82
  runAIAnalysis
84
- } from "./chunk-FPEMP54L.js";
85
- import "./chunk-LT6VUZG2.js";
83
+ } from "./chunk-OJXFQRUE.js";
84
+ import "./chunk-GLY76TSI.js";
86
85
  import "./chunk-F4NJ4CBP.js";
87
86
  import "./chunk-IXO4G4D3.js";
88
87
  import "./chunk-6NLHFIYA.js";
89
88
  import {
90
89
  getStorage
91
- } from "./chunk-FG467PDD.js";
92
- import {
93
- getSkillRegistry
94
- } from "./chunk-G76DYVGX.js";
90
+ } from "./chunk-LNUMECBJ.js";
95
91
  import {
96
92
  getAutonomyConfig
97
- } from "./chunk-5KJ4UJOY.js";
93
+ } from "./chunk-QQG42HCI.js";
98
94
  import {
99
95
  findSimilarIssues,
100
- getChangedFilesSinceTimestamp,
101
- getGitChangedFiles,
102
96
  getMemoryStats,
103
97
  getRecentIssues,
104
98
  markIssueResolved,
105
99
  purgeIssues,
106
- runShellCommandSync,
107
100
  searchIssues,
108
101
  storeIssues
109
- } from "./chunk-62POBLFC.js";
110
- import "./chunk-4MJ52WBH.js";
102
+ } from "./chunk-ED7PLRQA.js";
103
+ import "./chunk-EFWVF6TI.js";
104
+ import {
105
+ getChangedFilesSinceTimestamp,
106
+ getGitChangedFiles,
107
+ runShellCommandSync
108
+ } from "./chunk-TWPX6PHF.js";
111
109
  import "./chunk-43X6JBEM.js";
112
110
  import {
113
111
  getTrieDirectory,
114
112
  getWorkingDirectory
115
- } from "./chunk-SH7H3WRU.js";
113
+ } from "./chunk-4TQQP7JD.js";
116
114
  import {
117
115
  isInteractiveMode
118
116
  } from "./chunk-APMV77PU.js";
@@ -1277,7 +1275,7 @@ ${f.content.slice(0, 1e3)}`
1277
1275
  async checkAndGenerateHypotheses(projectPath) {
1278
1276
  if (!isAIAvailable()) return;
1279
1277
  try {
1280
- const { getHypothesisEngine } = await import("./hypothesis-JCUMZKTG.js");
1278
+ const { getHypothesisEngine } = await import("./hypothesis-4UPE7KXU.js");
1281
1279
  const { getOutputManager: getOutputManager2 } = await import("./output-manager-DZO5LGSG.js");
1282
1280
  const hypothesisEngine = getHypothesisEngine(projectPath);
1283
1281
  const recentIssues = Array.from(this.state.issueCache.values()).flat();
@@ -1344,8 +1342,8 @@ ${f.content.slice(0, 1e3)}`
1344
1342
  const totalIssues = Array.from(this.state.issueCache.values()).flat().length;
1345
1343
  if (totalIssues < 5) return;
1346
1344
  try {
1347
- const { ContextGraph: ContextGraph2 } = await import("./graph-J4OGTYCO.js");
1348
- const { IncidentIndex } = await import("./incident-index-BWW2UEY7.js");
1345
+ const { ContextGraph: ContextGraph2 } = await import("./graph-26JPZ3DF.js");
1346
+ const { IncidentIndex } = await import("./incident-index-H6APJ4S3.js");
1349
1347
  const { TriePatternDiscovery } = await import("./pattern-discovery-F7LU5K6E.js");
1350
1348
  const graph = new ContextGraph2(projectPath);
1351
1349
  const incidentIndex = await IncidentIndex.build(graph, projectPath);
@@ -1487,7 +1485,7 @@ ${f.content.slice(0, 1e3)}`
1487
1485
  if (remaining < 500) return;
1488
1486
  try {
1489
1487
  const graph = new ContextGraph(projectPath);
1490
- const { getActiveGoals, recordGoalViolationCaught } = await import("./goal-validator-DA3JQ6JN.js");
1488
+ const { getActiveGoals, recordGoalViolationCaught } = await import("./goal-validator-EM5XVWVC.js");
1491
1489
  console.debug("[AI Watcher] Loading active goals...");
1492
1490
  const activeGoals = await getActiveGoals(projectPath);
1493
1491
  const hasGoals = activeGoals.length > 0;
@@ -1739,7 +1737,7 @@ ${filesBlock}`,
1739
1737
  const projectPath = this.watchedDirectory || getWorkingDirectory(void 0, true);
1740
1738
  console.debug("[Initial Hypothesis] Starting initial hypothesis generation", { projectPath });
1741
1739
  try {
1742
- const { getHypothesisEngine } = await import("./hypothesis-JCUMZKTG.js");
1740
+ const { getHypothesisEngine } = await import("./hypothesis-4UPE7KXU.js");
1743
1741
  const hypothesisEngine = getHypothesisEngine(projectPath);
1744
1742
  console.debug("[Initial Hypothesis] Running AI-powered hypothesis generation...");
1745
1743
  const generated = await hypothesisEngine.generateHypothesesWithAI({
@@ -1797,7 +1795,7 @@ ${filesBlock}`,
1797
1795
  const projectPath = this.watchedDirectory || getWorkingDirectory(void 0, true);
1798
1796
  console.debug("[Initial Scan] Starting initial goal compliance scan", { projectPath });
1799
1797
  try {
1800
- const { getActiveGoals, recordGoalViolationCaught } = await import("./goal-validator-DA3JQ6JN.js");
1798
+ const { getActiveGoals, recordGoalViolationCaught } = await import("./goal-validator-EM5XVWVC.js");
1801
1799
  const activeGoals = await getActiveGoals(projectPath);
1802
1800
  console.debug("[Initial Scan] Loaded goals for initial scan:", {
1803
1801
  goalCount: activeGoals.length,
@@ -1960,7 +1958,7 @@ ${filesBlock}`,
1960
1958
  const graph = new ContextGraph(projectPath);
1961
1959
  if (hasLinear) {
1962
1960
  try {
1963
- const { LinearIngester: LinearIngester2 } = await import("./linear-ingester-JRDQAIAA.js");
1961
+ const { LinearIngester: LinearIngester2 } = await import("./linear-ingester-WIUBWF55.js");
1964
1962
  const ingester = new LinearIngester2(projectPath, graph);
1965
1963
  await ingester.syncTickets();
1966
1964
  if (!isInteractiveMode()) {
@@ -1974,7 +1972,7 @@ ${filesBlock}`,
1974
1972
  }
1975
1973
  if (hasGithub) {
1976
1974
  try {
1977
- const { GitHubIngester: GitHubIngester2 } = await import("./github-ingester-J2ZFYXVE.js");
1975
+ const { GitHubIngester: GitHubIngester2 } = await import("./github-ingester-C66ZRUYC.js");
1978
1976
  const ingester = new GitHubIngester2(graph);
1979
1977
  const token = await ingester.getApiToken();
1980
1978
  const repoInfo = ingester.getRepoInfo(projectPath);
@@ -2074,7 +2072,7 @@ Use \`trie_watch start\` to begin autonomous scanning.`
2074
2072
  ).join("\n");
2075
2073
  let agencyStatus = "";
2076
2074
  try {
2077
- const { getTrieAgent } = await import("./trie-agent-6A7YBNTQ.js");
2075
+ const { getTrieAgent } = await import("./trie-agent-GJJJCL6P.js");
2078
2076
  const trieAgent = getTrieAgent(this.watchedDirectory || getWorkingDirectory(void 0, true));
2079
2077
  await trieAgent.initialize();
2080
2078
  const status = await trieAgent.getAgencyStatus();
@@ -2183,7 +2181,7 @@ ${recentNudges || "(none)"}
2183
2181
  Total issues: ${this.state.totalIssuesFound}
2184
2182
  Files scanned: ${this.state.filesScanned}
2185
2183
 
2186
- To get a full report, run \`trie_scan\` on your codebase.`
2184
+ To get a full report, run \`trie watch\` on your codebase.`
2187
2185
  }]
2188
2186
  };
2189
2187
  }
@@ -2193,37 +2191,25 @@ To get a full report, run \`trie_scan\` on your codebase.`
2193
2191
  import { readFile as readFile3 } from "fs/promises";
2194
2192
  import { existsSync as existsSync3 } from "fs";
2195
2193
  import { join as join3, basename as basename3, resolve as resolve2, isAbsolute as isAbsolute2 } from "path";
2196
-
2197
- // src/skills/built-in/super-reviewer.ts
2198
- var CRITICAL_REVIEW_CHECKLIST = {
2199
- stateAndLifecycle: [
2200
- "Uninitialized state accessed before setup",
2201
- "Missing cleanup on unmount/dispose",
2202
- "State mutations in wrong lifecycle phase"
2203
- ],
2204
- edgeCasesAndRaces: [
2205
- "Race conditions in async operations",
2206
- "Missing error handling for edge cases",
2207
- "Unhandled promise rejections"
2208
- ],
2209
- missingPieces: [
2210
- "Missing input validation",
2211
- "Missing error handling",
2212
- "Missing logging/monitoring"
2213
- ]
2214
- };
2215
- var SuperReviewerAgent = class {
2216
- async review(_files) {
2217
- return { issues: [] };
2218
- }
2219
- async buildReviewWorkflow(files, context) {
2220
- return { files, context };
2221
- }
2222
- };
2223
-
2224
- // src/tools/pr-review.ts
2225
2194
  var TriePRReviewTool = class {
2226
- agent = new SuperReviewerAgent();
2195
+ // Review workflow is now ledger-driven; keep a lightweight built-in checklist.
2196
+ CRITICAL_REVIEW_CHECKLIST = {
2197
+ stateAndLifecycle: [
2198
+ "Uninitialized state accessed before setup",
2199
+ "Missing cleanup on unmount/dispose",
2200
+ "State mutations in wrong lifecycle phase"
2201
+ ],
2202
+ edgeCasesAndRaces: [
2203
+ "Race conditions in async operations",
2204
+ "Missing error handling for edge cases",
2205
+ "Unhandled promise rejections"
2206
+ ],
2207
+ missingPieces: [
2208
+ "Missing input validation",
2209
+ "Missing error handling",
2210
+ "Missing logging/monitoring"
2211
+ ]
2212
+ };
2227
2213
  exec(command, cwd, maxBuffer) {
2228
2214
  const opts = {
2229
2215
  captureOutput: false,
@@ -2271,18 +2257,15 @@ Usage:
2271
2257
  };
2272
2258
  }
2273
2259
  const designDocs = await this.findDesignDocs(changes.files, prInfo);
2274
- const workflow = await this.agent.buildReviewWorkflow(
2275
- changes.files,
2276
- {
2277
- prNumber: prInfo.number,
2278
- prTitle: prInfo.title,
2279
- prAuthor: prInfo.author,
2280
- baseBranch: prInfo.baseBranch,
2281
- headBranch: prInfo.headBranch,
2282
- mode: mode || "own",
2283
- designDocs
2284
- }
2285
- );
2260
+ const workflow = this.buildReviewWorkflow(changes.files, {
2261
+ ...prInfo.number ? { prNumber: prInfo.number } : {},
2262
+ ...prInfo.title ? { prTitle: prInfo.title } : {},
2263
+ ...prInfo.author ? { prAuthor: prInfo.author } : {},
2264
+ ...prInfo.baseBranch ? { baseBranch: prInfo.baseBranch } : {},
2265
+ ...prInfo.headBranch ? { headBranch: prInfo.headBranch } : {},
2266
+ mode: mode || "own",
2267
+ designDocs
2268
+ });
2286
2269
  const fileContents = await this.preloadFiles(changes.files.map((f) => f.path));
2287
2270
  const reviewPrompt = this.generateReviewPrompt(workflow, changes, fileContents);
2288
2271
  return {
@@ -2421,6 +2404,36 @@ Usage:
2421
2404
  }
2422
2405
  return files;
2423
2406
  }
2407
+ buildReviewWorkflow(files, context) {
2408
+ const totalAdditions = files.reduce((sum, f) => sum + (f.additions || 0), 0);
2409
+ const totalDeletions = files.reduce((sum, f) => sum + (f.deletions || 0), 0);
2410
+ const reviewMode = context.mode === "others" ? "others" : "own";
2411
+ const reviewInstructions = {
2412
+ mode: reviewMode,
2413
+ description: reviewMode === "own" ? "Your PR \u2014 focus on footguns, missing tests, and production risks." : "Someone else's PR \u2014 focus on correctness, clarity, and maintainability."
2414
+ };
2415
+ const sorted = [...files].sort((a, b) => a.path.localeCompare(b.path));
2416
+ const fileOrder = sorted.map((f, i) => ({
2417
+ index: i + 1,
2418
+ path: f.path,
2419
+ reason: i === 0 ? "Start here to establish baseline context" : "Proceed in filename order"
2420
+ }));
2421
+ return {
2422
+ metadata: {
2423
+ ...context.prNumber ? { prNumber: context.prNumber } : {},
2424
+ prTitle: context.prTitle || "PR Review",
2425
+ prAuthor: context.prAuthor || "unknown",
2426
+ baseBranch: context.baseBranch || "unknown",
2427
+ headBranch: context.headBranch || "unknown",
2428
+ totalFiles: files.length,
2429
+ totalAdditions,
2430
+ totalDeletions,
2431
+ designDocs: context.designDocs
2432
+ },
2433
+ fileOrder,
2434
+ reviewInstructions
2435
+ };
2436
+ }
2424
2437
  /**
2425
2438
  * Find related design docs
2426
2439
  */
@@ -2536,21 +2549,21 @@ Usage:
2536
2549
  `;
2537
2550
  prompt += `**State & Lifecycle:**
2538
2551
  `;
2539
- for (const check of CRITICAL_REVIEW_CHECKLIST.stateAndLifecycle) {
2552
+ for (const check of this.CRITICAL_REVIEW_CHECKLIST.stateAndLifecycle) {
2540
2553
  prompt += `- ${check}
2541
2554
  `;
2542
2555
  }
2543
2556
  prompt += `
2544
2557
  **Edge Cases & Races:**
2545
2558
  `;
2546
- for (const check of CRITICAL_REVIEW_CHECKLIST.edgeCasesAndRaces) {
2559
+ for (const check of this.CRITICAL_REVIEW_CHECKLIST.edgeCasesAndRaces) {
2547
2560
  prompt += `- ${check}
2548
2561
  `;
2549
2562
  }
2550
2563
  prompt += `
2551
2564
  **Missing Pieces:**
2552
2565
  `;
2553
- for (const check of CRITICAL_REVIEW_CHECKLIST.missingPieces) {
2566
+ for (const check of this.CRITICAL_REVIEW_CHECKLIST.missingPieces) {
2554
2567
  prompt += `- ${check}
2555
2568
  `;
2556
2569
  }
@@ -2898,7 +2911,7 @@ var TrieInitTool = class {
2898
2911
  "",
2899
2912
  "1. Edit `.trie/PROJECT.md` with your project description",
2900
2913
  "2. Define coding standards in `.trie/RULES.md`",
2901
- "3. Run `trie_scan` to analyze your codebase",
2914
+ "3. Run `trie watch` to analyze your codebase",
2902
2915
  '4. Run `trie_init` with action="complete" when setup is done'
2903
2916
  );
2904
2917
  return lines.join("\n");
@@ -3528,7 +3541,6 @@ var ToolRegistry = class {
3528
3541
  this.defineToolSchemas();
3529
3542
  }
3530
3543
  initializeTools() {
3531
- this.tools.set("scan", new TrieScanTool());
3532
3544
  this.tools.set("fix", new TrieFixTool());
3533
3545
  this.tools.set("cloud_fix", new TrieCloudFixTool());
3534
3546
  this.tools.set("explain", new TrieExplainTool());
@@ -3560,81 +3572,6 @@ var ToolRegistry = class {
3560
3572
  }
3561
3573
  defineToolSchemas() {
3562
3574
  this.definitions = [
3563
- {
3564
- name: "trie_scan",
3565
- description: "Scan code with intelligent agent selection. Scans entire codebase if no files specified. Auto-updates .trie/AGENTS.md with results. Alias: scan",
3566
- inputSchema: {
3567
- type: "object",
3568
- properties: {
3569
- files: {
3570
- type: "array",
3571
- items: { type: "string" },
3572
- description: "Files to scan (absolute paths). If empty, scans entire codebase."
3573
- },
3574
- directory: {
3575
- type: "string",
3576
- description: "Directory to scan (if files not specified). Defaults to current working directory."
3577
- },
3578
- context: {
3579
- type: "object",
3580
- properties: {
3581
- changeType: {
3582
- type: "string",
3583
- enum: ["ui", "api", "database", "auth", "payment", "general"]
3584
- },
3585
- isNewFeature: { type: "boolean" },
3586
- touchesUserData: { type: "boolean" }
3587
- }
3588
- },
3589
- forceAgents: {
3590
- type: "array",
3591
- items: { type: "string" },
3592
- description: "Manually specify agents to run (overrides triaging)"
3593
- },
3594
- parallel: {
3595
- type: "boolean",
3596
- description: "Run agents in parallel (default true)"
3597
- },
3598
- cache: {
3599
- type: "boolean",
3600
- description: "Enable scan result caching (default true)"
3601
- },
3602
- maxConcurrency: {
3603
- type: "number",
3604
- description: "Max parallel agents"
3605
- },
3606
- timeoutMs: {
3607
- type: "number",
3608
- description: "Agent timeout in milliseconds"
3609
- },
3610
- streaming: {
3611
- type: "boolean",
3612
- description: "Stream progress updates"
3613
- },
3614
- interactive: {
3615
- type: "boolean",
3616
- description: "Enable interactive CLI dashboard (TTY only)"
3617
- },
3618
- format: {
3619
- type: "string",
3620
- enum: ["text", "json"],
3621
- description: "Output format for optional file output"
3622
- },
3623
- output: {
3624
- type: "string",
3625
- description: "Output file path when format is json"
3626
- },
3627
- workers: {
3628
- type: "boolean",
3629
- description: "Use worker threads for parallel execution"
3630
- }
3631
- }
3632
- },
3633
- // MCP Apps: Interactive scan dashboard
3634
- _meta: {
3635
- ui: { resourceUri: "ui://trie/scan-dashboard" }
3636
- }
3637
- },
3638
3575
  {
3639
3576
  name: "trie",
3640
3577
  description: "Quick menu of available Trie commands. TIP: Read trie://context first for project state and priorities. Call with `action` to run directly.",
@@ -3643,11 +3580,7 @@ var ToolRegistry = class {
3643
3580
  properties: {
3644
3581
  action: {
3645
3582
  type: "string",
3646
- description: "Optional quick action: scan, security, legal, bugs, types, devops, architecture, ux, clean, soc2, performance, e2e, visual_qa, data_flow, agent_smith, pr_review, watch, fix, explain"
3647
- },
3648
- agent: {
3649
- type: "string",
3650
- description: "Agent key when action=agent or when using a custom skill name"
3583
+ description: "Optional quick action: pr_review, watch, fix, explain, test, visual_qa_browser"
3651
3584
  },
3652
3585
  files: {
3653
3586
  type: "array",
@@ -3657,17 +3590,6 @@ var ToolRegistry = class {
3657
3590
  directory: {
3658
3591
  type: "string",
3659
3592
  description: "Directory to scan (defaults to detected workspace)"
3660
- },
3661
- context: {
3662
- type: "object",
3663
- properties: {
3664
- changeType: {
3665
- type: "string",
3666
- enum: ["ui", "api", "database", "auth", "payment", "general"]
3667
- },
3668
- isNewFeature: { type: "boolean" },
3669
- touchesUserData: { type: "boolean" }
3670
- }
3671
3593
  }
3672
3594
  }
3673
3595
  }
@@ -3709,7 +3631,7 @@ var ToolRegistry = class {
3709
3631
  issueIds: {
3710
3632
  type: "array",
3711
3633
  items: { type: "string" },
3712
- description: "Issue IDs to dispatch (from trie_scan). If omitted, dispatches all cloud-eligible pending issues. IGNORED if file+issue+fix are provided (ad-hoc mode)."
3634
+ description: "Issue IDs to dispatch (from trie_fix/watch). If omitted, dispatches all cloud-eligible pending issues. IGNORED if file+issue+fix are provided (ad-hoc mode)."
3713
3635
  },
3714
3636
  forceCloud: {
3715
3637
  type: "boolean",
@@ -3903,7 +3825,7 @@ var ToolRegistry = class {
3903
3825
  },
3904
3826
  {
3905
3827
  name: "trie_init",
3906
- description: "Initialize bootstrap files (.trie/RULES.md, .trie/TEAM.md, .trie/BOOTSTRAP.md). Detects stack and suggests skills.",
3828
+ description: "Initialize bootstrap files (.trie/RULES.md, .trie/TEAM.md, .trie/BOOTSTRAP.md). Detects stack.",
3907
3829
  inputSchema: {
3908
3830
  type: "object",
3909
3831
  properties: {
@@ -4239,13 +4161,6 @@ import { readdir, readFile as readFile4 } from "fs/promises";
4239
4161
  import { existsSync as existsSync4 } from "fs";
4240
4162
  import { join as join4, dirname as dirname2 } from "path";
4241
4163
  import { fileURLToPath } from "url";
4242
-
4243
- // src/skills/installer.ts
4244
- async function listInstalledSkills() {
4245
- return [];
4246
- }
4247
-
4248
- // src/server/resource-manager.ts
4249
4164
  var UI_APPS = {
4250
4165
  "ledger": {
4251
4166
  name: "Decision Ledger",
@@ -4269,7 +4184,6 @@ var UI_APPS = {
4269
4184
  }
4270
4185
  };
4271
4186
  var ResourceManager = class {
4272
- skillRegistry = getSkillRegistry();
4273
4187
  /**
4274
4188
  * Get all available resources dynamically
4275
4189
  */
@@ -4294,12 +4208,6 @@ var ResourceManager = class {
4294
4208
  description: "Detailed context state with scan history and priorities",
4295
4209
  mimeType: "application/json"
4296
4210
  },
4297
- {
4298
- uri: "trie://skills",
4299
- name: "Available Skills",
4300
- description: "List of all available Trie skills (built-in and custom)",
4301
- mimeType: "application/json"
4302
- },
4303
4211
  {
4304
4212
  uri: "trie://config",
4305
4213
  name: "Trie Configuration",
@@ -4318,12 +4226,6 @@ var ResourceManager = class {
4318
4226
  description: "Summary of loaded vulnerability detection signatures",
4319
4227
  mimeType: "application/json"
4320
4228
  },
4321
- {
4322
- uri: "trie://skills/installed",
4323
- name: "Installed Skills",
4324
- description: "External skills installed from skills.sh that Trie can apply",
4325
- mimeType: "application/json"
4326
- },
4327
4229
  {
4328
4230
  uri: "trie://bootstrap",
4329
4231
  name: "Bootstrap Status",
@@ -4356,7 +4258,6 @@ var ResourceManager = class {
4356
4258
  }
4357
4259
  );
4358
4260
  resources.push(...await this.getScanReportResources());
4359
- resources.push(...await this.getCustomSkillResources());
4360
4261
  resources.push(...this.getUIAppResources());
4361
4262
  return resources;
4362
4263
  }
@@ -4375,20 +4276,6 @@ var ResourceManager = class {
4375
4276
  return [];
4376
4277
  }
4377
4278
  }
4378
- async getCustomSkillResources() {
4379
- try {
4380
- await this.skillRegistry.loadCustomSkills();
4381
- const customSkills = this.skillRegistry.getCustomSkills();
4382
- return customSkills.map((skill) => ({
4383
- uri: `trie://skills/custom/${skill.name}`,
4384
- name: `Custom Skill: ${skill.name}`,
4385
- description: skill.description,
4386
- mimeType: "application/json"
4387
- }));
4388
- } catch {
4389
- return [];
4390
- }
4391
- }
4392
4279
  /**
4393
4280
  * Read content for a specific resource
4394
4281
  */
@@ -4407,12 +4294,6 @@ var ResourceManager = class {
4407
4294
  if (parsedUri === "context/state") {
4408
4295
  return await this.getContextStateResource(uri);
4409
4296
  }
4410
- if (parsedUri === "skills") {
4411
- return await this.getBuiltInSkillsResource(uri);
4412
- }
4413
- if (parsedUri.startsWith("skills/custom/")) {
4414
- return await this.getCustomSkillResource(uri, parsedUri);
4415
- }
4416
4297
  if (parsedUri === "config") {
4417
4298
  return await this.getConfigResource(uri);
4418
4299
  }
@@ -4422,9 +4303,6 @@ var ResourceManager = class {
4422
4303
  if (parsedUri === "signatures") {
4423
4304
  return await this.getSignaturesResource(uri);
4424
4305
  }
4425
- if (parsedUri === "skills/installed") {
4426
- return await this.getInstalledSkillsResource(uri);
4427
- }
4428
4306
  if (parsedUri === "bootstrap") {
4429
4307
  return await this.getBootstrapResource(uri);
4430
4308
  }
@@ -4640,19 +4518,11 @@ var ResourceManager = class {
4640
4518
  summary.push("## Available Tools", "");
4641
4519
  summary.push("| Tool | Purpose |");
4642
4520
  summary.push("|------|---------|");
4643
- summary.push("| `trie_scan` | Scan code with intelligent agent selection |");
4521
+ summary.push("| `trie_fix` | Apply high-confidence fixes |");
4644
4522
  summary.push("| `trie_fix` | Generate fix recommendations |");
4645
4523
  summary.push("| `trie_memory` | Search issue history |");
4646
4524
  summary.push("| `trie_init` | Initialize bootstrap files |");
4647
4525
  summary.push("");
4648
- try {
4649
- const skills = await listInstalledSkills();
4650
- if (skills.length > 0) {
4651
- summary.push(`**Skills:** ${skills.length} installed (${skills.slice(0, 3).map((s) => s.name).join(", ")}${skills.length > 3 ? "..." : ""})`);
4652
- summary.push("");
4653
- }
4654
- } catch {
4655
- }
4656
4526
  summary.push("---", "", "# Detailed Context", "");
4657
4527
  const agentsMdPath = join4(getTrieDirectory(workDir), "AGENTS.md");
4658
4528
  try {
@@ -4735,41 +4605,6 @@ This information is automatically available to Claude Code, Cursor, and other AI
4735
4605
  }]
4736
4606
  };
4737
4607
  }
4738
- async getBuiltInSkillsResource(uri) {
4739
- await this.skillRegistry.loadCustomSkills();
4740
- const skills = this.skillRegistry.getSkillDescriptions();
4741
- return {
4742
- contents: [{
4743
- uri,
4744
- mimeType: "application/json",
4745
- text: JSON.stringify({
4746
- totalSkills: skills.length,
4747
- builtinCount: skills.filter((a) => !a.isCustom).length,
4748
- customCount: skills.filter((a) => a.isCustom).length,
4749
- skills: skills.map((a) => ({
4750
- name: a.name,
4751
- description: a.description,
4752
- type: a.isCustom ? "custom" : "builtin"
4753
- }))
4754
- }, null, 2)
4755
- }]
4756
- };
4757
- }
4758
- async getCustomSkillResource(uri, parsedUri) {
4759
- const skillName = parsedUri.replace("skills/custom/", "");
4760
- await this.skillRegistry.loadCustomSkills();
4761
- const metadata = this.skillRegistry.getCustomSkillMetadata(skillName);
4762
- if (!metadata) {
4763
- throw new Error(`Custom skill not found: ${skillName}`);
4764
- }
4765
- return {
4766
- contents: [{
4767
- uri,
4768
- mimeType: "application/json",
4769
- text: JSON.stringify(metadata, null, 2)
4770
- }]
4771
- };
4772
- }
4773
4608
  async getConfigResource(uri) {
4774
4609
  const config = await loadConfig();
4775
4610
  return {
@@ -4810,7 +4645,7 @@ This information is automatically available to Claude Code, Cursor, and other AI
4810
4645
  mimeType: "application/json",
4811
4646
  text: JSON.stringify({
4812
4647
  error: "No cache found. Run a scan first to build the cache.",
4813
- hint: "Use trie_scan to scan your codebase"
4648
+ hint: "Run trie watch to analyze your codebase"
4814
4649
  }, null, 2)
4815
4650
  }]
4816
4651
  };
@@ -4833,33 +4668,6 @@ This information is automatically available to Claude Code, Cursor, and other AI
4833
4668
  }]
4834
4669
  };
4835
4670
  }
4836
- async getInstalledSkillsResource(uri) {
4837
- const skills = await listInstalledSkills();
4838
- const state = await loadContextState();
4839
- const skillsWithUsage = skills.map((skill) => {
4840
- const record = state.skills?.[skill.name];
4841
- return {
4842
- name: skill.name,
4843
- description: skill.description,
4844
- source: skill.installedFrom,
4845
- installedAt: skill.installedAt,
4846
- timesApplied: record?.timesApplied || 0,
4847
- appliedBy: record?.appliedBy || [],
4848
- lastApplied: record?.lastApplied
4849
- };
4850
- });
4851
- return {
4852
- contents: [{
4853
- uri,
4854
- mimeType: "application/json",
4855
- text: JSON.stringify({
4856
- totalSkills: skills.length,
4857
- skills: skillsWithUsage,
4858
- note: "Skills are capabilities applied by agents, not autonomous agents themselves."
4859
- }, null, 2)
4860
- }]
4861
- };
4862
- }
4863
4671
  async getScanReportResource(uri, parsedUri) {
4864
4672
  const fileName = parsedUri.replace("reports/", "");
4865
4673
  const reportPath = join4(getWorkingDirectory(void 0, true), "trie-reports", fileName);
@@ -5340,38 +5148,6 @@ var RequestHandlers = class {
5340
5148
  return await this.toolRegistry.getTool("register_agent").execute(args);
5341
5149
  case "watch":
5342
5150
  return await this.toolRegistry.getTool("watch").execute(args);
5343
- // Individual agent commands
5344
- case "security":
5345
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "security" });
5346
- case "legal":
5347
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "legal" });
5348
- case "accessibility":
5349
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "accessibility" });
5350
- case "design":
5351
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "design-engineer" });
5352
- case "architecture":
5353
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "software-architect" });
5354
- case "bugs":
5355
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "bug-finding" });
5356
- case "ux":
5357
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "user-testing" });
5358
- case "types":
5359
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "typecheck" });
5360
- case "devops":
5361
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "devops" });
5362
- case "clean":
5363
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "trie_clean" });
5364
- case "soc2":
5365
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "soc2" });
5366
- // New agents
5367
- case "performance":
5368
- case "perf":
5369
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "performance" });
5370
- case "e2e":
5371
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "e2e" });
5372
- case "visual_qa":
5373
- case "visual":
5374
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "visual-qa" });
5375
5151
  case "visual_qa_browser": {
5376
5152
  try {
5377
5153
  const result = await runVisualQA(args);
@@ -5414,31 +5190,6 @@ npx playwright install chromium
5414
5190
  };
5415
5191
  }
5416
5192
  }
5417
- case "data_flow":
5418
- case "dataflow":
5419
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "data-flow" });
5420
- // Special agents
5421
- case "agent_smith":
5422
- case "agentsmith":
5423
- case "smith":
5424
- if (args?.clear_memory || args?.show_stats) {
5425
- return await this.handleAgentSmith(args);
5426
- }
5427
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "agent-smith" });
5428
- case "super_reviewer":
5429
- case "superreviewer":
5430
- case "reviewer":
5431
- return await this.toolRegistry.getTool("agent").execute({ ...args, agent: "super-reviewer" });
5432
- // Custom skill tools (with backward-compatible agent aliases)
5433
- case "create_skill":
5434
- case "create_agent":
5435
- return await this.toolRegistry.getTool("create_skill").execute(args);
5436
- case "save_skill":
5437
- case "save_agent":
5438
- return await this.toolRegistry.getTool("save_skill").execute(args);
5439
- case "list_skills":
5440
- case "list_agents":
5441
- return await this.toolRegistry.getTool("list_skills").execute(args);
5442
5193
  case "pr_review":
5443
5194
  return await this.toolRegistry.getTool("pr_review").execute(args);
5444
5195
  case "project":
@@ -5540,45 +5291,16 @@ npx playwright install chromium
5540
5291
  "",
5541
5292
  "**Most common:**",
5542
5293
  "- `trie` (no args) \u2014 show this menu",
5543
- '- `trie` with `{ action: "scan", files?: [], directory?: "" }` \u2014 auto triage & scan',
5544
- '- `trie` with `{ action: "security", files?: [] }` \u2014 single-skill run (any skill name works)',
5545
- '- `trie` with `{ action: "agent_smith" }` \u2014 aggressive AI-pattern hunter',
5546
- "",
5547
- "**Other actions:**",
5548
- '- `action: "pr_review"` \u2014 interactive PR review',
5549
5294
  '- `action: "fix"` \u2014 high-confidence fixes',
5550
5295
  '- `action: "watch"` \u2014 start/stop/status autonomous watch',
5296
+ '- `action: "pr_review"` \u2014 interactive PR review',
5297
+ "",
5298
+ "**Other actions:**",
5551
5299
  '- `action: "test"` \u2014 generate/coverage/suggest/run tests (requires `files` + `action`)',
5552
5300
  '- `action: "explain"` \u2014 explain code/issues/risks',
5553
- '- `action: "list_skills"` \u2014 list all skills (external + custom)',
5554
5301
  '- `action: "visual_qa_browser"` \u2014 screenshots for visual QA',
5555
5302
  "",
5556
- "**Built-in skills:**",
5557
- "`security`, `legal`, `accessibility`, `design`, `architecture`, `bugs`, `ux`, `types`, `devops`, `clean`, `soc2`, `performance`, `e2e`, `visual_qa`, `data_flow`",
5558
- "",
5559
- "**Special skills:**",
5560
- "`agent_smith` \u2014 35 vibe code hunters with cross-file detection",
5561
- "`super_reviewer` \u2014 Interactive PR review with cross-examination",
5562
- "",
5563
- "All commands accept `trie_` prefix (e.g., `trie_scan`, `trie_security`). Short names still work for compatibility."
5564
- ].join("\n")
5565
- }]
5566
- };
5567
- }
5568
- async handleAgentSmith(_smithArgs) {
5569
- return {
5570
- content: [{
5571
- type: "text",
5572
- text: [
5573
- "\u{1F916} Agent Smith functionality has been integrated into the decision ledger.",
5574
- "",
5575
- "The autonomous agent now:",
5576
- "- Extracts patterns automatically via `trie watch`",
5577
- "- Builds decision ledger from every change",
5578
- "- Predicts problems via `trie gotcha`",
5579
- "",
5580
- "Start the agent: `trie_watch start`",
5581
- "Query the ledger: `trie_gotcha`"
5303
+ "All commands accept `trie_` prefix (e.g., `trie_fix`, `trie_watch`)."
5582
5304
  ].join("\n")
5583
5305
  }]
5584
5306
  };
@@ -5636,7 +5358,7 @@ var MCPServer = class {
5636
5358
  /**
5637
5359
  * Show startup banner
5638
5360
  */
5639
- showStartupBanner(skillCount, aiTool) {
5361
+ showStartupBanner(toolCount, aiTool) {
5640
5362
  console.error(`
5641
5363
  \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
5642
5364
  \u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D
@@ -5644,21 +5366,19 @@ var MCPServer = class {
5644
5366
  \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D
5645
5367
  \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
5646
5368
  \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D
5647
- Your central registry for Trie and its skills
5369
+ Your central registry for Trie tools
5648
5370
 
5649
5371
  by Louis Kishfy
5650
5372
 
5651
5373
  Download the Trie workspace: https://www.trie.dev
5652
5374
  Follow me on X: https://x.com/louiskishfy
5653
5375
 
5654
- ${skillCount} skills ready | ${aiTool}
5376
+ ${toolCount} tools ready | ${aiTool}
5655
5377
 
5656
5378
  Quick Start:
5657
- \u2022 "Scan this code" - Run all relevant skills
5658
- \u2022 "Run trie_security" - Security scan only
5659
- \u2022 "Run trie_soc2" - SOC 2 compliance check
5660
- \u2022 "Use trie_list_skills" - See all skills
5661
- \u2022 "Use trie_create_skill" - Make custom skill
5379
+ \u2022 "Scan this code" - Run Trie analysis
5380
+ \u2022 "Use trie" - Open the Trie menu
5381
+ \u2022 "Use trie_fix" - Apply high-confidence fixes
5662
5382
 
5663
5383
  Ready.
5664
5384
  `);
@@ -5670,9 +5390,8 @@ var MCPServer = class {
5670
5390
  try {
5671
5391
  const aiTool = detectAITool();
5672
5392
  await loadConfig();
5673
- const registry = getSkillRegistry();
5674
- const skillCount = registry.getAllSkills().length;
5675
- this.showStartupBanner(skillCount, aiTool.name);
5393
+ const toolCount = this.toolRegistry.getAllTools().length;
5394
+ this.showStartupBanner(toolCount, aiTool.name);
5676
5395
  const transport = new StdioServerTransport();
5677
5396
  await this.server.connect(transport);
5678
5397
  } catch (error) {