@zauso-ai/capstan-db 0.3.0 → 0.3.1
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/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts +12 -0
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +42 -0
- package/dist/migrate.js.map +1 -1
- package/package.json +1 -1
- package/dist/vector-store-memory.d.ts +0 -31
- package/dist/vector-store-memory.d.ts.map +0 -1
- package/dist/vector-store-memory.js +0 -125
- package/dist/vector-store-memory.js.map +0 -1
- package/dist/vector-store-pgvector.d.ts +0 -46
- package/dist/vector-store-pgvector.d.ts.map +0 -1
- package/dist/vector-store-pgvector.js +0 -215
- package/dist/vector-store-pgvector.js.map +0 -1
- package/dist/vector-store-sqlite.d.ts +0 -51
- package/dist/vector-store-sqlite.d.ts.map +0 -1
- package/dist/vector-store-sqlite.js +0 -203
- package/dist/vector-store-sqlite.js.map +0 -1
- package/dist/vector-store.d.ts +0 -79
- package/dist/vector-store.d.ts.map +0 -1
- package/dist/vector-store.js +0 -5
- package/dist/vector-store.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ export { defineModel, field, relation } from "./model.js";
|
|
|
2
2
|
export { generateDrizzleSchema } from "./schema.js";
|
|
3
3
|
export { createDatabase } from "./client.js";
|
|
4
4
|
export type { DatabaseInstance } from "./client.js";
|
|
5
|
-
export { planMigration, generateMigration, applyMigration, ensureTrackingTable, getAppliedMigrations, getMigrationStatus, applyTrackedMigrations, } from "./migrate.js";
|
|
6
|
-
export type { MigrationDbClient, MigrationIssue, MigrationIssueCode, MigrationOptions, MigrationPlan, MigrationStatus } from "./migrate.js";
|
|
5
|
+
export { planMigration, generateMigration, applyMigration, ensureTrackingTable, ensureTrackingTableAsync, getAppliedMigrations, getAppliedMigrationsAsync, getMigrationStatus, getMigrationStatusAsync, applyTrackedMigrations, applyTrackedMigrationsAsync, } from "./migrate.js";
|
|
6
|
+
export type { AsyncMigrationDbClient, MigrationDbClient, MigrationIssue, MigrationIssueCode, MigrationOptions, MigrationPlan, MigrationStatus } from "./migrate.js";
|
|
7
7
|
export { createDatabaseRuntime } from "./runtime.js";
|
|
8
8
|
export type { DatabaseRuntime, FindManyOptions, ModelRepository, QueryOrder, SqlMutationResult, SqlRuntimeAdapter } from "./runtime.js";
|
|
9
9
|
export { createCrudRepository, createCrudRuntime, generateCrudRoutes, pluralize } from "./crud.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpK,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxI,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { defineModel, field, relation } from "./model.js";
|
|
2
2
|
export { generateDrizzleSchema } from "./schema.js";
|
|
3
3
|
export { createDatabase } from "./client.js";
|
|
4
|
-
export { planMigration, generateMigration, applyMigration, ensureTrackingTable, getAppliedMigrations, getMigrationStatus, applyTrackedMigrations, } from "./migrate.js";
|
|
4
|
+
export { planMigration, generateMigration, applyMigration, ensureTrackingTable, ensureTrackingTableAsync, getAppliedMigrations, getAppliedMigrationsAsync, getMigrationStatus, getMigrationStatusAsync, applyTrackedMigrations, applyTrackedMigrationsAsync, } from "./migrate.js";
|
|
5
5
|
export { createDatabaseRuntime } from "./runtime.js";
|
|
6
6
|
export { createCrudRepository, createCrudRuntime, generateCrudRoutes, pluralize } from "./crud.js";
|
|
7
7
|
export { defineEmbedding, openaiEmbeddings } from "./embedding.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/migrate.d.ts
CHANGED
|
@@ -34,7 +34,14 @@ export interface MigrationDbClient {
|
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
export declare function ensureTrackingTable(client: MigrationDbClient, provider?: DbProvider): void;
|
|
37
|
+
export interface AsyncMigrationDbClient {
|
|
38
|
+
query: (sql: string, params?: unknown[]) => Promise<Array<Record<string, unknown>>>;
|
|
39
|
+
execute: (sql: string, params?: unknown[]) => Promise<unknown>;
|
|
40
|
+
transaction: <T>(fn: (client: AsyncMigrationDbClient) => Promise<T>) => Promise<T>;
|
|
41
|
+
}
|
|
42
|
+
export declare function ensureTrackingTableAsync(client: AsyncMigrationDbClient, provider?: DbProvider): Promise<void>;
|
|
37
43
|
export declare function getAppliedMigrations(client: MigrationDbClient): string[];
|
|
44
|
+
export declare function getAppliedMigrationsAsync(client: AsyncMigrationDbClient): Promise<string[]>;
|
|
38
45
|
export interface MigrationStatus {
|
|
39
46
|
applied: Array<{
|
|
40
47
|
name: string;
|
|
@@ -43,8 +50,13 @@ export interface MigrationStatus {
|
|
|
43
50
|
pending: string[];
|
|
44
51
|
}
|
|
45
52
|
export declare function getMigrationStatus(client: MigrationDbClient, allMigrationNames: string[], provider?: DbProvider): MigrationStatus;
|
|
53
|
+
export declare function getMigrationStatusAsync(client: AsyncMigrationDbClient, allMigrationNames: string[], provider?: DbProvider): Promise<MigrationStatus>;
|
|
46
54
|
export declare function applyTrackedMigrations(client: MigrationDbClient, migrations: Array<{
|
|
47
55
|
name: string;
|
|
48
56
|
sql: string;
|
|
49
57
|
}>, provider?: DbProvider): string[];
|
|
58
|
+
export declare function applyTrackedMigrationsAsync(client: AsyncMigrationDbClient, migrations: Array<{
|
|
59
|
+
name: string;
|
|
60
|
+
sql: string;
|
|
61
|
+
}>, provider?: DbProvider): Promise<string[]>;
|
|
50
62
|
//# sourceMappingURL=migrate.d.ts.map
|
package/dist/migrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAoC,eAAe,EAAE,MAAM,YAAY,CAAC;AAqIhG,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA2FD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,eAAe,EAAE,EAC7B,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE,UAAU,GAAG,gBAAgB,GACtC,aAAa,CA0If;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAAE,EAC7B,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE,UAAU,GAAG,gBAAgB,GACtC,MAAM,EAAE,CAYV;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAcpG;AA2BD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;QACxB,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;QACzC,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QACvC,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;KACxC,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,GAAE,UAAqB,GAAG,IAAI,CAEpG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAKxE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,QAAQ,GAAE,UAAqB,GAC9B,eAAe,CAajB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,QAAQ,GAAE,UAAqB,GAC9B,MAAM,EAAE,CAkCV"}
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/migrate.js
CHANGED
|
@@ -327,10 +327,20 @@ function createTrackingTableSQL(provider) {
|
|
|
327
327
|
export function ensureTrackingTable(client, provider = "sqlite") {
|
|
328
328
|
client.exec(createTrackingTableSQL(provider));
|
|
329
329
|
}
|
|
330
|
+
function trackingNamePlaceholder(provider) {
|
|
331
|
+
return provider === "postgres" ? "$1" : "?";
|
|
332
|
+
}
|
|
333
|
+
export async function ensureTrackingTableAsync(client, provider = "sqlite") {
|
|
334
|
+
await client.execute(createTrackingTableSQL(provider));
|
|
335
|
+
}
|
|
330
336
|
export function getAppliedMigrations(client) {
|
|
331
337
|
const rows = client.prepare("SELECT name FROM _capstan_migrations ORDER BY id ASC").all();
|
|
332
338
|
return rows.map((row) => row.name);
|
|
333
339
|
}
|
|
340
|
+
export async function getAppliedMigrationsAsync(client) {
|
|
341
|
+
const rows = await client.query("SELECT name FROM _capstan_migrations ORDER BY id ASC");
|
|
342
|
+
return rows.map((row) => String(row.name));
|
|
343
|
+
}
|
|
334
344
|
export function getMigrationStatus(client, allMigrationNames, provider = "sqlite") {
|
|
335
345
|
ensureTrackingTable(client, provider);
|
|
336
346
|
const rows = client.prepare("SELECT name, applied_at FROM _capstan_migrations ORDER BY id ASC").all();
|
|
@@ -340,6 +350,15 @@ export function getMigrationStatus(client, allMigrationNames, provider = "sqlite
|
|
|
340
350
|
pending: allMigrationNames.filter((name) => !appliedSet.has(name)),
|
|
341
351
|
};
|
|
342
352
|
}
|
|
353
|
+
export async function getMigrationStatusAsync(client, allMigrationNames, provider = "sqlite") {
|
|
354
|
+
await ensureTrackingTableAsync(client, provider);
|
|
355
|
+
const rows = await client.query("SELECT name, applied_at FROM _capstan_migrations ORDER BY id ASC");
|
|
356
|
+
const appliedSet = new Set(rows.map((row) => row.name));
|
|
357
|
+
return {
|
|
358
|
+
applied: rows.map((row) => ({ name: row.name, appliedAt: row.applied_at })),
|
|
359
|
+
pending: allMigrationNames.filter((name) => !appliedSet.has(name)),
|
|
360
|
+
};
|
|
361
|
+
}
|
|
343
362
|
export function applyTrackedMigrations(client, migrations, provider = "sqlite") {
|
|
344
363
|
ensureTrackingTable(client, provider);
|
|
345
364
|
const applied = getAppliedMigrations(client);
|
|
@@ -369,4 +388,27 @@ export function applyTrackedMigrations(client, migrations, provider = "sqlite")
|
|
|
369
388
|
}
|
|
370
389
|
return executed;
|
|
371
390
|
}
|
|
391
|
+
export async function applyTrackedMigrationsAsync(client, migrations, provider = "sqlite") {
|
|
392
|
+
await ensureTrackingTableAsync(client, provider);
|
|
393
|
+
const applied = await getAppliedMigrationsAsync(client);
|
|
394
|
+
const appliedSet = new Set(applied);
|
|
395
|
+
const pending = migrations.filter((migration) => !appliedSet.has(migration.name));
|
|
396
|
+
if (pending.length === 0)
|
|
397
|
+
return [];
|
|
398
|
+
const executed = [];
|
|
399
|
+
for (const migration of pending) {
|
|
400
|
+
const statements = migration.sql
|
|
401
|
+
.split(";")
|
|
402
|
+
.map((statement) => statement.trim())
|
|
403
|
+
.filter((statement) => statement.length > 0 && !statement.startsWith("--"));
|
|
404
|
+
await client.transaction(async (tx) => {
|
|
405
|
+
for (const stmt of statements) {
|
|
406
|
+
await tx.execute(stmt);
|
|
407
|
+
}
|
|
408
|
+
await tx.execute(`INSERT INTO _capstan_migrations (name) VALUES (${trackingNamePlaceholder(provider)})`, [migration.name]);
|
|
409
|
+
});
|
|
410
|
+
executed.push(migration.name);
|
|
411
|
+
}
|
|
412
|
+
return executed;
|
|
413
|
+
}
|
|
372
414
|
//# sourceMappingURL=migrate.js.map
|
package/dist/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { VectorFilter, VectorHybridSearchOptions, VectorSearchResult, VectorStore, VectorStoreConfig } from "./vector-store.js";
|
|
2
|
-
interface StoredEntry {
|
|
3
|
-
vector: number[];
|
|
4
|
-
metadata: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* In-memory vector store backed by a `Map`.
|
|
8
|
-
*
|
|
9
|
-
* This implementation wraps the same cosine-distance utilities that power the
|
|
10
|
-
* existing `findNearest` and `hybridSearch` exports so that behaviour is
|
|
11
|
-
* identical when running without a database.
|
|
12
|
-
*/
|
|
13
|
-
export declare class InMemoryVectorStore implements VectorStore {
|
|
14
|
-
/** @internal */
|
|
15
|
-
readonly _store: Map<string, StoredEntry>;
|
|
16
|
-
private readonly _dimensions;
|
|
17
|
-
constructor(config?: Partial<VectorStoreConfig>);
|
|
18
|
-
private _validateDimensions;
|
|
19
|
-
upsert(id: string, vector: number[], metadata?: Record<string, unknown>): Promise<void>;
|
|
20
|
-
upsertBatch(items: ReadonlyArray<{
|
|
21
|
-
id: string;
|
|
22
|
-
vector: number[];
|
|
23
|
-
metadata?: Record<string, unknown>;
|
|
24
|
-
}>): Promise<void>;
|
|
25
|
-
search(query: number[], k: number, filter?: VectorFilter): Promise<VectorSearchResult[]>;
|
|
26
|
-
hybridSearch(query: string, queryVector: number[], k: number, opts?: VectorHybridSearchOptions): Promise<VectorSearchResult[]>;
|
|
27
|
-
remove(id: string): Promise<boolean>;
|
|
28
|
-
count(): Promise<number>;
|
|
29
|
-
}
|
|
30
|
-
export {};
|
|
31
|
-
//# sourceMappingURL=vector-store-memory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store-memory.d.ts","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store-memory.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAqCD;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,gBAAgB;IAChB,QAAQ,CAAC,MAAM,2BAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAErC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAI/C,OAAO,CAAC,mBAAmB;IAWrB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvF,WAAW,CACf,KAAK,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GACzF,OAAO,CAAC,IAAI,CAAC;IASV,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAexF,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAAE,EACrB,CAAC,EAAE,MAAM,EACT,IAAI,CAAC,EAAE,yBAAyB,GAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAG/B"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// InMemoryVectorStore — brute-force in-memory vector search
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
//
|
|
5
|
-
// Suitable for development and small datasets (<10K vectors). All data lives
|
|
6
|
-
// in a plain Map and is lost when the process exits. Search is O(n) per
|
|
7
|
-
// query — acceptable for prototyping but not for production workloads.
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
import { cosineDistance } from "./search.js";
|
|
10
|
-
/** Simple whitespace tokeniser with lower-casing and deduplication. */
|
|
11
|
-
function tokenize(text) {
|
|
12
|
-
return [
|
|
13
|
-
...new Set(text
|
|
14
|
-
.toLowerCase()
|
|
15
|
-
.split(/\W+/)
|
|
16
|
-
.filter((t) => t.length > 0)),
|
|
17
|
-
];
|
|
18
|
-
}
|
|
19
|
-
/** Normalised keyword overlap score in [0, 1]. */
|
|
20
|
-
function keywordOverlap(queryTerms, text) {
|
|
21
|
-
if (queryTerms.length === 0)
|
|
22
|
-
return 0;
|
|
23
|
-
const docTokens = new Set(tokenize(text));
|
|
24
|
-
let hits = 0;
|
|
25
|
-
for (const term of queryTerms) {
|
|
26
|
-
if (docTokens.has(term))
|
|
27
|
-
hits++;
|
|
28
|
-
}
|
|
29
|
-
return hits / queryTerms.length;
|
|
30
|
-
}
|
|
31
|
-
function matchesFilter(metadata, filter) {
|
|
32
|
-
for (const [key, value] of Object.entries(filter)) {
|
|
33
|
-
const actual = metadata[key];
|
|
34
|
-
if (Array.isArray(value)) {
|
|
35
|
-
if (!value.includes(actual))
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
else if (actual !== value) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* In-memory vector store backed by a `Map`.
|
|
46
|
-
*
|
|
47
|
-
* This implementation wraps the same cosine-distance utilities that power the
|
|
48
|
-
* existing `findNearest` and `hybridSearch` exports so that behaviour is
|
|
49
|
-
* identical when running without a database.
|
|
50
|
-
*/
|
|
51
|
-
export class InMemoryVectorStore {
|
|
52
|
-
/** @internal */
|
|
53
|
-
_store = new Map();
|
|
54
|
-
_dimensions;
|
|
55
|
-
constructor(config) {
|
|
56
|
-
this._dimensions = config?.dimensions;
|
|
57
|
-
}
|
|
58
|
-
_validateDimensions(vector) {
|
|
59
|
-
if (vector.length === 0) {
|
|
60
|
-
throw new Error("Cannot store a zero-length vector.");
|
|
61
|
-
}
|
|
62
|
-
if (this._dimensions !== undefined && vector.length !== this._dimensions) {
|
|
63
|
-
throw new Error(`Dimension mismatch: expected ${this._dimensions}, got ${vector.length}.`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
async upsert(id, vector, metadata) {
|
|
67
|
-
this._validateDimensions(vector);
|
|
68
|
-
this._store.set(id, { vector, metadata: metadata ?? {} });
|
|
69
|
-
}
|
|
70
|
-
async upsertBatch(items) {
|
|
71
|
-
for (const item of items) {
|
|
72
|
-
this._validateDimensions(item.vector);
|
|
73
|
-
}
|
|
74
|
-
for (const item of items) {
|
|
75
|
-
this._store.set(item.id, { vector: item.vector, metadata: item.metadata ?? {} });
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async search(query, k, filter) {
|
|
79
|
-
if (query.length === 0)
|
|
80
|
-
return [];
|
|
81
|
-
const results = [];
|
|
82
|
-
for (const [id, entry] of this._store) {
|
|
83
|
-
if (filter && !matchesFilter(entry.metadata, filter))
|
|
84
|
-
continue;
|
|
85
|
-
if (entry.vector.length !== query.length)
|
|
86
|
-
continue;
|
|
87
|
-
const score = 1 - cosineDistance(query, entry.vector);
|
|
88
|
-
results.push({ id, score, metadata: entry.metadata });
|
|
89
|
-
}
|
|
90
|
-
results.sort((a, b) => b.score - a.score);
|
|
91
|
-
return results.slice(0, Math.max(0, k));
|
|
92
|
-
}
|
|
93
|
-
async hybridSearch(query, queryVector, k, opts) {
|
|
94
|
-
const keywordWeight = opts?.keywordWeight ?? 0.3;
|
|
95
|
-
const vectorWeight = opts?.vectorWeight ?? 0.7;
|
|
96
|
-
const queryTerms = tokenize(query);
|
|
97
|
-
if (queryTerms.length === 0 && queryVector.length === 0)
|
|
98
|
-
return [];
|
|
99
|
-
const results = [];
|
|
100
|
-
for (const [id, entry] of this._store) {
|
|
101
|
-
if (opts?.filter && !matchesFilter(entry.metadata, opts.filter))
|
|
102
|
-
continue;
|
|
103
|
-
const vectorScore = queryVector.length > 0 && entry.vector.length === queryVector.length
|
|
104
|
-
? 1 - cosineDistance(queryVector, entry.vector)
|
|
105
|
-
: 0;
|
|
106
|
-
// Use the "text" metadata field for keyword matching when available.
|
|
107
|
-
const text = typeof entry.metadata["text"] === "string" ? entry.metadata["text"] : "";
|
|
108
|
-
const kwScore = keywordOverlap(queryTerms, text);
|
|
109
|
-
results.push({
|
|
110
|
-
id,
|
|
111
|
-
score: vectorWeight * vectorScore + keywordWeight * kwScore,
|
|
112
|
-
metadata: entry.metadata,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
results.sort((a, b) => b.score - a.score);
|
|
116
|
-
return results.slice(0, Math.max(0, k));
|
|
117
|
-
}
|
|
118
|
-
async remove(id) {
|
|
119
|
-
return this._store.delete(id);
|
|
120
|
-
}
|
|
121
|
-
async count() {
|
|
122
|
-
return this._store.size;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=vector-store-memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store-memory.js","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { VectorFilter, VectorHybridSearchOptions, VectorSearchResult, VectorStore, VectorStoreConfig } from "./vector-store.js";
|
|
2
|
-
/** Minimal query interface accepted by the pgvector store. */
|
|
3
|
-
export interface PgQueryFn {
|
|
4
|
-
/** Execute a parameterised SQL statement and return rows. */
|
|
5
|
-
(sql: string, params?: unknown[]): Promise<Record<string, unknown>[]>;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* PostgreSQL vector store powered by the pgvector extension.
|
|
9
|
-
*
|
|
10
|
-
* The store creates a `capstan_vectors` table (configurable via
|
|
11
|
-
* `config.tableName`) and uses the `<=>` cosine distance operator for
|
|
12
|
-
* similarity search. The pgvector extension is created automatically on
|
|
13
|
-
* first use if the connected role has the required permissions.
|
|
14
|
-
*
|
|
15
|
-
* No pgvector npm package is required — all interaction happens through raw
|
|
16
|
-
* parameterised SQL.
|
|
17
|
-
*/
|
|
18
|
-
export declare class PgVectorStore implements VectorStore {
|
|
19
|
-
private readonly _query;
|
|
20
|
-
private readonly _table;
|
|
21
|
-
private readonly _dimensions;
|
|
22
|
-
private _initialised;
|
|
23
|
-
constructor(config: VectorStoreConfig & {
|
|
24
|
-
connection: PgQueryFn;
|
|
25
|
-
});
|
|
26
|
-
/** @internal */
|
|
27
|
-
_ensureSchema(): Promise<void>;
|
|
28
|
-
upsert(id: string, vector: number[], metadata?: Record<string, unknown>): Promise<void>;
|
|
29
|
-
upsertBatch(items: ReadonlyArray<{
|
|
30
|
-
id: string;
|
|
31
|
-
vector: number[];
|
|
32
|
-
metadata?: Record<string, unknown>;
|
|
33
|
-
}>): Promise<void>;
|
|
34
|
-
search(query: number[], k: number, filter?: VectorFilter): Promise<VectorSearchResult[]>;
|
|
35
|
-
hybridSearch(query: string, queryVector: number[], k: number, opts?: VectorHybridSearchOptions): Promise<VectorSearchResult[]>;
|
|
36
|
-
remove(id: string): Promise<boolean>;
|
|
37
|
-
count(): Promise<number>;
|
|
38
|
-
private _validateDimensions;
|
|
39
|
-
/** Format a number array as a pgvector literal `[1,2,3]`. */
|
|
40
|
-
private _vec;
|
|
41
|
-
/** Quote a SQL identifier to prevent injection. */
|
|
42
|
-
private _qi;
|
|
43
|
-
/** Build a WHERE clause from a VectorFilter, starting param indices at `startIdx`. */
|
|
44
|
-
private _buildFilterClause;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=vector-store-pgvector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store-pgvector.d.ts","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store-pgvector.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;CACvE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,iBAAiB,GAAG;QAAE,UAAU,EAAE,SAAS,CAAA;KAAE;IAgBjE,gBAAgB;IACV,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C9B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvF,WAAW,CACf,KAAK,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GACzF,OAAO,CAAC,IAAI,CAAC;IA6BV,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0BxF,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAAE,EACrB,CAAC,EAAE,MAAM,EACT,IAAI,CAAC,EAAE,yBAAyB,GAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAY9B,OAAO,CAAC,mBAAmB;IAW3B,6DAA6D;IAC7D,OAAO,CAAC,IAAI;IAIZ,mDAAmD;IACnD,OAAO,CAAC,GAAG;IAIX,sFAAsF;IACtF,OAAO,CAAC,kBAAkB;CA0B3B"}
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// PgVectorStore — PostgreSQL pgvector-backed vector search
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
//
|
|
5
|
-
// Uses raw SQL over a caller-supplied query function so there is no hard
|
|
6
|
-
// dependency on any specific PostgreSQL client library. The pgvector
|
|
7
|
-
// extension must be installed in the target database.
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
/**
|
|
10
|
-
* PostgreSQL vector store powered by the pgvector extension.
|
|
11
|
-
*
|
|
12
|
-
* The store creates a `capstan_vectors` table (configurable via
|
|
13
|
-
* `config.tableName`) and uses the `<=>` cosine distance operator for
|
|
14
|
-
* similarity search. The pgvector extension is created automatically on
|
|
15
|
-
* first use if the connected role has the required permissions.
|
|
16
|
-
*
|
|
17
|
-
* No pgvector npm package is required — all interaction happens through raw
|
|
18
|
-
* parameterised SQL.
|
|
19
|
-
*/
|
|
20
|
-
export class PgVectorStore {
|
|
21
|
-
_query;
|
|
22
|
-
_table;
|
|
23
|
-
_dimensions;
|
|
24
|
-
_initialised = false;
|
|
25
|
-
constructor(config) {
|
|
26
|
-
if (!config.connection) {
|
|
27
|
-
throw new Error("PgVectorStore requires a `connection` query function.");
|
|
28
|
-
}
|
|
29
|
-
if (!config.dimensions) {
|
|
30
|
-
throw new Error("PgVectorStore requires `dimensions` to be specified.");
|
|
31
|
-
}
|
|
32
|
-
this._query = config.connection;
|
|
33
|
-
this._table = config.tableName ?? "capstan_vectors";
|
|
34
|
-
this._dimensions = config.dimensions;
|
|
35
|
-
}
|
|
36
|
-
// -------------------------------------------------------------------------
|
|
37
|
-
// Schema bootstrap
|
|
38
|
-
// -------------------------------------------------------------------------
|
|
39
|
-
/** @internal */
|
|
40
|
-
async _ensureSchema() {
|
|
41
|
-
if (this._initialised)
|
|
42
|
-
return;
|
|
43
|
-
try {
|
|
44
|
-
await this._query("CREATE EXTENSION IF NOT EXISTS vector");
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
48
|
-
throw new Error(`pgvector extension not found. Run: CREATE EXTENSION vector;\n` +
|
|
49
|
-
`Underlying error: ${message}`);
|
|
50
|
-
}
|
|
51
|
-
const table = this._table;
|
|
52
|
-
const dim = this._dimensions;
|
|
53
|
-
await this._query(`
|
|
54
|
-
CREATE TABLE IF NOT EXISTS ${this._qi(table)} (
|
|
55
|
-
id TEXT PRIMARY KEY,
|
|
56
|
-
embedding vector(${dim}) NOT NULL,
|
|
57
|
-
content TEXT NOT NULL DEFAULT '',
|
|
58
|
-
metadata JSONB NOT NULL DEFAULT '{}'::jsonb
|
|
59
|
-
)
|
|
60
|
-
`);
|
|
61
|
-
// Create an IVFFlat index if it does not already exist. The index
|
|
62
|
-
// requires at least one row so we wrap in a DO block that is safe to
|
|
63
|
-
// re-run.
|
|
64
|
-
await this._query(`
|
|
65
|
-
CREATE INDEX IF NOT EXISTS ${this._qi(table + "_embedding_idx")}
|
|
66
|
-
ON ${this._qi(table)}
|
|
67
|
-
USING ivfflat (embedding vector_cosine_ops)
|
|
68
|
-
WITH (lists = 100)
|
|
69
|
-
`).catch(() => {
|
|
70
|
-
// Index creation can fail on an empty table — that is fine, it will
|
|
71
|
-
// be retried lazily on the next search.
|
|
72
|
-
});
|
|
73
|
-
this._initialised = true;
|
|
74
|
-
}
|
|
75
|
-
// -------------------------------------------------------------------------
|
|
76
|
-
// VectorStore implementation
|
|
77
|
-
// -------------------------------------------------------------------------
|
|
78
|
-
async upsert(id, vector, metadata) {
|
|
79
|
-
this._validateDimensions(vector);
|
|
80
|
-
await this._ensureSchema();
|
|
81
|
-
const text = typeof metadata?.["text"] === "string" ? metadata["text"] : "";
|
|
82
|
-
const metaJson = JSON.stringify(metadata ?? {});
|
|
83
|
-
await this._query(`INSERT INTO ${this._qi(this._table)} (id, embedding, content, metadata)
|
|
84
|
-
VALUES ($1, $2::vector, $3, $4::jsonb)
|
|
85
|
-
ON CONFLICT (id) DO UPDATE
|
|
86
|
-
SET embedding = EXCLUDED.embedding,
|
|
87
|
-
content = EXCLUDED.content,
|
|
88
|
-
metadata = EXCLUDED.metadata`, [id, this._vec(vector), text, metaJson]);
|
|
89
|
-
}
|
|
90
|
-
async upsertBatch(items) {
|
|
91
|
-
if (items.length === 0)
|
|
92
|
-
return;
|
|
93
|
-
for (const item of items)
|
|
94
|
-
this._validateDimensions(item.vector);
|
|
95
|
-
await this._ensureSchema();
|
|
96
|
-
// Batch upserts using a single multi-row INSERT .. ON CONFLICT.
|
|
97
|
-
const valueClauses = [];
|
|
98
|
-
const params = [];
|
|
99
|
-
let idx = 1;
|
|
100
|
-
for (const item of items) {
|
|
101
|
-
const text = typeof item.metadata?.["text"] === "string" ? item.metadata["text"] : "";
|
|
102
|
-
const metaJson = JSON.stringify(item.metadata ?? {});
|
|
103
|
-
valueClauses.push(`($${idx}, $${idx + 1}::vector, $${idx + 2}, $${idx + 3}::jsonb)`);
|
|
104
|
-
params.push(item.id, this._vec(item.vector), text, metaJson);
|
|
105
|
-
idx += 4;
|
|
106
|
-
}
|
|
107
|
-
await this._query(`INSERT INTO ${this._qi(this._table)} (id, embedding, content, metadata)
|
|
108
|
-
VALUES ${valueClauses.join(", ")}
|
|
109
|
-
ON CONFLICT (id) DO UPDATE
|
|
110
|
-
SET embedding = EXCLUDED.embedding,
|
|
111
|
-
content = EXCLUDED.content,
|
|
112
|
-
metadata = EXCLUDED.metadata`, params);
|
|
113
|
-
}
|
|
114
|
-
async search(query, k, filter) {
|
|
115
|
-
if (query.length === 0)
|
|
116
|
-
return [];
|
|
117
|
-
this._validateDimensions(query);
|
|
118
|
-
await this._ensureSchema();
|
|
119
|
-
const { clause, params, nextIndex } = this._buildFilterClause(filter, 2);
|
|
120
|
-
const rows = await this._query(`SELECT id, metadata, 1 - (embedding <=> $1::vector) AS score
|
|
121
|
-
FROM ${this._qi(this._table)}
|
|
122
|
-
${clause}
|
|
123
|
-
ORDER BY embedding <=> $1::vector
|
|
124
|
-
LIMIT $${nextIndex}`, [this._vec(query), ...params, Math.max(1, k)]);
|
|
125
|
-
return rows.map((row) => {
|
|
126
|
-
const meta = typeof row["metadata"] === "string"
|
|
127
|
-
? JSON.parse(row["metadata"])
|
|
128
|
-
: row["metadata"];
|
|
129
|
-
const result = { id: String(row["id"]), score: Number(row["score"]) };
|
|
130
|
-
if (meta !== undefined)
|
|
131
|
-
result.metadata = meta;
|
|
132
|
-
return result;
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
async hybridSearch(query, queryVector, k, opts) {
|
|
136
|
-
if (query.length === 0 && queryVector.length === 0)
|
|
137
|
-
return [];
|
|
138
|
-
if (queryVector.length > 0)
|
|
139
|
-
this._validateDimensions(queryVector);
|
|
140
|
-
await this._ensureSchema();
|
|
141
|
-
const vectorWeight = opts?.vectorWeight ?? 0.7;
|
|
142
|
-
const keywordWeight = opts?.keywordWeight ?? 0.3;
|
|
143
|
-
const { clause, params, nextIndex } = this._buildFilterClause(opts?.filter, 3);
|
|
144
|
-
let idx = nextIndex;
|
|
145
|
-
// Use ts_rank for text relevance combined with cosine similarity.
|
|
146
|
-
const rows = await this._query(`SELECT id, metadata,
|
|
147
|
-
${vectorWeight} * (1 - (embedding <=> $1::vector))
|
|
148
|
-
+ ${keywordWeight} * COALESCE(ts_rank(to_tsvector('simple', content), plainto_tsquery('simple', $2)), 0)
|
|
149
|
-
AS score
|
|
150
|
-
FROM ${this._qi(this._table)}
|
|
151
|
-
${clause}
|
|
152
|
-
ORDER BY score DESC
|
|
153
|
-
LIMIT $${idx}`, [this._vec(queryVector), query, ...params, Math.max(1, k)]);
|
|
154
|
-
return rows.map((row) => {
|
|
155
|
-
const meta = typeof row["metadata"] === "string"
|
|
156
|
-
? JSON.parse(row["metadata"])
|
|
157
|
-
: row["metadata"];
|
|
158
|
-
const result = { id: String(row["id"]), score: Number(row["score"]) };
|
|
159
|
-
if (meta !== undefined)
|
|
160
|
-
result.metadata = meta;
|
|
161
|
-
return result;
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
async remove(id) {
|
|
165
|
-
await this._ensureSchema();
|
|
166
|
-
const rows = await this._query(`DELETE FROM ${this._qi(this._table)} WHERE id = $1 RETURNING id`, [id]);
|
|
167
|
-
return rows.length > 0;
|
|
168
|
-
}
|
|
169
|
-
async count() {
|
|
170
|
-
await this._ensureSchema();
|
|
171
|
-
const rows = await this._query(`SELECT COUNT(*)::int AS count FROM ${this._qi(this._table)}`);
|
|
172
|
-
return Number(rows[0]?.["count"] ?? 0);
|
|
173
|
-
}
|
|
174
|
-
// -------------------------------------------------------------------------
|
|
175
|
-
// Internal helpers
|
|
176
|
-
// -------------------------------------------------------------------------
|
|
177
|
-
_validateDimensions(vector) {
|
|
178
|
-
if (vector.length === 0) {
|
|
179
|
-
throw new Error("Cannot store a zero-length vector.");
|
|
180
|
-
}
|
|
181
|
-
if (vector.length !== this._dimensions) {
|
|
182
|
-
throw new Error(`Dimension mismatch: expected ${this._dimensions}, got ${vector.length}.`);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/** Format a number array as a pgvector literal `[1,2,3]`. */
|
|
186
|
-
_vec(v) {
|
|
187
|
-
return `[${v.join(",")}]`;
|
|
188
|
-
}
|
|
189
|
-
/** Quote a SQL identifier to prevent injection. */
|
|
190
|
-
_qi(identifier) {
|
|
191
|
-
return `"${identifier.replace(/"/g, '""')}"`;
|
|
192
|
-
}
|
|
193
|
-
/** Build a WHERE clause from a VectorFilter, starting param indices at `startIdx`. */
|
|
194
|
-
_buildFilterClause(filter, startIdx) {
|
|
195
|
-
if (!filter || Object.keys(filter).length === 0) {
|
|
196
|
-
return { clause: "", params: [], nextIndex: startIdx };
|
|
197
|
-
}
|
|
198
|
-
const parts = [];
|
|
199
|
-
const params = [];
|
|
200
|
-
let idx = startIdx;
|
|
201
|
-
for (const [key, value] of Object.entries(filter)) {
|
|
202
|
-
// Use JSONB containment for metadata filtering.
|
|
203
|
-
const fragment = JSON.stringify({ [key]: value });
|
|
204
|
-
parts.push(`metadata @> $${idx}::jsonb`);
|
|
205
|
-
params.push(fragment);
|
|
206
|
-
idx++;
|
|
207
|
-
}
|
|
208
|
-
return {
|
|
209
|
-
clause: `WHERE ${parts.join(" AND ")}`,
|
|
210
|
-
params,
|
|
211
|
-
nextIndex: idx,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
//# sourceMappingURL=vector-store-pgvector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store-pgvector.js","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store-pgvector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type { VectorFilter, VectorHybridSearchOptions, VectorSearchResult, VectorStore, VectorStoreConfig } from "./vector-store.js";
|
|
2
|
-
/**
|
|
3
|
-
* Minimal interface for a `better-sqlite3` Database instance.
|
|
4
|
-
*
|
|
5
|
-
* We only declare the subset of the API we actually use so that callers are
|
|
6
|
-
* not forced to depend on `@types/better-sqlite3`.
|
|
7
|
-
*/
|
|
8
|
-
export interface SqliteConnection {
|
|
9
|
-
prepare(sql: string): {
|
|
10
|
-
run(...params: unknown[]): {
|
|
11
|
-
changes: number;
|
|
12
|
-
};
|
|
13
|
-
all(...params: unknown[]): Record<string, unknown>[];
|
|
14
|
-
get(...params: unknown[]): Record<string, unknown> | undefined;
|
|
15
|
-
};
|
|
16
|
-
exec(sql: string): void;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* SQLite vector store.
|
|
20
|
-
*
|
|
21
|
-
* Stores vectors as JSON text columns and loads them into memory for
|
|
22
|
-
* brute-force cosine search. The trade-off is durability with a simple
|
|
23
|
-
* dependency chain — no native extensions beyond `better-sqlite3`.
|
|
24
|
-
*/
|
|
25
|
-
export declare class SqliteVectorStore implements VectorStore {
|
|
26
|
-
private readonly _db;
|
|
27
|
-
private readonly _table;
|
|
28
|
-
private readonly _dimensions;
|
|
29
|
-
private _initialised;
|
|
30
|
-
constructor(config: VectorStoreConfig & {
|
|
31
|
-
connection: SqliteConnection;
|
|
32
|
-
});
|
|
33
|
-
/** @internal */
|
|
34
|
-
_ensureSchema(): void;
|
|
35
|
-
upsert(id: string, vector: number[], metadata?: Record<string, unknown>): Promise<void>;
|
|
36
|
-
upsertBatch(items: ReadonlyArray<{
|
|
37
|
-
id: string;
|
|
38
|
-
vector: number[];
|
|
39
|
-
metadata?: Record<string, unknown>;
|
|
40
|
-
}>): Promise<void>;
|
|
41
|
-
search(query: number[], k: number, filter?: VectorFilter): Promise<VectorSearchResult[]>;
|
|
42
|
-
hybridSearch(query: string, queryVector: number[], k: number, opts?: VectorHybridSearchOptions): Promise<VectorSearchResult[]>;
|
|
43
|
-
remove(id: string): Promise<boolean>;
|
|
44
|
-
count(): Promise<number>;
|
|
45
|
-
private _validateDimensions;
|
|
46
|
-
/** Load all stored rows, parsing JSON columns. */
|
|
47
|
-
private _loadAll;
|
|
48
|
-
/** Escape a SQL identifier (double-quote style). */
|
|
49
|
-
private _esc;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=vector-store-sqlite.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store-sqlite.d.ts","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store-sqlite.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QACpB,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAChE,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA2CD;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,iBAAiB,GAAG;QAAE,UAAU,EAAE,gBAAgB,CAAA;KAAE;IAaxE,gBAAgB;IAChB,aAAa,IAAI,IAAI;IAiBf,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBvF,WAAW,CACf,KAAK,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GACzF,OAAO,CAAC,IAAI,CAAC;IAqBV,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkBxF,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAAE,EACrB,CAAC,EAAE,MAAM,EACT,IAAI,CAAC,EAAE,yBAAyB,GAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAY9B,OAAO,CAAC,mBAAmB;IAW3B,kDAAkD;IAClD,OAAO,CAAC,QAAQ;IAahB,oDAAoD;IACpD,OAAO,CAAC,IAAI;CAGb"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// SqliteVectorStore — SQLite-backed vector search with JSON array storage
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
//
|
|
5
|
-
// Vectors are persisted as JSON arrays in a `capstan_vectors` table. On
|
|
6
|
-
// search, all matching rows are loaded into memory and scored with the same
|
|
7
|
-
// cosine-distance function used by the in-memory store. This gives durable
|
|
8
|
-
// storage without requiring pgvector, at the cost of O(n) scan time.
|
|
9
|
-
//
|
|
10
|
-
// Suitable for moderate datasets where PostgreSQL is overkill but persistence
|
|
11
|
-
// across restarts is desired.
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
import { cosineDistance } from "./search.js";
|
|
14
|
-
/** Simple whitespace tokeniser with lower-casing and deduplication. */
|
|
15
|
-
function tokenize(text) {
|
|
16
|
-
return [
|
|
17
|
-
...new Set(text
|
|
18
|
-
.toLowerCase()
|
|
19
|
-
.split(/\W+/)
|
|
20
|
-
.filter((t) => t.length > 0)),
|
|
21
|
-
];
|
|
22
|
-
}
|
|
23
|
-
function keywordOverlap(queryTerms, text) {
|
|
24
|
-
if (queryTerms.length === 0)
|
|
25
|
-
return 0;
|
|
26
|
-
const docTokens = new Set(tokenize(text));
|
|
27
|
-
let hits = 0;
|
|
28
|
-
for (const term of queryTerms) {
|
|
29
|
-
if (docTokens.has(term))
|
|
30
|
-
hits++;
|
|
31
|
-
}
|
|
32
|
-
return hits / queryTerms.length;
|
|
33
|
-
}
|
|
34
|
-
function matchesFilter(metadata, filter) {
|
|
35
|
-
for (const [key, value] of Object.entries(filter)) {
|
|
36
|
-
const actual = metadata[key];
|
|
37
|
-
if (Array.isArray(value)) {
|
|
38
|
-
if (!value.includes(actual))
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
else if (actual !== value) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* SQLite vector store.
|
|
49
|
-
*
|
|
50
|
-
* Stores vectors as JSON text columns and loads them into memory for
|
|
51
|
-
* brute-force cosine search. The trade-off is durability with a simple
|
|
52
|
-
* dependency chain — no native extensions beyond `better-sqlite3`.
|
|
53
|
-
*/
|
|
54
|
-
export class SqliteVectorStore {
|
|
55
|
-
_db;
|
|
56
|
-
_table;
|
|
57
|
-
_dimensions;
|
|
58
|
-
_initialised = false;
|
|
59
|
-
constructor(config) {
|
|
60
|
-
if (!config.connection) {
|
|
61
|
-
throw new Error("SqliteVectorStore requires a `connection` (better-sqlite3 Database instance).");
|
|
62
|
-
}
|
|
63
|
-
this._db = config.connection;
|
|
64
|
-
this._table = config.tableName ?? "capstan_vectors";
|
|
65
|
-
this._dimensions = config.dimensions;
|
|
66
|
-
}
|
|
67
|
-
// -------------------------------------------------------------------------
|
|
68
|
-
// Schema bootstrap
|
|
69
|
-
// -------------------------------------------------------------------------
|
|
70
|
-
/** @internal */
|
|
71
|
-
_ensureSchema() {
|
|
72
|
-
if (this._initialised)
|
|
73
|
-
return;
|
|
74
|
-
this._db.exec(`
|
|
75
|
-
CREATE TABLE IF NOT EXISTS "${this._esc(this._table)}" (
|
|
76
|
-
id TEXT PRIMARY KEY,
|
|
77
|
-
embedding TEXT NOT NULL,
|
|
78
|
-
content TEXT NOT NULL DEFAULT '',
|
|
79
|
-
metadata TEXT NOT NULL DEFAULT '{}'
|
|
80
|
-
)
|
|
81
|
-
`);
|
|
82
|
-
this._initialised = true;
|
|
83
|
-
}
|
|
84
|
-
// -------------------------------------------------------------------------
|
|
85
|
-
// VectorStore implementation
|
|
86
|
-
// -------------------------------------------------------------------------
|
|
87
|
-
async upsert(id, vector, metadata) {
|
|
88
|
-
this._validateDimensions(vector);
|
|
89
|
-
this._ensureSchema();
|
|
90
|
-
const text = typeof metadata?.["text"] === "string" ? metadata["text"] : "";
|
|
91
|
-
const metaJson = JSON.stringify(metadata ?? {});
|
|
92
|
-
this._db
|
|
93
|
-
.prepare(`INSERT INTO "${this._esc(this._table)}" (id, embedding, content, metadata)
|
|
94
|
-
VALUES (?, ?, ?, ?)
|
|
95
|
-
ON CONFLICT(id) DO UPDATE
|
|
96
|
-
SET embedding = excluded.embedding,
|
|
97
|
-
content = excluded.content,
|
|
98
|
-
metadata = excluded.metadata`)
|
|
99
|
-
.run(id, JSON.stringify(vector), text, metaJson);
|
|
100
|
-
}
|
|
101
|
-
async upsertBatch(items) {
|
|
102
|
-
if (items.length === 0)
|
|
103
|
-
return;
|
|
104
|
-
for (const item of items)
|
|
105
|
-
this._validateDimensions(item.vector);
|
|
106
|
-
this._ensureSchema();
|
|
107
|
-
const stmt = this._db.prepare(`INSERT INTO "${this._esc(this._table)}" (id, embedding, content, metadata)
|
|
108
|
-
VALUES (?, ?, ?, ?)
|
|
109
|
-
ON CONFLICT(id) DO UPDATE
|
|
110
|
-
SET embedding = excluded.embedding,
|
|
111
|
-
content = excluded.content,
|
|
112
|
-
metadata = excluded.metadata`);
|
|
113
|
-
for (const item of items) {
|
|
114
|
-
const text = typeof item.metadata?.["text"] === "string" ? item.metadata["text"] : "";
|
|
115
|
-
const metaJson = JSON.stringify(item.metadata ?? {});
|
|
116
|
-
stmt.run(item.id, JSON.stringify(item.vector), text, metaJson);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async search(query, k, filter) {
|
|
120
|
-
if (query.length === 0)
|
|
121
|
-
return [];
|
|
122
|
-
this._ensureSchema();
|
|
123
|
-
const rows = this._loadAll();
|
|
124
|
-
const results = [];
|
|
125
|
-
for (const row of rows) {
|
|
126
|
-
if (filter && !matchesFilter(row.metadata, filter))
|
|
127
|
-
continue;
|
|
128
|
-
if (row.vector.length !== query.length)
|
|
129
|
-
continue;
|
|
130
|
-
const score = 1 - cosineDistance(query, row.vector);
|
|
131
|
-
results.push({ id: row.id, score, metadata: row.metadata });
|
|
132
|
-
}
|
|
133
|
-
results.sort((a, b) => b.score - a.score);
|
|
134
|
-
return results.slice(0, Math.max(0, k));
|
|
135
|
-
}
|
|
136
|
-
async hybridSearch(query, queryVector, k, opts) {
|
|
137
|
-
const vectorWeight = opts?.vectorWeight ?? 0.7;
|
|
138
|
-
const keywordWeight = opts?.keywordWeight ?? 0.3;
|
|
139
|
-
const queryTerms = tokenize(query);
|
|
140
|
-
if (queryTerms.length === 0 && queryVector.length === 0)
|
|
141
|
-
return [];
|
|
142
|
-
this._ensureSchema();
|
|
143
|
-
const rows = this._loadAll();
|
|
144
|
-
const results = [];
|
|
145
|
-
for (const row of rows) {
|
|
146
|
-
if (opts?.filter && !matchesFilter(row.metadata, opts.filter))
|
|
147
|
-
continue;
|
|
148
|
-
const vectorScore = queryVector.length > 0 && row.vector.length === queryVector.length
|
|
149
|
-
? 1 - cosineDistance(queryVector, row.vector)
|
|
150
|
-
: 0;
|
|
151
|
-
const kwScore = keywordOverlap(queryTerms, row.content);
|
|
152
|
-
results.push({
|
|
153
|
-
id: row.id,
|
|
154
|
-
score: vectorWeight * vectorScore + keywordWeight * kwScore,
|
|
155
|
-
metadata: row.metadata,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
results.sort((a, b) => b.score - a.score);
|
|
159
|
-
return results.slice(0, Math.max(0, k));
|
|
160
|
-
}
|
|
161
|
-
async remove(id) {
|
|
162
|
-
this._ensureSchema();
|
|
163
|
-
const result = this._db
|
|
164
|
-
.prepare(`DELETE FROM "${this._esc(this._table)}" WHERE id = ?`)
|
|
165
|
-
.run(id);
|
|
166
|
-
return result.changes > 0;
|
|
167
|
-
}
|
|
168
|
-
async count() {
|
|
169
|
-
this._ensureSchema();
|
|
170
|
-
const row = this._db
|
|
171
|
-
.prepare(`SELECT COUNT(*) AS count FROM "${this._esc(this._table)}"`)
|
|
172
|
-
.get();
|
|
173
|
-
return Number(row?.["count"] ?? 0);
|
|
174
|
-
}
|
|
175
|
-
// -------------------------------------------------------------------------
|
|
176
|
-
// Internal helpers
|
|
177
|
-
// -------------------------------------------------------------------------
|
|
178
|
-
_validateDimensions(vector) {
|
|
179
|
-
if (vector.length === 0) {
|
|
180
|
-
throw new Error("Cannot store a zero-length vector.");
|
|
181
|
-
}
|
|
182
|
-
if (this._dimensions !== undefined && vector.length !== this._dimensions) {
|
|
183
|
-
throw new Error(`Dimension mismatch: expected ${this._dimensions}, got ${vector.length}.`);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/** Load all stored rows, parsing JSON columns. */
|
|
187
|
-
_loadAll() {
|
|
188
|
-
const rawRows = this._db
|
|
189
|
-
.prepare(`SELECT id, embedding, content, metadata FROM "${this._esc(this._table)}"`)
|
|
190
|
-
.all();
|
|
191
|
-
return rawRows.map((row) => ({
|
|
192
|
-
id: String(row["id"]),
|
|
193
|
-
vector: JSON.parse(String(row["embedding"])),
|
|
194
|
-
content: String(row["content"] ?? ""),
|
|
195
|
-
metadata: JSON.parse(String(row["metadata"] ?? "{}")),
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
/** Escape a SQL identifier (double-quote style). */
|
|
199
|
-
_esc(identifier) {
|
|
200
|
-
return identifier.replace(/"/g, '""');
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=vector-store-sqlite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store-sqlite.js","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store-sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/vector-store.d.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Filter condition for vector search. Each key is a metadata field name and
|
|
3
|
-
* the value is either a literal (exact match) or an array of allowed values.
|
|
4
|
-
*/
|
|
5
|
-
export type VectorFilter = Record<string, unknown>;
|
|
6
|
-
/** A single result returned from a vector search operation. */
|
|
7
|
-
export interface VectorSearchResult {
|
|
8
|
-
/** Identifier of the stored vector. */
|
|
9
|
-
id: string;
|
|
10
|
-
/** Similarity score in [0, 1] where 1 is identical. */
|
|
11
|
-
score: number;
|
|
12
|
-
/** Metadata that was stored alongside the vector. */
|
|
13
|
-
metadata?: Record<string, unknown>;
|
|
14
|
-
}
|
|
15
|
-
/** Options for hybrid (keyword + vector) search. */
|
|
16
|
-
export interface VectorHybridSearchOptions {
|
|
17
|
-
/** Weight for the keyword component (0-1). @default 0.3 */
|
|
18
|
-
keywordWeight?: number;
|
|
19
|
-
/** Weight for the vector component (0-1). @default 0.7 */
|
|
20
|
-
vectorWeight?: number;
|
|
21
|
-
/** Optional metadata filter applied before scoring. */
|
|
22
|
-
filter?: VectorFilter;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Pluggable vector storage and similarity search backend.
|
|
26
|
-
*
|
|
27
|
-
* Implementations range from a simple in-memory map (development) through
|
|
28
|
-
* SQLite-backed persistence up to full pgvector-powered ANN search.
|
|
29
|
-
*/
|
|
30
|
-
export interface VectorStore {
|
|
31
|
-
/** Insert or update a vector with its ID and optional metadata. */
|
|
32
|
-
upsert(id: string, vector: number[], metadata?: Record<string, unknown>): Promise<void>;
|
|
33
|
-
/** Batch upsert for efficiency. */
|
|
34
|
-
upsertBatch(items: ReadonlyArray<{
|
|
35
|
-
id: string;
|
|
36
|
-
vector: number[];
|
|
37
|
-
metadata?: Record<string, unknown>;
|
|
38
|
-
}>): Promise<void>;
|
|
39
|
-
/** Find k nearest neighbours by vector similarity. */
|
|
40
|
-
search(query: number[], k: number, filter?: VectorFilter): Promise<VectorSearchResult[]>;
|
|
41
|
-
/**
|
|
42
|
-
* Hybrid search combining vector similarity with keyword text matching.
|
|
43
|
-
*
|
|
44
|
-
* The `query` string is used for keyword scoring while `queryVector` drives
|
|
45
|
-
* the vector similarity component.
|
|
46
|
-
*/
|
|
47
|
-
hybridSearch(query: string, queryVector: number[], k: number, opts?: VectorHybridSearchOptions): Promise<VectorSearchResult[]>;
|
|
48
|
-
/** Remove a vector by ID. Returns `true` if the entry existed. */
|
|
49
|
-
remove(id: string): Promise<boolean>;
|
|
50
|
-
/** Return the number of stored vectors. */
|
|
51
|
-
count(): Promise<number>;
|
|
52
|
-
}
|
|
53
|
-
/** Configuration accepted by the {@link createVectorStore} factory. */
|
|
54
|
-
export interface VectorStoreConfig {
|
|
55
|
-
/** Backend provider to use. */
|
|
56
|
-
provider: "memory" | "pgvector" | "sqlite";
|
|
57
|
-
/**
|
|
58
|
-
* Number of dimensions each vector contains. Required for pgvector so that
|
|
59
|
-
* the column can be sized correctly; optional for memory and SQLite stores.
|
|
60
|
-
*/
|
|
61
|
-
dimensions?: number;
|
|
62
|
-
/**
|
|
63
|
-
* Name of the database table used for persistence.
|
|
64
|
-
* @default "capstan_vectors"
|
|
65
|
-
*/
|
|
66
|
-
tableName?: string;
|
|
67
|
-
/**
|
|
68
|
-
* A raw query function used by the pgvector and SQLite adapters.
|
|
69
|
-
*
|
|
70
|
-
* For pgvector this should be a function that accepts a parameterised SQL
|
|
71
|
-
* string with `$1`, `$2`, etc. placeholders and returns an array of row
|
|
72
|
-
* objects.
|
|
73
|
-
*
|
|
74
|
-
* For SQLite this should be a synchronous `better-sqlite3` `Database`
|
|
75
|
-
* instance (it will be accessed via `.prepare().all()` / `.run()`).
|
|
76
|
-
*/
|
|
77
|
-
connection?: unknown;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=vector-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,oDAAoD;AACpD,MAAM,WAAW,yBAAyB;IACxC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExF,mCAAmC;IACnC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvH,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEzF;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE/H,mEAAmE;IACnE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC,2CAA2C;IAC3C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAE3C;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
package/dist/vector-store.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// VectorStore — adapter interface for pluggable vector search backends
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
export {};
|
|
5
|
-
//# sourceMappingURL=vector-store.js.map
|
package/dist/vector-store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../../.claude/worktrees/agent-a1ae6f0b/packages/db/src/vector-store.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E"}
|