@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
package/dist/utils.d.ts
ADDED
|
@@ -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"}
|