@milo4jo/contextkit 0.5.1 → 0.5.7

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 (55) hide show
  1. package/README.md +143 -3
  2. package/dist/commands/doctor.d.ts +3 -0
  3. package/dist/commands/doctor.d.ts.map +1 -0
  4. package/dist/commands/doctor.js +254 -0
  5. package/dist/commands/doctor.js.map +1 -0
  6. package/dist/commands/graph.d.ts +10 -0
  7. package/dist/commands/graph.d.ts.map +1 -0
  8. package/dist/commands/graph.js +289 -0
  9. package/dist/commands/graph.js.map +1 -0
  10. package/dist/commands/select.d.ts.map +1 -1
  11. package/dist/commands/select.js +9 -0
  12. package/dist/commands/select.js.map +1 -1
  13. package/dist/commands/symbol.d.ts +9 -0
  14. package/dist/commands/symbol.d.ts.map +1 -0
  15. package/dist/commands/symbol.js +420 -0
  16. package/dist/commands/symbol.js.map +1 -0
  17. package/dist/db/index.d.ts +1 -0
  18. package/dist/db/index.d.ts.map +1 -1
  19. package/dist/db/index.js +1 -0
  20. package/dist/db/index.js.map +1 -1
  21. package/dist/errors/index.d.ts +15 -0
  22. package/dist/errors/index.d.ts.map +1 -1
  23. package/dist/errors/index.js +32 -0
  24. package/dist/errors/index.js.map +1 -1
  25. package/dist/index.js +9 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/indexer/chunker.d.ts +10 -1
  28. package/dist/indexer/chunker.d.ts.map +1 -1
  29. package/dist/indexer/chunker.js +123 -2
  30. package/dist/indexer/chunker.js.map +1 -1
  31. package/dist/indexer/index.d.ts.map +1 -1
  32. package/dist/indexer/index.js +3 -2
  33. package/dist/indexer/index.js.map +1 -1
  34. package/dist/mcp-server.js +0 -0
  35. package/dist/parsers/index.d.ts +26 -6
  36. package/dist/parsers/index.d.ts.map +1 -1
  37. package/dist/parsers/index.js +71 -12
  38. package/dist/parsers/index.js.map +1 -1
  39. package/dist/parsers/markdown.d.ts +29 -0
  40. package/dist/parsers/markdown.d.ts.map +1 -0
  41. package/dist/parsers/markdown.js +142 -0
  42. package/dist/parsers/markdown.js.map +1 -0
  43. package/dist/parsers/tree-sitter.d.ts +32 -0
  44. package/dist/parsers/tree-sitter.d.ts.map +1 -0
  45. package/dist/parsers/tree-sitter.js +356 -0
  46. package/dist/parsers/tree-sitter.js.map +1 -0
  47. package/dist/selector/formatter.d.ts +4 -1
  48. package/dist/selector/formatter.d.ts.map +1 -1
  49. package/dist/selector/formatter.js +214 -6
  50. package/dist/selector/formatter.js.map +1 -1
  51. package/dist/selector/index.d.ts +4 -0
  52. package/dist/selector/index.d.ts.map +1 -1
  53. package/dist/selector/index.js +3 -1
  54. package/dist/selector/index.js.map +1 -1
  55. package/package.json +6 -1
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Call Graph Command
3
+ *
4
+ * Analyze function call relationships:
5
+ * - What functions call a given function (callers)
6
+ * - What functions a given function calls (callees)
7
+ */
8
+ import { Command } from 'commander';
9
+ import { ensureInitialized } from '../config/index.js';
10
+ import { openDatabase } from '../db/index.js';
11
+ import { writeData, writeMessage, writeWarning } from '../utils/streams.js';
12
+ import { formatDim } from '../utils/format.js';
13
+ import { getGlobalOpts } from '../utils/cli.js';
14
+ /** Extract function definitions from content */
15
+ function extractFunctionDefs(content, filePath) {
16
+ const functions = new Map();
17
+ const lines = content.split('\n');
18
+ const ext = filePath.split('.').pop()?.toLowerCase();
19
+ for (let i = 0; i < lines.length; i++) {
20
+ const line = lines[i];
21
+ const trimmed = line.trim();
22
+ // TypeScript/JavaScript
23
+ if (ext === 'ts' || ext === 'tsx' || ext === 'js' || ext === 'jsx') {
24
+ // function name()
25
+ const funcMatch = trimmed.match(/^(export\s+)?(async\s+)?function\s+(\w+)/);
26
+ if (funcMatch) {
27
+ const name = funcMatch[3];
28
+ const endLine = findBlockEnd(lines, i);
29
+ functions.set(name, { startLine: i + 1, endLine });
30
+ continue;
31
+ }
32
+ // const name = () =>
33
+ const arrowMatch = trimmed.match(/^(export\s+)?(const|let|var)\s+(\w+)\s*=\s*(async\s+)?\(/);
34
+ if (arrowMatch) {
35
+ const name = arrowMatch[3];
36
+ const endLine = findBlockEnd(lines, i);
37
+ functions.set(name, { startLine: i + 1, endLine });
38
+ continue;
39
+ }
40
+ // Method in class: name() or async name()
41
+ const methodMatch = trimmed.match(/^(public|private|protected|static|async)?\s*(async\s+)?(\w+)\s*\([^)]*\)\s*[:{]/);
42
+ if (methodMatch && !['if', 'while', 'for', 'switch', 'catch'].includes(methodMatch[3])) {
43
+ const name = methodMatch[3];
44
+ const endLine = findBlockEnd(lines, i);
45
+ functions.set(name, { startLine: i + 1, endLine });
46
+ continue;
47
+ }
48
+ }
49
+ // Python
50
+ if (ext === 'py') {
51
+ const defMatch = trimmed.match(/^(async\s+)?def\s+(\w+)/);
52
+ if (defMatch) {
53
+ const name = defMatch[2];
54
+ const endLine = findPythonBlockEnd(lines, i);
55
+ functions.set(name, { startLine: i + 1, endLine });
56
+ continue;
57
+ }
58
+ }
59
+ // Go
60
+ if (ext === 'go') {
61
+ const funcMatch = trimmed.match(/^func\s+(?:\([^)]+\)\s+)?(\w+)/);
62
+ if (funcMatch) {
63
+ const name = funcMatch[1];
64
+ const endLine = findBlockEnd(lines, i);
65
+ functions.set(name, { startLine: i + 1, endLine });
66
+ continue;
67
+ }
68
+ }
69
+ // Rust
70
+ if (ext === 'rs') {
71
+ const fnMatch = trimmed.match(/^(pub\s+)?(async\s+)?fn\s+(\w+)/);
72
+ if (fnMatch) {
73
+ const name = fnMatch[3];
74
+ const endLine = findBlockEnd(lines, i);
75
+ functions.set(name, { startLine: i + 1, endLine });
76
+ continue;
77
+ }
78
+ }
79
+ }
80
+ return functions;
81
+ }
82
+ /** Find function calls in a range of lines */
83
+ function findFunctionCalls(content, startLine, endLine, knownFunctions) {
84
+ const calls = [];
85
+ const lines = content.split('\n');
86
+ // Simple regex to find function calls: name(
87
+ const callPattern = /\b(\w+)\s*\(/g;
88
+ for (let i = startLine - 1; i < Math.min(endLine, lines.length); i++) {
89
+ const line = lines[i];
90
+ const trimmed = line.trim();
91
+ // Skip comments
92
+ if (trimmed.startsWith('//') || trimmed.startsWith('#') || trimmed.startsWith('*')) {
93
+ continue;
94
+ }
95
+ let match;
96
+ while ((match = callPattern.exec(line)) !== null) {
97
+ const name = match[1];
98
+ // Skip keywords and common non-function patterns
99
+ const keywords = ['if', 'else', 'while', 'for', 'switch', 'catch', 'return', 'throw', 'new', 'typeof', 'import', 'export', 'const', 'let', 'var', 'function', 'class', 'interface', 'type', 'async', 'await', 'try', 'finally'];
100
+ if (keywords.includes(name))
101
+ continue;
102
+ // Only include if it's a known function or looks like a function call
103
+ if (knownFunctions.has(name) || name[0] === name[0].toLowerCase()) {
104
+ calls.push({
105
+ name,
106
+ line: i + 1,
107
+ context: trimmed.substring(0, 80),
108
+ });
109
+ }
110
+ }
111
+ }
112
+ return calls;
113
+ }
114
+ /** Find block end (brace-delimited) */
115
+ function findBlockEnd(lines, startIdx) {
116
+ let braceCount = 0;
117
+ let started = false;
118
+ for (let i = startIdx; i < lines.length; i++) {
119
+ const line = lines[i];
120
+ for (const char of line) {
121
+ if (char === '{') {
122
+ braceCount++;
123
+ started = true;
124
+ }
125
+ else if (char === '}') {
126
+ braceCount--;
127
+ if (started && braceCount === 0) {
128
+ return i + 1;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ return lines.length;
134
+ }
135
+ /** Find Python block end (indentation-based) */
136
+ function findPythonBlockEnd(lines, startIdx) {
137
+ const startLine = lines[startIdx];
138
+ const startIndent = startLine.length - startLine.trimStart().length;
139
+ for (let i = startIdx + 1; i < lines.length; i++) {
140
+ const line = lines[i];
141
+ const trimmed = line.trim();
142
+ if (!trimmed)
143
+ continue;
144
+ const indent = line.length - line.trimStart().length;
145
+ if (indent <= startIndent) {
146
+ return i;
147
+ }
148
+ }
149
+ return lines.length;
150
+ }
151
+ /** Build call graph for a target function */
152
+ function buildCallGraph(db, targetName, options) {
153
+ const { sources } = options;
154
+ // Get all chunks
155
+ let sql = 'SELECT file_path, content FROM chunks';
156
+ const params = [];
157
+ if (sources && sources.length > 0) {
158
+ sql += ' WHERE source_id IN (' + sources.map(() => '?').join(',') + ')';
159
+ params.push(...sources);
160
+ }
161
+ const rows = db.prepare(sql).all(...params);
162
+ // Build function index (file -> functions)
163
+ const functionsByFile = new Map();
164
+ const allFunctions = new Set();
165
+ for (const row of rows) {
166
+ const funcs = extractFunctionDefs(row.content, row.file_path);
167
+ if (funcs.size > 0) {
168
+ functionsByFile.set(row.file_path, funcs);
169
+ for (const name of funcs.keys()) {
170
+ allFunctions.add(name);
171
+ }
172
+ }
173
+ }
174
+ // Find callers (who calls targetName)
175
+ const callers = [];
176
+ for (const row of rows) {
177
+ const fileFuncs = functionsByFile.get(row.file_path);
178
+ if (!fileFuncs)
179
+ continue;
180
+ for (const [funcName, { startLine, endLine }] of fileFuncs) {
181
+ const calls = findFunctionCalls(row.content, startLine, endLine, allFunctions);
182
+ for (const call of calls) {
183
+ if (call.name === targetName && funcName !== targetName) {
184
+ callers.push({
185
+ file: row.file_path,
186
+ function: funcName,
187
+ line: call.line,
188
+ context: call.context,
189
+ });
190
+ }
191
+ }
192
+ }
193
+ }
194
+ // Find callees (what targetName calls)
195
+ const callees = [];
196
+ for (const row of rows) {
197
+ const fileFuncs = functionsByFile.get(row.file_path);
198
+ if (!fileFuncs)
199
+ continue;
200
+ const targetFunc = fileFuncs.get(targetName);
201
+ if (!targetFunc)
202
+ continue;
203
+ const calls = findFunctionCalls(row.content, targetFunc.startLine, targetFunc.endLine, allFunctions);
204
+ for (const call of calls) {
205
+ if (call.name !== targetName) {
206
+ // Find where this function is defined
207
+ let definedIn = '';
208
+ for (const [file, funcs] of functionsByFile) {
209
+ if (funcs.has(call.name)) {
210
+ definedIn = file;
211
+ break;
212
+ }
213
+ }
214
+ callees.push({
215
+ file: definedIn || '(external)',
216
+ function: call.name,
217
+ line: call.line,
218
+ context: call.context,
219
+ });
220
+ }
221
+ }
222
+ }
223
+ // Deduplicate
224
+ const uniqueCallers = Array.from(new Map(callers.map(c => [`${c.file}:${c.function}`, c])).values());
225
+ const uniqueCallees = Array.from(new Map(callees.map(c => [`${c.file}:${c.function}`, c])).values());
226
+ return {
227
+ target: targetName,
228
+ callers: uniqueCallers,
229
+ callees: uniqueCallees,
230
+ };
231
+ }
232
+ /** Format call graph output */
233
+ function formatCallGraph(result, json) {
234
+ if (json) {
235
+ return JSON.stringify(result, null, 2);
236
+ }
237
+ const lines = [];
238
+ lines.push(`🎯 Call graph for: ${result.target}`);
239
+ lines.push('');
240
+ // Callers
241
+ lines.push(`📥 Callers (${result.callers.length}):`);
242
+ if (result.callers.length === 0) {
243
+ lines.push(' (none found)');
244
+ }
245
+ else {
246
+ for (const caller of result.callers) {
247
+ lines.push(` ← ${caller.function} (${caller.file}:${caller.line})`);
248
+ }
249
+ }
250
+ lines.push('');
251
+ // Callees
252
+ lines.push(`📤 Calls (${result.callees.length}):`);
253
+ if (result.callees.length === 0) {
254
+ lines.push(' (none found)');
255
+ }
256
+ else {
257
+ for (const callee of result.callees) {
258
+ const location = callee.file === '(external)' ? '(external)' : `${callee.file}`;
259
+ lines.push(` → ${callee.function} (${location})`);
260
+ }
261
+ }
262
+ return lines.join('\n');
263
+ }
264
+ export const graphCommand = new Command('graph')
265
+ .description('Show call graph for a function')
266
+ .argument('<function>', 'Function name to analyze')
267
+ .option('-s, --sources <sources>', 'Filter sources (comma-separated)')
268
+ .action(async (functionName, options) => {
269
+ ensureInitialized();
270
+ const opts = getGlobalOpts(graphCommand);
271
+ const sources = options.sources
272
+ ? options.sources.split(',').map((s) => s.trim())
273
+ : undefined;
274
+ const db = openDatabase();
275
+ try {
276
+ const result = buildCallGraph(db, functionName, { sources });
277
+ if (result.callers.length === 0 && result.callees.length === 0) {
278
+ writeWarning(`No call relationships found for "${functionName}"`);
279
+ writeMessage(formatDim('Make sure the function exists and the codebase is indexed.'));
280
+ return;
281
+ }
282
+ const output = formatCallGraph(result, opts.json ?? false);
283
+ writeData(output);
284
+ }
285
+ finally {
286
+ db.close();
287
+ }
288
+ });
289
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/commands/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,aAAa,SAuEtB,CAAC"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/commands/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,aAAa,SAiFtB,CAAC"}
@@ -8,11 +8,14 @@ import { getGlobalOpts } from '../utils/cli.js';
8
8
  import { InvalidUsageError } from '../errors/index.js';
9
9
  /** Valid output formats */
10
10
  const VALID_FORMATS = ['markdown', 'xml', 'json', 'plain'];
11
+ /** Valid selection modes */
12
+ const VALID_MODES = ['full', 'map'];
11
13
  export const selectCommand = new Command('select')
12
14
  .description('Select context for a query')
13
15
  .argument('<query>', 'The query to find context for')
14
16
  .option('-b, --budget <tokens>', 'Maximum tokens to include', '8000')
15
17
  .option('-f, --format <format>', 'Output format: markdown, xml, json, plain', 'markdown')
18
+ .option('-m, --mode <mode>', 'Selection mode: full (code), map (signatures only)', 'full')
16
19
  .option('-s, --sources <sources>', 'Filter sources (comma-separated)')
17
20
  .option('--explain', 'Show scoring details')
18
21
  .option('--include-imports', 'Include files imported by selected chunks')
@@ -29,6 +32,11 @@ export const selectCommand = new Command('select')
29
32
  if (!VALID_FORMATS.includes(format)) {
30
33
  throw new InvalidUsageError(`Invalid format "${options.format}". Valid formats: ${VALID_FORMATS.join(', ')}`);
31
34
  }
35
+ // Validate mode
36
+ const mode = (options.mode?.toLowerCase() ?? 'full');
37
+ if (!VALID_MODES.includes(mode)) {
38
+ throw new InvalidUsageError(`Invalid mode "${options.mode}". Valid modes: ${VALID_MODES.join(', ')}`);
39
+ }
32
40
  // Parse sources filter
33
41
  const sources = options.sources
34
42
  ? options.sources.split(',').map((s) => s.trim())
@@ -45,6 +53,7 @@ export const selectCommand = new Command('select')
45
53
  sources,
46
54
  explain: options.explain,
47
55
  format: effectiveFormat,
56
+ mode,
48
57
  includeImports: options.includeImports,
49
58
  noCache: options.cache === false,
50
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/commands/select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/commands/select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Symbol Search Command
3
+ *
4
+ * Find code by symbol name (exact/fuzzy match).
5
+ * Faster than semantic search when you know the name.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare const symbolCommand: Command;
9
+ //# sourceMappingURL=symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../../src/commands/symbol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8apC,eAAO,MAAM,aAAa,SA2CtB,CAAC"}