@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.
- package/LICENSE +21 -0
- package/README.md +225 -78
- package/dist/{autonomy-config-ZCOSTMPD.js → autonomy-config-3APNC6QF.js} +3 -3
- package/dist/{chat-store-OJLJCJFI.js → chat-store-HMTDL7I2.js} +3 -3
- package/dist/{chunk-LD7ZEFNY.js → chunk-3KZBC3RJ.js} +2 -2
- package/dist/{chunk-SH7H3WRU.js → chunk-4TQQP7JD.js} +3 -3
- package/dist/{chunk-SH7H3WRU.js.map → chunk-4TQQP7JD.js.map} +1 -1
- package/dist/{chunk-N2EDZTKG.js → chunk-4UDBGYI3.js} +13 -13
- package/dist/{chunk-XTTZAQWJ.js → chunk-74R4XSFB.js} +5 -5
- package/dist/{chunk-T6PS3MXJ.js → chunk-7HYOJ4Q7.js} +8 -8
- package/dist/{chunk-T6PS3MXJ.js.map → chunk-7HYOJ4Q7.js.map} +1 -1
- package/dist/{chunk-3MUCUZ46.js → chunk-ABY2R7OK.js} +3 -3
- package/dist/chunk-ED7PLRQA.js +782 -0
- package/dist/chunk-ED7PLRQA.js.map +1 -0
- package/dist/{chunk-4MJ52WBH.js → chunk-EFWVF6TI.js} +4 -2
- package/dist/chunk-EFWVF6TI.js.map +1 -0
- package/dist/{chunk-23RJT5WT.js → chunk-F7BMFOZ6.js} +2 -2
- package/dist/{chunk-4PAAGLKO.js → chunk-G7Q23IGF.js} +36 -9
- package/dist/{chunk-4PAAGLKO.js.map → chunk-G7Q23IGF.js.map} +1 -1
- package/dist/{chunk-LT6VUZG2.js → chunk-GLY76TSI.js} +3 -3
- package/dist/{chunk-WMDFK7LI.js → chunk-IFBEAOHH.js} +5 -5
- package/dist/{chunk-YEIJW6X6.js → chunk-JIS2OCZR.js} +4 -4
- package/dist/{chunk-FG467PDD.js → chunk-LNUMECBJ.js} +2 -2
- package/dist/{chunk-FPEMP54L.js → chunk-OJXFQRUE.js} +2 -2
- package/dist/{chunk-5KJ4UJOY.js → chunk-QQG42HCI.js} +2 -2
- package/dist/{chunk-7OJ6JIPL.js → chunk-REHKDCI6.js} +7 -150
- package/dist/chunk-REHKDCI6.js.map +1 -0
- package/dist/{chunk-J7CEBSEB.js → chunk-SU3WCAC4.js} +102 -163
- package/dist/chunk-SU3WCAC4.js.map +1 -0
- package/dist/{chunk-4C67GV3O.js → chunk-TCNCNWGV.js} +2 -2
- package/dist/{chunk-NKHO34UZ.js → chunk-TU7D5DEW.js} +2 -2
- package/dist/{chunk-62POBLFC.js → chunk-TWPX6PHF.js} +453 -986
- package/dist/chunk-TWPX6PHF.js.map +1 -0
- package/dist/{chunk-FH335WL5.js → chunk-TWQPOVRA.js} +2 -2
- package/dist/{chunk-YOJGSRZK.js → chunk-V3O7C2LY.js} +2 -2
- package/dist/{chunk-V7AY2EJO.js → chunk-WOTLY5NA.js} +2 -2
- package/dist/cli/create-agent.js +8 -40
- package/dist/cli/create-agent.js.map +1 -1
- package/dist/cli/main.js +121 -164
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/yolo-daemon.js +31 -155
- package/dist/cli/yolo-daemon.js.map +1 -1
- package/dist/{client-INNE2GGZ.js → client-5L64D5SQ.js} +3 -3
- package/dist/{codebase-index-FMIULFZQ.js → codebase-index-OOE7OAHP.js} +3 -3
- package/dist/{fast-analyzer-MWKCDRGD.js → fast-analyzer-FMU3X4AZ.js} +5 -5
- package/dist/github-ingester-C66ZRUYC.js +11 -0
- package/dist/{goal-manager-ZBWKWEML.js → goal-manager-VTBFFYN4.js} +8 -7
- package/dist/{goal-validator-DA3JQ6JN.js → goal-validator-EM5XVWVC.js} +7 -6
- package/dist/{graph-J4OGTYCO.js → graph-26JPZ3DF.js} +3 -3
- package/dist/{hypothesis-JCUMZKTG.js → hypothesis-4UPE7KXU.js} +8 -7
- package/dist/{incident-index-BWW2UEY7.js → incident-index-H6APJ4S3.js} +3 -3
- package/dist/index.js +116 -397
- package/dist/index.js.map +1 -1
- package/dist/{insight-store-A5XXMFD6.js → insight-store-QEEUQR5L.js} +4 -4
- package/dist/{issue-store-LZWZIGM7.js → issue-store-C6XYENE5.js} +7 -4
- package/dist/ledger-VNA4DX3Z.js +51 -0
- package/dist/linear-ingester-WIUBWF55.js +11 -0
- package/dist/{tiered-storage-VZL7KK64.js → tiered-storage-P6Z3NV2Q.js} +3 -3
- package/dist/trie-agent-GJJJCL6P.js +27 -0
- package/dist/trie-agent-GJJJCL6P.js.map +1 -0
- package/package.json +8 -6
- package/dist/chunk-4MJ52WBH.js.map +0 -1
- package/dist/chunk-62POBLFC.js.map +0 -1
- package/dist/chunk-7OJ6JIPL.js.map +0 -1
- package/dist/chunk-G76DYVGX.js +0 -136
- package/dist/chunk-G76DYVGX.js.map +0 -1
- package/dist/chunk-J7CEBSEB.js.map +0 -1
- package/dist/comprehension-46F7ZNKL.js +0 -821
- package/dist/comprehension-46F7ZNKL.js.map +0 -1
- package/dist/github-ingester-J2ZFYXVE.js +0 -11
- package/dist/linear-ingester-JRDQAIAA.js +0 -11
- package/dist/trie-agent-6A7YBNTQ.js +0 -26
- package/dist/workers/agent-worker.d.ts +0 -2
- package/dist/workers/agent-worker.js +0 -28
- package/dist/workers/agent-worker.js.map +0 -1
- /package/dist/{autonomy-config-ZCOSTMPD.js.map → autonomy-config-3APNC6QF.js.map} +0 -0
- /package/dist/{chat-store-OJLJCJFI.js.map → chat-store-HMTDL7I2.js.map} +0 -0
- /package/dist/{chunk-LD7ZEFNY.js.map → chunk-3KZBC3RJ.js.map} +0 -0
- /package/dist/{chunk-N2EDZTKG.js.map → chunk-4UDBGYI3.js.map} +0 -0
- /package/dist/{chunk-XTTZAQWJ.js.map → chunk-74R4XSFB.js.map} +0 -0
- /package/dist/{chunk-3MUCUZ46.js.map → chunk-ABY2R7OK.js.map} +0 -0
- /package/dist/{chunk-23RJT5WT.js.map → chunk-F7BMFOZ6.js.map} +0 -0
- /package/dist/{chunk-LT6VUZG2.js.map → chunk-GLY76TSI.js.map} +0 -0
- /package/dist/{chunk-WMDFK7LI.js.map → chunk-IFBEAOHH.js.map} +0 -0
- /package/dist/{chunk-YEIJW6X6.js.map → chunk-JIS2OCZR.js.map} +0 -0
- /package/dist/{chunk-FG467PDD.js.map → chunk-LNUMECBJ.js.map} +0 -0
- /package/dist/{chunk-FPEMP54L.js.map → chunk-OJXFQRUE.js.map} +0 -0
- /package/dist/{chunk-5KJ4UJOY.js.map → chunk-QQG42HCI.js.map} +0 -0
- /package/dist/{chunk-4C67GV3O.js.map → chunk-TCNCNWGV.js.map} +0 -0
- /package/dist/{chunk-NKHO34UZ.js.map → chunk-TU7D5DEW.js.map} +0 -0
- /package/dist/{chunk-FH335WL5.js.map → chunk-TWQPOVRA.js.map} +0 -0
- /package/dist/{chunk-YOJGSRZK.js.map → chunk-V3O7C2LY.js.map} +0 -0
- /package/dist/{chunk-V7AY2EJO.js.map → chunk-WOTLY5NA.js.map} +0 -0
- /package/dist/{client-INNE2GGZ.js.map → client-5L64D5SQ.js.map} +0 -0
- /package/dist/{codebase-index-FMIULFZQ.js.map → codebase-index-OOE7OAHP.js.map} +0 -0
- /package/dist/{fast-analyzer-MWKCDRGD.js.map → fast-analyzer-FMU3X4AZ.js.map} +0 -0
- /package/dist/{github-ingester-J2ZFYXVE.js.map → github-ingester-C66ZRUYC.js.map} +0 -0
- /package/dist/{goal-manager-ZBWKWEML.js.map → goal-manager-VTBFFYN4.js.map} +0 -0
- /package/dist/{goal-validator-DA3JQ6JN.js.map → goal-validator-EM5XVWVC.js.map} +0 -0
- /package/dist/{graph-J4OGTYCO.js.map → graph-26JPZ3DF.js.map} +0 -0
- /package/dist/{hypothesis-JCUMZKTG.js.map → hypothesis-4UPE7KXU.js.map} +0 -0
- /package/dist/{incident-index-BWW2UEY7.js.map → incident-index-H6APJ4S3.js.map} +0 -0
- /package/dist/{insight-store-A5XXMFD6.js.map → insight-store-QEEUQR5L.js.map} +0 -0
- /package/dist/{issue-store-LZWZIGM7.js.map → issue-store-C6XYENE5.js.map} +0 -0
- /package/dist/{linear-ingester-JRDQAIAA.js.map → ledger-VNA4DX3Z.js.map} +0 -0
- /package/dist/{tiered-storage-VZL7KK64.js.map → linear-ingester-WIUBWF55.js.map} +0 -0
- /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-
|
|
4
|
+
} from "./chunk-V3O7C2LY.js";
|
|
5
5
|
import {
|
|
6
6
|
CodebaseIndex
|
|
7
|
-
} from "./chunk-
|
|
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-
|
|
25
|
+
} from "./chunk-REHKDCI6.js";
|
|
26
26
|
import {
|
|
27
27
|
LinearIngester
|
|
28
|
-
} from "./chunk-
|
|
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-
|
|
52
|
-
import "./chunk-
|
|
53
|
-
import "./chunk-
|
|
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-
|
|
58
|
-
import "./chunk-
|
|
59
|
-
import "./chunk-
|
|
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-
|
|
64
|
+
} from "./chunk-G7Q23IGF.js";
|
|
66
65
|
import {
|
|
67
66
|
loadConfig
|
|
68
|
-
} from "./chunk-
|
|
69
|
-
import "./chunk-
|
|
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-
|
|
75
|
+
} from "./chunk-IFBEAOHH.js";
|
|
77
76
|
import {
|
|
78
77
|
ContextGraph
|
|
79
|
-
} from "./chunk-
|
|
80
|
-
import "./chunk-
|
|
78
|
+
} from "./chunk-TWQPOVRA.js";
|
|
79
|
+
import "./chunk-7HYOJ4Q7.js";
|
|
81
80
|
import {
|
|
82
81
|
isAIAvailable,
|
|
83
82
|
runAIAnalysis
|
|
84
|
-
} from "./chunk-
|
|
85
|
-
import "./chunk-
|
|
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-
|
|
92
|
-
import {
|
|
93
|
-
getSkillRegistry
|
|
94
|
-
} from "./chunk-G76DYVGX.js";
|
|
90
|
+
} from "./chunk-LNUMECBJ.js";
|
|
95
91
|
import {
|
|
96
92
|
getAutonomyConfig
|
|
97
|
-
} from "./chunk-
|
|
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-
|
|
110
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
1348
|
-
const { IncidentIndex } = await import("./incident-index-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 \`
|
|
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
|
-
|
|
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 =
|
|
2275
|
-
|
|
2276
|
-
{
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
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 `
|
|
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:
|
|
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
|
|
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
|
|
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("| `
|
|
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: "
|
|
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
|
-
"
|
|
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(
|
|
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
|
|
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
|
-
${
|
|
5376
|
+
${toolCount} tools ready | ${aiTool}
|
|
5655
5377
|
|
|
5656
5378
|
Quick Start:
|
|
5657
|
-
\u2022 "Scan this code" - Run
|
|
5658
|
-
\u2022 "
|
|
5659
|
-
\u2022 "
|
|
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
|
|
5674
|
-
|
|
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) {
|