@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.
Files changed (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +641 -0
  3. package/dist/bin/codegraph.d.ts +20 -0
  4. package/dist/bin/codegraph.d.ts.map +1 -0
  5. package/dist/bin/codegraph.js +704 -0
  6. package/dist/bin/codegraph.js.map +1 -0
  7. package/dist/config.d.ts +51 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +291 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/context/formatter.d.ts +30 -0
  12. package/dist/context/formatter.d.ts.map +1 -0
  13. package/dist/context/formatter.js +244 -0
  14. package/dist/context/formatter.js.map +1 -0
  15. package/dist/context/index.d.ts +86 -0
  16. package/dist/context/index.d.ts.map +1 -0
  17. package/dist/context/index.js +402 -0
  18. package/dist/context/index.js.map +1 -0
  19. package/dist/db/index.d.ts +64 -0
  20. package/dist/db/index.d.ts.map +1 -0
  21. package/dist/db/index.js +170 -0
  22. package/dist/db/index.js.map +1 -0
  23. package/dist/db/migrations.d.ts +44 -0
  24. package/dist/db/migrations.d.ts.map +1 -0
  25. package/dist/db/migrations.js +105 -0
  26. package/dist/db/migrations.js.map +1 -0
  27. package/dist/db/queries.d.ts +148 -0
  28. package/dist/db/queries.d.ts.map +1 -0
  29. package/dist/db/queries.js +669 -0
  30. package/dist/db/queries.js.map +1 -0
  31. package/dist/directory.d.ts +45 -0
  32. package/dist/directory.d.ts.map +1 -0
  33. package/dist/directory.js +191 -0
  34. package/dist/directory.js.map +1 -0
  35. package/dist/errors.d.ts +136 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +219 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/extraction/grammars.d.ts +36 -0
  40. package/dist/extraction/grammars.d.ts.map +1 -0
  41. package/dist/extraction/grammars.js +181 -0
  42. package/dist/extraction/grammars.js.map +1 -0
  43. package/dist/extraction/index.d.ts +91 -0
  44. package/dist/extraction/index.d.ts.map +1 -0
  45. package/dist/extraction/index.js +493 -0
  46. package/dist/extraction/index.js.map +1 -0
  47. package/dist/extraction/tree-sitter.d.ts +176 -0
  48. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  49. package/dist/extraction/tree-sitter.js +1798 -0
  50. package/dist/extraction/tree-sitter.js.map +1 -0
  51. package/dist/graph/index.d.ts +8 -0
  52. package/dist/graph/index.d.ts.map +1 -0
  53. package/dist/graph/index.js +13 -0
  54. package/dist/graph/index.js.map +1 -0
  55. package/dist/graph/queries.d.ts +106 -0
  56. package/dist/graph/queries.d.ts.map +1 -0
  57. package/dist/graph/queries.js +355 -0
  58. package/dist/graph/queries.js.map +1 -0
  59. package/dist/graph/traversal.d.ts +127 -0
  60. package/dist/graph/traversal.d.ts.map +1 -0
  61. package/dist/graph/traversal.js +465 -0
  62. package/dist/graph/traversal.js.map +1 -0
  63. package/dist/index.d.ts +496 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +818 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/installer/banner.d.ts +40 -0
  68. package/dist/installer/banner.d.ts.map +1 -0
  69. package/dist/installer/banner.js +162 -0
  70. package/dist/installer/banner.js.map +1 -0
  71. package/dist/installer/claude-md-template.d.ts +10 -0
  72. package/dist/installer/claude-md-template.d.ts.map +1 -0
  73. package/dist/installer/claude-md-template.js +46 -0
  74. package/dist/installer/claude-md-template.js.map +1 -0
  75. package/dist/installer/config-writer.d.ts +36 -0
  76. package/dist/installer/config-writer.d.ts.map +1 -0
  77. package/dist/installer/config-writer.js +282 -0
  78. package/dist/installer/config-writer.js.map +1 -0
  79. package/dist/installer/index.d.ts +13 -0
  80. package/dist/installer/index.d.ts.map +1 -0
  81. package/dist/installer/index.js +155 -0
  82. package/dist/installer/index.js.map +1 -0
  83. package/dist/installer/prompts.d.ts +18 -0
  84. package/dist/installer/prompts.d.ts.map +1 -0
  85. package/dist/installer/prompts.js +113 -0
  86. package/dist/installer/prompts.js.map +1 -0
  87. package/dist/mcp/index.d.ts +64 -0
  88. package/dist/mcp/index.d.ts.map +1 -0
  89. package/dist/mcp/index.js +207 -0
  90. package/dist/mcp/index.js.map +1 -0
  91. package/dist/mcp/tools.d.ts +93 -0
  92. package/dist/mcp/tools.d.ts.map +1 -0
  93. package/dist/mcp/tools.js +442 -0
  94. package/dist/mcp/tools.js.map +1 -0
  95. package/dist/mcp/transport.d.ts +89 -0
  96. package/dist/mcp/transport.d.ts.map +1 -0
  97. package/dist/mcp/transport.js +170 -0
  98. package/dist/mcp/transport.js.map +1 -0
  99. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  100. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  101. package/dist/resolution/frameworks/csharp.js +274 -0
  102. package/dist/resolution/frameworks/csharp.js.map +1 -0
  103. package/dist/resolution/frameworks/express.d.ts +8 -0
  104. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  105. package/dist/resolution/frameworks/express.js +208 -0
  106. package/dist/resolution/frameworks/express.js.map +1 -0
  107. package/dist/resolution/frameworks/go.d.ts +8 -0
  108. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  109. package/dist/resolution/frameworks/go.js +225 -0
  110. package/dist/resolution/frameworks/go.js.map +1 -0
  111. package/dist/resolution/frameworks/index.d.ts +33 -0
  112. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  113. package/dist/resolution/frameworks/index.js +113 -0
  114. package/dist/resolution/frameworks/index.js.map +1 -0
  115. package/dist/resolution/frameworks/java.d.ts +8 -0
  116. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  117. package/dist/resolution/frameworks/java.js +239 -0
  118. package/dist/resolution/frameworks/java.js.map +1 -0
  119. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  120. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  121. package/dist/resolution/frameworks/laravel.js +198 -0
  122. package/dist/resolution/frameworks/laravel.js.map +1 -0
  123. package/dist/resolution/frameworks/python.d.ts +10 -0
  124. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  125. package/dist/resolution/frameworks/python.js +331 -0
  126. package/dist/resolution/frameworks/python.js.map +1 -0
  127. package/dist/resolution/frameworks/react.d.ts +8 -0
  128. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  129. package/dist/resolution/frameworks/react.js +294 -0
  130. package/dist/resolution/frameworks/react.js.map +1 -0
  131. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  132. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  133. package/dist/resolution/frameworks/ruby.js +262 -0
  134. package/dist/resolution/frameworks/ruby.js.map +1 -0
  135. package/dist/resolution/frameworks/rust.d.ts +8 -0
  136. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  137. package/dist/resolution/frameworks/rust.js +222 -0
  138. package/dist/resolution/frameworks/rust.js.map +1 -0
  139. package/dist/resolution/frameworks/swift.d.ts +10 -0
  140. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  141. package/dist/resolution/frameworks/swift.js +486 -0
  142. package/dist/resolution/frameworks/swift.js.map +1 -0
  143. package/dist/resolution/import-resolver.d.ts +20 -0
  144. package/dist/resolution/import-resolver.d.ts.map +1 -0
  145. package/dist/resolution/import-resolver.js +445 -0
  146. package/dist/resolution/import-resolver.js.map +1 -0
  147. package/dist/resolution/index.d.ts +72 -0
  148. package/dist/resolution/index.d.ts.map +1 -0
  149. package/dist/resolution/index.js +301 -0
  150. package/dist/resolution/index.js.map +1 -0
  151. package/dist/resolution/name-matcher.d.ts +27 -0
  152. package/dist/resolution/name-matcher.d.ts.map +1 -0
  153. package/dist/resolution/name-matcher.js +210 -0
  154. package/dist/resolution/name-matcher.js.map +1 -0
  155. package/dist/resolution/types.d.ts +108 -0
  156. package/dist/resolution/types.d.ts.map +1 -0
  157. package/dist/resolution/types.js +8 -0
  158. package/dist/resolution/types.js.map +1 -0
  159. package/dist/sync/git-hooks.d.ts +66 -0
  160. package/dist/sync/git-hooks.d.ts.map +1 -0
  161. package/dist/sync/git-hooks.js +281 -0
  162. package/dist/sync/git-hooks.js.map +1 -0
  163. package/dist/sync/index.d.ts +13 -0
  164. package/dist/sync/index.d.ts.map +1 -0
  165. package/dist/sync/index.js +18 -0
  166. package/dist/sync/index.js.map +1 -0
  167. package/dist/types.d.ts +410 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/types.js +165 -0
  170. package/dist/types.js.map +1 -0
  171. package/dist/utils.d.ts +116 -0
  172. package/dist/utils.d.ts.map +1 -0
  173. package/dist/utils.js +295 -0
  174. package/dist/utils.js.map +1 -0
  175. package/dist/vectors/embedder.d.ts +140 -0
  176. package/dist/vectors/embedder.d.ts.map +1 -0
  177. package/dist/vectors/embedder.js +336 -0
  178. package/dist/vectors/embedder.js.map +1 -0
  179. package/dist/vectors/index.d.ts +9 -0
  180. package/dist/vectors/index.d.ts.map +1 -0
  181. package/dist/vectors/index.js +20 -0
  182. package/dist/vectors/index.js.map +1 -0
  183. package/dist/vectors/manager.d.ts +119 -0
  184. package/dist/vectors/manager.d.ts.map +1 -0
  185. package/dist/vectors/manager.js +274 -0
  186. package/dist/vectors/manager.js.map +1 -0
  187. package/dist/vectors/search.d.ts +134 -0
  188. package/dist/vectors/search.d.ts.map +1 -0
  189. package/dist/vectors/search.js +409 -0
  190. package/dist/vectors/search.js.map +1 -0
  191. package/package.json +67 -0
  192. package/scripts/postinstall.js +68 -0
@@ -0,0 +1,116 @@
1
+ /**
2
+ * CodeGraph Utilities
3
+ *
4
+ * Common utility functions for memory management, concurrency, and batching.
5
+ *
6
+ * @module utils
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { Mutex, processInBatches, MemoryMonitor } from 'codegraph';
11
+ *
12
+ * // Use mutex for concurrent safety
13
+ * const mutex = new Mutex();
14
+ * await mutex.withLock(async () => {
15
+ * await performCriticalOperation();
16
+ * });
17
+ *
18
+ * // Process items in batches to manage memory
19
+ * const results = await processInBatches(items, 100, async (item) => {
20
+ * return await processItem(item);
21
+ * });
22
+ *
23
+ * // Monitor memory usage
24
+ * const monitor = new MemoryMonitor(512, (usage) => {
25
+ * console.warn(`Memory usage exceeded 512MB: ${usage / 1024 / 1024}MB`);
26
+ * });
27
+ * monitor.start();
28
+ * ```
29
+ */
30
+ /**
31
+ * Process items in batches to manage memory
32
+ *
33
+ * @param items - Array of items to process
34
+ * @param batchSize - Number of items per batch
35
+ * @param processor - Function to process each item
36
+ * @param onBatchComplete - Optional callback after each batch
37
+ * @returns Array of results
38
+ */
39
+ export declare function processInBatches<T, R>(items: T[], batchSize: number, processor: (item: T, index: number) => Promise<R>, onBatchComplete?: (completed: number, total: number) => void): Promise<R[]>;
40
+ /**
41
+ * Simple mutex lock for preventing concurrent operations
42
+ */
43
+ export declare class Mutex {
44
+ private locked;
45
+ private waitQueue;
46
+ /**
47
+ * Acquire the lock
48
+ *
49
+ * @returns A release function to call when done
50
+ */
51
+ acquire(): Promise<() => void>;
52
+ /**
53
+ * Execute a function while holding the lock
54
+ */
55
+ withLock<T>(fn: () => Promise<T> | T): Promise<T>;
56
+ /**
57
+ * Check if the lock is currently held
58
+ */
59
+ isLocked(): boolean;
60
+ }
61
+ /**
62
+ * Chunked file reader for large files
63
+ *
64
+ * Reads a file in chunks to avoid loading entire file into memory.
65
+ */
66
+ export declare function readFileInChunks(filePath: string, chunkSize?: number): AsyncGenerator<string, void, undefined>;
67
+ /**
68
+ * Debounce a function
69
+ *
70
+ * @param fn - Function to debounce
71
+ * @param delay - Delay in milliseconds
72
+ * @returns Debounced function
73
+ */
74
+ export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
75
+ /**
76
+ * Throttle a function
77
+ *
78
+ * @param fn - Function to throttle
79
+ * @param limit - Minimum time between calls in milliseconds
80
+ * @returns Throttled function
81
+ */
82
+ export declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, limit: number): (...args: Parameters<T>) => void;
83
+ /**
84
+ * Estimate memory usage of an object (rough approximation)
85
+ *
86
+ * @param obj - Object to measure
87
+ * @returns Approximate size in bytes
88
+ */
89
+ export declare function estimateSize(obj: unknown): number;
90
+ /**
91
+ * Memory monitor for tracking usage during operations
92
+ */
93
+ export declare class MemoryMonitor {
94
+ private checkInterval;
95
+ private peakUsage;
96
+ private threshold;
97
+ private onThresholdExceeded?;
98
+ constructor(thresholdMB?: number, onThresholdExceeded?: (usage: number) => void);
99
+ /**
100
+ * Start monitoring memory usage
101
+ */
102
+ start(intervalMs?: number): void;
103
+ /**
104
+ * Stop monitoring
105
+ */
106
+ stop(): void;
107
+ /**
108
+ * Get peak memory usage in bytes
109
+ */
110
+ getPeakUsage(): number;
111
+ /**
112
+ * Get current memory usage in bytes
113
+ */
114
+ getCurrentUsage(): number;
115
+ }
116
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EACzC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAC3D,OAAO,CAAC,CAAC,EAAE,CAAC,CAqBd;AAED;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAyB;IAE1C;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IAkBpC;;OAEG;IACG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASvD;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGpB;AAED;;;;GAIG;AACH,wBAAuB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAkB,GAC5B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAczC;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAYlC;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAuBlC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAmCjD;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,mBAAmB,CAAC,CAA0B;gBAGpD,WAAW,GAAE,MAAY,EACzB,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAM/C;;OAEG;IACH,KAAK,CAAC,UAAU,GAAE,MAAa,GAAG,IAAI;IAetC;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,eAAe,IAAI,MAAM;CAG1B"}
package/dist/utils.js ADDED
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ /**
3
+ * CodeGraph Utilities
4
+ *
5
+ * Common utility functions for memory management, concurrency, and batching.
6
+ *
7
+ * @module utils
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { Mutex, processInBatches, MemoryMonitor } from 'codegraph';
12
+ *
13
+ * // Use mutex for concurrent safety
14
+ * const mutex = new Mutex();
15
+ * await mutex.withLock(async () => {
16
+ * await performCriticalOperation();
17
+ * });
18
+ *
19
+ * // Process items in batches to manage memory
20
+ * const results = await processInBatches(items, 100, async (item) => {
21
+ * return await processItem(item);
22
+ * });
23
+ *
24
+ * // Monitor memory usage
25
+ * const monitor = new MemoryMonitor(512, (usage) => {
26
+ * console.warn(`Memory usage exceeded 512MB: ${usage / 1024 / 1024}MB`);
27
+ * });
28
+ * monitor.start();
29
+ * ```
30
+ */
31
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
32
+ if (k2 === undefined) k2 = k;
33
+ var desc = Object.getOwnPropertyDescriptor(m, k);
34
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
35
+ desc = { enumerable: true, get: function() { return m[k]; } };
36
+ }
37
+ Object.defineProperty(o, k2, desc);
38
+ }) : (function(o, m, k, k2) {
39
+ if (k2 === undefined) k2 = k;
40
+ o[k2] = m[k];
41
+ }));
42
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
43
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
44
+ }) : function(o, v) {
45
+ o["default"] = v;
46
+ });
47
+ var __importStar = (this && this.__importStar) || (function () {
48
+ var ownKeys = function(o) {
49
+ ownKeys = Object.getOwnPropertyNames || function (o) {
50
+ var ar = [];
51
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
52
+ return ar;
53
+ };
54
+ return ownKeys(o);
55
+ };
56
+ return function (mod) {
57
+ if (mod && mod.__esModule) return mod;
58
+ var result = {};
59
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
60
+ __setModuleDefault(result, mod);
61
+ return result;
62
+ };
63
+ })();
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.MemoryMonitor = exports.Mutex = void 0;
66
+ exports.processInBatches = processInBatches;
67
+ exports.readFileInChunks = readFileInChunks;
68
+ exports.debounce = debounce;
69
+ exports.throttle = throttle;
70
+ exports.estimateSize = estimateSize;
71
+ /**
72
+ * Process items in batches to manage memory
73
+ *
74
+ * @param items - Array of items to process
75
+ * @param batchSize - Number of items per batch
76
+ * @param processor - Function to process each item
77
+ * @param onBatchComplete - Optional callback after each batch
78
+ * @returns Array of results
79
+ */
80
+ async function processInBatches(items, batchSize, processor, onBatchComplete) {
81
+ const results = [];
82
+ for (let i = 0; i < items.length; i += batchSize) {
83
+ const batch = items.slice(i, Math.min(i + batchSize, items.length));
84
+ const batchResults = await Promise.all(batch.map((item, idx) => processor(item, i + idx)));
85
+ results.push(...batchResults);
86
+ if (onBatchComplete) {
87
+ onBatchComplete(Math.min(i + batchSize, items.length), items.length);
88
+ }
89
+ // Allow GC between batches
90
+ if (global.gc) {
91
+ global.gc();
92
+ }
93
+ }
94
+ return results;
95
+ }
96
+ /**
97
+ * Simple mutex lock for preventing concurrent operations
98
+ */
99
+ class Mutex {
100
+ locked = false;
101
+ waitQueue = [];
102
+ /**
103
+ * Acquire the lock
104
+ *
105
+ * @returns A release function to call when done
106
+ */
107
+ async acquire() {
108
+ while (this.locked) {
109
+ await new Promise((resolve) => {
110
+ this.waitQueue.push(resolve);
111
+ });
112
+ }
113
+ this.locked = true;
114
+ return () => {
115
+ this.locked = false;
116
+ const next = this.waitQueue.shift();
117
+ if (next) {
118
+ next();
119
+ }
120
+ };
121
+ }
122
+ /**
123
+ * Execute a function while holding the lock
124
+ */
125
+ async withLock(fn) {
126
+ const release = await this.acquire();
127
+ try {
128
+ return await fn();
129
+ }
130
+ finally {
131
+ release();
132
+ }
133
+ }
134
+ /**
135
+ * Check if the lock is currently held
136
+ */
137
+ isLocked() {
138
+ return this.locked;
139
+ }
140
+ }
141
+ exports.Mutex = Mutex;
142
+ /**
143
+ * Chunked file reader for large files
144
+ *
145
+ * Reads a file in chunks to avoid loading entire file into memory.
146
+ */
147
+ async function* readFileInChunks(filePath, chunkSize = 64 * 1024) {
148
+ const fs = await Promise.resolve().then(() => __importStar(require('fs')));
149
+ const fd = fs.openSync(filePath, 'r');
150
+ const buffer = Buffer.alloc(chunkSize);
151
+ try {
152
+ let bytesRead;
153
+ while ((bytesRead = fs.readSync(fd, buffer, 0, chunkSize, null)) > 0) {
154
+ yield buffer.toString('utf-8', 0, bytesRead);
155
+ }
156
+ }
157
+ finally {
158
+ fs.closeSync(fd);
159
+ }
160
+ }
161
+ /**
162
+ * Debounce a function
163
+ *
164
+ * @param fn - Function to debounce
165
+ * @param delay - Delay in milliseconds
166
+ * @returns Debounced function
167
+ */
168
+ function debounce(fn, delay) {
169
+ let timeoutId = null;
170
+ return (...args) => {
171
+ if (timeoutId) {
172
+ clearTimeout(timeoutId);
173
+ }
174
+ timeoutId = setTimeout(() => {
175
+ fn(...args);
176
+ timeoutId = null;
177
+ }, delay);
178
+ };
179
+ }
180
+ /**
181
+ * Throttle a function
182
+ *
183
+ * @param fn - Function to throttle
184
+ * @param limit - Minimum time between calls in milliseconds
185
+ * @returns Throttled function
186
+ */
187
+ function throttle(fn, limit) {
188
+ let lastCall = 0;
189
+ let timeoutId = null;
190
+ return (...args) => {
191
+ const now = Date.now();
192
+ const remaining = limit - (now - lastCall);
193
+ if (remaining <= 0) {
194
+ if (timeoutId) {
195
+ clearTimeout(timeoutId);
196
+ timeoutId = null;
197
+ }
198
+ lastCall = now;
199
+ fn(...args);
200
+ }
201
+ else if (!timeoutId) {
202
+ timeoutId = setTimeout(() => {
203
+ lastCall = Date.now();
204
+ timeoutId = null;
205
+ fn(...args);
206
+ }, remaining);
207
+ }
208
+ };
209
+ }
210
+ /**
211
+ * Estimate memory usage of an object (rough approximation)
212
+ *
213
+ * @param obj - Object to measure
214
+ * @returns Approximate size in bytes
215
+ */
216
+ function estimateSize(obj) {
217
+ const seen = new WeakSet();
218
+ function sizeOf(value) {
219
+ if (value === null || value === undefined) {
220
+ return 0;
221
+ }
222
+ switch (typeof value) {
223
+ case 'boolean':
224
+ return 4;
225
+ case 'number':
226
+ return 8;
227
+ case 'string':
228
+ return 2 * value.length;
229
+ case 'object':
230
+ if (seen.has(value)) {
231
+ return 0;
232
+ }
233
+ seen.add(value);
234
+ if (Array.isArray(value)) {
235
+ return value.reduce((acc, item) => acc + sizeOf(item), 0);
236
+ }
237
+ return Object.entries(value).reduce((acc, [key, val]) => acc + sizeOf(key) + sizeOf(val), 0);
238
+ default:
239
+ return 0;
240
+ }
241
+ }
242
+ return sizeOf(obj);
243
+ }
244
+ /**
245
+ * Memory monitor for tracking usage during operations
246
+ */
247
+ class MemoryMonitor {
248
+ checkInterval = null;
249
+ peakUsage = 0;
250
+ threshold;
251
+ onThresholdExceeded;
252
+ constructor(thresholdMB = 500, onThresholdExceeded) {
253
+ this.threshold = thresholdMB * 1024 * 1024;
254
+ this.onThresholdExceeded = onThresholdExceeded;
255
+ }
256
+ /**
257
+ * Start monitoring memory usage
258
+ */
259
+ start(intervalMs = 1000) {
260
+ this.stop();
261
+ this.peakUsage = 0;
262
+ this.checkInterval = setInterval(() => {
263
+ const usage = process.memoryUsage().heapUsed;
264
+ if (usage > this.peakUsage) {
265
+ this.peakUsage = usage;
266
+ }
267
+ if (usage > this.threshold && this.onThresholdExceeded) {
268
+ this.onThresholdExceeded(usage);
269
+ }
270
+ }, intervalMs);
271
+ }
272
+ /**
273
+ * Stop monitoring
274
+ */
275
+ stop() {
276
+ if (this.checkInterval) {
277
+ clearInterval(this.checkInterval);
278
+ this.checkInterval = null;
279
+ }
280
+ }
281
+ /**
282
+ * Get peak memory usage in bytes
283
+ */
284
+ getPeakUsage() {
285
+ return this.peakUsage;
286
+ }
287
+ /**
288
+ * Get current memory usage in bytes
289
+ */
290
+ getCurrentUsage() {
291
+ return process.memoryUsage().heapUsed;
292
+ }
293
+ }
294
+ exports.MemoryMonitor = MemoryMonitor;
295
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Text Embedder
3
+ *
4
+ * Generates vector embeddings using the nomic-embed-text model via Transformers.js.
5
+ * Uses ONNX runtime under the hood for fast local inference.
6
+ */
7
+ /**
8
+ * Default model for embeddings
9
+ * nomic-embed-text-v1.5 produces 384-dimensional embeddings
10
+ */
11
+ export declare const DEFAULT_MODEL = "nomic-ai/nomic-embed-text-v1.5";
12
+ export declare const EMBEDDING_DIMENSION = 768;
13
+ /**
14
+ * Options for the embedder
15
+ */
16
+ export interface EmbedderOptions {
17
+ /** Model ID to use (default: nomic-ai/nomic-embed-text-v1.5) */
18
+ modelId?: string;
19
+ /** Directory to cache the model (default: .codegraph/models) */
20
+ cacheDir?: string;
21
+ /** Whether to show progress during model download */
22
+ showProgress?: boolean;
23
+ }
24
+ /**
25
+ * Text embedding result
26
+ */
27
+ export interface EmbeddingResult {
28
+ /** The embedding vector */
29
+ embedding: Float32Array;
30
+ /** Dimension of the embedding */
31
+ dimension: number;
32
+ /** Model used to generate the embedding */
33
+ model: string;
34
+ }
35
+ /**
36
+ * Batch embedding result
37
+ */
38
+ export interface BatchEmbeddingResult {
39
+ /** Array of embeddings in same order as input */
40
+ embeddings: Float32Array[];
41
+ /** Dimension of each embedding */
42
+ dimension: number;
43
+ /** Model used to generate embeddings */
44
+ model: string;
45
+ /** Processing time in milliseconds */
46
+ durationMs: number;
47
+ }
48
+ /**
49
+ * Text Embedder using Transformers.js
50
+ *
51
+ * Uses the nomic-embed-text-v1.5 model to generate embeddings for code
52
+ * and natural language queries.
53
+ */
54
+ export declare class TextEmbedder {
55
+ private modelId;
56
+ private cacheDir;
57
+ private pipeline;
58
+ private initialized;
59
+ private showProgress;
60
+ constructor(options?: EmbedderOptions);
61
+ /**
62
+ * Initialize the embedder by loading the model
63
+ *
64
+ * This will download the model on first use if not already cached.
65
+ */
66
+ initialize(): Promise<void>;
67
+ /**
68
+ * Check if the embedder is initialized
69
+ */
70
+ isInitialized(): boolean;
71
+ /**
72
+ * Get the model ID being used
73
+ */
74
+ getModelId(): string;
75
+ /**
76
+ * Get the embedding dimension
77
+ */
78
+ getDimension(): number;
79
+ /**
80
+ * Generate embedding for a single text
81
+ *
82
+ * @param text - Text to embed
83
+ * @returns Embedding result
84
+ */
85
+ embed(text: string): Promise<EmbeddingResult>;
86
+ /**
87
+ * Generate embedding for a query (uses different prefix)
88
+ *
89
+ * @param query - Query text to embed
90
+ * @returns Embedding result
91
+ */
92
+ embedQuery(query: string): Promise<EmbeddingResult>;
93
+ /**
94
+ * Generate embeddings for multiple texts in a batch
95
+ *
96
+ * @param texts - Array of texts to embed
97
+ * @param type - Type of text (document or search_query)
98
+ * @returns Batch embedding result
99
+ */
100
+ embedBatch(texts: string[], type?: 'document' | 'search_query'): Promise<BatchEmbeddingResult>;
101
+ /**
102
+ * Convert various array formats to Float32Array
103
+ */
104
+ private toFloat32Array;
105
+ /**
106
+ * Prepare text for the nomic-embed-text model
107
+ *
108
+ * The model expects specific prefixes for different tasks:
109
+ * - "search_document: " for documents to be searched
110
+ * - "search_query: " for search queries
111
+ */
112
+ private prepareText;
113
+ /**
114
+ * Create text representation of a code node for embedding
115
+ *
116
+ * Combines name, signature, docstring, and code snippet into
117
+ * a searchable text representation.
118
+ */
119
+ static createNodeText(node: {
120
+ name: string;
121
+ kind: string;
122
+ qualifiedName?: string;
123
+ signature?: string;
124
+ docstring?: string;
125
+ filePath: string;
126
+ }): string;
127
+ /**
128
+ * Compute cosine similarity between two embeddings
129
+ */
130
+ static cosineSimilarity(a: Float32Array, b: Float32Array): number;
131
+ /**
132
+ * Release resources
133
+ */
134
+ dispose(): void;
135
+ }
136
+ /**
137
+ * Create a text embedder instance
138
+ */
139
+ export declare function createEmbedder(options?: EmbedderOptions): TextEmbedder;
140
+ //# sourceMappingURL=embedder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/vectors/embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH;;;GAGG;AACH,eAAO,MAAM,aAAa,mCAAmC,CAAC;AAC9D,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,SAAS,EAAE,YAAY,CAAC;IAExB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,UAAU,EAAE,YAAY,EAAE,CAAC;IAE3B,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IAEd,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,GAAE,eAAoB;IAMzC;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CjC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBnD;;;;;OAKG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBzD;;;;;;OAMG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,UAAU,GAAG,cAA2B,GAC7C,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAanB;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,MAAM;IA2BV;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM;IA2BjE;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,YAAY,CAEtE"}