@mduenas/codegraph 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +641 -0
- package/dist/bin/codegraph.d.ts +20 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +704 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +291 -0
- package/dist/config.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +244 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +86 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +402 -0
- package/dist/context/index.js.map +1 -0
- package/dist/db/index.d.ts +64 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +170 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +105 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +148 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +669 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/directory.d.ts +45 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +191 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/grammars.d.ts +36 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +181 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +91 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +493 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +176 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +1798 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +355 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +465 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +496 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +818 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/banner.d.ts +40 -0
- package/dist/installer/banner.d.ts.map +1 -0
- package/dist/installer/banner.js +162 -0
- package/dist/installer/banner.js.map +1 -0
- package/dist/installer/claude-md-template.d.ts +10 -0
- package/dist/installer/claude-md-template.d.ts.map +1 -0
- package/dist/installer/claude-md-template.js +46 -0
- package/dist/installer/claude-md-template.js.map +1 -0
- package/dist/installer/config-writer.d.ts +36 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +282 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +13 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +155 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/prompts.d.ts +18 -0
- package/dist/installer/prompts.d.ts.map +1 -0
- package/dist/installer/prompts.js +113 -0
- package/dist/installer/prompts.js.map +1 -0
- package/dist/mcp/index.d.ts +64 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +207 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools.d.ts +93 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +442 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +89 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +170 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +274 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +208 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +225 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +33 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +113 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +239 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +198 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +331 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +294 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +262 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +222 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +486 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +20 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +445 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +72 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +301 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +27 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +210 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/types.d.ts +108 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/sync/git-hooks.d.ts +66 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +281 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +13 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +18 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/types.d.ts +410 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +165 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +116 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +295 -0
- package/dist/utils.js.map +1 -0
- package/dist/vectors/embedder.d.ts +140 -0
- package/dist/vectors/embedder.d.ts.map +1 -0
- package/dist/vectors/embedder.js +336 -0
- package/dist/vectors/embedder.js.map +1 -0
- package/dist/vectors/index.d.ts +9 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +20 -0
- package/dist/vectors/index.js.map +1 -0
- package/dist/vectors/manager.d.ts +119 -0
- package/dist/vectors/manager.d.ts.map +1 -0
- package/dist/vectors/manager.js +274 -0
- package/dist/vectors/manager.js.map +1 -0
- package/dist/vectors/search.d.ts +134 -0
- package/dist/vectors/search.d.ts.map +1 -0
- package/dist/vectors/search.js +409 -0
- package/dist/vectors/search.js.map +1 -0
- package/package.json +67 -0
- package/scripts/postinstall.js +68 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Context Formatter
|
|
4
|
+
*
|
|
5
|
+
* Formats TaskContext as markdown or JSON for consumption by Claude.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.formatContextAsMarkdown = formatContextAsMarkdown;
|
|
9
|
+
exports.formatContextAsJson = formatContextAsJson;
|
|
10
|
+
exports.formatSubgraphTree = formatSubgraphTree;
|
|
11
|
+
exports.formatBytes = formatBytes;
|
|
12
|
+
/**
|
|
13
|
+
* Format context as markdown
|
|
14
|
+
*
|
|
15
|
+
* Creates a compact markdown document optimized for Claude with minimal context usage:
|
|
16
|
+
* - Brief summary
|
|
17
|
+
* - Entry points with locations
|
|
18
|
+
* - Code blocks only for key symbols
|
|
19
|
+
*/
|
|
20
|
+
function formatContextAsMarkdown(context) {
|
|
21
|
+
const lines = [];
|
|
22
|
+
// Header with query
|
|
23
|
+
lines.push('## Code Context\n');
|
|
24
|
+
lines.push(`**Query:** ${context.query}\n`);
|
|
25
|
+
// Entry points - compact format
|
|
26
|
+
if (context.entryPoints.length > 0) {
|
|
27
|
+
lines.push('### Entry Points\n');
|
|
28
|
+
for (const node of context.entryPoints) {
|
|
29
|
+
const location = node.startLine ? `:${node.startLine}` : '';
|
|
30
|
+
lines.push(`- **${node.name}** (${node.kind}) - ${node.filePath}${location}`);
|
|
31
|
+
if (node.signature) {
|
|
32
|
+
lines.push(` \`${node.signature}\``);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
lines.push('');
|
|
36
|
+
}
|
|
37
|
+
// Related symbols - compact list (skip verbose structure tree)
|
|
38
|
+
const otherSymbols = Array.from(context.subgraph.nodes.values())
|
|
39
|
+
.filter(n => !context.entryPoints.some(e => e.id === n.id))
|
|
40
|
+
.slice(0, 10); // Limit to 10 related symbols
|
|
41
|
+
if (otherSymbols.length > 0) {
|
|
42
|
+
lines.push('### Related Symbols\n');
|
|
43
|
+
const byFile = new Map();
|
|
44
|
+
for (const node of otherSymbols) {
|
|
45
|
+
const existing = byFile.get(node.filePath) || [];
|
|
46
|
+
existing.push(node);
|
|
47
|
+
byFile.set(node.filePath, existing);
|
|
48
|
+
}
|
|
49
|
+
for (const [file, nodes] of byFile) {
|
|
50
|
+
const nodeList = nodes.map(n => `${n.name}:${n.startLine}`).join(', ');
|
|
51
|
+
lines.push(`- ${file}: ${nodeList}`);
|
|
52
|
+
}
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
// Code blocks - only for key entry points
|
|
56
|
+
if (context.codeBlocks.length > 0) {
|
|
57
|
+
lines.push('### Code\n');
|
|
58
|
+
for (const block of context.codeBlocks) {
|
|
59
|
+
const nodeName = block.node?.name ?? 'Unknown';
|
|
60
|
+
lines.push(`#### ${nodeName} (${block.filePath}:${block.startLine})\n`);
|
|
61
|
+
lines.push('```' + block.language);
|
|
62
|
+
lines.push(block.content);
|
|
63
|
+
lines.push('```\n');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return lines.join('\n');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Format context as JSON
|
|
70
|
+
*
|
|
71
|
+
* Returns a structured JSON representation suitable for programmatic use.
|
|
72
|
+
*/
|
|
73
|
+
function formatContextAsJson(context) {
|
|
74
|
+
// Convert Map to array for JSON serialization
|
|
75
|
+
const serializable = {
|
|
76
|
+
query: context.query,
|
|
77
|
+
summary: context.summary,
|
|
78
|
+
entryPoints: context.entryPoints.map(serializeNode),
|
|
79
|
+
nodes: Array.from(context.subgraph.nodes.values()).map(serializeNode),
|
|
80
|
+
edges: context.subgraph.edges.map(serializeEdge),
|
|
81
|
+
codeBlocks: context.codeBlocks.map((block) => ({
|
|
82
|
+
filePath: block.filePath,
|
|
83
|
+
startLine: block.startLine,
|
|
84
|
+
endLine: block.endLine,
|
|
85
|
+
language: block.language,
|
|
86
|
+
content: block.content,
|
|
87
|
+
nodeName: block.node?.name,
|
|
88
|
+
nodeKind: block.node?.kind,
|
|
89
|
+
})),
|
|
90
|
+
relatedFiles: context.relatedFiles,
|
|
91
|
+
stats: context.stats,
|
|
92
|
+
};
|
|
93
|
+
return JSON.stringify(serializable, null, 2);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format a subgraph as an ASCII tree structure
|
|
97
|
+
*/
|
|
98
|
+
function formatSubgraphTree(subgraph, entryPoints) {
|
|
99
|
+
const lines = [];
|
|
100
|
+
const printed = new Set();
|
|
101
|
+
// Build adjacency list for outgoing edges
|
|
102
|
+
const outgoing = new Map();
|
|
103
|
+
for (const edge of subgraph.edges) {
|
|
104
|
+
const existing = outgoing.get(edge.source) ?? [];
|
|
105
|
+
existing.push(edge);
|
|
106
|
+
outgoing.set(edge.source, existing);
|
|
107
|
+
}
|
|
108
|
+
// Print each entry point as a tree root
|
|
109
|
+
for (const entry of entryPoints) {
|
|
110
|
+
formatNodeTree(entry, subgraph, outgoing, printed, lines, 0, '');
|
|
111
|
+
lines.push(''); // Blank line between trees
|
|
112
|
+
}
|
|
113
|
+
// Print any remaining nodes not reached from entry points
|
|
114
|
+
const remaining = [];
|
|
115
|
+
for (const node of subgraph.nodes.values()) {
|
|
116
|
+
if (!printed.has(node.id)) {
|
|
117
|
+
remaining.push(node);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (remaining.length > 0 && remaining.length <= 10) {
|
|
121
|
+
lines.push('Other relevant symbols:');
|
|
122
|
+
for (const node of remaining) {
|
|
123
|
+
const location = node.startLine ? `:${node.startLine}` : '';
|
|
124
|
+
lines.push(` ${node.kind}: ${node.name} (${node.filePath}${location})`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else if (remaining.length > 10) {
|
|
128
|
+
lines.push(`... and ${remaining.length} more related symbols`);
|
|
129
|
+
}
|
|
130
|
+
return lines.join('\n').trim();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Format a single node and its relationships
|
|
134
|
+
*/
|
|
135
|
+
function formatNodeTree(node, subgraph, outgoing, printed, lines, depth, prefix) {
|
|
136
|
+
if (printed.has(node.id)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
printed.add(node.id);
|
|
140
|
+
// Node header
|
|
141
|
+
const location = node.startLine ? `:${node.startLine}` : '';
|
|
142
|
+
const signature = node.signature ? ` - ${truncate(node.signature, 50)}` : '';
|
|
143
|
+
lines.push(`${prefix}${node.kind}: ${node.name} (${node.filePath}${location})${signature}`);
|
|
144
|
+
// Outgoing edges
|
|
145
|
+
const edges = outgoing.get(node.id) ?? [];
|
|
146
|
+
const significantEdges = edges.filter((e) => ['calls', 'extends', 'implements', 'imports', 'references'].includes(e.kind));
|
|
147
|
+
// Group by kind
|
|
148
|
+
const edgesByKind = new Map();
|
|
149
|
+
for (const edge of significantEdges) {
|
|
150
|
+
const existing = edgesByKind.get(edge.kind) ?? [];
|
|
151
|
+
existing.push(edge);
|
|
152
|
+
edgesByKind.set(edge.kind, existing);
|
|
153
|
+
}
|
|
154
|
+
// Print edges grouped by kind
|
|
155
|
+
const newPrefix = prefix + ' ';
|
|
156
|
+
for (const [kind, kindEdges] of edgesByKind) {
|
|
157
|
+
if (kindEdges.length > 3) {
|
|
158
|
+
// Summarize if too many
|
|
159
|
+
const names = kindEdges
|
|
160
|
+
.slice(0, 3)
|
|
161
|
+
.map((e) => {
|
|
162
|
+
const target = subgraph.nodes.get(e.target);
|
|
163
|
+
return target?.name ?? 'unknown';
|
|
164
|
+
})
|
|
165
|
+
.join(', ');
|
|
166
|
+
lines.push(`${newPrefix}├── ${kind}: ${names} and ${kindEdges.length - 3} more`);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
for (let i = 0; i < kindEdges.length; i++) {
|
|
170
|
+
const edge = kindEdges[i];
|
|
171
|
+
const target = subgraph.nodes.get(edge.target);
|
|
172
|
+
const targetName = target?.name ?? 'unknown';
|
|
173
|
+
const connector = i === kindEdges.length - 1 ? '└──' : '├──';
|
|
174
|
+
lines.push(`${newPrefix}${connector} ${kind} → ${targetName}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Recurse for directly connected nodes (limited depth)
|
|
179
|
+
if (depth < 1) {
|
|
180
|
+
for (const edge of significantEdges.slice(0, 3)) {
|
|
181
|
+
const target = subgraph.nodes.get(edge.target);
|
|
182
|
+
if (target && !printed.has(target.id)) {
|
|
183
|
+
formatNodeTree(target, subgraph, outgoing, printed, lines, depth + 1, newPrefix);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Serialize a node for JSON output
|
|
190
|
+
*/
|
|
191
|
+
function serializeNode(node) {
|
|
192
|
+
return {
|
|
193
|
+
id: node.id,
|
|
194
|
+
kind: node.kind,
|
|
195
|
+
name: node.name,
|
|
196
|
+
qualifiedName: node.qualifiedName,
|
|
197
|
+
filePath: node.filePath,
|
|
198
|
+
language: node.language,
|
|
199
|
+
startLine: node.startLine,
|
|
200
|
+
endLine: node.endLine,
|
|
201
|
+
signature: node.signature,
|
|
202
|
+
docstring: node.docstring,
|
|
203
|
+
visibility: node.visibility,
|
|
204
|
+
isExported: node.isExported,
|
|
205
|
+
isAsync: node.isAsync,
|
|
206
|
+
isStatic: node.isStatic,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Serialize an edge for JSON output
|
|
211
|
+
*/
|
|
212
|
+
function serializeEdge(edge) {
|
|
213
|
+
return {
|
|
214
|
+
source: edge.source,
|
|
215
|
+
target: edge.target,
|
|
216
|
+
kind: edge.kind,
|
|
217
|
+
line: edge.line,
|
|
218
|
+
column: edge.column,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Truncate a string with ellipsis
|
|
223
|
+
*/
|
|
224
|
+
function truncate(str, maxLength) {
|
|
225
|
+
if (str.length <= maxLength) {
|
|
226
|
+
return str;
|
|
227
|
+
}
|
|
228
|
+
return str.slice(0, maxLength - 3) + '...';
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Format bytes as human-readable string
|
|
232
|
+
*/
|
|
233
|
+
function formatBytes(bytes) {
|
|
234
|
+
if (bytes < 1024) {
|
|
235
|
+
return `${bytes} bytes`;
|
|
236
|
+
}
|
|
237
|
+
else if (bytes < 1024 * 1024) {
|
|
238
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/context/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Builder
|
|
3
|
+
*
|
|
4
|
+
* Builds rich context for tasks by combining semantic search with graph traversal.
|
|
5
|
+
* Outputs structured context ready to inject into Claude.
|
|
6
|
+
*/
|
|
7
|
+
import { Subgraph, TaskContext, TaskInput, BuildContextOptions, FindRelevantContextOptions } from '../types';
|
|
8
|
+
import { QueryBuilder } from '../db/queries';
|
|
9
|
+
import { GraphTraverser } from '../graph';
|
|
10
|
+
import { VectorManager } from '../vectors';
|
|
11
|
+
/**
|
|
12
|
+
* Context Builder
|
|
13
|
+
*
|
|
14
|
+
* Coordinates semantic search and graph traversal to build
|
|
15
|
+
* comprehensive context for tasks.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ContextBuilder {
|
|
18
|
+
private projectRoot;
|
|
19
|
+
private queries;
|
|
20
|
+
private traverser;
|
|
21
|
+
private vectorManager;
|
|
22
|
+
constructor(projectRoot: string, queries: QueryBuilder, traverser: GraphTraverser, vectorManager: VectorManager | null);
|
|
23
|
+
/**
|
|
24
|
+
* Build context for a task
|
|
25
|
+
*
|
|
26
|
+
* Pipeline:
|
|
27
|
+
* 1. Parse task input (string or {title, description})
|
|
28
|
+
* 2. Run semantic search to find entry points
|
|
29
|
+
* 3. Expand graph around entry points
|
|
30
|
+
* 4. Extract code blocks for key nodes
|
|
31
|
+
* 5. Format output for Claude
|
|
32
|
+
*
|
|
33
|
+
* @param input - Task description or object with title/description
|
|
34
|
+
* @param options - Build options
|
|
35
|
+
* @returns TaskContext (structured) or formatted string
|
|
36
|
+
*/
|
|
37
|
+
buildContext(input: TaskInput, options?: BuildContextOptions): Promise<TaskContext | string>;
|
|
38
|
+
/**
|
|
39
|
+
* Find relevant subgraph for a query
|
|
40
|
+
*
|
|
41
|
+
* Combines semantic search with graph traversal:
|
|
42
|
+
* 1. Use semantic search to find relevant entry points
|
|
43
|
+
* 2. Traverse graph from entry points
|
|
44
|
+
* 3. Merge results into a unified subgraph
|
|
45
|
+
*
|
|
46
|
+
* @param query - Natural language query
|
|
47
|
+
* @param options - Search and traversal options
|
|
48
|
+
* @returns Subgraph of relevant nodes and edges
|
|
49
|
+
*/
|
|
50
|
+
findRelevantContext(query: string, options?: FindRelevantContextOptions): Promise<Subgraph>;
|
|
51
|
+
/**
|
|
52
|
+
* Get the source code for a node
|
|
53
|
+
*
|
|
54
|
+
* Reads the file and extracts the code between startLine and endLine.
|
|
55
|
+
*
|
|
56
|
+
* @param nodeId - ID of the node
|
|
57
|
+
* @returns Code string or null if not found
|
|
58
|
+
*/
|
|
59
|
+
getCode(nodeId: string): Promise<string | null>;
|
|
60
|
+
/**
|
|
61
|
+
* Extract code from a node's source file
|
|
62
|
+
*/
|
|
63
|
+
private extractNodeCode;
|
|
64
|
+
/**
|
|
65
|
+
* Get entry points from a subgraph (the root nodes)
|
|
66
|
+
*/
|
|
67
|
+
private getEntryPoints;
|
|
68
|
+
/**
|
|
69
|
+
* Extract code blocks for key nodes in the subgraph
|
|
70
|
+
*/
|
|
71
|
+
private extractCodeBlocks;
|
|
72
|
+
/**
|
|
73
|
+
* Get unique files from a subgraph
|
|
74
|
+
*/
|
|
75
|
+
private getRelatedFiles;
|
|
76
|
+
/**
|
|
77
|
+
* Generate a summary of the context
|
|
78
|
+
*/
|
|
79
|
+
private generateSummary;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Create a context builder
|
|
83
|
+
*/
|
|
84
|
+
export declare function createContextBuilder(projectRoot: string, queries: QueryBuilder, traverser: GraphTraverser, vectorManager: VectorManager | null): ContextBuilder;
|
|
85
|
+
export { formatContextAsMarkdown, formatContextAsJson } from './formatter';
|
|
86
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAGL,QAAQ,EAER,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,0BAA0B,EAE3B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmC3C;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,aAAa,CAAuB;gBAG1C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,aAAa,GAAG,IAAI;IAQrC;;;;;;;;;;;;;OAaG;IACG,YAAY,CAChB,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAyDhC;;;;;;;;;;;OAWG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,QAAQ,CAAC;IAsHpB;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASrD;;OAEG;YACW,eAAe;IAsB7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;YACW,iBAAiB;IA6D/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,eAAe;CAgBxB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,cAAc,CAEhB;AAGD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|