@milo4jo/contextkit 0.5.0 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +59 -1
  2. package/dist/commands/cache.d.ts +3 -0
  3. package/dist/commands/cache.d.ts.map +1 -0
  4. package/dist/commands/cache.js +50 -0
  5. package/dist/commands/cache.js.map +1 -0
  6. package/dist/commands/doctor.d.ts +3 -0
  7. package/dist/commands/doctor.d.ts.map +1 -0
  8. package/dist/commands/doctor.js +254 -0
  9. package/dist/commands/doctor.js.map +1 -0
  10. package/dist/commands/graph.d.ts +10 -0
  11. package/dist/commands/graph.d.ts.map +1 -0
  12. package/dist/commands/graph.js +289 -0
  13. package/dist/commands/graph.js.map +1 -0
  14. package/dist/commands/select.d.ts.map +1 -1
  15. package/dist/commands/select.js +11 -0
  16. package/dist/commands/select.js.map +1 -1
  17. package/dist/commands/symbol.d.ts +9 -0
  18. package/dist/commands/symbol.d.ts.map +1 -0
  19. package/dist/commands/symbol.js +420 -0
  20. package/dist/commands/symbol.js.map +1 -0
  21. package/dist/db/index.d.ts +48 -0
  22. package/dist/db/index.d.ts.map +1 -1
  23. package/dist/db/index.js +99 -0
  24. package/dist/db/index.js.map +1 -1
  25. package/dist/index.js +12 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/indexer/chunker.d.ts +25 -3
  28. package/dist/indexer/chunker.d.ts.map +1 -1
  29. package/dist/indexer/chunker.js +344 -4
  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 +65 -0
  36. package/dist/parsers/index.d.ts.map +1 -0
  37. package/dist/parsers/index.js +130 -0
  38. package/dist/parsers/index.js.map +1 -0
  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/parsers/typescript.d.ts +43 -0
  48. package/dist/parsers/typescript.d.ts.map +1 -0
  49. package/dist/parsers/typescript.js +306 -0
  50. package/dist/parsers/typescript.js.map +1 -0
  51. package/dist/selector/formatter.d.ts +4 -1
  52. package/dist/selector/formatter.d.ts.map +1 -1
  53. package/dist/selector/formatter.js +214 -6
  54. package/dist/selector/formatter.js.map +1 -1
  55. package/dist/selector/index.d.ts +8 -0
  56. package/dist/selector/index.d.ts.map +1 -1
  57. package/dist/selector/index.js +37 -2
  58. package/dist/selector/index.js.map +1 -1
  59. package/package.json +6 -1
@@ -0,0 +1,356 @@
1
+ /**
2
+ * Tree-sitter Multi-Language Parser
3
+ *
4
+ * Universal AST parsing using tree-sitter WASM bindings.
5
+ * Supports: Python, Go, Rust (and more to come)
6
+ */
7
+ import { Parser as TreeSitterParser, Language as TreeSitterLanguage, } from 'web-tree-sitter';
8
+ import { join, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ // Cache for loaded languages
11
+ const languageCache = new Map();
12
+ // Parser instance (singleton)
13
+ let parserInstance = null;
14
+ /** Language configurations */
15
+ const LANGUAGE_CONFIGS = {
16
+ python: {
17
+ package: 'tree-sitter-python',
18
+ wasmFile: 'tree-sitter-python.wasm',
19
+ functionTypes: ['function_definition'],
20
+ classTypes: ['class_definition'],
21
+ methodTypes: ['function_definition'],
22
+ getNodeName: (node) => {
23
+ const nameNode = node.childForFieldName('name');
24
+ return nameNode?.text ?? null;
25
+ },
26
+ getSignature: (node, content) => {
27
+ const text = content.substring(node.startIndex, node.endIndex);
28
+ const lines = text.split('\n');
29
+ const firstLine = lines[0].trim();
30
+ const decorators = [];
31
+ let prev = node.previousNamedSibling;
32
+ while (prev && prev.type === 'decorator') {
33
+ decorators.unshift(prev.text);
34
+ prev = prev.previousNamedSibling;
35
+ }
36
+ if (decorators.length > 0) {
37
+ return decorators.join('\n') + '\n' + firstLine;
38
+ }
39
+ return firstLine;
40
+ },
41
+ isExported: () => true,
42
+ },
43
+ go: {
44
+ package: 'tree-sitter-go',
45
+ wasmFile: 'tree-sitter-go.wasm',
46
+ functionTypes: ['function_declaration', 'method_declaration'],
47
+ classTypes: ['type_declaration'],
48
+ methodTypes: ['method_declaration'],
49
+ getNodeName: (node) => {
50
+ const nameNode = node.childForFieldName('name');
51
+ return nameNode?.text ?? null;
52
+ },
53
+ getSignature: (node, content) => {
54
+ const text = content.substring(node.startIndex, node.endIndex);
55
+ const lines = text.split('\n');
56
+ if (node.type === 'function_declaration' || node.type === 'method_declaration') {
57
+ const funcLine = lines.find((l) => l.trim().startsWith('func'));
58
+ if (funcLine) {
59
+ const openBrace = funcLine.indexOf('{');
60
+ return openBrace > 0 ? funcLine.substring(0, openBrace).trim() : funcLine.trim();
61
+ }
62
+ }
63
+ if (node.type === 'type_declaration') {
64
+ return lines[0].trim();
65
+ }
66
+ return lines[0].trim();
67
+ },
68
+ isExported: (node) => {
69
+ const nameNode = node.childForFieldName('name');
70
+ const name = nameNode?.text;
71
+ return name ? name[0] === name[0].toUpperCase() : false;
72
+ },
73
+ },
74
+ rust: {
75
+ package: 'tree-sitter-rust',
76
+ wasmFile: 'tree-sitter-rust.wasm',
77
+ functionTypes: ['function_item'],
78
+ classTypes: ['struct_item', 'enum_item', 'trait_item', 'impl_item'],
79
+ methodTypes: ['function_item'],
80
+ getNodeName: (node) => {
81
+ const nameNode = node.childForFieldName('name');
82
+ return nameNode?.text ?? null;
83
+ },
84
+ getSignature: (node, content) => {
85
+ const text = content.substring(node.startIndex, node.endIndex);
86
+ const lines = text.split('\n');
87
+ if (node.type === 'function_item') {
88
+ let sig = '';
89
+ for (const line of lines) {
90
+ sig += line + '\n';
91
+ if (line.includes('{')) {
92
+ sig = sig.substring(0, sig.lastIndexOf('{'));
93
+ break;
94
+ }
95
+ }
96
+ return sig.trim();
97
+ }
98
+ return lines[0].trim();
99
+ },
100
+ isExported: (node) => {
101
+ const parent = node.parent;
102
+ if (parent?.type === 'visibility_modifier') {
103
+ return parent.text.includes('pub');
104
+ }
105
+ let prev = node.previousSibling;
106
+ while (prev) {
107
+ if (prev.type === 'visibility_modifier') {
108
+ return prev.text.includes('pub');
109
+ }
110
+ prev = prev.previousSibling;
111
+ }
112
+ return false;
113
+ },
114
+ },
115
+ };
116
+ /** File extension to language mapping */
117
+ const EXTENSION_TO_LANGUAGE = {
118
+ py: 'python',
119
+ pyw: 'python',
120
+ go: 'go',
121
+ rs: 'rust',
122
+ };
123
+ /**
124
+ * Initialize the parser (lazy initialization)
125
+ */
126
+ async function getParser() {
127
+ if (parserInstance)
128
+ return parserInstance;
129
+ await TreeSitterParser.init();
130
+ parserInstance = new TreeSitterParser();
131
+ return parserInstance;
132
+ }
133
+ /**
134
+ * Load a language grammar
135
+ */
136
+ async function loadLanguage(languageId) {
137
+ if (languageCache.has(languageId)) {
138
+ return languageCache.get(languageId);
139
+ }
140
+ const config = LANGUAGE_CONFIGS[languageId];
141
+ if (!config) {
142
+ return null;
143
+ }
144
+ try {
145
+ const wasmPath = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'node_modules', config.package, config.wasmFile);
146
+ const language = await TreeSitterLanguage.load(wasmPath);
147
+ languageCache.set(languageId, language);
148
+ return language;
149
+ }
150
+ catch (error) {
151
+ console.error(`Failed to load language ${languageId}:`, error);
152
+ return null;
153
+ }
154
+ }
155
+ /**
156
+ * Get language ID from file extension
157
+ */
158
+ export function getLanguageForFile(filePath) {
159
+ const ext = filePath.toLowerCase().split('.').pop();
160
+ if (!ext)
161
+ return null;
162
+ return EXTENSION_TO_LANGUAGE[ext] ?? null;
163
+ }
164
+ /**
165
+ * Check if tree-sitter can parse this file type
166
+ */
167
+ export function canParseWithTreeSitter(filePath) {
168
+ return getLanguageForFile(filePath) !== null;
169
+ }
170
+ /**
171
+ * Extract code boundaries from a syntax tree
172
+ */
173
+ function extractBoundaries(tree, config) {
174
+ const boundaries = [];
175
+ const visit = (node, parentClass = null) => {
176
+ let boundary = null;
177
+ if (config.functionTypes.includes(node.type)) {
178
+ const name = config.getNodeName(node);
179
+ if (name) {
180
+ const isMethod = parentClass !== null;
181
+ boundary = {
182
+ type: isMethod ? 'method' : 'function',
183
+ name: isMethod ? `${parentClass}.${name}` : name,
184
+ startLine: node.startPosition.row + 1,
185
+ endLine: node.endPosition.row + 1,
186
+ exported: config.isExported(node),
187
+ };
188
+ }
189
+ }
190
+ if (config.classTypes.includes(node.type)) {
191
+ const name = config.getNodeName(node);
192
+ if (name) {
193
+ boundary = {
194
+ type: 'class',
195
+ name,
196
+ startLine: node.startPosition.row + 1,
197
+ endLine: node.endPosition.row + 1,
198
+ exported: config.isExported(node),
199
+ };
200
+ for (const child of node.children) {
201
+ visit(child, name);
202
+ }
203
+ if (boundary) {
204
+ boundaries.push(boundary);
205
+ }
206
+ return;
207
+ }
208
+ }
209
+ if (boundary) {
210
+ boundaries.push(boundary);
211
+ }
212
+ for (const child of node.children) {
213
+ visit(child, parentClass);
214
+ }
215
+ };
216
+ visit(tree.rootNode);
217
+ return boundaries;
218
+ }
219
+ /**
220
+ * Parse a file using tree-sitter
221
+ */
222
+ export async function parseWithTreeSitter(content, filePath) {
223
+ const languageId = getLanguageForFile(filePath);
224
+ if (!languageId) {
225
+ return {
226
+ success: false,
227
+ boundaries: [],
228
+ error: `Unsupported file type: ${filePath}`,
229
+ };
230
+ }
231
+ const config = LANGUAGE_CONFIGS[languageId];
232
+ if (!config) {
233
+ return {
234
+ success: false,
235
+ boundaries: [],
236
+ error: `No configuration for language: ${languageId}`,
237
+ };
238
+ }
239
+ try {
240
+ const parser = await getParser();
241
+ const language = await loadLanguage(languageId);
242
+ if (!language) {
243
+ return {
244
+ success: false,
245
+ boundaries: [],
246
+ error: `Failed to load language grammar for: ${languageId}`,
247
+ };
248
+ }
249
+ parser.setLanguage(language);
250
+ const tree = parser.parse(content);
251
+ if (!tree) {
252
+ return {
253
+ success: false,
254
+ boundaries: [],
255
+ error: `Failed to parse file: ${filePath}`,
256
+ };
257
+ }
258
+ const boundaries = extractBoundaries(tree, config);
259
+ return {
260
+ success: true,
261
+ boundaries,
262
+ };
263
+ }
264
+ catch (error) {
265
+ return {
266
+ success: false,
267
+ boundaries: [],
268
+ error: error instanceof Error ? error.message : String(error),
269
+ };
270
+ }
271
+ }
272
+ /**
273
+ * Generate a repo map (signatures only) from a parsed file
274
+ */
275
+ export async function generateRepoMap(fileContent, filePath) {
276
+ const languageId = getLanguageForFile(filePath);
277
+ if (!languageId) {
278
+ return {
279
+ success: false,
280
+ map: '',
281
+ error: `Unsupported file type: ${filePath}`,
282
+ };
283
+ }
284
+ const config = LANGUAGE_CONFIGS[languageId];
285
+ if (!config) {
286
+ return {
287
+ success: false,
288
+ map: '',
289
+ error: `No configuration for language: ${languageId}`,
290
+ };
291
+ }
292
+ try {
293
+ const parser = await getParser();
294
+ const language = await loadLanguage(languageId);
295
+ if (!language) {
296
+ return {
297
+ success: false,
298
+ map: '',
299
+ error: `Failed to load language grammar for: ${languageId}`,
300
+ };
301
+ }
302
+ parser.setLanguage(language);
303
+ const tree = parser.parse(fileContent);
304
+ if (!tree) {
305
+ return {
306
+ success: false,
307
+ map: '',
308
+ error: `Failed to parse file: ${filePath}`,
309
+ };
310
+ }
311
+ const lines = [];
312
+ const addSignature = (node, indent = 0) => {
313
+ const prefix = '│ '.repeat(indent);
314
+ if (config.functionTypes.includes(node.type) || config.methodTypes.includes(node.type)) {
315
+ const sig = config.getSignature(node, fileContent);
316
+ const exported = config.isExported(node);
317
+ const exportPrefix = exported ? '' : '(private) ';
318
+ lines.push(`${prefix}${exportPrefix}${sig}`);
319
+ }
320
+ if (config.classTypes.includes(node.type)) {
321
+ const sig = config.getSignature(node, fileContent);
322
+ const exported = config.isExported(node);
323
+ const exportPrefix = exported ? '' : '(private) ';
324
+ lines.push(`${prefix}${exportPrefix}${sig}`);
325
+ for (const child of node.children) {
326
+ addSignature(child, indent + 1);
327
+ }
328
+ return;
329
+ }
330
+ for (const child of node.children) {
331
+ addSignature(child, indent);
332
+ }
333
+ };
334
+ addSignature(tree.rootNode);
335
+ return {
336
+ success: true,
337
+ map: lines.join('\n'),
338
+ };
339
+ }
340
+ catch (error) {
341
+ return {
342
+ success: false,
343
+ map: '',
344
+ error: error instanceof Error ? error.message : String(error),
345
+ };
346
+ }
347
+ }
348
+ /** Get list of supported languages */
349
+ export function getSupportedTreeSitterLanguages() {
350
+ return Object.keys(LANGUAGE_CONFIGS);
351
+ }
352
+ /** Get file extensions supported by tree-sitter */
353
+ export function getTreeSitterExtensions() {
354
+ return Object.keys(EXTENSION_TO_LANGUAGE);
355
+ }
356
+ //# sourceMappingURL=tree-sitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-sitter.js","sourceRoot":"","sources":["../../src/parsers/tree-sitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * TypeScript/JavaScript AST Parser
3
+ *
4
+ * Parses TS/JS files to identify code boundaries for intelligent chunking.
5
+ * Uses acorn for parsing JavaScript (ignores TypeScript-specific syntax).
6
+ */
7
+ /** Type of code unit identified by the parser */
8
+ export type CodeUnitType = 'function' | 'class' | 'method' | 'constant' | 'block';
9
+ /** A code boundary identified by the parser */
10
+ export interface CodeBoundary {
11
+ /** Type of code unit */
12
+ type: CodeUnitType;
13
+ /** Name of the unit (function name, class name, etc.) */
14
+ name: string;
15
+ /** Start line (1-indexed) */
16
+ startLine: number;
17
+ /** End line (1-indexed, inclusive) */
18
+ endLine: number;
19
+ /** Whether this is exported */
20
+ exported: boolean;
21
+ }
22
+ /** Result of parsing a file */
23
+ export interface ParseResult {
24
+ /** Whether parsing succeeded */
25
+ success: boolean;
26
+ /** Identified code boundaries */
27
+ boundaries: CodeBoundary[];
28
+ /** Error message if parsing failed */
29
+ error?: string;
30
+ }
31
+ /**
32
+ * Parse TypeScript/JavaScript code and extract code boundaries.
33
+ *
34
+ * @param content - The file content to parse
35
+ * @param _filePath - Path to the file (for error messages, unused currently)
36
+ * @returns Parse result with boundaries or error
37
+ */
38
+ export declare function parseTypeScript(content: string, _filePath?: string): ParseResult;
39
+ /**
40
+ * Check if a file extension is supported by this parser.
41
+ */
42
+ export declare function isTypeScriptOrJavaScript(filePath: string): boolean;
43
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/parsers/typescript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,iDAAiD;AACjD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAElF,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0HD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAsPhF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGlE"}