@devflow-tools/context-engine 0.14.3 → 0.15.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-embedder.js","sourceRoot":"","sources":["../src/symbol-embedder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare class SymbolVectorStore {
2
+ private db;
3
+ private initialized;
4
+ constructor(projectRoot: string);
5
+ initialize(): void;
6
+ upsert(id: string, embedding: Float32Array): void;
7
+ upsertBatch(entries: Array<{
8
+ id: string;
9
+ embedding: Float32Array;
10
+ }>): void;
11
+ search(embedding: Float32Array, limit: number): Array<{
12
+ id: string;
13
+ distance: number;
14
+ }>;
15
+ delete(ids: string[]): void;
16
+ get(id: string): Buffer | null;
17
+ count(): number;
18
+ close(): void;
19
+ }
20
+ //# sourceMappingURL=symbol-vector-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-vector-store.d.ts","sourceRoot":"","sources":["../src/symbol-vector-store.ts"],"names":[],"mappings":"AAKA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAS/B,UAAU,IAAI,IAAI;IAYlB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAQjD,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,CAAA;KAAE,CAAC,GAAG,IAAI;IAe1E,MAAM,CACJ,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAY1C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO9B,KAAK,IAAI,MAAM;IAOf,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,82 @@
1
+ import Database from "better-sqlite3";
2
+ import * as sqliteVec from "sqlite-vec";
3
+ import { join } from "node:path";
4
+ import { existsSync, mkdirSync } from "node:fs";
5
+ export class SymbolVectorStore {
6
+ db;
7
+ initialized = false;
8
+ constructor(projectRoot) {
9
+ const dir = join(projectRoot, ".devflow");
10
+ if (!existsSync(dir))
11
+ mkdirSync(dir, { recursive: true });
12
+ const dbPath = join(dir, "symbols-vec.db");
13
+ this.db = new Database(dbPath);
14
+ this.db.pragma("journal_mode = WAL");
15
+ this.db.pragma("busy_timeout = 5000");
16
+ }
17
+ initialize() {
18
+ if (this.initialized)
19
+ return;
20
+ sqliteVec.load(this.db);
21
+ this.db.exec(`
22
+ CREATE VIRTUAL TABLE IF NOT EXISTS symbols_vec USING vec0(
23
+ id TEXT PRIMARY KEY,
24
+ embedding FLOAT[384]
25
+ )
26
+ `);
27
+ this.initialized = true;
28
+ }
29
+ upsert(id, embedding) {
30
+ this.db.prepare("DELETE FROM symbols_vec WHERE id = ?").run(id);
31
+ const buffer = Buffer.from(embedding.buffer);
32
+ this.db
33
+ .prepare("INSERT INTO symbols_vec(id, embedding) VALUES (?, ?)")
34
+ .run(id, buffer);
35
+ }
36
+ upsertBatch(entries) {
37
+ if (entries.length === 0)
38
+ return;
39
+ const deleteStmt = this.db.prepare("DELETE FROM symbols_vec WHERE id = ?");
40
+ const insert = this.db.prepare("INSERT INTO symbols_vec(id, embedding) VALUES (?, ?)");
41
+ const runAll = this.db.transaction(() => {
42
+ for (const { id, embedding } of entries) {
43
+ deleteStmt.run(id);
44
+ insert.run(id, Buffer.from(embedding.buffer));
45
+ }
46
+ });
47
+ runAll();
48
+ }
49
+ search(embedding, limit) {
50
+ const buffer = Buffer.from(embedding.buffer);
51
+ return this.db
52
+ .prepare(`SELECT id, vec_distance_cosine(embedding, ?) as distance
53
+ FROM symbols_vec
54
+ ORDER BY distance
55
+ LIMIT ?`)
56
+ .all(buffer, limit);
57
+ }
58
+ delete(ids) {
59
+ if (ids.length === 0)
60
+ return;
61
+ const placeholders = ids.map(() => "?").join(",");
62
+ this.db
63
+ .prepare(`DELETE FROM symbols_vec WHERE id IN (${placeholders})`)
64
+ .run(...ids);
65
+ }
66
+ get(id) {
67
+ const row = this.db
68
+ .prepare("SELECT embedding FROM symbols_vec WHERE id = ?")
69
+ .get(id);
70
+ return row?.embedding ?? null;
71
+ }
72
+ count() {
73
+ const row = this.db
74
+ .prepare("SELECT COUNT(*) as c FROM symbols_vec")
75
+ .get();
76
+ return row.c;
77
+ }
78
+ close() {
79
+ this.db.close();
80
+ }
81
+ }
82
+ //# sourceMappingURL=symbol-vector-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-vector-store.js","sourceRoot":"","sources":["../src/symbol-vector-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/context-engine",
3
- "version": "0.14.3",
3
+ "version": "0.15.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -22,10 +22,13 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@colbymchenry/codegraph": "^1.1.1",
25
- "@devflow-tools/knowledge-engine": "^0.14.3",
26
- "@devflow-tools/memory-engine": "^0.14.3",
27
- "@devflow-tools/sdk": "^0.14.0",
28
- "@devflow-tools/telemetry": "^0.14.0"
25
+ "@devflow-tools/knowledge-engine": "0.15.0",
26
+ "@devflow-tools/memory-engine": "0.15.0",
27
+ "@devflow-tools/sdk": "0.15.0",
28
+ "@devflow-tools/telemetry": "0.15.0",
29
+ "better-sqlite3": "^12.11.1",
30
+ "nodejieba": "^3.5.8",
31
+ "sqlite-vec": "^0.1.9"
29
32
  },
30
33
  "devDependencies": {
31
34
  "typescript": "^5.5.0",
@@ -34,5 +37,5 @@
34
37
  "files": [
35
38
  "dist"
36
39
  ],
37
- "gitHead": "eb0ccfbe8146f51c56976f051ea1dcd10c5edd18"
40
+ "gitHead": "716b2355d8bea1138f4b7551758044c3663fad0e"
38
41
  }