openlore 2.0.2 → 2.0.4
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/README.md +32 -2
- package/dist/cli/commands/analyze.js +36 -23
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +18 -1
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/export/index.d.ts +10 -0
- package/dist/cli/export/index.d.ts.map +1 -0
- package/dist/cli/export/index.js +27 -0
- package/dist/cli/export/index.js.map +1 -0
- package/dist/cli/export/scip.d.ts +22 -0
- package/dist/cli/export/scip.d.ts.map +1 -0
- package/dist/cli/export/scip.js +95 -0
- package/dist/cli/export/scip.js.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest/detect/events.d.ts +31 -0
- package/dist/cli/manifest/detect/events.d.ts.map +1 -0
- package/dist/cli/manifest/detect/events.js +22 -0
- package/dist/cli/manifest/detect/events.js.map +1 -0
- package/dist/cli/manifest/detect/http-routes.d.ts +22 -0
- package/dist/cli/manifest/detect/http-routes.d.ts.map +1 -0
- package/dist/cli/manifest/detect/http-routes.js +18 -0
- package/dist/cli/manifest/detect/http-routes.js.map +1 -0
- package/dist/cli/manifest/detect/public-symbols.d.ts +46 -0
- package/dist/cli/manifest/detect/public-symbols.d.ts.map +1 -0
- package/dist/cli/manifest/detect/public-symbols.js +144 -0
- package/dist/cli/manifest/detect/public-symbols.js.map +1 -0
- package/dist/cli/manifest/emit.d.ts +103 -0
- package/dist/cli/manifest/emit.d.ts.map +1 -0
- package/dist/cli/manifest/emit.js +272 -0
- package/dist/cli/manifest/emit.js.map +1 -0
- package/dist/cli/manifest/index.d.ts +11 -0
- package/dist/cli/manifest/index.d.ts.map +1 -0
- package/dist/cli/manifest/index.js +31 -0
- package/dist/cli/manifest/index.js.map +1 -0
- package/dist/cli/manifest/schema-validator.d.ts +18 -0
- package/dist/cli/manifest/schema-validator.d.ts.map +1 -0
- package/dist/cli/manifest/schema-validator.js +77 -0
- package/dist/cli/manifest/schema-validator.js.map +1 -0
- package/dist/cli/manifest/validate.d.ts +15 -0
- package/dist/cli/manifest/validate.d.ts.map +1 -0
- package/dist/cli/manifest/validate.js +51 -0
- package/dist/cli/manifest/validate.js.map +1 -0
- package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
- package/dist/core/analyzer/artifact-generator.js +37 -3
- package/dist/core/analyzer/artifact-generator.js.map +1 -1
- package/dist/core/analyzer/call-graph.d.ts +9 -2
- package/dist/core/analyzer/call-graph.d.ts.map +1 -1
- package/dist/core/analyzer/call-graph.js +534 -1
- package/dist/core/analyzer/call-graph.js.map +1 -1
- package/dist/core/analyzer/embedding-service.d.ts +2 -0
- package/dist/core/analyzer/embedding-service.d.ts.map +1 -1
- package/dist/core/analyzer/embedding-service.js +4 -0
- package/dist/core/analyzer/embedding-service.js.map +1 -1
- package/dist/core/analyzer/fixtures/regression/sample.d.ts +9 -0
- package/dist/core/analyzer/fixtures/regression/sample.d.ts.map +1 -0
- package/dist/core/analyzer/fixtures/regression/sample.js +26 -0
- package/dist/core/analyzer/fixtures/regression/sample.js.map +1 -0
- package/dist/core/analyzer/iac/ansible.d.ts +18 -0
- package/dist/core/analyzer/iac/ansible.d.ts.map +1 -0
- package/dist/core/analyzer/iac/ansible.js +219 -0
- package/dist/core/analyzer/iac/ansible.js.map +1 -0
- package/dist/core/analyzer/iac/cdk.d.ts +26 -0
- package/dist/core/analyzer/iac/cdk.d.ts.map +1 -0
- package/dist/core/analyzer/iac/cdk.js +204 -0
- package/dist/core/analyzer/iac/cdk.js.map +1 -0
- package/dist/core/analyzer/iac/classify-yaml.d.ts +20 -0
- package/dist/core/analyzer/iac/classify-yaml.d.ts.map +1 -0
- package/dist/core/analyzer/iac/classify-yaml.js +81 -0
- package/dist/core/analyzer/iac/classify-yaml.js.map +1 -0
- package/dist/core/analyzer/iac/cloudformation.d.ts +15 -0
- package/dist/core/analyzer/iac/cloudformation.d.ts.map +1 -0
- package/dist/core/analyzer/iac/cloudformation.js +189 -0
- package/dist/core/analyzer/iac/cloudformation.js.map +1 -0
- package/dist/core/analyzer/iac/helm.d.ts +20 -0
- package/dist/core/analyzer/iac/helm.d.ts.map +1 -0
- package/dist/core/analyzer/iac/helm.js +229 -0
- package/dist/core/analyzer/iac/helm.js.map +1 -0
- package/dist/core/analyzer/iac/index.d.ts +23 -0
- package/dist/core/analyzer/iac/index.d.ts.map +1 -0
- package/dist/core/analyzer/iac/index.js +40 -0
- package/dist/core/analyzer/iac/index.js.map +1 -0
- package/dist/core/analyzer/iac/kubernetes.d.ts +14 -0
- package/dist/core/analyzer/iac/kubernetes.d.ts.map +1 -0
- package/dist/core/analyzer/iac/kubernetes.js +226 -0
- package/dist/core/analyzer/iac/kubernetes.js.map +1 -0
- package/dist/core/analyzer/iac/project.d.ts +16 -0
- package/dist/core/analyzer/iac/project.d.ts.map +1 -0
- package/dist/core/analyzer/iac/project.js +97 -0
- package/dist/core/analyzer/iac/project.js.map +1 -0
- package/dist/core/analyzer/iac/pulumi.d.ts +21 -0
- package/dist/core/analyzer/iac/pulumi.d.ts.map +1 -0
- package/dist/core/analyzer/iac/pulumi.js +190 -0
- package/dist/core/analyzer/iac/pulumi.js.map +1 -0
- package/dist/core/analyzer/iac/terraform.d.ts +19 -0
- package/dist/core/analyzer/iac/terraform.d.ts.map +1 -0
- package/dist/core/analyzer/iac/terraform.js +546 -0
- package/dist/core/analyzer/iac/terraform.js.map +1 -0
- package/dist/core/analyzer/iac/types.d.ts +67 -0
- package/dist/core/analyzer/iac/types.d.ts.map +1 -0
- package/dist/core/analyzer/iac/types.js +39 -0
- package/dist/core/analyzer/iac/types.js.map +1 -0
- package/dist/core/analyzer/signature-extractor.d.ts +6 -0
- package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
- package/dist/core/analyzer/signature-extractor.js +112 -2
- package/dist/core/analyzer/signature-extractor.js.map +1 -1
- package/dist/core/analyzer/spec-vector-index.d.ts +9 -2
- package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -1
- package/dist/core/analyzer/spec-vector-index.js +111 -10
- package/dist/core/analyzer/spec-vector-index.js.map +1 -1
- package/dist/core/analyzer/vector-index.d.ts +33 -1
- package/dist/core/analyzer/vector-index.d.ts.map +1 -1
- package/dist/core/analyzer/vector-index.js +99 -10
- package/dist/core/analyzer/vector-index.js.map +1 -1
- package/dist/core/scip/index.d.ts +51 -0
- package/dist/core/scip/index.d.ts.map +1 -0
- package/dist/core/scip/index.js +210 -0
- package/dist/core/scip/index.js.map +1 -0
- package/dist/core/scip/moniker.d.ts +48 -0
- package/dist/core/scip/moniker.d.ts.map +1 -0
- package/dist/core/scip/moniker.js +109 -0
- package/dist/core/scip/moniker.js.map +1 -0
- package/dist/core/scip/schema.d.ts +34 -0
- package/dist/core/scip/schema.d.ts.map +1 -0
- package/dist/core/scip/schema.js +48 -0
- package/dist/core/scip/schema.js.map +1 -0
- package/dist/core/scip/vendor/scip.proto +910 -0
- package/dist/core/services/edge-store.d.ts +6 -0
- package/dist/core/services/edge-store.d.ts.map +1 -1
- package/dist/core/services/edge-store.js +8 -0
- package/dist/core/services/edge-store.js.map +1 -1
- package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/graph.js +12 -0
- package/dist/core/services/mcp-handlers/graph.js.map +1 -1
- package/dist/core/services/mcp-handlers/orient.js +2 -2
- package/dist/core/services/mcp-handlers/orient.js.map +1 -1
- package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/semantic.js +23 -30
- package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
- package/dist/core/services/mcp-watcher.d.ts.map +1 -1
- package/dist/core/services/mcp-watcher.js +14 -10
- package/dist/core/services/mcp-watcher.js.map +1 -1
- package/package.json +12 -1
- package/schemas/openlore-manifest-v1.json +191 -0
|
@@ -43,6 +43,30 @@ export interface SearchResult {
|
|
|
43
43
|
*/
|
|
44
44
|
score: number;
|
|
45
45
|
}
|
|
46
|
+
export interface VectorIndexMeta {
|
|
47
|
+
hasEmbeddings: boolean;
|
|
48
|
+
dim: number;
|
|
49
|
+
model: string | null;
|
|
50
|
+
builtAt: string;
|
|
51
|
+
schemaVersion: number;
|
|
52
|
+
}
|
|
53
|
+
export interface Bm25Corpus {
|
|
54
|
+
docs: Array<{
|
|
55
|
+
id: string;
|
|
56
|
+
tfMap: Map<string, number>;
|
|
57
|
+
length: number;
|
|
58
|
+
}>;
|
|
59
|
+
/** term → number of documents containing it */
|
|
60
|
+
df: Map<string, number>;
|
|
61
|
+
avgLength: number;
|
|
62
|
+
N: number;
|
|
63
|
+
}
|
|
64
|
+
export declare function tokenize(text: string): string[];
|
|
65
|
+
export declare function buildBm25Corpus(records: Array<{
|
|
66
|
+
id: string;
|
|
67
|
+
text: string;
|
|
68
|
+
}>): Bm25Corpus;
|
|
69
|
+
export declare function bm25Score(corpus: Bm25Corpus, queryTokens: string[], docIdx: number): number;
|
|
46
70
|
/** Test-only: clear in-memory BM25 + LanceDB caches to force cold path. */
|
|
47
71
|
export declare function _resetVectorIndexCachesForTesting(): void;
|
|
48
72
|
export declare class VectorIndex {
|
|
@@ -55,14 +79,22 @@ export declare class VectorIndex {
|
|
|
55
79
|
* when no index exists) to do a full rebuild.
|
|
56
80
|
*
|
|
57
81
|
* Returns a summary of how many functions were embedded vs reused.
|
|
82
|
+
*
|
|
83
|
+
* When `embedSvc` is null, builds a **keyword-only (BM25)** index: the corpus
|
|
84
|
+
* rows are written without a `vector` column and the meta sidecar records
|
|
85
|
+
* `hasEmbeddings: false`. Search then serves BM25 results and never attempts
|
|
86
|
+
* ANN. Re-building a previously-embedded index with `embedSvc=null` downgrades
|
|
87
|
+
* it to BM25-only (overwrite + meta update), and vice-versa upgrades it.
|
|
58
88
|
*/
|
|
59
|
-
static build(outputDir: string, nodes: FunctionNode[], signatures: FileSignatureMap[], hubIds: Set<string>, entryPointIds: Set<string>, embedSvc: EmbeddingService,
|
|
89
|
+
static build(outputDir: string, nodes: FunctionNode[], signatures: FileSignatureMap[], hubIds: Set<string>, entryPointIds: Set<string>, embedSvc: EmbeddingService | null,
|
|
60
90
|
/** Optional map of filePath → source content for skeleton-based body indexing */
|
|
61
91
|
fileContents?: Map<string, string>,
|
|
62
92
|
/** When true, reuse cached vectors for unchanged functions */
|
|
63
93
|
incremental?: boolean): Promise<{
|
|
64
94
|
embedded: number;
|
|
65
95
|
reused: number;
|
|
96
|
+
total: number;
|
|
97
|
+
hasEmbeddings: boolean;
|
|
66
98
|
}>;
|
|
67
99
|
/**
|
|
68
100
|
* Hybrid search over the index: dense (ANN) + sparse (BM25) merged via RRF.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-index.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/vector-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"vector-index.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/vector-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
* // Search
|
|
16
16
|
* const results = await VectorIndex.search(outputDir, "authenticate user with JWT", embedSvc);
|
|
17
17
|
*/
|
|
18
|
-
import { existsSync } from 'node:fs';
|
|
18
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
19
|
+
import { writeFile } from 'node:fs/promises';
|
|
19
20
|
import { join } from 'node:path';
|
|
20
21
|
import { getSkeletonContent, isSkeletonWorthIncluding } from './code-shaper.js';
|
|
21
22
|
// ============================================================================
|
|
@@ -23,6 +24,42 @@ import { getSkeletonContent, isSkeletonWorthIncluding } from './code-shaper.js';
|
|
|
23
24
|
// ============================================================================
|
|
24
25
|
const DB_FOLDER = 'vector-index';
|
|
25
26
|
const TABLE_NAME = 'functions';
|
|
27
|
+
/**
|
|
28
|
+
* Sidecar metadata file, sibling to the LanceDB `vector-index/` folder.
|
|
29
|
+
* Single source of truth for whether ANN (dense) search is available: a
|
|
30
|
+
* BM25-only index has `hasEmbeddings: false` and no `vector` column, so search
|
|
31
|
+
* must never attempt to embed a query or run ANN against it.
|
|
32
|
+
*/
|
|
33
|
+
const META_FILE = 'vector-index-meta.json';
|
|
34
|
+
const META_SCHEMA_VERSION = 1;
|
|
35
|
+
// Module-level meta cache, keyed by dbPath. Invalidated by build().
|
|
36
|
+
const _metaCache = new Map();
|
|
37
|
+
function metaFilePath(outputDir) {
|
|
38
|
+
return join(outputDir, META_FILE);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Read the index metadata sidecar (cached per dbPath).
|
|
42
|
+
* Returns null when no sidecar exists — e.g. a legacy index built before the
|
|
43
|
+
* sidecar was introduced. Callers treat a missing sidecar as "embeddings
|
|
44
|
+
* present" to preserve pre-change behaviour for those indexes.
|
|
45
|
+
*/
|
|
46
|
+
function readMeta(outputDir) {
|
|
47
|
+
const dbPath = join(outputDir, DB_FOLDER);
|
|
48
|
+
if (_metaCache.has(dbPath))
|
|
49
|
+
return _metaCache.get(dbPath) ?? null;
|
|
50
|
+
let meta = null;
|
|
51
|
+
try {
|
|
52
|
+
meta = JSON.parse(readFileSync(metaFilePath(outputDir), 'utf-8'));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
meta = null;
|
|
56
|
+
}
|
|
57
|
+
_metaCache.set(dbPath, meta);
|
|
58
|
+
return meta;
|
|
59
|
+
}
|
|
60
|
+
async function writeMeta(outputDir, meta) {
|
|
61
|
+
await writeFile(metaFilePath(outputDir), JSON.stringify(meta, null, 2) + '\n', 'utf-8');
|
|
62
|
+
}
|
|
26
63
|
/** Convert a raw LanceDB row to a FunctionRecord (without the vector field). */
|
|
27
64
|
function rowToRecord(row) {
|
|
28
65
|
return {
|
|
@@ -40,11 +77,11 @@ function rowToRecord(row) {
|
|
|
40
77
|
text: row.text,
|
|
41
78
|
};
|
|
42
79
|
}
|
|
43
|
-
function tokenize(text) {
|
|
80
|
+
export function tokenize(text) {
|
|
44
81
|
// Split on non-alphanumeric, keep tokens longer than 1 char
|
|
45
82
|
return text.toLowerCase().split(/[^a-z0-9]+/).filter(t => t.length > 1);
|
|
46
83
|
}
|
|
47
|
-
function buildBm25Corpus(records) {
|
|
84
|
+
export function buildBm25Corpus(records) {
|
|
48
85
|
const docs = [];
|
|
49
86
|
const df = new Map();
|
|
50
87
|
let totalLen = 0;
|
|
@@ -62,7 +99,7 @@ function buildBm25Corpus(records) {
|
|
|
62
99
|
}
|
|
63
100
|
const BM25_K1 = 1.2;
|
|
64
101
|
const BM25_B = 0.75;
|
|
65
|
-
function bm25Score(corpus, queryTokens, docIdx) {
|
|
102
|
+
export function bm25Score(corpus, queryTokens, docIdx) {
|
|
66
103
|
const doc = corpus.docs[docIdx];
|
|
67
104
|
let score = 0;
|
|
68
105
|
for (const q of queryTokens) {
|
|
@@ -95,6 +132,7 @@ const _tableCache = new Map();
|
|
|
95
132
|
export function _resetVectorIndexCachesForTesting() {
|
|
96
133
|
_bm25Cache.clear();
|
|
97
134
|
_tableCache.clear();
|
|
135
|
+
_metaCache.clear();
|
|
98
136
|
}
|
|
99
137
|
// ============================================================================
|
|
100
138
|
// HELPERS
|
|
@@ -166,6 +204,12 @@ export class VectorIndex {
|
|
|
166
204
|
* when no index exists) to do a full rebuild.
|
|
167
205
|
*
|
|
168
206
|
* Returns a summary of how many functions were embedded vs reused.
|
|
207
|
+
*
|
|
208
|
+
* When `embedSvc` is null, builds a **keyword-only (BM25)** index: the corpus
|
|
209
|
+
* rows are written without a `vector` column and the meta sidecar records
|
|
210
|
+
* `hasEmbeddings: false`. Search then serves BM25 results and never attempts
|
|
211
|
+
* ANN. Re-building a previously-embedded index with `embedSvc=null` downgrades
|
|
212
|
+
* it to BM25-only (overwrite + meta update), and vice-versa upgrades it.
|
|
169
213
|
*/
|
|
170
214
|
static async build(outputDir, nodes, signatures, hubIds, entryPointIds, embedSvc,
|
|
171
215
|
/** Optional map of filePath → source content for skeleton-based body indexing */
|
|
@@ -231,10 +275,35 @@ export class VectorIndex {
|
|
|
231
275
|
});
|
|
232
276
|
}
|
|
233
277
|
}
|
|
234
|
-
// ── Incremental cache lookup ─────────────────────────────────────────────
|
|
235
278
|
const dbPath = join(outputDir, DB_FOLDER);
|
|
279
|
+
// ── BM25-only build (no embedding service) ───────────────────────────────
|
|
280
|
+
// Write the corpus without a `vector` column so the table can never be
|
|
281
|
+
// searched with ANN, and record `hasEmbeddings: false` in the sidecar.
|
|
282
|
+
if (!embedSvc) {
|
|
283
|
+
const db = await connect(dbPath);
|
|
284
|
+
await db.createTable(TABLE_NAME, candidates, { mode: 'overwrite' });
|
|
285
|
+
await writeMeta(outputDir, {
|
|
286
|
+
hasEmbeddings: false,
|
|
287
|
+
dim: 0,
|
|
288
|
+
model: null,
|
|
289
|
+
builtAt: new Date().toISOString(),
|
|
290
|
+
schemaVersion: META_SCHEMA_VERSION,
|
|
291
|
+
});
|
|
292
|
+
_tableCache.delete(dbPath);
|
|
293
|
+
_bm25Cache.delete(dbPath);
|
|
294
|
+
_metaCache.delete(dbPath);
|
|
295
|
+
return { embedded: 0, reused: 0, total: candidates.length, hasEmbeddings: false };
|
|
296
|
+
}
|
|
297
|
+
// ── Incremental cache lookup ─────────────────────────────────────────────
|
|
236
298
|
let cachedVectors = new Map(); // id → vector
|
|
237
|
-
|
|
299
|
+
// Only reuse vectors from an existing index that actually has them. A
|
|
300
|
+
// previously BM25-only index (hasEmbeddings:false) has no `vector` column,
|
|
301
|
+
// so rebuild it fully as a hybrid index (upgrade path).
|
|
302
|
+
const existingMeta = incremental ? readMeta(outputDir) : null;
|
|
303
|
+
const canReuseVectors = incremental &&
|
|
304
|
+
VectorIndex.exists(outputDir) &&
|
|
305
|
+
(existingMeta === null || existingMeta.hasEmbeddings);
|
|
306
|
+
if (canReuseVectors) {
|
|
238
307
|
try {
|
|
239
308
|
const db = await connect(dbPath);
|
|
240
309
|
const table = await db.openTable(TABLE_NAME);
|
|
@@ -292,10 +361,23 @@ export class VectorIndex {
|
|
|
292
361
|
// ── Write table ──────────────────────────────────────────────────────────
|
|
293
362
|
const db = await connect(dbPath);
|
|
294
363
|
await db.createTable(TABLE_NAME, fullRecords, { mode: 'overwrite' });
|
|
364
|
+
await writeMeta(outputDir, {
|
|
365
|
+
hasEmbeddings: true,
|
|
366
|
+
dim: fullRecords[0]?.vector.length ?? 0,
|
|
367
|
+
model: embedSvc.modelName,
|
|
368
|
+
builtAt: new Date().toISOString(),
|
|
369
|
+
schemaVersion: META_SCHEMA_VERSION,
|
|
370
|
+
});
|
|
295
371
|
// Invalidate search caches — index was just rebuilt
|
|
296
372
|
_tableCache.delete(dbPath);
|
|
297
373
|
_bm25Cache.delete(dbPath);
|
|
298
|
-
|
|
374
|
+
_metaCache.delete(dbPath);
|
|
375
|
+
return {
|
|
376
|
+
embedded: toEmbed.length,
|
|
377
|
+
reused: cachedIdx.length,
|
|
378
|
+
total: fullRecords.length,
|
|
379
|
+
hasEmbeddings: true,
|
|
380
|
+
};
|
|
299
381
|
}
|
|
300
382
|
/**
|
|
301
383
|
* Hybrid search over the index: dense (ANN) + sparse (BM25) merged via RRF.
|
|
@@ -323,8 +405,13 @@ export class VectorIndex {
|
|
|
323
405
|
_tableCache.set(dbPath, tableEntry);
|
|
324
406
|
}
|
|
325
407
|
const table = tableEntry.table;
|
|
326
|
-
// ── BM25-only path
|
|
327
|
-
|
|
408
|
+
// ── BM25-only path ─────────────────────────────────────────────────────────
|
|
409
|
+
// Force BM25 when no embedder is available OR when the index was built
|
|
410
|
+
// without embeddings (no `vector` column). The sidecar is the source of
|
|
411
|
+
// truth: a missing sidecar (legacy index) is treated as embeddings-present.
|
|
412
|
+
const meta = readMeta(outputDir);
|
|
413
|
+
const indexHasEmbeddings = meta === null ? true : meta.hasEmbeddings;
|
|
414
|
+
if (!embedSvc || !indexHasEmbeddings) {
|
|
328
415
|
return VectorIndex._bm25Only(table, dbPath, query, limit, language, minFanIn);
|
|
329
416
|
}
|
|
330
417
|
// ── Dense recall ──────────────────────────────────────────────────────────
|
|
@@ -434,7 +521,9 @@ export class VectorIndex {
|
|
|
434
521
|
return corpus.docs
|
|
435
522
|
.map((_, i) => ({ idx: i, score: bm25Score(corpus, queryTokens, i) }))
|
|
436
523
|
.filter(({ score }) => score > 0)
|
|
437
|
-
|
|
524
|
+
// Sort by score desc; break ties by id asc so ranking is deterministic
|
|
525
|
+
// across runs for a fixed query + corpus.
|
|
526
|
+
.sort((a, b) => b.score - a.score || (corpus.docs[a.idx].id < corpus.docs[b.idx].id ? -1 : 1))
|
|
438
527
|
.slice(0, limit * 3) // oversample before filtering
|
|
439
528
|
.map(({ idx, score }) => {
|
|
440
529
|
const row = rowById.get(corpus.docs[idx].id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-index.js","sourceRoot":"","sources":["../../../src/core/analyzer/vector-index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vector-index.js","sourceRoot":"","sources":["../../../src/core/analyzer/vector-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SCIP export — derives a valid `index.scip` payload from an OpenLore call
|
|
3
|
+
* graph.
|
|
4
|
+
*
|
|
5
|
+
* SCIP (Source Code Intelligence Protocol) is Sourcegraph's open successor to
|
|
6
|
+
* LSIF. This is a one-way interop export: the SQLite/JSON graph remains
|
|
7
|
+
* canonical, and we lossily project the subset of it that SCIP can model
|
|
8
|
+
* (functions → symbols, call edges → reference/definition occurrences).
|
|
9
|
+
*
|
|
10
|
+
* Guarantees:
|
|
11
|
+
* - Deterministic: documents sorted by relative path, occurrences by
|
|
12
|
+
* `(line, col)`, symbols deduplicated and sorted. Re-running on an unchanged
|
|
13
|
+
* graph produces byte-identical output.
|
|
14
|
+
* - Faithful or loud: if a node we export lacks a defining line (a range a
|
|
15
|
+
* SCIP consumer expects), the export throws rather than emitting a malformed
|
|
16
|
+
* index. Column-level precision is unavailable in the analyzer today, so we
|
|
17
|
+
* emit zero-width ranges at column 0 and warn once.
|
|
18
|
+
* TODO(spec-04-followup): column ranges in analyzer.
|
|
19
|
+
* - TODO(spec-04-followup): scip import (consume external SCIP into the graph).
|
|
20
|
+
*/
|
|
21
|
+
import type { SerializedCallGraph } from '../analyzer/call-graph.js';
|
|
22
|
+
import { type PackageInfo } from './moniker.js';
|
|
23
|
+
export interface ExportScipOptions {
|
|
24
|
+
/** Absolute path to the project root. Emitted (URI-encoded) as project_root. */
|
|
25
|
+
projectRoot: string;
|
|
26
|
+
/** Package coordinates filling the SCIP `<package>` symbol slot. */
|
|
27
|
+
package: PackageInfo;
|
|
28
|
+
/** openlore's own version, emitted as tool_info.version. */
|
|
29
|
+
toolVersion: string;
|
|
30
|
+
/** Gitignore-style globs over repo-relative paths; if set, only matches participate. */
|
|
31
|
+
include?: string[];
|
|
32
|
+
/** Gitignore-style globs over repo-relative paths; matches are dropped. */
|
|
33
|
+
exclude?: string[];
|
|
34
|
+
/** Out-param: populated with summary statistics and warnings for the CLI. */
|
|
35
|
+
report?: ExportReport;
|
|
36
|
+
}
|
|
37
|
+
export interface ExportReport {
|
|
38
|
+
documentCount: number;
|
|
39
|
+
occurrenceCount: number;
|
|
40
|
+
symbolCount: number;
|
|
41
|
+
definitionCount: number;
|
|
42
|
+
/** Repo-relative paths whose language has no SCIP enum value. */
|
|
43
|
+
unspecifiedLanguageFiles: string[];
|
|
44
|
+
warnings: string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build a deterministic SCIP `index.scip` payload from a serialized call graph.
|
|
48
|
+
* Returns the encoded protobuf bytes.
|
|
49
|
+
*/
|
|
50
|
+
export declare function exportScip(graph: SerializedCallGraph, options: ExportScipOptions): Buffer;
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/scip/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAOnF,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,OAAO,EAAE,WAAW,CAAC;IACrB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAqIzF"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SCIP export — derives a valid `index.scip` payload from an OpenLore call
|
|
3
|
+
* graph.
|
|
4
|
+
*
|
|
5
|
+
* SCIP (Source Code Intelligence Protocol) is Sourcegraph's open successor to
|
|
6
|
+
* LSIF. This is a one-way interop export: the SQLite/JSON graph remains
|
|
7
|
+
* canonical, and we lossily project the subset of it that SCIP can model
|
|
8
|
+
* (functions → symbols, call edges → reference/definition occurrences).
|
|
9
|
+
*
|
|
10
|
+
* Guarantees:
|
|
11
|
+
* - Deterministic: documents sorted by relative path, occurrences by
|
|
12
|
+
* `(line, col)`, symbols deduplicated and sorted. Re-running on an unchanged
|
|
13
|
+
* graph produces byte-identical output.
|
|
14
|
+
* - Faithful or loud: if a node we export lacks a defining line (a range a
|
|
15
|
+
* SCIP consumer expects), the export throws rather than emitting a malformed
|
|
16
|
+
* index. Column-level precision is unavailable in the analyzer today, so we
|
|
17
|
+
* emit zero-width ranges at column 0 and warn once.
|
|
18
|
+
* TODO(spec-04-followup): column ranges in analyzer.
|
|
19
|
+
* - TODO(spec-04-followup): scip import (consume external SCIP into the graph).
|
|
20
|
+
*/
|
|
21
|
+
import { scipIndexType, SymbolRole, TextEncoding_UTF8, SymbolKind_Function, } from './schema.js';
|
|
22
|
+
import { symbolMoniker, scipLanguageName } from './moniker.js';
|
|
23
|
+
/**
|
|
24
|
+
* Compile a glob to a path-matching RegExp. Supports `*` (within a segment),
|
|
25
|
+
* `?`, `**` (across segments), and a globstar-plus-slash (zero or more leading
|
|
26
|
+
* path segments).
|
|
27
|
+
* Sufficient for the documented `--include`/`--exclude` patterns; not a full
|
|
28
|
+
* gitignore implementation.
|
|
29
|
+
*/
|
|
30
|
+
function globToRegExp(glob) {
|
|
31
|
+
let re = '';
|
|
32
|
+
for (let i = 0; i < glob.length; i++) {
|
|
33
|
+
const c = glob[i];
|
|
34
|
+
if (c === '*') {
|
|
35
|
+
if (glob[i + 1] === '*') {
|
|
36
|
+
if (glob[i + 2] === '/') {
|
|
37
|
+
re += '(?:.*/)?';
|
|
38
|
+
i += 2;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
re += '.*';
|
|
42
|
+
i += 1;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
re += '[^/]*';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (c === '?') {
|
|
50
|
+
re += '[^/]';
|
|
51
|
+
}
|
|
52
|
+
else if ('.+^${}()|[]\\'.includes(c)) {
|
|
53
|
+
re += '\\' + c;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
re += c;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return new RegExp('^' + re + '$');
|
|
60
|
+
}
|
|
61
|
+
/** True iff `relPath` matches any of the compiled glob patterns. */
|
|
62
|
+
function matchesAny(relPath, patterns) {
|
|
63
|
+
return patterns.some(p => p.test(relPath));
|
|
64
|
+
}
|
|
65
|
+
/** Normalize a node's file path to a POSIX repo-relative path. */
|
|
66
|
+
function toRelPath(filePath, projectRoot) {
|
|
67
|
+
let p = filePath.replace(/\\/g, '/');
|
|
68
|
+
const root = projectRoot.replace(/\\/g, '/').replace(/\/$/, '');
|
|
69
|
+
if (p.startsWith(root + '/'))
|
|
70
|
+
p = p.slice(root.length + 1);
|
|
71
|
+
return p.replace(/^\.\//, '').replace(/^\/+/, '');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build a deterministic SCIP `index.scip` payload from a serialized call graph.
|
|
75
|
+
* Returns the encoded protobuf bytes.
|
|
76
|
+
*/
|
|
77
|
+
export function exportScip(graph, options) {
|
|
78
|
+
const report = options.report ?? {
|
|
79
|
+
documentCount: 0,
|
|
80
|
+
occurrenceCount: 0,
|
|
81
|
+
symbolCount: 0,
|
|
82
|
+
definitionCount: 0,
|
|
83
|
+
unspecifiedLanguageFiles: [],
|
|
84
|
+
warnings: [],
|
|
85
|
+
};
|
|
86
|
+
if (options.report) {
|
|
87
|
+
// Reset the caller-provided report so repeated calls are clean.
|
|
88
|
+
report.documentCount = 0;
|
|
89
|
+
report.occurrenceCount = 0;
|
|
90
|
+
report.symbolCount = 0;
|
|
91
|
+
report.definitionCount = 0;
|
|
92
|
+
report.unspecifiedLanguageFiles = [];
|
|
93
|
+
report.warnings = [];
|
|
94
|
+
}
|
|
95
|
+
const includePatterns = (options.include ?? []).map(globToRegExp);
|
|
96
|
+
const excludePatterns = (options.exclude ?? []).map(globToRegExp);
|
|
97
|
+
// Real (non-synthetic) nodes that survive the include/exclude filter.
|
|
98
|
+
const exportable = new Map();
|
|
99
|
+
for (const node of graph.nodes) {
|
|
100
|
+
if (node.isExternal)
|
|
101
|
+
continue;
|
|
102
|
+
const relPath = toRelPath(node.filePath, options.projectRoot);
|
|
103
|
+
if (!relPath)
|
|
104
|
+
continue;
|
|
105
|
+
if (includePatterns.length > 0 && !matchesAny(relPath, includePatterns))
|
|
106
|
+
continue;
|
|
107
|
+
if (excludePatterns.length > 0 && matchesAny(relPath, excludePatterns))
|
|
108
|
+
continue;
|
|
109
|
+
exportable.set(node.id, { node, relPath });
|
|
110
|
+
}
|
|
111
|
+
// Stable moniker per node id, computed once.
|
|
112
|
+
const monikers = new Map();
|
|
113
|
+
for (const [id, { node, relPath }] of exportable) {
|
|
114
|
+
monikers.set(id, symbolMoniker(node, relPath, options.package));
|
|
115
|
+
}
|
|
116
|
+
let warnedMissingColumns = false;
|
|
117
|
+
const warnMissingColumns = () => {
|
|
118
|
+
if (warnedMissingColumns)
|
|
119
|
+
return;
|
|
120
|
+
warnedMissingColumns = true;
|
|
121
|
+
report.warnings.push('Column-level ranges are unavailable in the analyzer; emitted zero-width ranges at column 0. ' +
|
|
122
|
+
'TODO(spec-04-followup): column ranges in analyzer.');
|
|
123
|
+
};
|
|
124
|
+
// documents keyed by relative path.
|
|
125
|
+
const docs = new Map();
|
|
126
|
+
const seenLanguages = new Map(); // relPath -> openlore language
|
|
127
|
+
const docFor = (relPath, openloreLang) => {
|
|
128
|
+
let doc = docs.get(relPath);
|
|
129
|
+
if (!doc) {
|
|
130
|
+
const language = scipLanguageName(openloreLang);
|
|
131
|
+
if (!language)
|
|
132
|
+
report.unspecifiedLanguageFiles.push(relPath);
|
|
133
|
+
doc = { language, relative_path: relPath, occurrences: [], symbols: [] };
|
|
134
|
+
docs.set(relPath, doc);
|
|
135
|
+
seenLanguages.set(relPath, openloreLang);
|
|
136
|
+
}
|
|
137
|
+
return doc;
|
|
138
|
+
};
|
|
139
|
+
// 1. Definition occurrence + SymbolInformation for every exported node.
|
|
140
|
+
for (const [, { node, relPath }] of exportable) {
|
|
141
|
+
if (node.startLine === undefined) {
|
|
142
|
+
throw new Error(`SCIP export aborted: node "${node.id}" has no defining line. ` +
|
|
143
|
+
'The graph is missing a range that an SCIP consumer requires. ' +
|
|
144
|
+
'Re-run `openlore analyze` to rebuild the graph; if the problem persists the analyzer ' +
|
|
145
|
+
'did not record positions for this language.');
|
|
146
|
+
}
|
|
147
|
+
const doc = docFor(relPath, node.language);
|
|
148
|
+
const symbol = monikers.get(node.id);
|
|
149
|
+
const line = node.startLine - 1; // SCIP ranges are 0-based.
|
|
150
|
+
warnMissingColumns();
|
|
151
|
+
doc.occurrences.push({ range: [line, 0, 0], symbol, symbol_roles: SymbolRole.Definition });
|
|
152
|
+
doc.symbols.push({
|
|
153
|
+
symbol,
|
|
154
|
+
kind: SymbolKind_Function,
|
|
155
|
+
...(node.docstring ? { documentation: [node.docstring] } : {}),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
// 2. Reference occurrence at each call site whose callee we export.
|
|
159
|
+
for (const edge of graph.edges) {
|
|
160
|
+
const caller = exportable.get(edge.callerId);
|
|
161
|
+
const calleeSymbol = monikers.get(edge.calleeId);
|
|
162
|
+
if (!caller || !calleeSymbol)
|
|
163
|
+
continue; // skip edges to external/filtered nodes.
|
|
164
|
+
const doc = docFor(caller.relPath, caller.node.language);
|
|
165
|
+
if (edge.line === undefined)
|
|
166
|
+
warnMissingColumns();
|
|
167
|
+
const line = (edge.line ?? caller.node.startLine ?? 1) - 1;
|
|
168
|
+
doc.occurrences.push({ range: [line, 0, 0], symbol: calleeSymbol, symbol_roles: SymbolRole.ReadAccess });
|
|
169
|
+
}
|
|
170
|
+
// 3. Deterministic ordering: documents by path; occurrences by (line, col,
|
|
171
|
+
// roles, symbol); symbols deduplicated and sorted by symbol string.
|
|
172
|
+
const sortedDocs = [...docs.values()].sort((a, b) => a.relative_path.localeCompare(b.relative_path));
|
|
173
|
+
for (const doc of sortedDocs) {
|
|
174
|
+
doc.occurrences.sort((a, b) => a.range[0] - b.range[0] ||
|
|
175
|
+
a.range[1] - b.range[1] ||
|
|
176
|
+
a.symbol_roles - b.symbol_roles ||
|
|
177
|
+
a.symbol.localeCompare(b.symbol));
|
|
178
|
+
const bySymbol = new Map();
|
|
179
|
+
for (const s of doc.symbols)
|
|
180
|
+
if (!bySymbol.has(s.symbol))
|
|
181
|
+
bySymbol.set(s.symbol, s);
|
|
182
|
+
doc.symbols = [...bySymbol.values()].sort((a, b) => a.symbol.localeCompare(b.symbol));
|
|
183
|
+
report.occurrenceCount += doc.occurrences.length;
|
|
184
|
+
report.symbolCount += doc.symbols.length;
|
|
185
|
+
report.definitionCount += doc.occurrences.filter(o => o.symbol_roles === SymbolRole.Definition).length;
|
|
186
|
+
}
|
|
187
|
+
report.documentCount = sortedDocs.length;
|
|
188
|
+
const payload = {
|
|
189
|
+
metadata: {
|
|
190
|
+
version: 0, // UnspecifiedProtocolVersion — the only defined value.
|
|
191
|
+
tool_info: { name: 'openlore', version: options.toolVersion },
|
|
192
|
+
project_root: pathToFileUri(options.projectRoot),
|
|
193
|
+
text_document_encoding: TextEncoding_UTF8,
|
|
194
|
+
},
|
|
195
|
+
documents: sortedDocs,
|
|
196
|
+
};
|
|
197
|
+
const Index = scipIndexType();
|
|
198
|
+
const err = Index.verify(payload);
|
|
199
|
+
if (err)
|
|
200
|
+
throw new Error(`SCIP export produced an invalid index: ${err}`);
|
|
201
|
+
const message = Index.create(payload);
|
|
202
|
+
return Buffer.from(Index.encode(message).finish());
|
|
203
|
+
}
|
|
204
|
+
/** Encode an absolute filesystem path as a `file://` URI for project_root. */
|
|
205
|
+
function pathToFileUri(absPath) {
|
|
206
|
+
const normalized = absPath.replace(/\\/g, '/');
|
|
207
|
+
const withSlash = normalized.startsWith('/') ? normalized : '/' + normalized;
|
|
208
|
+
return 'file://' + withSlash.split('/').map(encodeURIComponent).join('/');
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/scip/index.ts"],"names":[],"mappings":"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"}
|