@monoes/monograph 1.6.12 → 1.6.15
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/dist/src/analysis/changed-files.d.ts.map +1 -1
- package/dist/src/analysis/changed-files.js +1 -0
- package/dist/src/analysis/changed-files.js.map +1 -1
- package/dist/src/analysis/churn.d.ts.map +1 -1
- package/dist/src/analysis/churn.js +7 -2
- package/dist/src/analysis/churn.js.map +1 -1
- package/dist/src/analysis/git-changed-files.d.ts.map +1 -1
- package/dist/src/analysis/git-changed-files.js +10 -2
- package/dist/src/analysis/git-changed-files.js.map +1 -1
- package/dist/src/graph/hotspots.js +1 -1
- package/dist/src/graph/hotspots.js.map +1 -1
- package/dist/src/mcp-tools/context.d.ts +6 -0
- package/dist/src/mcp-tools/context.d.ts.map +1 -1
- package/dist/src/mcp-tools/context.js +22 -11
- package/dist/src/mcp-tools/context.js.map +1 -1
- package/dist/src/mcp-tools/impact.d.ts +6 -0
- package/dist/src/mcp-tools/impact.d.ts.map +1 -1
- package/dist/src/mcp-tools/impact.js +12 -11
- package/dist/src/mcp-tools/impact.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +1 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/neighbors.d.ts +2 -7
- package/dist/src/mcp-tools/neighbors.d.ts.map +1 -1
- package/dist/src/mcp-tools/neighbors.js +6 -29
- package/dist/src/mcp-tools/neighbors.js.map +1 -1
- package/dist/src/mcp-tools/resolve-node.d.ts +27 -0
- package/dist/src/mcp-tools/resolve-node.d.ts.map +1 -0
- package/dist/src/mcp-tools/resolve-node.js +42 -0
- package/dist/src/mcp-tools/resolve-node.js.map +1 -0
- package/dist/src/pipeline/build-lock.d.ts.map +1 -1
- package/dist/src/pipeline/build-lock.js +29 -3
- package/dist/src/pipeline/build-lock.js.map +1 -1
- package/dist/src/pipeline/orchestrator.d.ts +6 -0
- package/dist/src/pipeline/orchestrator.d.ts.map +1 -1
- package/dist/src/pipeline/orchestrator.js +9 -2
- package/dist/src/pipeline/orchestrator.js.map +1 -1
- package/dist/src/pipeline/phases/god-nodes.d.ts.map +1 -1
- package/dist/src/pipeline/phases/god-nodes.js +7 -4
- package/dist/src/pipeline/phases/god-nodes.js.map +1 -1
- package/dist/src/pipeline/phases/scan.d.ts.map +1 -1
- package/dist/src/pipeline/phases/scan.js +60 -12
- package/dist/src/pipeline/phases/scan.js.map +1 -1
- package/dist/src/reporting/graph-report.js +5 -3
- package/dist/src/reporting/graph-report.js.map +1 -1
- package/dist/src/staleness/git-staleness.d.ts.map +1 -1
- package/dist/src/staleness/git-staleness.js +7 -1
- package/dist/src/staleness/git-staleness.js.map +1 -1
- package/dist/src/storage/anonymous-closure.d.ts +14 -0
- package/dist/src/storage/anonymous-closure.d.ts.map +1 -0
- package/dist/src/storage/anonymous-closure.js +20 -0
- package/dist/src/storage/anonymous-closure.js.map +1 -0
- package/dist/src/storage/fts-store-hybrid.d.ts.map +1 -1
- package/dist/src/storage/fts-store-hybrid.js +2 -0
- package/dist/src/storage/fts-store-hybrid.js.map +1 -1
- package/dist/src/storage/fts-store-search.d.ts.map +1 -1
- package/dist/src/storage/fts-store-search.js +5 -3
- package/dist/src/storage/fts-store-search.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changed-files.d.ts","sourceRoot":"","sources":["../../../src/analysis/changed-files.ts"],"names":[],"mappings":"AAIA,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,aAAa;IAFpE,YACE,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,aAAa,EAInE;CACF;AAED;;8EAE8E;AAC9E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"changed-files.d.ts","sourceRoot":"","sources":["../../../src/analysis/changed-files.ts"],"names":[],"mappings":"AAIA,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,aAAa;IAFpE,YACE,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,aAAa,EAInE;CACF;AAED;;8EAE8E;AAC9E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAkC1F;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAChF,OAAO,EAAE,CAAC,EAAE,EACZ,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,CAAC,EAAE,CAEL"}
|
|
@@ -33,6 +33,7 @@ export async function getChangedFiles(root, sinceRef) {
|
|
|
33
33
|
output = execFileSync('git', ['diff', '--name-only', '-z', sinceRef, 'HEAD'], {
|
|
34
34
|
cwd: root,
|
|
35
35
|
encoding: 'utf8',
|
|
36
|
+
stdio: ['ignore', 'pipe', 'pipe'], // #371: stderr lands in the error message below, not the console
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../../src/analysis/changed-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGxB,IAAI;IAFtB,YACE,OAAe,EACC,IAAkD;QAElE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAFC,IAAI;QAGpB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;8EAE8E;AAC9E,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;YACtC,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAClE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,sEAAsE;QACtE,oEAAoE;QACpE,YAAY;QACZ,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC5E,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"changed-files.js","sourceRoot":"","sources":["../../../src/analysis/changed-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGxB,IAAI;IAFtB,YACE,OAAe,EACC,IAAkD;QAElE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAFC,IAAI;QAGpB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;8EAE8E;AAC9E,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;YACtC,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAClE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,sEAAsE;QACtE,oEAAoE;QACpE,YAAY;QACZ,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC5E,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iEAAiE;SACrG,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CACzB,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACtE,YAAY,CACb,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,8EAA8E;QAC9E,mFAAmF;QACnF,MAAM,KAAK,GAAG,MAAM;aACjB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CACzB,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACtF,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAAY,EACZ,YAAyB;IAEzB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"churn.d.ts","sourceRoot":"","sources":["../../../src/analysis/churn.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAyBnD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,WAAW,SAAI,GACd,UAAU,CAYZ;AAoCD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,GAAG,MAAM,GAC5B,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"churn.d.ts","sourceRoot":"","sources":["../../../src/analysis/churn.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAyBnD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,WAAW,SAAI,GACd,UAAU,CAYZ;AAoCD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,GAAG,MAAM,GAC5B,OAAO,CAAC,WAAW,CAAC,CAyJtB"}
|
|
@@ -86,12 +86,16 @@ export async function analyzeChurn(root, since) {
|
|
|
86
86
|
// Cache lookup — keyed by HEAD SHA + window size + a coarse day bucket, so
|
|
87
87
|
// entries naturally invalidate as time passes even at the same HEAD (the
|
|
88
88
|
// recency weighting is time-dependent, not just HEAD-dependent).
|
|
89
|
-
|
|
89
|
+
// Under .monomind/ with the rest of monograph's state, not a separate
|
|
90
|
+
// .monograph/ dir in the user's repo (#414).
|
|
91
|
+
const cacheDir = join(root, '.monomind', 'cache');
|
|
90
92
|
const dateBucket = todayBucket();
|
|
91
93
|
pruneChurnCache(cacheDir);
|
|
92
94
|
let treeHash = '';
|
|
93
95
|
try {
|
|
94
|
-
treeHash = execSync('git rev-parse HEAD', { cwd: root })
|
|
96
|
+
treeHash = execSync('git rev-parse HEAD', { cwd: root, stdio: ['ignore', 'pipe', 'ignore'] })
|
|
97
|
+
.toString()
|
|
98
|
+
.trim();
|
|
95
99
|
const cacheFile = join(cacheDir, `churn-${treeHash}-${sinceDuration.days}-${dateBucket}.json`);
|
|
96
100
|
if (existsSync(cacheFile)) {
|
|
97
101
|
try {
|
|
@@ -115,6 +119,7 @@ export async function analyzeChurn(root, since) {
|
|
|
115
119
|
logOutput = execSync(`git log --after="${sinceDateStr}" --name-only --format="%ae|%ai"`, {
|
|
116
120
|
cwd: root,
|
|
117
121
|
maxBuffer: 50 * 1024 * 1024,
|
|
122
|
+
stdio: ['ignore', 'pipe', 'pipe'], // #371: git's own error (no commits yet) stays off the console
|
|
118
123
|
}).toString();
|
|
119
124
|
}
|
|
120
125
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"churn.js","sourceRoot":"","sources":["../../../src/analysis/churn.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"churn.js","sourceRoot":"","sources":["../../../src/analysis/churn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-changed-files.d.ts","sourceRoot":"","sources":["../../../src/analysis/git-changed-files.ts"],"names":[],"mappings":"AAIA;;4BAE4B;AAC5B,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"git-changed-files.d.ts","sourceRoot":"","sources":["../../../src/analysis/git-changed-files.ts"],"names":[],"mappings":"AAIA;;4BAE4B;AAC5B,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CA2BtE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAQhF;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EACxE,OAAO,EAAE,CAAC,EAAE,EACZ,YAAY,EAAE,MAAM,EAAE,GACrB,CAAC,EAAE,CAGL;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAG1E"}
|
|
@@ -9,7 +9,11 @@ export function validateGitRef(ref) {
|
|
|
9
9
|
}
|
|
10
10
|
export function resolveGitToplevel(cwd) {
|
|
11
11
|
try {
|
|
12
|
-
return execFileSync('git', ['rev-parse', '--show-toplevel'], {
|
|
12
|
+
return execFileSync('git', ['rev-parse', '--show-toplevel'], {
|
|
13
|
+
cwd,
|
|
14
|
+
encoding: 'utf8',
|
|
15
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
16
|
+
}).trim();
|
|
13
17
|
}
|
|
14
18
|
catch {
|
|
15
19
|
return cwd;
|
|
@@ -30,7 +34,11 @@ export function collectGitPaths(root, since) {
|
|
|
30
34
|
else {
|
|
31
35
|
args = ['ls-files'];
|
|
32
36
|
}
|
|
33
|
-
const output = execFileSync('git', args, {
|
|
37
|
+
const output = execFileSync('git', args, {
|
|
38
|
+
cwd: root,
|
|
39
|
+
encoding: 'utf8',
|
|
40
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
41
|
+
}); // #371
|
|
34
42
|
return output
|
|
35
43
|
.split('\n')
|
|
36
44
|
.map((l) => l.trim())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-changed-files.js","sourceRoot":"","sources":["../../../src/analysis/git-changed-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEtE;;4BAE4B;AAC5B,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"git-changed-files.js","sourceRoot":"","sources":["../../../src/analysis/git-changed-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export function computeHotspots(db, projectDir, options = {}) {
|
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
32
|
try {
|
|
33
|
-
gitOutput = execSync(`git log --since="${windowDays} days ago" --name-only --pretty=format:"%ci" -- .`, { cwd: projectDir, maxBuffer: 10 * 1024 * 1024 }).toString();
|
|
33
|
+
gitOutput = execSync(`git log --since="${windowDays} days ago" --name-only --pretty=format:"%ci" -- .`, { cwd: projectDir, maxBuffer: 10 * 1024 * 1024, stdio: ['ignore', 'pipe', 'pipe'] }).toString();
|
|
34
34
|
gitLogCache.set(cacheKey, { output: gitOutput, ts: now });
|
|
35
35
|
}
|
|
36
36
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotspots.js","sourceRoot":"","sources":["../../../src/graph/hotspots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,gFAAgF;AAChF,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AACpD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0C,CAAC;AAsBtE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,UAAkB,EAClB,OAAO,GAIH,EAAE;IAEN,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,EAAE,CAAC;IAE1B,4EAA4E;IAC5E,gEAAgE;IAChE,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC;QACjD,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,SAAS,GAAG,QAAQ,CAClB,oBAAoB,UAAU,mDAAmD,EACjF,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"hotspots.js","sourceRoot":"","sources":["../../../src/graph/hotspots.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
2
|
import type { MonographNode } from '../types.js';
|
|
3
|
+
import { type SymbolCandidate } from './resolve-node.js';
|
|
3
4
|
export interface MonographContextResult {
|
|
4
5
|
node: MonographNode | null;
|
|
5
6
|
callers: MonographNode[];
|
|
@@ -14,9 +15,14 @@ export interface MonographContextResult {
|
|
|
14
15
|
id: string;
|
|
15
16
|
name: string;
|
|
16
17
|
}>;
|
|
18
|
+
/** True when `name` matched several nodes and nothing narrowed it to one. */
|
|
19
|
+
ambiguous?: boolean;
|
|
20
|
+
/** Populated when ambiguous (non-test first) — re-query with `nodeId` or `filePath`. */
|
|
21
|
+
candidates?: SymbolCandidate[];
|
|
17
22
|
}
|
|
18
23
|
export declare function getMonographContext(db: Database.Database, input: {
|
|
19
24
|
name: string;
|
|
20
25
|
filePath?: string;
|
|
26
|
+
nodeId?: string;
|
|
21
27
|
}): MonographContextResult;
|
|
22
28
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAI5E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC;AA2BD,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,sBAAsB,CAkExB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { rowToNode } from '../storage/node-store.js';
|
|
2
|
+
import { resolveNodeByName } from './resolve-node.js';
|
|
2
3
|
// ── Shared helper: query related nodes by edge relation and direction ──────────
|
|
3
4
|
function queryRelated(db, nodeId, relation, inbound, limit = 50) {
|
|
4
5
|
// inbound=true → this node is the target; source nodes are the result
|
|
@@ -13,16 +14,14 @@ function queryRelated(db, nodeId, relation, inbound, limit = 50) {
|
|
|
13
14
|
// ── Implementation ─────────────────────────────────────────────────────────────
|
|
14
15
|
export function getMonographContext(db, input) {
|
|
15
16
|
const LIMIT = 50;
|
|
16
|
-
// 1. Find the node
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
.prepare('SELECT * FROM nodes WHERE
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
nodeRow = db.prepare('SELECT * FROM nodes WHERE name = ? LIMIT 1').get(input.name);
|
|
25
|
-
}
|
|
17
|
+
// 1. Find the node — several same-named definitions are returned as
|
|
18
|
+
// candidates rather than silently narrowed to one.
|
|
19
|
+
const { row: nodeRow, candidates } = input.nodeId
|
|
20
|
+
? {
|
|
21
|
+
row: db.prepare('SELECT * FROM nodes WHERE id = ?').get(input.nodeId),
|
|
22
|
+
candidates: [],
|
|
23
|
+
}
|
|
24
|
+
: resolveNodeByName(db, input.name, input.filePath);
|
|
26
25
|
if (!nodeRow) {
|
|
27
26
|
return {
|
|
28
27
|
node: null,
|
|
@@ -32,6 +31,8 @@ export function getMonographContext(db, input) {
|
|
|
32
31
|
importedBy: [],
|
|
33
32
|
community: null,
|
|
34
33
|
inProcesses: [],
|
|
34
|
+
ambiguous: candidates.length > 1,
|
|
35
|
+
candidates,
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
38
|
const node = rowToNode(nodeRow);
|
|
@@ -55,6 +56,16 @@ export function getMonographContext(db, input) {
|
|
|
55
56
|
.prepare(`SELECT n.id, n.name FROM nodes n JOIN edges e ON n.id = e.source_id
|
|
56
57
|
WHERE e.target_id = ? AND e.relation = 'STEP_IN_PROCESS' LIMIT ?`)
|
|
57
58
|
.all(nodeId, LIMIT);
|
|
58
|
-
return {
|
|
59
|
+
return {
|
|
60
|
+
node,
|
|
61
|
+
callers,
|
|
62
|
+
callees,
|
|
63
|
+
imports,
|
|
64
|
+
importedBy,
|
|
65
|
+
community,
|
|
66
|
+
inProcesses: processRows,
|
|
67
|
+
ambiguous: false,
|
|
68
|
+
candidates: [],
|
|
69
|
+
};
|
|
59
70
|
}
|
|
60
71
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp-tools/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp-tools/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
2
|
import type { MonographNode } from '../types.js';
|
|
3
|
+
import { type SymbolCandidate } from './resolve-node.js';
|
|
3
4
|
export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
4
5
|
export declare function computeRiskLevel(riskScore: number): RiskLevel;
|
|
5
6
|
export interface ImpactOptions {
|
|
@@ -17,10 +18,15 @@ export interface MonographImpactResult {
|
|
|
17
18
|
affectedFiles: string[];
|
|
18
19
|
riskScore: number;
|
|
19
20
|
riskLevel: RiskLevel;
|
|
21
|
+
/** True when `name` matched several nodes and nothing narrowed it to one. */
|
|
22
|
+
ambiguous?: boolean;
|
|
23
|
+
/** Populated when ambiguous (non-test first) — re-query with `nodeId` or `filePath`. */
|
|
24
|
+
candidates?: SymbolCandidate[];
|
|
20
25
|
}
|
|
21
26
|
export declare function getMonographImpact(db: Database.Database, input: {
|
|
22
27
|
name: string;
|
|
23
28
|
filePath?: string;
|
|
29
|
+
nodeId?: string;
|
|
24
30
|
depth?: number;
|
|
25
31
|
}): MonographImpactResult;
|
|
26
32
|
export declare function monographImpact(db: Database.Database, nodeId: string, options?: ImpactOptions): Promise<MonographImpactResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/impact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/impact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAI5E,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAK7D;AAID,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,iBAAiB,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,CAAC;IACpE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC;AAuDD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E,qBAAqB,CAiCvB;AAmDD,wBAAsB,eAAe,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAqBhC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getNodesByIds, rowToNode } from '../storage/node-store.js';
|
|
2
|
+
import { resolveNodeByName } from './resolve-node.js';
|
|
2
3
|
export function computeRiskLevel(riskScore) {
|
|
3
4
|
if (riskScore > 0.75)
|
|
4
5
|
return 'CRITICAL';
|
|
@@ -50,16 +51,14 @@ function reverseBfs(startNodeId, db, maxDepth, options = {}) {
|
|
|
50
51
|
// ── Implementation ─────────────────────────────────────────────────────────────
|
|
51
52
|
export function getMonographImpact(db, input) {
|
|
52
53
|
const maxDepth = Math.min(input.depth ?? 3, 6);
|
|
53
|
-
// Find the node
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.prepare('SELECT * FROM nodes WHERE
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
nodeRow = db.prepare('SELECT * FROM nodes WHERE name = ? LIMIT 1').get(input.name);
|
|
62
|
-
}
|
|
54
|
+
// Find the node. Several same-named definitions (say, a test mock) are not
|
|
55
|
+
// silently narrowed to one — a wrong "0 callers, LOW" is worse than asking.
|
|
56
|
+
const { row: nodeRow, candidates } = input.nodeId
|
|
57
|
+
? {
|
|
58
|
+
row: db.prepare('SELECT * FROM nodes WHERE id = ?').get(input.nodeId),
|
|
59
|
+
candidates: [],
|
|
60
|
+
}
|
|
61
|
+
: resolveNodeByName(db, input.name, input.filePath);
|
|
63
62
|
if (!nodeRow) {
|
|
64
63
|
return {
|
|
65
64
|
node: null,
|
|
@@ -68,13 +67,15 @@ export function getMonographImpact(db, input) {
|
|
|
68
67
|
affectedFiles: [],
|
|
69
68
|
riskScore: 0,
|
|
70
69
|
riskLevel: 'LOW',
|
|
70
|
+
ambiguous: candidates.length > 1,
|
|
71
|
+
candidates,
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
74
|
const node = rowToNode(nodeRow);
|
|
74
75
|
const nodeId = node.id;
|
|
75
76
|
// Reverse BFS to find all callers (depth 0 = start node)
|
|
76
77
|
const visited = reverseBfs(nodeId, db, maxDepth, {});
|
|
77
|
-
return { node, ...extractCallerResult(db, nodeId, visited) };
|
|
78
|
+
return { node, ...extractCallerResult(db, nodeId, visited), ambiguous: false, candidates: [] };
|
|
78
79
|
}
|
|
79
80
|
// ── Shared helper: turn a visited map into structured caller lists ─────────────
|
|
80
81
|
function extractCallerResult(db, startNodeId, visited) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact.js","sourceRoot":"","sources":["../../../src/mcp-tools/impact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"impact.js","sourceRoot":"","sources":["../../../src/mcp-tools/impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export * from './list-repos.js';
|
|
|
12
12
|
export * from './neighbors.js';
|
|
13
13
|
export * from './query.js';
|
|
14
14
|
export * from './rename.js';
|
|
15
|
+
export type { SymbolCandidate } from './resolve-node.js';
|
|
15
16
|
export * from './route-map.js';
|
|
16
17
|
export * from './serve.js';
|
|
17
18
|
export * from './shape-check.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAE5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
2
|
import type { MonographNode } from '../types.js';
|
|
3
|
+
import { type SymbolCandidate } from './resolve-node.js';
|
|
3
4
|
export interface NeighborEntry {
|
|
4
5
|
node: MonographNode;
|
|
5
6
|
relation: string;
|
|
@@ -8,13 +9,7 @@ export interface NeighborEntry {
|
|
|
8
9
|
direction: 'outbound' | 'inbound';
|
|
9
10
|
}
|
|
10
11
|
/** A node a name could have referred to — enough to re-query unambiguously. */
|
|
11
|
-
export
|
|
12
|
-
id: string;
|
|
13
|
-
name: string;
|
|
14
|
-
label: string;
|
|
15
|
-
filePath: string | null;
|
|
16
|
-
startLine: number | null;
|
|
17
|
-
}
|
|
12
|
+
export type NeighborCandidate = SymbolCandidate;
|
|
18
13
|
export interface MonographNeighborsResult {
|
|
19
14
|
node: MonographNode | null;
|
|
20
15
|
neighbors: NeighborEntry[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neighbors.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/neighbors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"neighbors.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/neighbors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;CACnC;AAED,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEhD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,6EAA6E;IAC7E,SAAS,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,+DAA+D;IAC/D,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,uBAAuB,GAC7B,wBAAwB,CAwC1B"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { rowToNode } from '../storage/node-store.js';
|
|
2
|
+
import { resolveNodeByName } from './resolve-node.js';
|
|
2
3
|
const DEFAULT_LIMIT = 50;
|
|
3
4
|
const MAX_LIMIT = 500;
|
|
4
|
-
/** Candidate lists exist to be read by a human or an agent; a long one is noise. */
|
|
5
|
-
const CANDIDATE_CAP = 25;
|
|
6
5
|
// ── Shared edge query helper ──────────────────────────────────────────────────
|
|
7
6
|
function edgeColumns(direction) {
|
|
8
7
|
// outbound: source_id = nodeId → join target_id
|
|
@@ -33,20 +32,6 @@ function queryEdges(db, nodeId, direction, relationFilter, limit) {
|
|
|
33
32
|
}));
|
|
34
33
|
}
|
|
35
34
|
// ── Node resolution ───────────────────────────────────────────────────────────
|
|
36
|
-
function toCandidate(row) {
|
|
37
|
-
return {
|
|
38
|
-
id: row.id,
|
|
39
|
-
name: row.name,
|
|
40
|
-
label: row.label,
|
|
41
|
-
filePath: row.file_path ?? null,
|
|
42
|
-
startLine: row.start_line ?? null,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/** Exact path match, else a trailing-fragment match so `user.ts` narrows `/app/user.ts`. */
|
|
46
|
-
function matchesFilePath(row, filePath) {
|
|
47
|
-
const rowPath = row.file_path ?? '';
|
|
48
|
-
return rowPath === filePath || rowPath.endsWith(filePath);
|
|
49
|
-
}
|
|
50
35
|
function emptyResult(limit, candidates = []) {
|
|
51
36
|
return {
|
|
52
37
|
node: null,
|
|
@@ -67,19 +52,11 @@ export function getMonographNeighbors(db, input) {
|
|
|
67
52
|
return emptyResult(limit);
|
|
68
53
|
}
|
|
69
54
|
else if (input.name) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
: rows;
|
|
76
|
-
if (matches.length === 0)
|
|
77
|
-
return emptyResult(limit);
|
|
78
|
-
if (matches.length > 1) {
|
|
79
|
-
// A confident answer about the wrong node is worse than asking which one.
|
|
80
|
-
return emptyResult(limit, matches.slice(0, CANDIDATE_CAP).map(toCandidate));
|
|
81
|
-
}
|
|
82
|
-
nodeRow = matches[0];
|
|
55
|
+
// A confident answer about the wrong node is worse than asking which one.
|
|
56
|
+
const resolved = resolveNodeByName(db, input.name, input.filePath);
|
|
57
|
+
if (!resolved.row)
|
|
58
|
+
return emptyResult(limit, resolved.candidates);
|
|
59
|
+
nodeRow = resolved.row;
|
|
83
60
|
}
|
|
84
61
|
else {
|
|
85
62
|
return emptyResult(limit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neighbors.js","sourceRoot":"","sources":["../../../src/mcp-tools/neighbors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"neighbors.js","sourceRoot":"","sources":["../../../src/mcp-tools/neighbors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
/** A node a name could have referred to — enough to re-query unambiguously. */
|
|
3
|
+
export interface SymbolCandidate {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
label: string;
|
|
7
|
+
filePath: string | null;
|
|
8
|
+
startLine: number | null;
|
|
9
|
+
}
|
|
10
|
+
export interface NodeResolution {
|
|
11
|
+
/** The single node the name resolved to, if it resolved to exactly one. */
|
|
12
|
+
row?: Record<string, unknown>;
|
|
13
|
+
/** Populated when the name matched several nodes — non-test definitions first. */
|
|
14
|
+
candidates: SymbolCandidate[];
|
|
15
|
+
}
|
|
16
|
+
/** Candidate lists exist to be read by a human or an agent; a long one is noise. */
|
|
17
|
+
export declare const CANDIDATE_CAP = 25;
|
|
18
|
+
export declare function toCandidate(row: Record<string, unknown>): SymbolCandidate;
|
|
19
|
+
/** Exact path match, else a trailing-fragment match so `user.ts` narrows `/app/user.ts`. */
|
|
20
|
+
export declare function matchesFilePath(row: Record<string, unknown>, filePath: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a symbol name (optionally narrowed by file path) to one node. When
|
|
23
|
+
* several nodes still match, nothing is picked: a confident answer about the
|
|
24
|
+
* wrong definition (say, a test mock) is worse than asking which one was meant.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveNodeByName(db: Database.Database, name: string, filePath?: string): NodeResolution;
|
|
27
|
+
//# sourceMappingURL=resolve-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-node.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/resolve-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,kFAAkF;IAClF,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,oFAAoF;AACpF,eAAO,MAAM,aAAa,KAAK,CAAC;AAIhC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAQzE;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvF;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,cAAc,CAehB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { isTestPath } from '../health/hotspot-utils.js';
|
|
2
|
+
/** Candidate lists exist to be read by a human or an agent; a long one is noise. */
|
|
3
|
+
export const CANDIDATE_CAP = 25;
|
|
4
|
+
/** Rows fetched before ranking, so non-test definitions are not cut off by the cap. */
|
|
5
|
+
const CANDIDATE_SCAN = 500;
|
|
6
|
+
export function toCandidate(row) {
|
|
7
|
+
return {
|
|
8
|
+
id: row.id,
|
|
9
|
+
name: row.name,
|
|
10
|
+
label: row.label,
|
|
11
|
+
filePath: row.file_path ?? null,
|
|
12
|
+
startLine: row.start_line ?? null,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/** Exact path match, else a trailing-fragment match so `user.ts` narrows `/app/user.ts`. */
|
|
16
|
+
export function matchesFilePath(row, filePath) {
|
|
17
|
+
const rowPath = row.file_path ?? '';
|
|
18
|
+
return rowPath === filePath || rowPath.endsWith(filePath);
|
|
19
|
+
}
|
|
20
|
+
const isTestRow = (row) => isTestPath(row.file_path ?? '');
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a symbol name (optionally narrowed by file path) to one node. When
|
|
23
|
+
* several nodes still match, nothing is picked: a confident answer about the
|
|
24
|
+
* wrong definition (say, a test mock) is worse than asking which one was meant.
|
|
25
|
+
*/
|
|
26
|
+
export function resolveNodeByName(db, name, filePath) {
|
|
27
|
+
const rows = db
|
|
28
|
+
.prepare('SELECT * FROM nodes WHERE name = ? LIMIT ?')
|
|
29
|
+
.all(name, CANDIDATE_SCAN);
|
|
30
|
+
let matches = rows;
|
|
31
|
+
if (filePath) {
|
|
32
|
+
const exact = rows.filter((r) => r.file_path === filePath);
|
|
33
|
+
matches = exact.length > 0 ? exact : rows.filter((r) => matchesFilePath(r, filePath));
|
|
34
|
+
}
|
|
35
|
+
if (matches.length === 0)
|
|
36
|
+
return { candidates: [] };
|
|
37
|
+
if (matches.length === 1)
|
|
38
|
+
return { row: matches[0], candidates: [] };
|
|
39
|
+
const ranked = [...matches.filter((r) => !isTestRow(r)), ...matches.filter(isTestRow)];
|
|
40
|
+
return { candidates: ranked.slice(0, CANDIDATE_CAP).map(toCandidate) };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=resolve-node.js.map
|