sverklo 0.2.13 → 0.2.15
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/dist/src/indexer/indexer-provider-integration.test.d.ts +1 -0
- package/dist/src/indexer/indexer-provider-integration.test.js +142 -0
- package/dist/src/indexer/indexer-provider-integration.test.js.map +1 -0
- package/dist/src/indexer/indexer.d.ts +34 -0
- package/dist/src/indexer/indexer.js +107 -6
- package/dist/src/indexer/indexer.js.map +1 -1
- package/dist/src/indexer/migration.test.d.ts +1 -0
- package/dist/src/indexer/migration.test.js +144 -0
- package/dist/src/indexer/migration.test.js.map +1 -0
- package/dist/src/indexer/parser.js +13 -1
- package/dist/src/indexer/parser.js.map +1 -1
- package/dist/src/indexer/parser.test.d.ts +1 -0
- package/dist/src/indexer/parser.test.js +128 -0
- package/dist/src/indexer/parser.test.js.map +1 -0
- package/dist/src/indexer/symbol-extractor.js +17 -5
- package/dist/src/indexer/symbol-extractor.js.map +1 -1
- package/dist/src/indexer/symbol-extractor.test.d.ts +1 -0
- package/dist/src/indexer/symbol-extractor.test.js +88 -0
- package/dist/src/indexer/symbol-extractor.test.js.map +1 -0
- package/dist/src/search/hybrid-search.js +2 -2
- package/dist/src/search/hybrid-search.js.map +1 -1
- package/dist/src/search/hybrid-search.test.js +3 -0
- package/dist/src/search/hybrid-search.test.js.map +1 -1
- package/dist/src/search/token-budget.js +33 -5
- package/dist/src/search/token-budget.js.map +1 -1
- package/dist/src/server/tools/find-references.d.ts +4 -0
- package/dist/src/server/tools/find-references.js +46 -6
- package/dist/src/server/tools/find-references.js.map +1 -1
- package/dist/src/server/tools/find-references.test.d.ts +1 -0
- package/dist/src/server/tools/find-references.test.js +98 -0
- package/dist/src/server/tools/find-references.test.js.map +1 -0
- package/dist/src/server/tools/index-status.js +13 -13
- package/dist/src/server/tools/index-status.js.map +1 -1
- package/dist/src/server/tools/lookup.js +9 -0
- package/dist/src/server/tools/lookup.js.map +1 -1
- package/dist/src/server/tools/lookup.test.d.ts +1 -0
- package/dist/src/server/tools/lookup.test.js +110 -0
- package/dist/src/server/tools/lookup.test.js.map +1 -0
- package/dist/src/server/tools/recall.js +2 -2
- package/dist/src/server/tools/recall.js.map +1 -1
- package/dist/src/server/tools/remember.js +2 -2
- package/dist/src/server/tools/remember.js.map +1 -1
- package/dist/src/storage/database.d.ts +13 -0
- package/dist/src/storage/database.js +47 -0
- package/dist/src/storage/database.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cosineSimilarity } from "../../indexer/embedder.js";
|
|
2
2
|
import { getGitState } from "../../memory/git-state.js";
|
|
3
3
|
import { track } from "../../telemetry/index.js";
|
|
4
4
|
const CONFLICT_THRESHOLD = 0.85;
|
|
@@ -46,7 +46,7 @@ export async function handleRemember(indexer, args) {
|
|
|
46
46
|
// ─── Conflict detection ───
|
|
47
47
|
// Check for existing active memories with high semantic similarity.
|
|
48
48
|
// If same related_files or very high similarity, invalidate the old one.
|
|
49
|
-
const [queryVector] = await embed([content]);
|
|
49
|
+
const [queryVector] = await indexer.embed([content]);
|
|
50
50
|
const existingEmbeddings = indexer.memoryEmbeddingStore.getAll();
|
|
51
51
|
const conflicts = [];
|
|
52
52
|
for (const [memId, vec] of existingEmbeddings) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remember.js","sourceRoot":"","sources":["../../../../src/server/tools/remember.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remember.js","sourceRoot":"","sources":["../../../../src/server/tools/remember.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,15 @@
|
|
|
1
1
|
import Database from "better-sqlite3";
|
|
2
|
+
export declare const CURRENT_DATA_VERSION = 2;
|
|
2
3
|
export declare function createDatabase(dbPath: string): Database.Database;
|
|
4
|
+
/**
|
|
5
|
+
* Read the stored data version. Returns 0 for fresh databases that
|
|
6
|
+
* have never been tagged, so callers can treat any version < current
|
|
7
|
+
* as "migrate me".
|
|
8
|
+
*/
|
|
9
|
+
export declare function getDataVersion(db: Database.Database): number;
|
|
10
|
+
/**
|
|
11
|
+
* Stamp the database with the current data version. Call after a
|
|
12
|
+
* migration completes (or on a fresh database after the first full
|
|
13
|
+
* index, so subsequent runs don't waste time re-migrating).
|
|
14
|
+
*/
|
|
15
|
+
export declare function setDataVersion(db: Database.Database, version: number): void;
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import Database from "better-sqlite3";
|
|
2
|
+
// Current data-layer version. Bump this when existing stored data
|
|
3
|
+
// (not just schema shape) has become incompatible with the new code.
|
|
4
|
+
// The Indexer runs data migrations on startup when the stored version
|
|
5
|
+
// is lower than this.
|
|
6
|
+
//
|
|
7
|
+
// 1 — initial. Tables as defined in SCHEMA below.
|
|
8
|
+
// 2 — fix for github.com/sverklo/sverklo/issues/13: symbol_refs
|
|
9
|
+
// generated by v0.2.13 and earlier used chunk-wide dedupe in
|
|
10
|
+
// extractReferences(), which collapsed every repeat call of a
|
|
11
|
+
// symbol in the same chunk to one row. Upgrading triggers
|
|
12
|
+
// re-extraction of references from existing chunks (no file
|
|
13
|
+
// I/O — just regex over chunk.content).
|
|
14
|
+
export const CURRENT_DATA_VERSION = 2;
|
|
2
15
|
const SCHEMA = `
|
|
3
16
|
-- Indexed files
|
|
4
17
|
CREATE TABLE IF NOT EXISTS files (
|
|
@@ -148,6 +161,15 @@ CREATE INDEX IF NOT EXISTS idx_memories_created ON memories(created_at);
|
|
|
148
161
|
CREATE INDEX IF NOT EXISTS idx_memories_stale ON memories(is_stale);
|
|
149
162
|
CREATE INDEX IF NOT EXISTS idx_memories_tier ON memories(tier);
|
|
150
163
|
CREATE INDEX IF NOT EXISTS idx_memories_valid_until ON memories(valid_until_sha);
|
|
164
|
+
|
|
165
|
+
-- Key-value metadata. Used to track the data-layer version so we can
|
|
166
|
+
-- run inline migrations when the code's expectations about stored
|
|
167
|
+
-- data drift from what's on disk. Single-row-per-key; no schema here
|
|
168
|
+
-- because values are small strings.
|
|
169
|
+
CREATE TABLE IF NOT EXISTS meta (
|
|
170
|
+
key TEXT PRIMARY KEY,
|
|
171
|
+
value TEXT NOT NULL
|
|
172
|
+
);
|
|
151
173
|
`;
|
|
152
174
|
// Additive migrations — run after SCHEMA to upgrade existing databases
|
|
153
175
|
const MIGRATIONS = [
|
|
@@ -176,4 +198,29 @@ export function createDatabase(dbPath) {
|
|
|
176
198
|
}
|
|
177
199
|
return db;
|
|
178
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Read the stored data version. Returns 0 for fresh databases that
|
|
203
|
+
* have never been tagged, so callers can treat any version < current
|
|
204
|
+
* as "migrate me".
|
|
205
|
+
*/
|
|
206
|
+
export function getDataVersion(db) {
|
|
207
|
+
try {
|
|
208
|
+
const row = db
|
|
209
|
+
.prepare("SELECT value FROM meta WHERE key = 'data_version'")
|
|
210
|
+
.get();
|
|
211
|
+
return row ? parseInt(row.value, 10) || 0 : 0;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return 0;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Stamp the database with the current data version. Call after a
|
|
219
|
+
* migration completes (or on a fresh database after the first full
|
|
220
|
+
* index, so subsequent runs don't waste time re-migrating).
|
|
221
|
+
*/
|
|
222
|
+
export function setDataVersion(db, version) {
|
|
223
|
+
db.prepare("INSERT INTO meta (key, value) VALUES ('data_version', ?) " +
|
|
224
|
+
"ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(String(version));
|
|
225
|
+
}
|
|
179
226
|
//# sourceMappingURL=database.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,kEAAkE;AAClE,qEAAqE;AACrE,sEAAsE;AACtE,sBAAsB;AACtB,EAAE;AACF,oDAAoD;AACpD,kEAAkE;AAClE,mEAAmE;AACnE,oEAAoE;AACpE,gEAAgE;AAChE,kEAAkE;AAClE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Jd,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,GAAG;IACjB,6DAA6D;IAC7D,qDAAqD;IACrD,sDAAsD;IACtD,wDAAwD;IACxD,uDAAuD;CACxD,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa;IAE/C,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,yEAAyE;IACzE,sEAAsE;IACtE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAqB;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CAAC,mDAAmD,CAAC;aAC5D,GAAG,EAAmC,CAAC;QAC1C,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,OAAe;IACnE,EAAE,CAAC,OAAO,CACR,2DAA2D;QACzD,uDAAuD,CAC1D,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sverklo",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Sverklo — local-first code intelligence MCP server. Diff-aware MR review, risk scoring, hybrid semantic search, PageRank ranking, persistent memory. Zero config.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|