@stupidloud/codegraph 0.7.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.
- package/LICENSE +21 -0
- package/README.md +482 -0
- package/dist/bin/codegraph.d.ts +21 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +1296 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/bin/node-version-check.d.ts +17 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +39 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/uninstall.d.ts +14 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +148 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +342 -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 +99 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1075 -0
- package/dist/context/index.js.map +1 -0
- package/dist/db/index.d.ts +72 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +200 -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 +160 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +253 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1202 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +169 -0
- package/dist/db/sqlite-adapter.d.ts +52 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +237 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/directory.d.ts +57 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +264 -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/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/grammars.d.ts +78 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +322 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +130 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +1279 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +4 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +126 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- package/dist/extraction/languages/csharp.d.ts +3 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +72 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +192 -0
- package/dist/extraction/languages/dart.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +58 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +45 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +64 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +90 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +253 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +66 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +107 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +114 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +3 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +109 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +139 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/languages/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +91 -0
- package/dist/extraction/languages/swift.js.map +1 -0
- package/dist/extraction/languages/typescript.d.ts +3 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +129 -0
- package/dist/extraction/languages/typescript.js.map +1 -0
- package/dist/extraction/liquid-extractor.d.ts +52 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +313 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +94 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +272 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +103 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +179 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +233 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +2393 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +36 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +163 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -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 +366 -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 +493 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +504 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +982 -0
- package/dist/index.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 +304 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +12 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +201 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/mcp/index.d.ts +82 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +330 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +19 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +59 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/tools.d.ts +187 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1250 -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/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.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 +213 -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 +225 -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 +158 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +41 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +129 -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 +177 -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 +248 -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 +278 -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 +272 -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 +198 -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 +207 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +249 -0
- package/dist/resolution/frameworks/svelte.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 +376 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +306 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +40 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +663 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +106 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +709 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +32 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +384 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +441 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/types.d.ts +172 -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/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-utils.d.ts +53 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +347 -0
- package/dist/search/query-utils.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 +17 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watcher.d.ts +81 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +184 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/types.d.ts +438 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +263 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +90 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +112 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +17 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils.d.ts +205 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +549 -0
- package/dist/utils.js.map +1 -0
- package/dist/vectors/embedder.d.ts +121 -0
- package/dist/vectors/embedder.d.ts.map +1 -0
- package/dist/vectors/embedder.js +237 -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 +124 -0
- package/dist/vectors/manager.d.ts.map +1 -0
- package/dist/vectors/manager.js +322 -0
- package/dist/vectors/manager.js.map +1 -0
- package/dist/vectors/search.d.ts +143 -0
- package/dist/vectors/search.d.ts.map +1 -0
- package/dist/vectors/search.js +460 -0
- package/dist/vectors/search.js.map +1 -0
- package/dist/visualizer/public/index.html +1994 -0
- package/dist/visualizer/server.d.ts +46 -0
- package/dist/visualizer/server.d.ts.map +1 -0
- package/dist/visualizer/server.js +491 -0
- package/dist/visualizer/server.js.map +1 -0
- package/package.json +60 -0
- package/scripts/patch-tree-sitter-dart.js +112 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Text Embedder
|
|
4
|
+
*
|
|
5
|
+
* Generates vector embeddings through the Gemini API. Vector storage and
|
|
6
|
+
* similarity search remain local.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TextEmbedder = exports.EMBEDDING_DIMENSION = exports.DEFAULT_MODEL = void 0;
|
|
10
|
+
exports.createEmbedder = createEmbedder;
|
|
11
|
+
/**
|
|
12
|
+
* Default Gemini embedding model.
|
|
13
|
+
*/
|
|
14
|
+
exports.DEFAULT_MODEL = 'gemini-embedding-2';
|
|
15
|
+
exports.EMBEDDING_DIMENSION = 768;
|
|
16
|
+
const GEMINI_EMBEDDING_ENDPOINT = 'https://generativelanguage.googleapis.com/v1beta/models';
|
|
17
|
+
const MAX_REQUESTS_PER_MINUTE = 100;
|
|
18
|
+
const MIN_REQUEST_INTERVAL_MS = Math.ceil(60_000 / MAX_REQUESTS_PER_MINUTE);
|
|
19
|
+
/**
|
|
20
|
+
* Text Embedder using Gemini.
|
|
21
|
+
*
|
|
22
|
+
* Batch generation uses batchEmbedContents with one request per node text. Do
|
|
23
|
+
* not combine multiple nodes into one content.parts array because that produces
|
|
24
|
+
* a single aggregate embedding instead of node-level vectors.
|
|
25
|
+
*/
|
|
26
|
+
class TextEmbedder {
|
|
27
|
+
apiKey;
|
|
28
|
+
modelId;
|
|
29
|
+
dimension;
|
|
30
|
+
initialized = false;
|
|
31
|
+
lastRequestAt = 0;
|
|
32
|
+
constructor(options = {}) {
|
|
33
|
+
this.apiKey = options.apiKey;
|
|
34
|
+
this.modelId = options.modelId || exports.DEFAULT_MODEL;
|
|
35
|
+
this.dimension = options.outputDimensionality || exports.EMBEDDING_DIMENSION;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Initialize the embedder by validating configuration.
|
|
39
|
+
*/
|
|
40
|
+
async initialize() {
|
|
41
|
+
if (this.initialized) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!this.apiKey) {
|
|
45
|
+
throw new Error('Gemini API key is required for semantic search');
|
|
46
|
+
}
|
|
47
|
+
this.initialized = true;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if the embedder is initialized
|
|
51
|
+
*/
|
|
52
|
+
isInitialized() {
|
|
53
|
+
return this.initialized;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get the model ID being used
|
|
57
|
+
*/
|
|
58
|
+
getModelId() {
|
|
59
|
+
return this.modelId;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get the embedding dimension
|
|
63
|
+
*/
|
|
64
|
+
getDimension() {
|
|
65
|
+
return this.dimension;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Generate embedding for a single text
|
|
69
|
+
*/
|
|
70
|
+
async embed(text) {
|
|
71
|
+
const result = await this.embedBatch([text], 'document');
|
|
72
|
+
const embedding = result.embeddings[0];
|
|
73
|
+
if (!embedding) {
|
|
74
|
+
throw new Error('Gemini embedding response did not include values');
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
embedding,
|
|
78
|
+
dimension: embedding.length,
|
|
79
|
+
model: result.model,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate embedding for a query.
|
|
84
|
+
*/
|
|
85
|
+
async embedQuery(query) {
|
|
86
|
+
const result = await this.embedBatch([query], 'search_query');
|
|
87
|
+
const embedding = result.embeddings[0];
|
|
88
|
+
if (!embedding) {
|
|
89
|
+
throw new Error('Gemini embedding response did not include values');
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
embedding,
|
|
93
|
+
dimension: embedding.length,
|
|
94
|
+
model: result.model,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Generate embeddings for multiple texts in node order.
|
|
99
|
+
*/
|
|
100
|
+
async embedBatch(texts, type = 'document') {
|
|
101
|
+
if (!this.initialized) {
|
|
102
|
+
throw new Error('Embedder not initialized. Call initialize() first.');
|
|
103
|
+
}
|
|
104
|
+
if (texts.length === 0) {
|
|
105
|
+
return {
|
|
106
|
+
embeddings: [],
|
|
107
|
+
dimension: this.dimension,
|
|
108
|
+
model: this.modelId,
|
|
109
|
+
durationMs: 0,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const startTime = Date.now();
|
|
113
|
+
const embeddings = await this.embedPreparedBatch(texts.map((text) => this.prepareText(text)), type);
|
|
114
|
+
return {
|
|
115
|
+
embeddings,
|
|
116
|
+
dimension: embeddings[0]?.length ?? this.dimension,
|
|
117
|
+
model: this.modelId,
|
|
118
|
+
durationMs: Date.now() - startTime,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
async embedPreparedBatch(texts, type) {
|
|
122
|
+
if (!this.initialized) {
|
|
123
|
+
throw new Error('Embedder not initialized. Call initialize() first.');
|
|
124
|
+
}
|
|
125
|
+
const url = `${GEMINI_EMBEDDING_ENDPOINT}/${encodeURIComponent(this.modelId)}:batchEmbedContents`;
|
|
126
|
+
const model = `models/${this.modelId}`;
|
|
127
|
+
const taskType = type === 'search_query' ? 'CODE_RETRIEVAL_QUERY' : 'RETRIEVAL_DOCUMENT';
|
|
128
|
+
await this.throttleRequests();
|
|
129
|
+
const response = await fetch(url, {
|
|
130
|
+
method: 'POST',
|
|
131
|
+
headers: {
|
|
132
|
+
'Content-Type': 'application/json',
|
|
133
|
+
'x-goog-api-key': this.apiKey,
|
|
134
|
+
},
|
|
135
|
+
body: JSON.stringify({
|
|
136
|
+
requests: texts.map((text) => ({
|
|
137
|
+
model,
|
|
138
|
+
content: {
|
|
139
|
+
parts: [{ text }],
|
|
140
|
+
},
|
|
141
|
+
taskType,
|
|
142
|
+
outputDimensionality: this.dimension,
|
|
143
|
+
})),
|
|
144
|
+
}),
|
|
145
|
+
});
|
|
146
|
+
if (!response.ok) {
|
|
147
|
+
const body = await response.text().catch(() => '');
|
|
148
|
+
throw new Error(`Gemini embedding request failed (${response.status}): ${body || response.statusText}`);
|
|
149
|
+
}
|
|
150
|
+
const json = await response.json();
|
|
151
|
+
const values = json.embeddings?.map((embedding) => embedding.values);
|
|
152
|
+
if (!values || values.length !== texts.length) {
|
|
153
|
+
throw new Error('Gemini batch embedding response count did not match request count');
|
|
154
|
+
}
|
|
155
|
+
const embeddings = values.map((embeddingValues) => {
|
|
156
|
+
if (!embeddingValues || embeddingValues.length === 0) {
|
|
157
|
+
throw new Error('Gemini embedding response did not include values');
|
|
158
|
+
}
|
|
159
|
+
return new Float32Array(embeddingValues);
|
|
160
|
+
});
|
|
161
|
+
if (embeddings.some((embedding) => embedding.length !== embeddings[0].length)) {
|
|
162
|
+
throw new Error('Gemini batch embedding response contained mixed dimensions');
|
|
163
|
+
}
|
|
164
|
+
return embeddings;
|
|
165
|
+
}
|
|
166
|
+
async throttleRequests() {
|
|
167
|
+
const now = Date.now();
|
|
168
|
+
const elapsed = now - this.lastRequestAt;
|
|
169
|
+
if (this.lastRequestAt > 0 && elapsed < MIN_REQUEST_INTERVAL_MS) {
|
|
170
|
+
await new Promise((resolve) => setTimeout(resolve, MIN_REQUEST_INTERVAL_MS - elapsed));
|
|
171
|
+
}
|
|
172
|
+
this.lastRequestAt = Date.now();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Prepare text for retrieval-oriented embedding.
|
|
176
|
+
*/
|
|
177
|
+
prepareText(text) {
|
|
178
|
+
const maxLength = 8192;
|
|
179
|
+
return text.length > maxLength ? text.slice(0, maxLength) : text;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Create text representation of a code node for embedding.
|
|
183
|
+
*/
|
|
184
|
+
static createNodeText(node) {
|
|
185
|
+
const parts = [];
|
|
186
|
+
parts.push(`${node.kind}: ${node.name}`);
|
|
187
|
+
if (node.qualifiedName && node.qualifiedName !== node.name) {
|
|
188
|
+
parts.push(`path: ${node.qualifiedName}`);
|
|
189
|
+
}
|
|
190
|
+
parts.push(`file: ${node.filePath}`);
|
|
191
|
+
if (node.signature) {
|
|
192
|
+
parts.push(`signature: ${node.signature}`);
|
|
193
|
+
}
|
|
194
|
+
if (node.docstring) {
|
|
195
|
+
parts.push(`documentation: ${node.docstring}`);
|
|
196
|
+
}
|
|
197
|
+
return parts.join('\n');
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Compute cosine similarity between two embeddings
|
|
201
|
+
*/
|
|
202
|
+
static cosineSimilarity(a, b) {
|
|
203
|
+
if (a.length !== b.length) {
|
|
204
|
+
throw new Error('Embeddings must have the same dimension');
|
|
205
|
+
}
|
|
206
|
+
let dotProduct = 0;
|
|
207
|
+
let normA = 0;
|
|
208
|
+
let normB = 0;
|
|
209
|
+
for (let i = 0; i < a.length; i++) {
|
|
210
|
+
const aVal = a[i];
|
|
211
|
+
const bVal = b[i];
|
|
212
|
+
dotProduct += aVal * bVal;
|
|
213
|
+
normA += aVal * aVal;
|
|
214
|
+
normB += bVal * bVal;
|
|
215
|
+
}
|
|
216
|
+
normA = Math.sqrt(normA);
|
|
217
|
+
normB = Math.sqrt(normB);
|
|
218
|
+
if (normA === 0 || normB === 0) {
|
|
219
|
+
return 0;
|
|
220
|
+
}
|
|
221
|
+
return dotProduct / (normA * normB);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Release resources
|
|
225
|
+
*/
|
|
226
|
+
dispose() {
|
|
227
|
+
this.initialized = false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.TextEmbedder = TextEmbedder;
|
|
231
|
+
/**
|
|
232
|
+
* Create a text embedder instance
|
|
233
|
+
*/
|
|
234
|
+
function createEmbedder(options) {
|
|
235
|
+
return new TextEmbedder(options);
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=embedder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/vectors/embedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vectors Module
|
|
3
|
+
*
|
|
4
|
+
* Provides text embedding and vector similarity search for semantic code search.
|
|
5
|
+
*/
|
|
6
|
+
export { TextEmbedder, createEmbedder, DEFAULT_MODEL, EMBEDDING_DIMENSION, EmbedderOptions, EmbeddingResult, BatchEmbeddingResult, } from './embedder';
|
|
7
|
+
export { VectorSearchManager, createVectorSearch, VectorSearchOptions, } from './search';
|
|
8
|
+
export { VectorManager, createVectorManager, VectorManagerOptions, EmbeddingProgress, } from './manager';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vectors/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vectors Module
|
|
4
|
+
*
|
|
5
|
+
* Provides text embedding and vector similarity search for semantic code search.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.createVectorManager = exports.VectorManager = exports.createVectorSearch = exports.VectorSearchManager = exports.EMBEDDING_DIMENSION = exports.DEFAULT_MODEL = exports.createEmbedder = exports.TextEmbedder = void 0;
|
|
9
|
+
var embedder_1 = require("./embedder");
|
|
10
|
+
Object.defineProperty(exports, "TextEmbedder", { enumerable: true, get: function () { return embedder_1.TextEmbedder; } });
|
|
11
|
+
Object.defineProperty(exports, "createEmbedder", { enumerable: true, get: function () { return embedder_1.createEmbedder; } });
|
|
12
|
+
Object.defineProperty(exports, "DEFAULT_MODEL", { enumerable: true, get: function () { return embedder_1.DEFAULT_MODEL; } });
|
|
13
|
+
Object.defineProperty(exports, "EMBEDDING_DIMENSION", { enumerable: true, get: function () { return embedder_1.EMBEDDING_DIMENSION; } });
|
|
14
|
+
var search_1 = require("./search");
|
|
15
|
+
Object.defineProperty(exports, "VectorSearchManager", { enumerable: true, get: function () { return search_1.VectorSearchManager; } });
|
|
16
|
+
Object.defineProperty(exports, "createVectorSearch", { enumerable: true, get: function () { return search_1.createVectorSearch; } });
|
|
17
|
+
var manager_1 = require("./manager");
|
|
18
|
+
Object.defineProperty(exports, "VectorManager", { enumerable: true, get: function () { return manager_1.VectorManager; } });
|
|
19
|
+
Object.defineProperty(exports, "createVectorManager", { enumerable: true, get: function () { return manager_1.createVectorManager; } });
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vectors/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,uCAQoB;AAPlB,wGAAA,YAAY,OAAA;AACZ,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AAMrB,mCAIkB;AAHhB,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA;AAIpB,qCAKmB;AAJjB,wGAAA,aAAa,OAAA;AACb,8GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector Manager
|
|
3
|
+
*
|
|
4
|
+
* High-level manager that coordinates embedding generation and vector search.
|
|
5
|
+
*/
|
|
6
|
+
import { SqliteDatabase } from '../db/sqlite-adapter';
|
|
7
|
+
import { Node, SearchResult, SearchOptions } from '../types';
|
|
8
|
+
import { EmbedderOptions } from './embedder';
|
|
9
|
+
import { QueryBuilder } from '../db/queries';
|
|
10
|
+
/**
|
|
11
|
+
* Progress callback for embedding generation
|
|
12
|
+
*/
|
|
13
|
+
export interface EmbeddingProgress {
|
|
14
|
+
/** Current node index */
|
|
15
|
+
current: number;
|
|
16
|
+
/** Total nodes to embed */
|
|
17
|
+
total: number;
|
|
18
|
+
/** Current node being embedded */
|
|
19
|
+
nodeName?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Options for the vector manager
|
|
23
|
+
*/
|
|
24
|
+
export interface VectorManagerOptions {
|
|
25
|
+
/** Embedder options */
|
|
26
|
+
embedder?: EmbedderOptions;
|
|
27
|
+
/** Node kinds to embed (default: functions, methods, classes, interfaces) */
|
|
28
|
+
nodeKinds?: Node['kind'][];
|
|
29
|
+
/** Batch size for embedding generation */
|
|
30
|
+
batchSize?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Vector Manager
|
|
34
|
+
*
|
|
35
|
+
* Provides high-level interface for semantic search:
|
|
36
|
+
* - Generates embeddings for code nodes
|
|
37
|
+
* - Stores embeddings in the database
|
|
38
|
+
* - Performs semantic similarity search
|
|
39
|
+
*/
|
|
40
|
+
export declare class VectorManager {
|
|
41
|
+
private embedder;
|
|
42
|
+
private searchManager;
|
|
43
|
+
private queries;
|
|
44
|
+
private nodeKinds;
|
|
45
|
+
private batchSize;
|
|
46
|
+
private initialized;
|
|
47
|
+
constructor(db: SqliteDatabase, queries: QueryBuilder, options?: VectorManagerOptions);
|
|
48
|
+
/**
|
|
49
|
+
* Initialize the vector manager
|
|
50
|
+
*
|
|
51
|
+
* Validates embedding configuration and initializes vector search.
|
|
52
|
+
*/
|
|
53
|
+
initialize(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Check if the vector manager is initialized
|
|
56
|
+
*/
|
|
57
|
+
isInitialized(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Generate embeddings for all eligible nodes
|
|
60
|
+
*
|
|
61
|
+
* @param onProgress - Optional progress callback
|
|
62
|
+
* @returns Number of nodes embedded
|
|
63
|
+
*/
|
|
64
|
+
embedAllNodes(onProgress?: (progress: EmbeddingProgress) => void): Promise<number>;
|
|
65
|
+
/**
|
|
66
|
+
* Generate embedding for a single node
|
|
67
|
+
*
|
|
68
|
+
* @param node - Node to embed
|
|
69
|
+
*/
|
|
70
|
+
embedNode(node: Node): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Semantic search for nodes matching a query
|
|
73
|
+
*
|
|
74
|
+
* @param query - Natural language query
|
|
75
|
+
* @param options - Search options
|
|
76
|
+
* @returns Array of search results with similarity scores
|
|
77
|
+
*/
|
|
78
|
+
search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Find nodes similar to a given node
|
|
81
|
+
*
|
|
82
|
+
* @param nodeId - ID of the node to find similar nodes for
|
|
83
|
+
* @param options - Search options
|
|
84
|
+
* @returns Array of similar nodes with similarity scores
|
|
85
|
+
*/
|
|
86
|
+
findSimilar(nodeId: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Delete embedding for a node
|
|
89
|
+
*
|
|
90
|
+
* @param nodeId - ID of the node
|
|
91
|
+
*/
|
|
92
|
+
deleteNodeEmbedding(nodeId: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* Get statistics about vector storage
|
|
95
|
+
*/
|
|
96
|
+
getStats(): {
|
|
97
|
+
totalVectors: number;
|
|
98
|
+
vssEnabled: boolean;
|
|
99
|
+
modelId: string;
|
|
100
|
+
dimension: number;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Clear all vectors
|
|
104
|
+
*/
|
|
105
|
+
clear(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Delete vectors for nodes that no longer exist.
|
|
108
|
+
*/
|
|
109
|
+
deleteStaleVectors(): number;
|
|
110
|
+
/**
|
|
111
|
+
* Rebuild the VSS index
|
|
112
|
+
*/
|
|
113
|
+
rebuildIndex(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Release resources
|
|
116
|
+
*/
|
|
117
|
+
dispose(): void;
|
|
118
|
+
private hashText;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a vector manager
|
|
122
|
+
*/
|
|
123
|
+
export declare function createVectorManager(db: SqliteDatabase, queries: QueryBuilder, options?: VectorManagerOptions): VectorManager;
|
|
124
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/vectors/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAgC,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAEhB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IAEd,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAE3B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD;;;;;;;GAOG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAG1B,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,oBAAyB;IASpC;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;;OAKG;IACG,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAoExF;;;;OAIG;IACG,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA0CjF;;;;;;OAMG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8DvF;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB;IASD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,QAAQ;CAGjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,aAAa,CAEf"}
|