@roarpeng/graphflow 1.3.1 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/dist/graph/file-indexer.d.ts.map +1 -1
  4. package/dist/graph/file-indexer.js +12 -5
  5. package/dist/graph/file-indexer.js.map +1 -1
  6. package/dist/graph/file-watcher.d.ts +29 -0
  7. package/dist/graph/file-watcher.d.ts.map +1 -0
  8. package/dist/graph/file-watcher.js +204 -0
  9. package/dist/graph/file-watcher.js.map +1 -0
  10. package/dist/graph/framework-routes.d.ts +15 -0
  11. package/dist/graph/framework-routes.d.ts.map +1 -0
  12. package/dist/graph/framework-routes.js +187 -0
  13. package/dist/graph/framework-routes.js.map +1 -0
  14. package/dist/graph/graph-analysis.d.ts +99 -0
  15. package/dist/graph/graph-analysis.d.ts.map +1 -0
  16. package/dist/graph/graph-analysis.js +286 -0
  17. package/dist/graph/graph-analysis.js.map +1 -0
  18. package/dist/graph/graph-search.d.ts +52 -0
  19. package/dist/graph/graph-search.d.ts.map +1 -0
  20. package/dist/graph/graph-search.js +132 -0
  21. package/dist/graph/graph-search.js.map +1 -0
  22. package/dist/graph/graphify-file-client.js +1 -1
  23. package/dist/graph/graphify-file-client.js.map +1 -1
  24. package/dist/graph/language-indexers/tree-sitter-loader.js +4 -4
  25. package/dist/graph/language-indexers/tree-sitter-loader.js.map +1 -1
  26. package/dist/integrations/agent-mcp-installer.d.ts +16 -0
  27. package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
  28. package/dist/integrations/agent-mcp-installer.js +119 -7
  29. package/dist/integrations/agent-mcp-installer.js.map +1 -1
  30. package/dist/integrations/skill-installer.d.ts +40 -0
  31. package/dist/integrations/skill-installer.d.ts.map +1 -1
  32. package/dist/integrations/skill-installer.js +228 -3
  33. package/dist/integrations/skill-installer.js.map +1 -1
  34. package/dist/surfaces/cli/init.d.ts.map +1 -1
  35. package/dist/surfaces/cli/init.js +17 -0
  36. package/dist/surfaces/cli/init.js.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,99 @@
1
+ import type { GraphNode } from "../core/types";
2
+ import type { GraphClient } from "./client-factory";
3
+ export interface ImpactResult {
4
+ seed: string;
5
+ impacted: Array<{
6
+ node: {
7
+ id: string;
8
+ type: GraphNode["type"];
9
+ content: string;
10
+ };
11
+ depth: number;
12
+ path: string[];
13
+ }>;
14
+ totalCount: number;
15
+ maxDepthReached: number;
16
+ }
17
+ export interface AffectedResult {
18
+ changedFiles: string[];
19
+ affected: Array<{
20
+ node: {
21
+ id: string;
22
+ type: GraphNode["type"];
23
+ content: string;
24
+ };
25
+ depth: number;
26
+ isTest: boolean;
27
+ path: string[];
28
+ }>;
29
+ testFiles: string[];
30
+ totalCount: number;
31
+ }
32
+ /**
33
+ * 正向影响追踪:从指定符号出发,沿 calls / references / imports 边做多跳正向 BFS 传播。
34
+ *
35
+ * @param client GraphClient 实例
36
+ * @param symbolName 种子节点 id
37
+ * @param options maxDepth 默认 5
38
+ */
39
+ export declare function impactAnalysis(client: GraphClient, symbolName: string, options?: {
40
+ maxDepth?: number;
41
+ }): Promise<ImpactResult>;
42
+ /**
43
+ * 反向影响追踪:从变更文件出发,沿所有边的反方向(direction: "in")传播,
44
+ * 找出受影响的测试文件、调用方、下游模块。
45
+ *
46
+ * @param client GraphClient 实例
47
+ * @param changedFiles 种子节点 id 列表
48
+ * @param options maxDepth 默认 5
49
+ */
50
+ export declare function affectedAnalysis(client: GraphClient, changedFiles: string[], options?: {
51
+ maxDepth?: number;
52
+ }): Promise<AffectedResult>;
53
+ export interface CallChainResult {
54
+ from: string;
55
+ to: string;
56
+ found: boolean;
57
+ path: Array<{
58
+ symbol: string;
59
+ file: string;
60
+ line?: number | undefined;
61
+ }>;
62
+ depth: number;
63
+ }
64
+ export interface InheritanceNode {
65
+ symbol: string;
66
+ file: string;
67
+ line?: number | undefined;
68
+ parents: InheritanceNode[];
69
+ children: InheritanceNode[];
70
+ }
71
+ export interface InheritanceChainResult {
72
+ symbol: string;
73
+ parents: InheritanceNode[];
74
+ children: InheritanceNode[];
75
+ depth: number;
76
+ }
77
+ /**
78
+ * 调用链追踪:从 fromSymbol 出发,沿 calls 边做 BFS,搜索到 toSymbol 的最短路径。
79
+ *
80
+ * @param client GraphClient 实例
81
+ * @param fromSymbol 起始符号 id
82
+ * @param toSymbol 目标符号 id
83
+ * @param options maxDepth 默认 10
84
+ */
85
+ export declare function callChain(client: GraphClient, fromSymbol: string, toSymbol: string, options?: {
86
+ maxDepth?: number;
87
+ }): Promise<CallChainResult>;
88
+ /**
89
+ * 继承层次追踪:沿 inherits 边追踪继承树。
90
+ *
91
+ * @param client GraphClient 实例
92
+ * @param symbolName 起始符号 id
93
+ * @param options maxDepth 默认 5;direction 默认 both
94
+ */
95
+ export declare function inheritanceChain(client: GraphClient, symbolName: string, options?: {
96
+ maxDepth?: number;
97
+ direction?: "up" | "down" | "both";
98
+ }): Promise<InheritanceChainResult>;
99
+ //# sourceMappingURL=graph-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-analysis.d.ts","sourceRoot":"","sources":["../../src/graph/graph-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.impactAnalysis = impactAnalysis;
4
+ exports.affectedAnalysis = affectedAnalysis;
5
+ exports.callChain = callChain;
6
+ exports.inheritanceChain = inheritanceChain;
7
+ const graph_utils_1 = require("./graph-utils");
8
+ const IMPACT_RELATIONS = ["calls", "references", "imports"];
9
+ function isTestFile(nodeId) {
10
+ const lower = nodeId.toLowerCase();
11
+ return (lower.includes("test") ||
12
+ lower.includes("spec") ||
13
+ lower.includes("__tests__") ||
14
+ lower.includes(".test.") ||
15
+ lower.includes(".spec."));
16
+ }
17
+ /**
18
+ * 正向影响追踪:从指定符号出发,沿 calls / references / imports 边做多跳正向 BFS 传播。
19
+ *
20
+ * @param client GraphClient 实例
21
+ * @param symbolName 种子节点 id
22
+ * @param options maxDepth 默认 5
23
+ */
24
+ async function impactAnalysis(client, symbolName, options) {
25
+ if (typeof client.getNeighbors !== "function") {
26
+ return { seed: symbolName, impacted: [], totalCount: 0, maxDepthReached: 0 };
27
+ }
28
+ const maxDepth = Math.max(1, options?.maxDepth ?? 5);
29
+ const visited = new Map();
30
+ visited.set(symbolName, {
31
+ depth: 0,
32
+ path: [symbolName],
33
+ node: { id: symbolName, type: "Symbol", content: symbolName },
34
+ });
35
+ let maxDepthReached = 0;
36
+ for (let depth = 1; depth <= maxDepth; depth += 1) {
37
+ const frontier = Array.from(visited.entries())
38
+ .filter(([, v]) => v.depth === depth - 1)
39
+ .map(([id]) => id);
40
+ if (frontier.length === 0) {
41
+ break;
42
+ }
43
+ for (const nodeId of frontier) {
44
+ const parent = visited.get(nodeId);
45
+ if (!parent) {
46
+ continue;
47
+ }
48
+ const neighbors = await client.getNeighbors([nodeId], IMPACT_RELATIONS, "out");
49
+ for (const { node } of neighbors) {
50
+ if (visited.has(node.id)) {
51
+ continue;
52
+ }
53
+ const path = [...parent.path, node.id];
54
+ visited.set(node.id, { depth, path, node });
55
+ maxDepthReached = Math.max(maxDepthReached, depth);
56
+ }
57
+ }
58
+ }
59
+ const impacted = [];
60
+ for (const [id, info] of visited) {
61
+ if (id === symbolName) {
62
+ continue;
63
+ }
64
+ impacted.push({
65
+ node: { id: info.node.id, type: info.node.type, content: info.node.content },
66
+ depth: info.depth,
67
+ path: info.path,
68
+ });
69
+ }
70
+ impacted.sort((a, b) => a.depth - b.depth || a.node.id.localeCompare(b.node.id));
71
+ return {
72
+ seed: symbolName,
73
+ impacted,
74
+ totalCount: impacted.length,
75
+ maxDepthReached,
76
+ };
77
+ }
78
+ /**
79
+ * 反向影响追踪:从变更文件出发,沿所有边的反方向(direction: "in")传播,
80
+ * 找出受影响的测试文件、调用方、下游模块。
81
+ *
82
+ * @param client GraphClient 实例
83
+ * @param changedFiles 种子节点 id 列表
84
+ * @param options maxDepth 默认 5
85
+ */
86
+ async function affectedAnalysis(client, changedFiles, options) {
87
+ if (typeof client.getNeighbors !== "function") {
88
+ return { changedFiles, affected: [], testFiles: [], totalCount: 0 };
89
+ }
90
+ const maxDepth = Math.max(1, options?.maxDepth ?? 5);
91
+ const visited = new Map();
92
+ for (const file of changedFiles) {
93
+ if (!visited.has(file)) {
94
+ visited.set(file, {
95
+ depth: 0,
96
+ path: [file],
97
+ node: { id: file, type: "File", content: file },
98
+ });
99
+ }
100
+ }
101
+ for (let depth = 1; depth <= maxDepth; depth += 1) {
102
+ const frontier = Array.from(visited.entries())
103
+ .filter(([, v]) => v.depth === depth - 1)
104
+ .map(([id]) => id);
105
+ if (frontier.length === 0) {
106
+ break;
107
+ }
108
+ for (const nodeId of frontier) {
109
+ const parent = visited.get(nodeId);
110
+ if (!parent) {
111
+ continue;
112
+ }
113
+ const neighbors = await client.getNeighbors([nodeId], undefined, "in");
114
+ for (const { node } of neighbors) {
115
+ if (visited.has(node.id)) {
116
+ continue;
117
+ }
118
+ const path = [...parent.path, node.id];
119
+ visited.set(node.id, { depth, path, node });
120
+ }
121
+ }
122
+ }
123
+ const affected = [];
124
+ const testFilesSet = new Set();
125
+ for (const [id, info] of visited) {
126
+ if (changedFiles.includes(id)) {
127
+ continue;
128
+ }
129
+ const test = isTestFile(id);
130
+ if (test) {
131
+ testFilesSet.add(id);
132
+ }
133
+ affected.push({
134
+ node: { id: info.node.id, type: info.node.type, content: info.node.content },
135
+ depth: info.depth,
136
+ isTest: test,
137
+ path: info.path,
138
+ });
139
+ }
140
+ affected.sort((a, b) => a.depth - b.depth || a.node.id.localeCompare(b.node.id));
141
+ return {
142
+ changedFiles,
143
+ affected,
144
+ testFiles: Array.from(testFilesSet).sort((a, b) => a.localeCompare(b)),
145
+ totalCount: affected.length,
146
+ };
147
+ }
148
+ /**
149
+ * 调用链追踪:从 fromSymbol 出发,沿 calls 边做 BFS,搜索到 toSymbol 的最短路径。
150
+ *
151
+ * @param client GraphClient 实例
152
+ * @param fromSymbol 起始符号 id
153
+ * @param toSymbol 目标符号 id
154
+ * @param options maxDepth 默认 10
155
+ */
156
+ async function callChain(client, fromSymbol, toSymbol, options) {
157
+ if (typeof client.getNeighbors !== "function") {
158
+ return { from: fromSymbol, to: toSymbol, found: false, path: [], depth: 0 };
159
+ }
160
+ const maxDepth = Math.max(1, options?.maxDepth ?? 10);
161
+ const visited = new Set();
162
+ const queue = [];
163
+ const startNodes = await client.getNodesByIds?.([fromSymbol]) ?? [];
164
+ const startNode = startNodes.find((n) => n.id === fromSymbol) ?? {
165
+ id: fromSymbol,
166
+ type: "Symbol",
167
+ content: fromSymbol,
168
+ };
169
+ queue.push({ id: fromSymbol, path: [startNode] });
170
+ visited.add(fromSymbol);
171
+ while (queue.length > 0) {
172
+ const current = queue.shift();
173
+ const currentDepth = current.path.length - 1;
174
+ if (current.id === toSymbol) {
175
+ const path = current.path.map((node) => {
176
+ const entry = {
177
+ symbol: node.id,
178
+ file: (0, graph_utils_1.extractNodeSourcePath)(node),
179
+ };
180
+ if (typeof node.metadata?.line === "number") {
181
+ entry.line = node.metadata.line;
182
+ }
183
+ return entry;
184
+ });
185
+ return {
186
+ from: fromSymbol,
187
+ to: toSymbol,
188
+ found: true,
189
+ path,
190
+ depth: currentDepth,
191
+ };
192
+ }
193
+ if (currentDepth >= maxDepth) {
194
+ continue;
195
+ }
196
+ const neighbors = await client.getNeighbors?.([current.id], ["calls"], "out") ?? [];
197
+ for (const { node } of neighbors) {
198
+ if (visited.has(node.id)) {
199
+ continue;
200
+ }
201
+ visited.add(node.id);
202
+ queue.push({
203
+ id: node.id,
204
+ path: [...current.path, node],
205
+ });
206
+ }
207
+ }
208
+ return { from: fromSymbol, to: toSymbol, found: false, path: [], depth: 0 };
209
+ }
210
+ async function buildInheritanceTree(client, rootSymbol, allowUp, allowDown, maxDepth, visited) {
211
+ if (typeof client.getNeighbors !== "function") {
212
+ return null;
213
+ }
214
+ if (visited.has(rootSymbol)) {
215
+ return null;
216
+ }
217
+ visited.add(rootSymbol);
218
+ const nodes = await client.getNodesByIds?.([rootSymbol]) ?? [];
219
+ const rootNode = nodes.find((n) => n.id === rootSymbol) ?? {
220
+ id: rootSymbol,
221
+ type: "Symbol",
222
+ content: rootSymbol,
223
+ };
224
+ const result = {
225
+ symbol: rootSymbol,
226
+ file: (0, graph_utils_1.extractNodeSourcePath)(rootNode),
227
+ parents: [],
228
+ children: [],
229
+ };
230
+ if (typeof rootNode.metadata?.line === "number") {
231
+ result.line = rootNode.metadata.line;
232
+ }
233
+ if (maxDepth <= 0) {
234
+ return { node: result, maxDepthReached: 0 };
235
+ }
236
+ let maxSubDepth = 0;
237
+ if (allowUp) {
238
+ const parentNeighbors = await client.getNeighbors?.([rootSymbol], ["inherits"], "out") ?? [];
239
+ for (const { node } of parentNeighbors) {
240
+ const subTree = await buildInheritanceTree(client, node.id, true, false, maxDepth - 1, visited);
241
+ if (subTree) {
242
+ result.parents.push(subTree.node);
243
+ maxSubDepth = Math.max(maxSubDepth, subTree.maxDepthReached + 1);
244
+ }
245
+ }
246
+ }
247
+ if (allowDown) {
248
+ const childNeighbors = await client.getNeighbors?.([rootSymbol], ["inherits"], "in") ?? [];
249
+ for (const { node } of childNeighbors) {
250
+ const subTree = await buildInheritanceTree(client, node.id, false, true, maxDepth - 1, visited);
251
+ if (subTree) {
252
+ result.children.push(subTree.node);
253
+ maxSubDepth = Math.max(maxSubDepth, subTree.maxDepthReached + 1);
254
+ }
255
+ }
256
+ }
257
+ return { node: result, maxDepthReached: maxSubDepth };
258
+ }
259
+ /**
260
+ * 继承层次追踪:沿 inherits 边追踪继承树。
261
+ *
262
+ * @param client GraphClient 实例
263
+ * @param symbolName 起始符号 id
264
+ * @param options maxDepth 默认 5;direction 默认 both
265
+ */
266
+ async function inheritanceChain(client, symbolName, options) {
267
+ if (typeof client.getNeighbors !== "function") {
268
+ return { symbol: symbolName, parents: [], children: [], depth: 0 };
269
+ }
270
+ const maxDepth = Math.max(1, options?.maxDepth ?? 5);
271
+ const direction = options?.direction ?? "both";
272
+ const allowUp = direction === "up" || direction === "both";
273
+ const allowDown = direction === "down" || direction === "both";
274
+ const visited = new Set();
275
+ const tree = await buildInheritanceTree(client, symbolName, allowUp, allowDown, maxDepth, visited);
276
+ if (!tree) {
277
+ return { symbol: symbolName, parents: [], children: [], depth: 0 };
278
+ }
279
+ return {
280
+ symbol: symbolName,
281
+ parents: tree.node.parents,
282
+ children: tree.node.children,
283
+ depth: tree.maxDepthReached,
284
+ };
285
+ }
286
+ //# sourceMappingURL=graph-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-analysis.js","sourceRoot":"","sources":["../../src/graph/graph-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { GraphClient } from "./client-factory";
2
+ export interface SymbolMatch {
3
+ symbol: {
4
+ id: string;
5
+ name: string;
6
+ kind: string;
7
+ file: string;
8
+ line: number;
9
+ signature: string;
10
+ };
11
+ definedIn: string;
12
+ callers: Array<{
13
+ name: string;
14
+ file: string;
15
+ line: number;
16
+ }>;
17
+ referencers: Array<{
18
+ name: string;
19
+ file: string;
20
+ line: number;
21
+ }>;
22
+ }
23
+ export interface QuerySymbolResult {
24
+ query: string;
25
+ matches: SymbolMatch[];
26
+ totalCount: number;
27
+ }
28
+ export interface SearchGraphResult {
29
+ query: string;
30
+ results: Array<{
31
+ id: string;
32
+ type: string;
33
+ content: string;
34
+ sourcePath: string;
35
+ relevance: number;
36
+ }>;
37
+ totalCount: number;
38
+ }
39
+ /**
40
+ * Query symbols by name with optional exact matching.
41
+ * For each matched Symbol, resolves:
42
+ * - defining File node (reverse of "defines")
43
+ * - caller nodes (reverse of "calls")
44
+ * - referencer nodes (reverse of "references")
45
+ */
46
+ export declare function querySymbolGraph(client: GraphClient, name: string, exact?: boolean): Promise<QuerySymbolResult>;
47
+ /**
48
+ * Full-text search over the graph using the client's keyword query.
49
+ * Results are ranked by node type priority: Symbol > File > Module.
50
+ */
51
+ export declare function searchGraphNodes(client: GraphClient, query: string, limit?: number): Promise<SearchGraphResult>;
52
+ //# sourceMappingURL=graph-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-search.d.ts","sourceRoot":"","sources":["../../src/graph/graph-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAuBD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACZ,OAAO,CAAC,iBAAiB,CAAC,CAoE5B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,GACT,OAAO,CAAC,iBAAiB,CAAC,CA2C5B"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.querySymbolGraph = querySymbolGraph;
4
+ exports.searchGraphNodes = searchGraphNodes;
5
+ const graph_utils_1 = require("./graph-utils");
6
+ function getSymbolName(node) {
7
+ if (typeof node.metadata?.name === "string") {
8
+ return node.metadata.name;
9
+ }
10
+ // Fallback: parse from content like "kind name @file:line" or "kind name (exported) @file:line"
11
+ const match = node.content.match(/^\S+\s+(.+?)(?:\s+\(exported\))?\s+@/);
12
+ return match?.[1] ?? node.content;
13
+ }
14
+ function nodeToCallerInfo(node) {
15
+ const name = typeof node.metadata?.name === "string"
16
+ ? node.metadata.name
17
+ : node.content.split(/\s+/)[0] ?? "";
18
+ return {
19
+ name,
20
+ file: (0, graph_utils_1.extractNodeSourcePath)(node),
21
+ line: typeof node.metadata?.line === "number" ? node.metadata.line : 0,
22
+ };
23
+ }
24
+ /**
25
+ * Query symbols by name with optional exact matching.
26
+ * For each matched Symbol, resolves:
27
+ * - defining File node (reverse of "defines")
28
+ * - caller nodes (reverse of "calls")
29
+ * - referencer nodes (reverse of "references")
30
+ */
31
+ async function querySymbolGraph(client, name, exact = false) {
32
+ const normalizedQuery = name.toLowerCase();
33
+ let symbolCandidates;
34
+ if (client.readSnapshot) {
35
+ const snapshot = client.readSnapshot();
36
+ symbolCandidates = snapshot.nodes.filter((n) => n.type === "Symbol");
37
+ }
38
+ else {
39
+ const keywordHits = await client.queryByKeyword(name);
40
+ symbolCandidates = keywordHits.filter((n) => n.type === "Symbol");
41
+ }
42
+ const matches = [];
43
+ for (const node of symbolCandidates) {
44
+ const symbolName = getSymbolName(node);
45
+ const isMatch = exact
46
+ ? symbolName === name
47
+ : symbolName.toLowerCase().includes(normalizedQuery) ||
48
+ node.content.toLowerCase().includes(normalizedQuery);
49
+ if (!isMatch)
50
+ continue;
51
+ // defines reverse -> find File nodes that define this symbol
52
+ const definedInNeighbors = client.getNeighbors
53
+ ? await client.getNeighbors([node.id], ["defines"], "in")
54
+ : [];
55
+ const definedInFiles = definedInNeighbors
56
+ .filter((n) => n.node.type === "File")
57
+ .map((n) => (0, graph_utils_1.extractNodeSourcePath)(n.node));
58
+ const definedIn = definedInFiles[0] ?? (0, graph_utils_1.extractNodeSourcePath)(node);
59
+ // calls reverse -> find callers
60
+ const callerNeighbors = client.getNeighbors
61
+ ? await client.getNeighbors([node.id], ["calls"], "in")
62
+ : [];
63
+ const callers = callerNeighbors.map((n) => nodeToCallerInfo(n.node));
64
+ // references reverse -> find referencers
65
+ const referenceNeighbors = client.getNeighbors
66
+ ? await client.getNeighbors([node.id], ["references"], "in")
67
+ : [];
68
+ const referencers = referenceNeighbors.map((n) => nodeToCallerInfo(n.node));
69
+ matches.push({
70
+ symbol: {
71
+ id: node.id,
72
+ name: symbolName,
73
+ kind: String(node.metadata?.kind ?? ""),
74
+ file: String(node.metadata?.file ?? (0, graph_utils_1.extractNodeSourcePath)(node)),
75
+ line: typeof node.metadata?.line === "number" ? node.metadata.line : 0,
76
+ signature: String(node.metadata?.signature ?? node.content),
77
+ },
78
+ definedIn,
79
+ callers,
80
+ referencers,
81
+ });
82
+ }
83
+ return {
84
+ query: name,
85
+ matches,
86
+ totalCount: matches.length,
87
+ };
88
+ }
89
+ /**
90
+ * Full-text search over the graph using the client's keyword query.
91
+ * Results are ranked by node type priority: Symbol > File > Module.
92
+ */
93
+ async function searchGraphNodes(client, query, limit = 20) {
94
+ const nodes = await client.queryByKeyword(query);
95
+ const typePriority = {
96
+ Symbol: 0,
97
+ File: 1,
98
+ Module: 2,
99
+ };
100
+ const sorted = nodes
101
+ .map((node) => {
102
+ const priority = typePriority[node.type] ?? 3;
103
+ const relevance = node.type === "Symbol"
104
+ ? 100
105
+ : node.type === "File"
106
+ ? 50
107
+ : node.type === "Module"
108
+ ? 25
109
+ : 10;
110
+ return { node, priority, relevance };
111
+ })
112
+ .sort((a, b) => {
113
+ if (a.priority !== b.priority) {
114
+ return a.priority - b.priority;
115
+ }
116
+ return b.relevance - a.relevance || a.node.id.localeCompare(b.node.id);
117
+ });
118
+ const boundedLimit = Math.max(1, limit);
119
+ const limited = sorted.slice(0, boundedLimit);
120
+ return {
121
+ query,
122
+ results: limited.map(({ node, relevance }) => ({
123
+ id: node.id,
124
+ type: node.type,
125
+ content: node.content,
126
+ sourcePath: (0, graph_utils_1.extractNodeSourcePath)(node),
127
+ relevance,
128
+ })),
129
+ totalCount: nodes.length,
130
+ };
131
+ }
132
+ //# sourceMappingURL=graph-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-search.js","sourceRoot":"","sources":["../../src/graph/graph-search.ts"],"names":[],"mappings":";;AAgEA,4CAwEC;AAMD,4CA+CC;AA3LD,+CAAsD;AAkCtD,SAAS,aAAa,CAAC,IAAe;IACpC,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IACD,gGAAgG;IAChG,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAe;IACvC,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ;QACrC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;QACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,IAAA,mCAAqB,EAAC,IAAI,CAAC;QACjC,IAAI,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACvE,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAmB,EACnB,IAAY,EACZ,KAAK,GAAG,KAAK;IAEb,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,gBAA6B,CAAC;IAElC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACvC,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACtD,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,UAAU,KAAK,IAAI;YACrB,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,6DAA6D;QAC7D,MAAM,kBAAkB,GACtB,MAAM,CAAC,YAAY;YACjB,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,cAAc,GAAG,kBAAkB;aACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mCAAqB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,IAAA,mCAAqB,EAAC,IAAI,CAAC,CAAC;QAEnE,gCAAgC;QAChC,MAAM,eAAe,GACnB,MAAM,CAAC,YAAY;YACjB,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;YACvD,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAErE,yCAAyC;QACzC,MAAM,kBAAkB,GACtB,MAAM,CAAC,YAAY;YACjB,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;YAC5D,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5E,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;gBACvC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAA,mCAAqB,EAAC,IAAI,CAAC,CAAC;gBAChE,IAAI,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC;aAC5D;YACD,SAAS;YACT,OAAO;YACP,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAmB,EACnB,KAAa,EACb,KAAK,GAAG,EAAE;IAEV,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAEjD,MAAM,YAAY,GAA2B;QAC3C,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACV,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GACb,IAAI,CAAC,IAAI,KAAK,QAAQ;YACpB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;gBACpB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;oBACtB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEL,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7C,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAA,mCAAqB,EAAC,IAAI,CAAC;YACvC,SAAS;SACV,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC"}
@@ -132,7 +132,7 @@ class GraphifyFileClient {
132
132
  writeStore(store) {
133
133
  const dir = (0, node_path_1.dirname)(this.storePath);
134
134
  (0, node_fs_1.mkdirSync)(dir, { recursive: true });
135
- const payload = JSON.stringify(store, null, 2);
135
+ const payload = JSON.stringify(store);
136
136
  const tempPath = (0, node_path_1.join)(dir, `.graphflow-graph-${process.pid}-${(0, node_crypto_1.randomBytes)(4).toString("hex")}.tmp`);
137
137
  (0, node_fs_1.writeFileSync)(tempPath, payload, "utf8");
138
138
  // Windows 上 rename 可能因文件锁定而失败,添加重试机制
@@ -1 +1 @@
1
- {"version":3,"file":"graphify-file-client.js","sourceRoot":"","sources":["../../src/graph/graphify-file-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphify-file-client.js","sourceRoot":"","sources":["../../src/graph/graphify-file-client.ts"],"names":[],"mappings":"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"}