@roarpeng/graphflow 0.6.15 → 1.0.4
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/AGENTS.md +1 -1
- package/CHANGELOG.md +54 -1
- package/README.md +149 -44
- package/dist/agents/insight.d.ts +83 -0
- package/dist/agents/insight.d.ts.map +1 -0
- package/dist/agents/insight.js +381 -0
- package/dist/agents/insight.js.map +1 -0
- package/dist/agents/validator.d.ts.map +1 -1
- package/dist/agents/validator.js +19 -8
- package/dist/agents/validator.js.map +1 -1
- package/dist/agents/worker.d.ts.map +1 -1
- package/dist/agents/worker.js +3 -2
- package/dist/agents/worker.js.map +1 -1
- package/dist/config/defaults.js +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/discover-workspace.d.ts +16 -0
- package/dist/config/discover-workspace.d.ts.map +1 -0
- package/dist/config/discover-workspace.js +112 -0
- package/dist/config/discover-workspace.js.map +1 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +22 -8
- package/dist/config/resolve.js.map +1 -1
- package/dist/config/scaffold.d.ts.map +1 -1
- package/dist/config/scaffold.js +2 -1
- package/dist/config/scaffold.js.map +1 -1
- package/dist/config/schema.d.ts +31 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/workspace-root.d.ts +24 -0
- package/dist/config/workspace-root.d.ts.map +1 -0
- package/dist/config/workspace-root.js +59 -0
- package/dist/config/workspace-root.js.map +1 -0
- package/dist/core/orchestrator.d.ts +7 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +54 -3
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/state-machine.d.ts +1 -0
- package/dist/core/state-machine.d.ts.map +1 -1
- package/dist/core/state-machine.js +20 -0
- package/dist/core/state-machine.js.map +1 -1
- package/dist/core/types.d.ts +9 -3
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/adaptive-budget.d.ts +18 -0
- package/dist/graph/adaptive-budget.d.ts.map +1 -0
- package/dist/graph/adaptive-budget.js +50 -0
- package/dist/graph/adaptive-budget.js.map +1 -0
- package/dist/graph/artifact-manager.d.ts +72 -0
- package/dist/graph/artifact-manager.d.ts.map +1 -0
- package/dist/graph/artifact-manager.js +215 -0
- package/dist/graph/artifact-manager.js.map +1 -0
- package/dist/graph/compression-model.d.ts +52 -0
- package/dist/graph/compression-model.d.ts.map +1 -0
- package/dist/graph/compression-model.js +125 -0
- package/dist/graph/compression-model.js.map +1 -0
- package/dist/graph/context-slicer.d.ts +32 -0
- package/dist/graph/context-slicer.d.ts.map +1 -1
- package/dist/graph/context-slicer.js +159 -1
- package/dist/graph/context-slicer.js.map +1 -1
- package/dist/graph/file-indexer.d.ts +31 -0
- package/dist/graph/file-indexer.d.ts.map +1 -1
- package/dist/graph/file-indexer.js +332 -3
- package/dist/graph/file-indexer.js.map +1 -1
- package/dist/graph/graph-compression.d.ts +44 -0
- package/dist/graph/graph-compression.d.ts.map +1 -0
- package/dist/graph/graph-compression.js +155 -0
- package/dist/graph/graph-compression.js.map +1 -0
- package/dist/graph/graph-utils.d.ts +4 -1
- package/dist/graph/graph-utils.d.ts.map +1 -1
- package/dist/graph/graph-utils.js +62 -0
- package/dist/graph/graph-utils.js.map +1 -1
- package/dist/graph/graphify-file-client.d.ts.map +1 -1
- package/dist/graph/graphify-file-client.js +30 -8
- package/dist/graph/graphify-file-client.js.map +1 -1
- package/dist/graph/language-indexers/c-cpp.d.ts +9 -1
- package/dist/graph/language-indexers/c-cpp.d.ts.map +1 -1
- package/dist/graph/language-indexers/c-cpp.js +328 -103
- package/dist/graph/language-indexers/c-cpp.js.map +1 -1
- package/dist/graph/language-indexers/index.d.ts +20 -0
- package/dist/graph/language-indexers/index.d.ts.map +1 -1
- package/dist/graph/language-indexers/index.js +4 -0
- package/dist/graph/language-indexers/index.js.map +1 -1
- package/dist/graph/language-indexers/java.d.ts +12 -0
- package/dist/graph/language-indexers/java.d.ts.map +1 -0
- package/dist/graph/language-indexers/java.js +273 -0
- package/dist/graph/language-indexers/java.js.map +1 -0
- package/dist/graph/language-indexers/python.d.ts.map +1 -1
- package/dist/graph/language-indexers/python.js +47 -4
- package/dist/graph/language-indexers/python.js.map +1 -1
- package/dist/graph/language-indexers/ruby.d.ts +14 -0
- package/dist/graph/language-indexers/ruby.d.ts.map +1 -0
- package/dist/graph/language-indexers/ruby.js +245 -0
- package/dist/graph/language-indexers/ruby.js.map +1 -0
- package/dist/graph/language-indexers/rust.d.ts +10 -1
- package/dist/graph/language-indexers/rust.d.ts.map +1 -1
- package/dist/graph/language-indexers/rust.js +254 -80
- package/dist/graph/language-indexers/rust.js.map +1 -1
- package/dist/graph/language-indexers/tree-sitter-loader.d.ts +8 -1
- package/dist/graph/language-indexers/tree-sitter-loader.d.ts.map +1 -1
- package/dist/graph/language-indexers/tree-sitter-loader.js +64 -13
- package/dist/graph/language-indexers/tree-sitter-loader.js.map +1 -1
- package/dist/graph/language-indexers/typescript.d.ts.map +1 -1
- package/dist/graph/language-indexers/typescript.js +72 -8
- package/dist/graph/language-indexers/typescript.js.map +1 -1
- package/dist/graph/metrics.d.ts +33 -0
- package/dist/graph/metrics.d.ts.map +1 -0
- package/dist/graph/metrics.js +117 -0
- package/dist/graph/metrics.js.map +1 -0
- package/dist/graph/repo-map.d.ts +25 -0
- package/dist/graph/repo-map.d.ts.map +1 -0
- package/dist/graph/repo-map.js +80 -0
- package/dist/graph/repo-map.js.map +1 -0
- package/dist/graph/semantic-compression.d.ts +65 -0
- package/dist/graph/semantic-compression.d.ts.map +1 -0
- package/dist/graph/semantic-compression.js +173 -0
- package/dist/graph/semantic-compression.js.map +1 -0
- package/dist/graph/token-savings.d.ts +52 -0
- package/dist/graph/token-savings.d.ts.map +1 -0
- package/dist/graph/token-savings.js +113 -0
- package/dist/graph/token-savings.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/agent-mcp-installer.d.ts +13 -0
- package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
- package/dist/integrations/agent-mcp-installer.js +287 -29
- package/dist/integrations/agent-mcp-installer.js.map +1 -1
- package/dist/learning/episodic-memory.d.ts +8 -1
- package/dist/learning/episodic-memory.d.ts.map +1 -1
- package/dist/learning/episodic-memory.js +33 -0
- package/dist/learning/episodic-memory.js.map +1 -1
- package/dist/learning/hnsw-index.d.ts +46 -0
- package/dist/learning/hnsw-index.d.ts.map +1 -0
- package/dist/learning/hnsw-index.js +138 -0
- package/dist/learning/hnsw-index.js.map +1 -0
- package/dist/routing/model-router.d.ts +7 -0
- package/dist/routing/model-router.d.ts.map +1 -1
- package/dist/routing/model-router.js +36 -0
- package/dist/routing/model-router.js.map +1 -1
- package/dist/skills/index.d.ts +157 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +157 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/surfaces/cli/index.js +119 -0
- package/dist/surfaces/cli/index.js.map +1 -1
- package/dist/surfaces/cli/output.d.ts.map +1 -1
- package/dist/surfaces/cli/output.js +7 -0
- package/dist/surfaces/cli/output.js.map +1 -1
- package/dist/surfaces/cli/runtime/graph.d.ts +77 -3
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +170 -10
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/panel.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/panel.js +2 -0
- package/dist/surfaces/cli/runtime/panel.js.map +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts +24 -1
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +72 -0
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime/settings.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/settings.js +4 -1
- package/dist/surfaces/cli/runtime/settings.js.map +1 -1
- package/dist/surfaces/cli/runtime/types.d.ts +36 -0
- package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.d.ts +2 -2
- package/dist/surfaces/cli/runtime.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.js +11 -1
- package/dist/surfaces/cli/runtime.js.map +1 -1
- package/dist/surfaces/mcp/server.d.ts.map +1 -1
- package/dist/surfaces/mcp/server.js +145 -4
- package/dist/surfaces/mcp/server.js.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +6 -2
- package/scripts/safe-postinstall.cjs +167 -12
- package/src/surfaces/trae-skill/graphflow/SKILL.md +535 -0
- package/wasm/tree-sitter-c.wasm +0 -0
- package/wasm/tree-sitter-go.wasm +0 -0
- package/wasm/tree-sitter-java.wasm +0 -0
- package/wasm/tree-sitter-python.wasm +0 -0
- package/wasm/tree-sitter-ruby.wasm +0 -0
- package/wasm/tree-sitter-rust.wasm +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_EDGE_WEIGHTS = void 0;
|
|
4
|
+
exports.extractConnectedSubgraph = extractConnectedSubgraph;
|
|
5
|
+
exports.computePageRank = computePageRank;
|
|
6
|
+
exports.blendWithCentrality = blendWithCentrality;
|
|
7
|
+
/**
|
|
8
|
+
* Graph-structure-based context compression.
|
|
9
|
+
*
|
|
10
|
+
* Unlike token-level pruning (LLMLingua-style), this module compresses by
|
|
11
|
+
* exploiting the graph topology: edge-weighted connectivity + centrality
|
|
12
|
+
* ranking keeps the most "load-bearing" nodes and drops peripheral ones,
|
|
13
|
+
* with zero LLM cost.
|
|
14
|
+
*/
|
|
15
|
+
exports.DEFAULT_EDGE_WEIGHTS = {
|
|
16
|
+
references: 1.0,
|
|
17
|
+
imports: 0.85,
|
|
18
|
+
depends_on: 0.7,
|
|
19
|
+
prerequisite: 0.7,
|
|
20
|
+
defines: 0.6,
|
|
21
|
+
calls: 0.65,
|
|
22
|
+
inherits: 0.6,
|
|
23
|
+
validates: 0.5,
|
|
24
|
+
changes: 0.4,
|
|
25
|
+
improves: 0.4,
|
|
26
|
+
co_occurs: 0.3,
|
|
27
|
+
conflicts_with: 0.2,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Extracts a connected subgraph centered on the seed nodes, ranking members
|
|
31
|
+
* by edge-weighted proximity. Returns nodes sorted by relevance (seeds first).
|
|
32
|
+
*/
|
|
33
|
+
async function extractConnectedSubgraph(client, seeds, options) {
|
|
34
|
+
if (typeof client.getNeighbors !== "function" || seeds.length === 0) {
|
|
35
|
+
return seeds.map((node) => ({ node, score: 1 }));
|
|
36
|
+
}
|
|
37
|
+
const weights = { ...exports.DEFAULT_EDGE_WEIGHTS, ...options?.edgeWeights };
|
|
38
|
+
const maxNodes = options?.maxNodes ?? 30;
|
|
39
|
+
const hops = options?.hops ?? 2;
|
|
40
|
+
const minNodeWeight = options?.minNodeWeight ?? 0;
|
|
41
|
+
// Seeds start with full score; each hop decays.
|
|
42
|
+
const scores = new Map();
|
|
43
|
+
const nodeById = new Map();
|
|
44
|
+
for (const seed of seeds) {
|
|
45
|
+
scores.set(seed.id, 1);
|
|
46
|
+
nodeById.set(seed.id, seed);
|
|
47
|
+
}
|
|
48
|
+
let frontier = seeds.map((s) => s.id);
|
|
49
|
+
const relations = Object.keys(weights);
|
|
50
|
+
for (let depth = 0; depth < hops; depth += 1) {
|
|
51
|
+
if (frontier.length === 0 || nodeById.size >= maxNodes)
|
|
52
|
+
break;
|
|
53
|
+
const decay = 1 / (depth + 2); // hop 0 -> 0.5, hop 1 -> 0.33, ...
|
|
54
|
+
const neighbors = await client.getNeighbors(frontier, relations, "both");
|
|
55
|
+
const nextFrontier = [];
|
|
56
|
+
for (const { node, via } of neighbors) {
|
|
57
|
+
const edgeWeight = weights[via] ?? 0.1;
|
|
58
|
+
const contribution = edgeWeight * decay;
|
|
59
|
+
const prev = scores.get(node.id) ?? 0;
|
|
60
|
+
scores.set(node.id, prev + contribution);
|
|
61
|
+
if (!nodeById.has(node.id)) {
|
|
62
|
+
nodeById.set(node.id, node);
|
|
63
|
+
nextFrontier.push(node.id);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
frontier = nextFrontier;
|
|
67
|
+
}
|
|
68
|
+
const ranked = [];
|
|
69
|
+
for (const [id, score] of scores.entries()) {
|
|
70
|
+
const node = nodeById.get(id);
|
|
71
|
+
if (!node)
|
|
72
|
+
continue;
|
|
73
|
+
if (score < minNodeWeight)
|
|
74
|
+
continue;
|
|
75
|
+
ranked.push({ node, score });
|
|
76
|
+
}
|
|
77
|
+
ranked.sort((a, b) => b.score - a.score);
|
|
78
|
+
return ranked.slice(0, maxNodes);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Computes weighted PageRank over a node/edge set. Used to surface "central"
|
|
82
|
+
* nodes (frequently-referenced functions, core modules) that should be
|
|
83
|
+
* prioritized in the context budget.
|
|
84
|
+
*/
|
|
85
|
+
function computePageRank(nodes, edges, options) {
|
|
86
|
+
const damping = options?.damping ?? 0.85;
|
|
87
|
+
const iterations = options?.iterations ?? 20;
|
|
88
|
+
const weights = { ...exports.DEFAULT_EDGE_WEIGHTS, ...options?.edgeWeights };
|
|
89
|
+
const ids = nodes.map((n) => n.id);
|
|
90
|
+
const idSet = new Set(ids);
|
|
91
|
+
const n = ids.length;
|
|
92
|
+
if (n === 0)
|
|
93
|
+
return new Map();
|
|
94
|
+
// Build weighted outbound adjacency.
|
|
95
|
+
const outWeight = new Map();
|
|
96
|
+
const outEdges = new Map();
|
|
97
|
+
for (const edge of edges) {
|
|
98
|
+
if (!idSet.has(edge.from) || !idSet.has(edge.to))
|
|
99
|
+
continue;
|
|
100
|
+
const w = weights[edge.relation] ?? 0.1;
|
|
101
|
+
const list = outEdges.get(edge.from) ?? [];
|
|
102
|
+
list.push({ to: edge.to, w });
|
|
103
|
+
outEdges.set(edge.from, list);
|
|
104
|
+
outWeight.set(edge.from, (outWeight.get(edge.from) ?? 0) + w);
|
|
105
|
+
}
|
|
106
|
+
let rank = new Map(ids.map((id) => [id, 1 / n]));
|
|
107
|
+
const base = (1 - damping) / n;
|
|
108
|
+
for (let iter = 0; iter < iterations; iter += 1) {
|
|
109
|
+
const next = new Map(ids.map((id) => [id, base]));
|
|
110
|
+
let danglingSum = 0;
|
|
111
|
+
for (const id of ids) {
|
|
112
|
+
const out = outEdges.get(id);
|
|
113
|
+
const r = rank.get(id) ?? 0;
|
|
114
|
+
if (!out || out.length === 0) {
|
|
115
|
+
danglingSum += r;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const total = outWeight.get(id) ?? 1;
|
|
119
|
+
for (const { to, w } of out) {
|
|
120
|
+
next.set(to, (next.get(to) ?? 0) + damping * r * (w / total));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Redistribute dangling-node mass uniformly.
|
|
124
|
+
if (danglingSum > 0) {
|
|
125
|
+
const share = (damping * danglingSum) / n;
|
|
126
|
+
for (const id of ids) {
|
|
127
|
+
next.set(id, (next.get(id) ?? 0) + share);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
rank = next;
|
|
131
|
+
}
|
|
132
|
+
return rank;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Re-ranks a candidate node list by blending retrieval order with PageRank
|
|
136
|
+
* centrality. alpha controls the centrality weight (0 = pure retrieval order).
|
|
137
|
+
*/
|
|
138
|
+
function blendWithCentrality(candidates, pageRank, alpha = 0.3) {
|
|
139
|
+
if (candidates.length === 0)
|
|
140
|
+
return candidates;
|
|
141
|
+
const maxPr = Math.max(1e-9, ...Array.from(pageRank.values()));
|
|
142
|
+
const scored = candidates.map((node, index) => {
|
|
143
|
+
const retrievalScore = 1 - index / candidates.length; // higher = earlier
|
|
144
|
+
const centrality = (pageRank.get(node.id) ?? 0) / maxPr;
|
|
145
|
+
const score = (1 - alpha) * retrievalScore + alpha * centrality;
|
|
146
|
+
return { node, score, index };
|
|
147
|
+
});
|
|
148
|
+
scored.sort((a, b) => {
|
|
149
|
+
if (b.score !== a.score)
|
|
150
|
+
return b.score - a.score;
|
|
151
|
+
return a.index - b.index;
|
|
152
|
+
});
|
|
153
|
+
return scored.map((s) => s.node);
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=graph-compression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-compression.js","sourceRoot":"","sources":["../../src/graph/graph-compression.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type { GraphEdge } from "../core/types";
|
|
1
|
+
import type { GraphEdge, GraphNode } from "../core/types";
|
|
2
2
|
export declare function tokenizeForIndex(text: string): string[];
|
|
3
3
|
export declare function dedupEdgesByKey(edges: GraphEdge[]): GraphEdge[];
|
|
4
|
+
export declare function extractNodeSourcePath(node: GraphNode): string;
|
|
5
|
+
/** Re-rank keyword hits so integration/config noise does not dominate architecture queries. */
|
|
6
|
+
export declare function rankNodesForContextQuery(nodes: GraphNode[], query: string): GraphNode[];
|
|
4
7
|
//# sourceMappingURL=graph-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-utils.d.ts","sourceRoot":"","sources":["../../src/graph/graph-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"graph-utils.d.ts","sourceRoot":"","sources":["../../src/graph/graph-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAkB1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAW/D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAuB7D;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CA6BvF"}
|
|
@@ -2,7 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tokenizeForIndex = tokenizeForIndex;
|
|
4
4
|
exports.dedupEdgesByKey = dedupEdgesByKey;
|
|
5
|
+
exports.extractNodeSourcePath = extractNodeSourcePath;
|
|
6
|
+
exports.rankNodesForContextQuery = rankNodesForContextQuery;
|
|
5
7
|
const TOKEN_SPLIT = /[^a-z0-9_]+/g;
|
|
8
|
+
const DEPRIORITIZED_PATH_PATTERNS = [
|
|
9
|
+
/(?:^|\/)\\.cursor\//i,
|
|
10
|
+
/(?:^|\/)Cursor\//,
|
|
11
|
+
/(?:^|\/)docs\/integrations\//i,
|
|
12
|
+
/mcp\.json$/i,
|
|
13
|
+
/package-lock\.json$/i,
|
|
14
|
+
];
|
|
15
|
+
const PRIORITIZED_PATH_PATTERNS = [
|
|
16
|
+
/(?:^|\/)src\//,
|
|
17
|
+
/(?:^|\/)vscode-extension\/src\//,
|
|
18
|
+
/(?:^|\/)tests\//,
|
|
19
|
+
];
|
|
6
20
|
function tokenizeForIndex(text) {
|
|
7
21
|
if (!text)
|
|
8
22
|
return [];
|
|
@@ -26,4 +40,52 @@ function dedupEdgesByKey(edges) {
|
|
|
26
40
|
}
|
|
27
41
|
return result;
|
|
28
42
|
}
|
|
43
|
+
function extractNodeSourcePath(node) {
|
|
44
|
+
const fromMeta = node.metadata?.sourcePath;
|
|
45
|
+
if (typeof fromMeta === "string" && fromMeta.trim()) {
|
|
46
|
+
return fromMeta.trim();
|
|
47
|
+
}
|
|
48
|
+
if (node.id.startsWith("file:")) {
|
|
49
|
+
return node.id.slice("file:".length);
|
|
50
|
+
}
|
|
51
|
+
if (node.id.startsWith("symbol:")) {
|
|
52
|
+
const body = node.id.slice("symbol:".length);
|
|
53
|
+
const hashIndex = body.lastIndexOf(":");
|
|
54
|
+
if (hashIndex > 0 && /^[a-z0-9]+$/i.test(body.slice(hashIndex + 1))) {
|
|
55
|
+
return body.slice(0, hashIndex);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (node.id.startsWith("module:")) {
|
|
59
|
+
return node.id.slice("module:".length);
|
|
60
|
+
}
|
|
61
|
+
return node.content.split(/\s+/)[0] ?? "";
|
|
62
|
+
}
|
|
63
|
+
/** Re-rank keyword hits so integration/config noise does not dominate architecture queries. */
|
|
64
|
+
function rankNodesForContextQuery(nodes, query) {
|
|
65
|
+
const queryTokens = new Set(tokenizeForIndex(query));
|
|
66
|
+
const scored = nodes.map((node) => {
|
|
67
|
+
let score = 0;
|
|
68
|
+
const path = extractNodeSourcePath(node);
|
|
69
|
+
for (const token of tokenizeForIndex(node.content)) {
|
|
70
|
+
if (queryTokens.has(token)) {
|
|
71
|
+
score += 2;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (PRIORITIZED_PATH_PATTERNS.some((pattern) => pattern.test(path))) {
|
|
75
|
+
score += 8;
|
|
76
|
+
}
|
|
77
|
+
if (DEPRIORITIZED_PATH_PATTERNS.some((pattern) => pattern.test(path))) {
|
|
78
|
+
score -= 12;
|
|
79
|
+
}
|
|
80
|
+
if (node.type === "Symbol") {
|
|
81
|
+
score += 3;
|
|
82
|
+
}
|
|
83
|
+
else if (node.type === "File") {
|
|
84
|
+
score += 1;
|
|
85
|
+
}
|
|
86
|
+
return { node, score };
|
|
87
|
+
});
|
|
88
|
+
scored.sort((a, b) => b.score - a.score || a.node.id.localeCompare(b.node.id));
|
|
89
|
+
return scored.map((entry) => entry.node);
|
|
90
|
+
}
|
|
29
91
|
//# sourceMappingURL=graph-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-utils.js","sourceRoot":"","sources":["../../src/graph/graph-utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"graph-utils.js","sourceRoot":"","sources":["../../src/graph/graph-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphify-file-client.d.ts","sourceRoot":"","sources":["../../src/graph/graphify-file-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphify-file-client.d.ts","sourceRoot":"","sources":["../../src/graph/graphify-file-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1D,UAAU,UAAU;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,MAAM;IAExC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD,YAAY,IAAI,UAAU;IAIpB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAmBnD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAMlD,YAAY,CAChB,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,EACnC,SAAS,GAAE,KAAK,GAAG,IAAI,GAAG,MAAe,GACxC,OAAO,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;KAAE,EAAE,CAAC;IAiC7D,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,OAAO;IAIT,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAO3F"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GraphifyFileClient = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
4
5
|
const node_fs_1 = require("node:fs");
|
|
5
6
|
const node_path_1 = require("node:path");
|
|
7
|
+
const logger_1 = require("../utils/logger");
|
|
6
8
|
const graph_utils_1 = require("./graph-utils");
|
|
7
9
|
class GraphifyFileClient {
|
|
8
10
|
storePath;
|
|
@@ -40,7 +42,8 @@ class GraphifyFileClient {
|
|
|
40
42
|
const tokens = (0, graph_utils_1.tokenizeForIndex)(query);
|
|
41
43
|
if (tokens.length === 0) {
|
|
42
44
|
const normalized = query.toLowerCase();
|
|
43
|
-
|
|
45
|
+
const hits = store.nodes.filter((node) => node.content.toLowerCase().includes(normalized));
|
|
46
|
+
return hits;
|
|
44
47
|
}
|
|
45
48
|
const index = this.buildIndex(store.nodes);
|
|
46
49
|
const matched = new Set();
|
|
@@ -111,15 +114,34 @@ class GraphifyFileClient {
|
|
|
111
114
|
if (!raw.trim()) {
|
|
112
115
|
return { nodes: [], edges: [] };
|
|
113
116
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
try {
|
|
118
|
+
const parsed = JSON.parse(raw);
|
|
119
|
+
if (!parsed || typeof parsed !== "object") {
|
|
120
|
+
throw new Error("Graph store JSON root must be an object");
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
nodes: Array.isArray(parsed.nodes) ? parsed.nodes : [],
|
|
124
|
+
edges: Array.isArray(parsed.edges) ? parsed.edges : [],
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
logger_1.logger.warn({ error, storePath: this.storePath }, "Corrupt graph store JSON; returning empty store (run graphflow_rebuild to repair)");
|
|
129
|
+
return { nodes: [], edges: [] };
|
|
130
|
+
}
|
|
119
131
|
}
|
|
120
132
|
writeStore(store) {
|
|
121
|
-
|
|
122
|
-
(0, node_fs_1.
|
|
133
|
+
const dir = (0, node_path_1.dirname)(this.storePath);
|
|
134
|
+
(0, node_fs_1.mkdirSync)(dir, { recursive: true });
|
|
135
|
+
const payload = JSON.stringify(store, null, 2);
|
|
136
|
+
const tempPath = (0, node_path_1.join)(dir, `.graphflow-graph-${process.pid}-${(0, node_crypto_1.randomBytes)(4).toString("hex")}.tmp`);
|
|
137
|
+
(0, node_fs_1.writeFileSync)(tempPath, payload, "utf8");
|
|
138
|
+
try {
|
|
139
|
+
(0, node_fs_1.renameSync)(tempPath, this.storePath);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
(0, node_fs_1.rmSync)(tempPath, { force: true });
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
123
145
|
}
|
|
124
146
|
edgeKey(edge) {
|
|
125
147
|
return `${edge.from}::${edge.relation}::${edge.to}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphify-file-client.js","sourceRoot":"","sources":["../../src/graph/graphify-file-client.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"graphify-file-client.js","sourceRoot":"","sources":["../../src/graph/graphify-file-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
import type { LanguageIndexer } from "./index";
|
|
1
|
+
import type { LanguageIndexer } from "./index.js";
|
|
2
|
+
/**
|
|
3
|
+
* C/C++ indexer using tree-sitter AST (upgraded from line-level regex).
|
|
4
|
+
*
|
|
5
|
+
* Extracts: functions, classes/structs, enums, typedefs, macros (#define),
|
|
6
|
+
* namespaces, includes (#include).
|
|
7
|
+
*
|
|
8
|
+
* Visibility is approximated: `static` → not exported, everything else → exported.
|
|
9
|
+
*/
|
|
2
10
|
export declare const cppIndexer: LanguageIndexer;
|
|
3
11
|
//# sourceMappingURL=c-cpp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c-cpp.d.ts","sourceRoot":"","sources":["../../../src/graph/language-indexers/c-cpp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkD,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"c-cpp.d.ts","sourceRoot":"","sources":["../../../src/graph/language-indexers/c-cpp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkD,eAAe,EAAE,MAAM,YAAY,CAAC;AAQlG;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,eA4LxB,CAAC"}
|