@ttsc/graph 0.16.5 → 0.16.6
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/lib/TtscGraphApplication.js +36 -23
- package/lib/TtscGraphApplication.js.map +1 -1
- package/lib/model/loadGraph.js +17 -17
- package/lib/server/accessAliases.js +53 -0
- package/lib/server/accessAliases.js.map +1 -0
- package/lib/server/createServer.js +1133 -634
- package/lib/server/createServer.js.map +1 -1
- package/lib/server/instructions.js +69 -21
- package/lib/server/instructions.js.map +1 -1
- package/lib/server/runDetails.js +413 -0
- package/lib/server/runDetails.js.map +1 -0
- package/lib/server/{runIndex.js → runEntrypoints.js} +91 -26
- package/lib/server/runEntrypoints.js.map +1 -0
- package/lib/server/{runQuery.js → runLookup.js} +102 -15
- package/lib/server/runLookup.js.map +1 -0
- package/lib/server/runOverview.js +31 -21
- package/lib/server/runOverview.js.map +1 -1
- package/lib/server/runTrace.js +133 -38
- package/lib/server/runTrace.js.map +1 -1
- package/lib/structures/{ITtscGraphQuery.js → ITtscGraphDetails.js} +1 -1
- package/lib/structures/ITtscGraphDetails.js.map +1 -0
- package/lib/structures/ITtscGraphEntrypoints.js +3 -0
- package/lib/structures/ITtscGraphEntrypoints.js.map +1 -0
- package/lib/structures/{ITtscGraphExpand.js → ITtscGraphEscape.js} +1 -1
- package/lib/structures/ITtscGraphEscape.js.map +1 -0
- package/lib/structures/{ITtscGraphIndex.js → ITtscGraphLookup.js} +1 -1
- package/lib/structures/ITtscGraphLookup.js.map +1 -0
- package/lib/structures/index.js +4 -3
- package/lib/structures/index.js.map +1 -1
- package/package.json +2 -2
- package/src/TtscGraphApplication.ts +39 -32
- package/src/server/accessAliases.ts +55 -0
- package/src/server/createServer.ts +4 -7
- package/src/server/instructions.ts +69 -21
- package/src/server/runDetails.ts +469 -0
- package/src/server/{runIndex.ts → runEntrypoints.ts} +109 -34
- package/src/server/{runQuery.ts → runLookup.ts} +123 -16
- package/src/server/runOverview.ts +35 -23
- package/src/server/runTrace.ts +164 -38
- package/src/structures/ITtscGraphApplication.ts +100 -52
- package/src/structures/ITtscGraphDecorator.ts +12 -14
- package/src/structures/ITtscGraphDetails.ts +134 -0
- package/src/structures/{ITtscGraphIndex.ts → ITtscGraphEntrypoints.ts} +34 -16
- package/src/structures/ITtscGraphEscape.ts +39 -0
- package/src/structures/ITtscGraphEvidence.ts +5 -8
- package/src/structures/ITtscGraphLookup.ts +61 -0
- package/src/structures/ITtscGraphNode.ts +10 -4
- package/src/structures/ITtscGraphOverview.ts +24 -16
- package/src/structures/ITtscGraphTrace.ts +54 -11
- package/src/structures/TtscGraphNodeKind.ts +2 -2
- package/src/structures/index.ts +4 -3
- package/lib/server/runExpand.js +0 -177
- package/lib/server/runExpand.js.map +0 -1
- package/lib/server/runIndex.js.map +0 -1
- package/lib/server/runQuery.js.map +0 -1
- package/lib/structures/ITtscGraphExpand.js.map +0 -1
- package/lib/structures/ITtscGraphIndex.js.map +0 -1
- package/lib/structures/ITtscGraphQuery.js.map +0 -1
- package/src/server/runExpand.ts +0 -186
- package/src/structures/ITtscGraphExpand.ts +0 -85
- package/src/structures/ITtscGraphQuery.ts +0 -49
package/lib/server/runTrace.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runTrace = runTrace;
|
|
4
|
+
const accessAliases_1 = require("./accessAliases");
|
|
4
5
|
const resolveHandle_1 = require("./resolveHandle");
|
|
5
|
-
const
|
|
6
|
-
const DEFAULT_DEPTH =
|
|
7
|
-
const DEFAULT_MAX_NODES =
|
|
6
|
+
const runDetails_1 = require("./runDetails");
|
|
7
|
+
const DEFAULT_DEPTH = 2;
|
|
8
|
+
const DEFAULT_MAX_NODES = 6;
|
|
9
|
+
const MAX_OPEN_DEPTH = 2;
|
|
10
|
+
const MAX_OPEN_NODES = 8;
|
|
11
|
+
const MAX_HOPS_PER_NODE = 1;
|
|
12
|
+
const MAX_STEPS = 6;
|
|
13
|
+
const MAX_NEXT_HANDLES = 2;
|
|
8
14
|
/**
|
|
9
15
|
* Breadth-first trace along the dependency graph. Structural
|
|
10
16
|
* (contains/exports/imports) edges are excluded so the path is real call/type
|
|
@@ -14,8 +20,10 @@ const DEFAULT_MAX_NODES = 60;
|
|
|
14
20
|
*/
|
|
15
21
|
function runTrace(graph, props) {
|
|
16
22
|
const direction = props.direction ?? "forward";
|
|
17
|
-
const
|
|
18
|
-
const
|
|
23
|
+
const focus = props.focus ?? "all";
|
|
24
|
+
const maxDepth = bound(props.maxDepth, DEFAULT_DEPTH, 1, MAX_OPEN_DEPTH);
|
|
25
|
+
const maxNodes = bound(props.maxNodes, DEFAULT_MAX_NODES, 1, MAX_OPEN_NODES);
|
|
26
|
+
const maxHops = maxNodes * MAX_HOPS_PER_NODE;
|
|
19
27
|
const reverse = direction === "reverse" || direction === "impact";
|
|
20
28
|
// Only an impact trace tags reached nodes with their public-surface role; for
|
|
21
29
|
// forward/reverse the role is noise.
|
|
@@ -23,44 +31,55 @@ function runTrace(graph, props) {
|
|
|
23
31
|
const start = (0, resolveHandle_1.resolveGraphHandle)(graph, props.from);
|
|
24
32
|
if (start.candidates) {
|
|
25
33
|
return {
|
|
34
|
+
type: "trace",
|
|
26
35
|
direction,
|
|
27
36
|
hops: [],
|
|
28
37
|
reached: [],
|
|
29
38
|
truncated: false,
|
|
30
|
-
candidates: start.candidates.map((n) => summary(n)),
|
|
39
|
+
candidates: start.candidates.map((n) => summary(graph, n)),
|
|
31
40
|
};
|
|
32
41
|
}
|
|
33
42
|
if (start.node === undefined) {
|
|
34
|
-
return {
|
|
43
|
+
return {
|
|
44
|
+
type: "trace",
|
|
45
|
+
direction,
|
|
46
|
+
hops: [],
|
|
47
|
+
reached: [],
|
|
48
|
+
truncated: false,
|
|
49
|
+
};
|
|
35
50
|
}
|
|
36
|
-
// Path mode: with `to`, return the dependency path from `from` to `to
|
|
37
|
-
// one-call answer for "how does A reach B"
|
|
51
|
+
// Path mode: with `to`, return the dependency path from `from` to `to`, the
|
|
52
|
+
// one-call answer for "how does A reach B", instead of an open-ended trace.
|
|
38
53
|
if (props.to !== undefined && props.to !== "") {
|
|
39
|
-
const base = {
|
|
54
|
+
const base = {
|
|
55
|
+
type: "trace",
|
|
56
|
+
direction: "path",
|
|
57
|
+
hops: [],
|
|
58
|
+
reached: [],
|
|
59
|
+
truncated: false,
|
|
60
|
+
};
|
|
40
61
|
const target = (0, resolveHandle_1.resolveGraphHandle)(graph, props.to);
|
|
41
62
|
if (target.candidates) {
|
|
42
63
|
return {
|
|
43
64
|
...base,
|
|
44
|
-
start: summary(start.node),
|
|
45
|
-
candidates: target.candidates.map((n) => summary(n)),
|
|
65
|
+
start: summary(graph, start.node),
|
|
66
|
+
candidates: target.candidates.map((n) => summary(graph, n)),
|
|
46
67
|
};
|
|
47
68
|
}
|
|
48
69
|
if (target.node === undefined) {
|
|
49
|
-
return { ...base, start: summary(start.node) };
|
|
70
|
+
return { ...base, start: summary(graph, start.node) };
|
|
50
71
|
}
|
|
51
|
-
const found = findPath(graph, start.node.id, target.node.id,
|
|
72
|
+
const found = findPath(graph, start.node.id, target.node.id, bound(props.maxDepth, 12, 1, 12), focus);
|
|
73
|
+
const path = found?.path ?? [];
|
|
74
|
+
const hops = found?.hops ?? [];
|
|
52
75
|
return {
|
|
53
76
|
...base,
|
|
54
|
-
start: summary(start.node),
|
|
55
|
-
target: summary(target.node),
|
|
56
|
-
hops
|
|
57
|
-
path:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (sig !== undefined)
|
|
61
|
-
node_.signature = sig;
|
|
62
|
-
return node_;
|
|
63
|
-
}),
|
|
77
|
+
start: summary(graph, start.node),
|
|
78
|
+
target: summary(graph, target.node),
|
|
79
|
+
hops,
|
|
80
|
+
path: path.map((node, i) => summary(graph, node, i, false, true)),
|
|
81
|
+
steps: traceSteps(graph, hops),
|
|
82
|
+
next: nextFromPath(path),
|
|
64
83
|
};
|
|
65
84
|
}
|
|
66
85
|
const hops = [];
|
|
@@ -79,7 +98,7 @@ function runTrace(graph, props) {
|
|
|
79
98
|
}
|
|
80
99
|
const edges = reverse ? graph.incoming(id) : graph.outgoing(id);
|
|
81
100
|
for (const edge of edges) {
|
|
82
|
-
if (!traversable(edge.kind))
|
|
101
|
+
if (!traversable(edge.kind, focus))
|
|
83
102
|
continue;
|
|
84
103
|
const otherId = reverse ? edge.from : edge.to;
|
|
85
104
|
const other = graph.node(otherId);
|
|
@@ -91,20 +110,33 @@ function runTrace(graph, props) {
|
|
|
91
110
|
kind: edge.kind,
|
|
92
111
|
depth: depth + 1,
|
|
93
112
|
};
|
|
113
|
+
const evidence = (0, runDetails_1.edgeEvidenceOf)(edge);
|
|
114
|
+
if (evidence !== undefined)
|
|
115
|
+
hop.evidence = evidence;
|
|
116
|
+
const aliases = (0, accessAliases_1.accessAliasesFor)(graph.node(edge.to), (0, runDetails_1.edgeEvidenceTextOf)(edge));
|
|
117
|
+
if (aliases !== undefined)
|
|
118
|
+
hop.aliases = aliases;
|
|
94
119
|
// A back-edge to the start or an already-reached node: record the hop;
|
|
95
120
|
// its endpoints are already represented.
|
|
96
121
|
if (visited.has(otherId)) {
|
|
97
|
-
hops.
|
|
122
|
+
if (hops.length >= maxHops)
|
|
123
|
+
truncated = true;
|
|
124
|
+
else
|
|
125
|
+
hops.push(hop);
|
|
98
126
|
continue;
|
|
99
127
|
}
|
|
100
|
-
// A new node past the cap is left unrepresented, so drop its hop too
|
|
128
|
+
// A new node past the cap is left unrepresented, so drop its hop too:
|
|
101
129
|
// every hop's endpoints stay resolvable in `reached`/`start`.
|
|
102
130
|
if (reached.size >= maxNodes) {
|
|
103
131
|
truncated = true;
|
|
104
132
|
continue;
|
|
105
133
|
}
|
|
134
|
+
if (hops.length >= maxHops) {
|
|
135
|
+
truncated = true;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
106
138
|
visited.add(otherId);
|
|
107
|
-
reached.set(otherId, summary(other, depth + 1, withRoles));
|
|
139
|
+
reached.set(otherId, summary(graph, other, depth + 1, withRoles));
|
|
108
140
|
next.push({ id: otherId, depth: depth + 1 });
|
|
109
141
|
hops.push(hop);
|
|
110
142
|
}
|
|
@@ -112,19 +144,44 @@ function runTrace(graph, props) {
|
|
|
112
144
|
queue = next;
|
|
113
145
|
}
|
|
114
146
|
return {
|
|
115
|
-
|
|
147
|
+
type: "trace",
|
|
148
|
+
start: summary(graph, start.node),
|
|
116
149
|
direction,
|
|
117
150
|
hops,
|
|
118
151
|
reached: [...reached.values()],
|
|
152
|
+
steps: traceSteps(graph, hops),
|
|
153
|
+
next: {
|
|
154
|
+
details: [start.node.id, ...reached.keys()].slice(0, MAX_NEXT_HANDLES),
|
|
155
|
+
traceFrom: [...reached.keys()].slice(0, MAX_NEXT_HANDLES),
|
|
156
|
+
},
|
|
119
157
|
truncated,
|
|
120
158
|
};
|
|
121
159
|
}
|
|
160
|
+
function nextFromPath(path) {
|
|
161
|
+
return {
|
|
162
|
+
details: path.map((node) => node.id),
|
|
163
|
+
traceFrom: path.length > 0 ? [path[path.length - 1].id] : [],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function traceSteps(graph, hops) {
|
|
167
|
+
return hops.slice(0, MAX_STEPS).map((hop) => {
|
|
168
|
+
const from = graph.node(hop.from);
|
|
169
|
+
const to = graph.node(hop.to);
|
|
170
|
+
const lhs = from?.qualifiedName ?? from?.name ?? hop.from;
|
|
171
|
+
const rhs = to?.qualifiedName ?? to?.name ?? hop.to;
|
|
172
|
+
const evidence = hop.evidence === undefined
|
|
173
|
+
? ""
|
|
174
|
+
: ` at ${hop.evidence.file}:${hop.evidence.startLine}`;
|
|
175
|
+
const aliases = hop.aliases === undefined ? "" : ` aliases ${hop.aliases.join(", ")}`;
|
|
176
|
+
return `${lhs} -[${hop.kind}${evidence}${aliases}]-> ${rhs}`;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
122
179
|
/**
|
|
123
180
|
* The shortest dependency path from `startId` to `targetId` over real (non-
|
|
124
181
|
* structural) forward edges, breadth-first, or null when `targetId` is not
|
|
125
182
|
* reachable within maxDepth. Returns the nodes in order and the hops between.
|
|
126
183
|
*/
|
|
127
|
-
function findPath(graph, startId, targetId, maxDepth) {
|
|
184
|
+
function findPath(graph, startId, targetId, maxDepth, focus) {
|
|
128
185
|
const startNode = graph.node(startId);
|
|
129
186
|
if (startNode === undefined)
|
|
130
187
|
return null;
|
|
@@ -139,7 +196,7 @@ function findPath(graph, startId, targetId, maxDepth) {
|
|
|
139
196
|
if (depth >= maxDepth)
|
|
140
197
|
continue;
|
|
141
198
|
for (const edge of graph.outgoing(id)) {
|
|
142
|
-
if (!traversable(edge.kind))
|
|
199
|
+
if (!traversable(edge.kind, focus))
|
|
143
200
|
continue;
|
|
144
201
|
const otherId = edge.to;
|
|
145
202
|
if (visited.has(otherId))
|
|
@@ -148,7 +205,13 @@ function findPath(graph, startId, targetId, maxDepth) {
|
|
|
148
205
|
if (other === undefined || other.kind === "file")
|
|
149
206
|
continue;
|
|
150
207
|
visited.add(otherId);
|
|
151
|
-
|
|
208
|
+
const evidence = (0, runDetails_1.edgeEvidenceOf)(edge);
|
|
209
|
+
parent.set(otherId, {
|
|
210
|
+
via: id,
|
|
211
|
+
kind: edge.kind,
|
|
212
|
+
evidence,
|
|
213
|
+
evidenceText: (0, runDetails_1.edgeEvidenceTextOf)(edge),
|
|
214
|
+
});
|
|
152
215
|
if (otherId === targetId) {
|
|
153
216
|
const ids = [otherId];
|
|
154
217
|
let cur = otherId;
|
|
@@ -168,12 +231,19 @@ function findPath(graph, startId, targetId, maxDepth) {
|
|
|
168
231
|
const hops = [];
|
|
169
232
|
for (let i = 1; i < path.length; i++) {
|
|
170
233
|
const node = path[i];
|
|
171
|
-
|
|
234
|
+
const parentEdge = parent.get(node.id);
|
|
235
|
+
const hop = {
|
|
172
236
|
from: path[i - 1].id,
|
|
173
237
|
to: node.id,
|
|
174
|
-
kind:
|
|
238
|
+
kind: parentEdge?.kind ?? "calls",
|
|
175
239
|
depth: i,
|
|
176
|
-
}
|
|
240
|
+
};
|
|
241
|
+
if (parentEdge?.evidence !== undefined)
|
|
242
|
+
hop.evidence = parentEdge.evidence;
|
|
243
|
+
const aliases = (0, accessAliases_1.accessAliasesFor)(node, parentEdge?.evidenceText);
|
|
244
|
+
if (aliases !== undefined)
|
|
245
|
+
hop.aliases = aliases;
|
|
246
|
+
hops.push(hop);
|
|
177
247
|
}
|
|
178
248
|
return { path, hops };
|
|
179
249
|
}
|
|
@@ -188,7 +258,7 @@ function findPath(graph, startId, targetId, maxDepth) {
|
|
|
188
258
|
* Summarize a node for a trace result. With `withRoles`, tag the public-surface
|
|
189
259
|
* roles (exported / test) an impact trace reports; other directions omit them.
|
|
190
260
|
*/
|
|
191
|
-
function summary(node, depth, withRoles = false) {
|
|
261
|
+
function summary(graph, node, depth, withRoles = false, withSignature = false) {
|
|
192
262
|
const out = {
|
|
193
263
|
id: node.id,
|
|
194
264
|
name: node.qualifiedName ?? node.name,
|
|
@@ -197,6 +267,11 @@ function summary(node, depth, withRoles = false) {
|
|
|
197
267
|
};
|
|
198
268
|
if (depth !== undefined)
|
|
199
269
|
out.depth = depth;
|
|
270
|
+
if (withSignature) {
|
|
271
|
+
const sig = (0, runDetails_1.signatureOf)(graph.project, node);
|
|
272
|
+
if (sig !== undefined)
|
|
273
|
+
out.signature = sig;
|
|
274
|
+
}
|
|
200
275
|
if (withRoles) {
|
|
201
276
|
const roles = [];
|
|
202
277
|
if (node.exported)
|
|
@@ -209,11 +284,31 @@ function summary(node, depth, withRoles = false) {
|
|
|
209
284
|
return out;
|
|
210
285
|
}
|
|
211
286
|
/** An edge the trace should follow: a real dependency, not a structural edge. */
|
|
212
|
-
function traversable(kind) {
|
|
213
|
-
|
|
287
|
+
function traversable(kind, focus) {
|
|
288
|
+
if (kind === "contains" || kind === "exports" || kind === "imports") {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
if (focus === "execution") {
|
|
292
|
+
return (kind === "calls" ||
|
|
293
|
+
kind === "instantiates" ||
|
|
294
|
+
kind === "accesses" ||
|
|
295
|
+
kind === "renders");
|
|
296
|
+
}
|
|
297
|
+
if (focus === "types") {
|
|
298
|
+
return (kind === "type_ref" ||
|
|
299
|
+
kind === "extends" ||
|
|
300
|
+
kind === "implements" ||
|
|
301
|
+
kind === "overrides" ||
|
|
302
|
+
kind === "decorates");
|
|
303
|
+
}
|
|
304
|
+
return true;
|
|
214
305
|
}
|
|
215
306
|
function isTestFile(file) {
|
|
216
307
|
return (/(^|\/)(test|tests|__tests__|spec)\//.test(file) ||
|
|
217
308
|
/\.(test|spec)\.[cm]?tsx?$/.test(file));
|
|
218
309
|
}
|
|
310
|
+
function bound(value, fallback, min, max) {
|
|
311
|
+
const n = value === undefined || !Number.isFinite(value) ? fallback : value;
|
|
312
|
+
return Math.max(min, Math.min(max, Math.floor(n)));
|
|
313
|
+
}
|
|
219
314
|
//# sourceMappingURL=runTrace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTrace.js","sourceRoot":"","sources":["../../src/server/runTrace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runTrace.js","sourceRoot":"","sources":["../../src/server/runTrace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscGraphDetails.js","sourceRoot":"","sources":["../../src/structures/ITtscGraphDetails.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscGraphEntrypoints.js","sourceRoot":"","sources":["../../src/structures/ITtscGraphEntrypoints.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscGraphEscape.js","sourceRoot":"","sources":["../../src/structures/ITtscGraphEscape.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscGraphLookup.js","sourceRoot":"","sources":["../../src/structures/ITtscGraphLookup.ts"],"names":[],"mappings":""}
|
package/lib/structures/index.js
CHANGED
|
@@ -25,11 +25,12 @@ __exportStar(require("./ITtscGraphDiagnostic"), exports);
|
|
|
25
25
|
__exportStar(require("./ITtscGraphDump"), exports);
|
|
26
26
|
__exportStar(require("./ITtscGraphEdge"), exports);
|
|
27
27
|
__exportStar(require("./ITtscGraphEvidence"), exports);
|
|
28
|
-
__exportStar(require("./
|
|
29
|
-
__exportStar(require("./
|
|
28
|
+
__exportStar(require("./ITtscGraphEscape"), exports);
|
|
29
|
+
__exportStar(require("./ITtscGraphDetails"), exports);
|
|
30
|
+
__exportStar(require("./ITtscGraphEntrypoints"), exports);
|
|
30
31
|
__exportStar(require("./ITtscGraphNode"), exports);
|
|
31
32
|
__exportStar(require("./ITtscGraphOverview"), exports);
|
|
32
|
-
__exportStar(require("./
|
|
33
|
+
__exportStar(require("./ITtscGraphLookup"), exports);
|
|
33
34
|
__exportStar(require("./ITtscGraphTrace"), exports);
|
|
34
35
|
__exportStar(require("./TtscGraphEdgeKind"), exports);
|
|
35
36
|
__exportStar(require("./TtscGraphNodeKind"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/structures/index.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,0EAA0E;AAC1E,8EAA8E;AAC9E,gFAAgF;AAChF,6BAA6B;;;;;;;;;;;;;;;;AAE7B,0DAAwC;AACxC,wDAAsC;AACtC,yDAAuC;AACvC,mDAAiC;AACjC,mDAAiC;AACjC,uDAAqC;AACrC,qDAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/structures/index.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,0EAA0E;AAC1E,8EAA8E;AAC9E,gFAAgF;AAChF,6BAA6B;;;;;;;;;;;;;;;;AAE7B,0DAAwC;AACxC,wDAAsC;AACtC,yDAAuC;AACvC,mDAAiC;AACjC,mDAAiC;AACjC,uDAAqC;AACrC,qDAAmC;AACnC,sDAAoC;AACpC,0DAAwC;AACxC,mDAAiC;AACjC,uDAAqC;AACrC,qDAAmC;AACnC,oDAAkC;AAClC,sDAAoC;AACpC,sDAAoC;AACpC,0DAAwC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttsc/graph",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.6",
|
|
4
4
|
"description": "Checker-resolved architecture graph over MCP for coding agents, backed by ttsc's in-process TypeScript-Go compiler.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"three": "^0.184.0",
|
|
44
44
|
"three-forcegraph": "^1.43.4",
|
|
45
45
|
"typescript": "7.0.1-rc",
|
|
46
|
-
"ttsc": "0.16.
|
|
46
|
+
"ttsc": "0.16.6"
|
|
47
47
|
},
|
|
48
48
|
"repository": {
|
|
49
49
|
"type": "git",
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { TtscGraphMemory } from "./model/TtscGraphMemory";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { runDetails } from "./server/runDetails";
|
|
3
|
+
import { runEntrypoints } from "./server/runEntrypoints";
|
|
4
|
+
import { runLookup } from "./server/runLookup";
|
|
4
5
|
import { runOverview } from "./server/runOverview";
|
|
5
|
-
import { runQuery } from "./server/runQuery";
|
|
6
6
|
import { runTrace } from "./server/runTrace";
|
|
7
7
|
import { ITtscGraphApplication } from "./structures/ITtscGraphApplication";
|
|
8
|
-
import {
|
|
9
|
-
import { ITtscGraphIndex } from "./structures/ITtscGraphIndex";
|
|
10
|
-
import { ITtscGraphOverview } from "./structures/ITtscGraphOverview";
|
|
11
|
-
import { ITtscGraphQuery } from "./structures/ITtscGraphQuery";
|
|
12
|
-
import { ITtscGraphTrace } from "./structures/ITtscGraphTrace";
|
|
8
|
+
import { ITtscGraphEscape } from "./structures/ITtscGraphEscape";
|
|
13
9
|
|
|
14
10
|
export type TtscGraphSource = TtscGraphMemory | (() => TtscGraphMemory);
|
|
15
11
|
|
|
@@ -17,12 +13,11 @@ export type TtscGraphSource = TtscGraphMemory | (() => TtscGraphMemory);
|
|
|
17
13
|
* The MCP tool surface as a plain class over the resident
|
|
18
14
|
* {@link TtscGraphMemory}.
|
|
19
15
|
*
|
|
20
|
-
*
|
|
21
|
-
* {@link ITtscGraphApplication} to generate
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* binds them to the graph.
|
|
16
|
+
* Its public method is the MCP tool: `typia.llm.controller` reflects
|
|
17
|
+
* {@link ITtscGraphApplication} to generate the tool's JSON schema and argument
|
|
18
|
+
* validator from the signature and JSDoc, with no hand-written schema. The
|
|
19
|
+
* method delegates to the pure graph functions in `./server`, which are
|
|
20
|
+
* unit-testable without a transport; this class only binds them to the graph.
|
|
26
21
|
*
|
|
27
22
|
* Every method answers from the resident graph; none recompiles. Output is kept
|
|
28
23
|
* compact and bounded so a model can read structure without a file read, which
|
|
@@ -35,23 +30,35 @@ export class TtscGraphApplication implements ITtscGraphApplication {
|
|
|
35
30
|
this.graph = typeof source === "function" ? source : () => source;
|
|
36
31
|
}
|
|
37
32
|
|
|
38
|
-
public
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
33
|
+
public query(
|
|
34
|
+
props: ITtscGraphApplication.IProps,
|
|
35
|
+
): ITtscGraphApplication.IResult {
|
|
36
|
+
switch (props.request.type) {
|
|
37
|
+
case "entrypoints":
|
|
38
|
+
return { result: runEntrypoints(this.graph(), props.request) };
|
|
39
|
+
case "lookup":
|
|
40
|
+
return { result: runLookup(this.graph(), props.request) };
|
|
41
|
+
case "trace":
|
|
42
|
+
return { result: runTrace(this.graph(), props.request) };
|
|
43
|
+
case "details":
|
|
44
|
+
return { result: runDetails(this.graph(), props.request) };
|
|
45
|
+
case "overview":
|
|
46
|
+
return { result: runOverview(this.graph(), props.request) };
|
|
47
|
+
case "escape": {
|
|
48
|
+
const result: ITtscGraphEscape = {
|
|
49
|
+
type: "escape",
|
|
50
|
+
skipped: true,
|
|
51
|
+
reason: props.request.reason,
|
|
52
|
+
};
|
|
53
|
+
if (props.request.nextStep !== undefined) {
|
|
54
|
+
result.nextStep = props.request.nextStep;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
result,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
default:
|
|
61
|
+
throw new Error("Unknown graph request type");
|
|
62
|
+
}
|
|
56
63
|
}
|
|
57
64
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ITtscGraphNode } from "../structures/ITtscGraphNode";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Derive stable access-path aliases for a member edge from its source
|
|
5
|
+
* expression. If a hop reaches `Owner.member` through `obj.path.member`, the
|
|
6
|
+
* alias `Owner.path.member` keeps both the resolved owner and the concrete
|
|
7
|
+
* access path visible without reopening source.
|
|
8
|
+
*/
|
|
9
|
+
export function accessAliasesFor(
|
|
10
|
+
node: ITtscGraphNode | undefined,
|
|
11
|
+
evidenceText: string | undefined,
|
|
12
|
+
): string[] | undefined {
|
|
13
|
+
if (
|
|
14
|
+
node === undefined ||
|
|
15
|
+
node.qualifiedName === undefined ||
|
|
16
|
+
evidenceText === undefined
|
|
17
|
+
) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const segments = dottedSegments(evidenceText);
|
|
21
|
+
if (segments.length < 2 || segments[segments.length - 1] !== node.name) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
const dot = node.qualifiedName.lastIndexOf(".");
|
|
25
|
+
if (dot < 0) return undefined;
|
|
26
|
+
|
|
27
|
+
const owner = node.qualifiedName.slice(0, dot);
|
|
28
|
+
const suffix = segments.slice(1).join(".");
|
|
29
|
+
const aliases = new Set<string>();
|
|
30
|
+
for (const candidate of [...ownerDisplayAliases(owner), owner]) {
|
|
31
|
+
const alias = `${candidate}.${suffix}`;
|
|
32
|
+
if (alias !== node.qualifiedName) aliases.add(alias);
|
|
33
|
+
}
|
|
34
|
+
return aliases.size > 0 ? [...aliases] : undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function dottedSegments(text: string): string[] {
|
|
38
|
+
const normalized = text.trim().replace(/\?\./g, ".");
|
|
39
|
+
const parts = normalized.split(".");
|
|
40
|
+
if (parts.length < 2) return [];
|
|
41
|
+
return parts.every((part) => /^[A-Za-z_$][\w$]*$/.test(part)) ? parts : [];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function ownerDisplayAliases(owner: string): string[] {
|
|
45
|
+
const display = owner.replace(/^_+/, "");
|
|
46
|
+
const out = new Set<string>();
|
|
47
|
+
for (const suffix of ["Internals", "Internal"]) {
|
|
48
|
+
if (display.length > suffix.length && display.endsWith(suffix)) {
|
|
49
|
+
out.add(display.slice(0, -suffix.length));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (out.size === 0 && display !== owner) out.add(display);
|
|
53
|
+
out.delete(owner);
|
|
54
|
+
return [...out];
|
|
55
|
+
}
|
|
@@ -12,7 +12,7 @@ import { instructions } from "./instructions";
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Build the MCP server for a graph. `typia.llm.controller` reflects
|
|
15
|
-
* {@link ITtscGraphApplication} into a validated tool application
|
|
15
|
+
* {@link ITtscGraphApplication} into a validated tool application. Every tool's
|
|
16
16
|
* JSON schema and argument validator is generated from the method's TypeScript
|
|
17
17
|
* types and JSDoc, so there is no hand-written schema. The list/call handlers
|
|
18
18
|
* below are the minimal standalone registration: list the generated functions,
|
|
@@ -64,8 +64,8 @@ export function createServer(
|
|
|
64
64
|
if (func === undefined || method === undefined) {
|
|
65
65
|
return error(`Unknown tool: ${request.params.name}`);
|
|
66
66
|
}
|
|
67
|
-
//
|
|
68
|
-
//
|
|
67
|
+
// Validate an empty object when a client omits `arguments`, so typia can
|
|
68
|
+
// return field-level errors instead of a generic "expected object".
|
|
69
69
|
const validation = func.validate(request.params.arguments ?? {});
|
|
70
70
|
if (!validation.success) {
|
|
71
71
|
// Hand typia's validation errors back so the model can correct its call.
|
|
@@ -77,10 +77,7 @@ export function createServer(
|
|
|
77
77
|
content: [
|
|
78
78
|
{
|
|
79
79
|
type: "text" as const,
|
|
80
|
-
text:
|
|
81
|
-
result === undefined
|
|
82
|
-
? "Success"
|
|
83
|
-
: JSON.stringify(result, null, 2),
|
|
80
|
+
text: result === undefined ? "Success" : JSON.stringify(result),
|
|
84
81
|
},
|
|
85
82
|
],
|
|
86
83
|
};
|