@workglow/storage 0.0.115 → 0.0.116
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/browser.js +224 -1
- package/dist/browser.js.map +9 -4
- package/dist/bun.js +620 -7
- package/dist/bun.js.map +11 -5
- package/dist/common-server.d.ts +1 -0
- package/dist/common-server.d.ts.map +1 -1
- package/dist/common.d.ts +5 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/kv/TelemetryKvStorage.d.ts +36 -0
- package/dist/kv/TelemetryKvStorage.d.ts.map +1 -0
- package/dist/node.js +621 -7
- package/dist/node.js.map +11 -5
- package/dist/queue/TelemetryQueueStorage.d.ts +31 -0
- package/dist/queue/TelemetryQueueStorage.d.ts.map +1 -0
- package/dist/tabular/SqliteTabularStorage.d.ts +2 -0
- package/dist/tabular/SqliteTabularStorage.d.ts.map +1 -1
- package/dist/tabular/TelemetryTabularStorage.d.ts +39 -0
- package/dist/tabular/TelemetryTabularStorage.d.ts.map +1 -0
- package/dist/util/traced.d.ts +10 -0
- package/dist/util/traced.d.ts.map +1 -0
- package/dist/vector/IVectorStorage.d.ts +2 -2
- package/dist/vector/IVectorStorage.d.ts.map +1 -1
- package/dist/vector/SqliteAiVectorStorage.d.ts +106 -0
- package/dist/vector/SqliteAiVectorStorage.d.ts.map +1 -0
- package/dist/vector/TelemetryVectorStorage.d.ts +25 -0
- package/dist/vector/TelemetryVectorStorage.d.ts.map +1 -0
- package/package.json +10 -6
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { IQueueStorage, JobStatus, JobStorageFormat, QueueChangePayload, QueueSubscribeOptions } from "./IQueueStorage";
|
|
7
|
+
/**
|
|
8
|
+
* Telemetry wrapper for any IQueueStorage implementation.
|
|
9
|
+
* Creates spans for all queue storage operations.
|
|
10
|
+
*/
|
|
11
|
+
export declare class TelemetryQueueStorage<Input, Output> implements IQueueStorage<Input, Output> {
|
|
12
|
+
private readonly storageName;
|
|
13
|
+
private readonly inner;
|
|
14
|
+
constructor(storageName: string, inner: IQueueStorage<Input, Output>);
|
|
15
|
+
add(job: JobStorageFormat<Input, Output>): Promise<unknown>;
|
|
16
|
+
get(id: unknown): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
17
|
+
next(workerId: string): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
18
|
+
peek(status?: JobStatus, num?: number): Promise<Array<JobStorageFormat<Input, Output>>>;
|
|
19
|
+
size(status?: JobStatus): Promise<number>;
|
|
20
|
+
complete(job: JobStorageFormat<Input, Output>): Promise<void>;
|
|
21
|
+
deleteAll(): Promise<void>;
|
|
22
|
+
outputForInput(input: Input): Promise<Output | null>;
|
|
23
|
+
abort(id: unknown): Promise<void>;
|
|
24
|
+
getByRunId(runId: string): Promise<Array<JobStorageFormat<Input, Output>>>;
|
|
25
|
+
saveProgress(id: unknown, progress: number, message: string, details: Record<string, any> | null): Promise<void>;
|
|
26
|
+
delete(id: unknown): Promise<void>;
|
|
27
|
+
deleteJobsByStatusAndAge(status: JobStatus, olderThanMs: number): Promise<void>;
|
|
28
|
+
setupDatabase(): Promise<void>;
|
|
29
|
+
subscribeToChanges(callback: (change: QueueChangePayload<Input, Output>) => void, options?: QueueSubscribeOptions): () => void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=TelemetryQueueStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryQueueStorage.d.ts","sourceRoot":"","sources":["../../src/queue/TelemetryQueueStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,qBAAa,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAE,YAAW,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;IAErF,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;IAGtD,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAG3D,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAGtE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAG5E,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAKvF,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAGzC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKpD,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAGjC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAK1E,YAAY,CACV,EAAE,EAAE,OAAO,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAClC,OAAO,CAAC,IAAI,CAAC;IAKhB,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAGlC,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/E,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAG9B,kBAAkB,CAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAC7D,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,IAAI;CAGd"}
|
|
@@ -17,6 +17,8 @@ export declare const SQLITE_TABULAR_REPOSITORY: import("@workglow/util").Service
|
|
|
17
17
|
export declare class SqliteTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>, InsertType extends InsertEntity<Entity, AutoGeneratedKeys<Schema>> = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends BaseSqlTabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, Value, InsertType> {
|
|
18
18
|
/** The SQLite database instance */
|
|
19
19
|
private db;
|
|
20
|
+
/** Protected accessor for subclasses that need direct database access */
|
|
21
|
+
protected get database(): Sqlite.Database;
|
|
20
22
|
/**
|
|
21
23
|
* Creates a new SQLite key-value repository
|
|
22
24
|
* @param dbOrPath - Either a Database instance or a path to the SQLite database file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/SqliteTabularStorage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SqliteTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/SqliteTabularStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { DataPortSchemaObject, FromSchema, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
+
import type { AutoGeneratedKeys, DeleteSearchCriteria, InsertEntity, ITabularStorage, QueryOptions, SearchCriteria, SimplifyPrimaryKey, TabularChangePayload, TabularEventListener, TabularEventName, TabularEventParameters, TabularSubscribeOptions } from "./ITabularStorage";
|
|
8
|
+
/**
|
|
9
|
+
* Telemetry wrapper for any ITabularStorage implementation.
|
|
10
|
+
* Creates spans for all storage operations.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TelemetryTabularStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, InsertType = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> implements ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, InsertType> {
|
|
13
|
+
protected readonly storageName: string;
|
|
14
|
+
protected readonly inner: ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, InsertType>;
|
|
15
|
+
constructor(storageName: string, inner: ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, InsertType>);
|
|
16
|
+
put(value: InsertType): Promise<Entity>;
|
|
17
|
+
putBulk(values: InsertType[]): Promise<Entity[]>;
|
|
18
|
+
get(key: PrimaryKey): Promise<Entity | undefined>;
|
|
19
|
+
delete(key: PrimaryKey | Entity): Promise<void>;
|
|
20
|
+
getAll(options?: QueryOptions<Entity>): Promise<Entity[] | undefined>;
|
|
21
|
+
deleteAll(): Promise<void>;
|
|
22
|
+
size(): Promise<number>;
|
|
23
|
+
deleteSearch(criteria: DeleteSearchCriteria<Entity>): Promise<void>;
|
|
24
|
+
getBulk(offset: number, limit: number): Promise<Entity[] | undefined>;
|
|
25
|
+
query(criteria: SearchCriteria<Entity>, options?: QueryOptions<Entity>): Promise<Entity[] | undefined>;
|
|
26
|
+
records(pageSize?: number): AsyncGenerator<Entity, void, undefined>;
|
|
27
|
+
pages(pageSize?: number): AsyncGenerator<Entity[], void, undefined>;
|
|
28
|
+
subscribeToChanges(callback: (change: TabularChangePayload<Entity>) => void, options?: TabularSubscribeOptions): () => void;
|
|
29
|
+
setupDatabase(): Promise<void>;
|
|
30
|
+
destroy(): void;
|
|
31
|
+
[Symbol.dispose](): void;
|
|
32
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
33
|
+
on<Event extends TabularEventName>(name: Event, fn: TabularEventListener<Event, PrimaryKey, Entity>): void;
|
|
34
|
+
off<Event extends TabularEventName>(name: Event, fn: TabularEventListener<Event, PrimaryKey, Entity>): void;
|
|
35
|
+
emit<Event extends TabularEventName>(name: Event, ...args: TabularEventParameters<Event, PrimaryKey, Entity>): void;
|
|
36
|
+
once<Event extends TabularEventName>(name: Event, fn: TabularEventListener<Event, PrimaryKey, Entity>): void;
|
|
37
|
+
waitOn<Event extends TabularEventName>(name: Event): Promise<TabularEventParameters<Event, PrimaryKey, Entity>>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=TelemetryTabularStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryTabularStorage.d.ts","sourceRoot":"","sources":["../../src/tabular/TelemetryTabularStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Executes an async function within a telemetry span.
|
|
8
|
+
*/
|
|
9
|
+
export declare function traced<T>(spanName: string, storageName: string, fn: () => Promise<T>): Promise<T>;
|
|
10
|
+
//# sourceMappingURL=traced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traced.d.ts","sourceRoot":"","sources":["../../src/util/traced.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { DataPortSchemaObject, EventParameters, FromSchema, TypedArray, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
-
import type { ITabularStorage, TabularEventListeners } from "../tabular/ITabularStorage";
|
|
7
|
+
import type { AutoGeneratedKeys, InsertEntity, ITabularStorage, SimplifyPrimaryKey, TabularEventListeners } from "../tabular/ITabularStorage";
|
|
8
8
|
export type AnyVectorStorage = IVectorStorage<any, any, any, any>;
|
|
9
9
|
/**
|
|
10
10
|
* Options for vector search operations
|
|
@@ -46,7 +46,7 @@ export type VectorEventParameters<Event extends VectorEventName, PrimaryKey, Ent
|
|
|
46
46
|
* @typeParam PrimaryKeyNames - Array of property names that form the primary key
|
|
47
47
|
* @typeParam Entity - The entity type
|
|
48
48
|
*/
|
|
49
|
-
export interface IVectorStorage<Metadata extends Record<string, unknown> | undefined, Schema extends DataPortSchemaObject, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]> = ReadonlyArray<keyof Schema["properties"]
|
|
49
|
+
export interface IVectorStorage<Metadata extends Record<string, unknown> | undefined, Schema extends DataPortSchemaObject, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]> = ReadonlyArray<keyof Schema["properties"]>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, InsertType = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends ITabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, InsertType> {
|
|
50
50
|
/**
|
|
51
51
|
* Get the vector dimension
|
|
52
52
|
* @returns The vector dimension
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IVectorStorage.d.ts","sourceRoot":"","sources":["../../src/vector/IVectorStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,UAAU,EAEV,UAAU,EACV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"IVectorStorage.d.ts","sourceRoot":"","sources":["../../src/vector/IVectorStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Sqlite } from "@workglow/sqlite";
|
|
7
|
+
import type { DataPortSchemaObject, FromSchema, TypedArray, TypedArraySchemaOptions } from "@workglow/util";
|
|
8
|
+
import { SqliteTabularStorage } from "../tabular/SqliteTabularStorage";
|
|
9
|
+
import { type HybridSearchOptions, type IVectorStorage, type VectorSearchOptions } from "./IVectorStorage";
|
|
10
|
+
/**
|
|
11
|
+
* SQLite vector storage implementation using the @sqliteai/sqlite-vector extension.
|
|
12
|
+
* Provides native vector similarity search via SQLite virtual table functions
|
|
13
|
+
* instead of in-memory brute-force search.
|
|
14
|
+
*
|
|
15
|
+
* Requirements:
|
|
16
|
+
* - @sqliteai/sqlite-vector package installed
|
|
17
|
+
* - Extension loaded via db.loadExtension(getExtensionPath())
|
|
18
|
+
*
|
|
19
|
+
* Vectors are stored as BLOBs using sqlite-vector encoding functions (vector_as_f32, etc.)
|
|
20
|
+
* and searched using vector_full_scan for efficient KNN queries.
|
|
21
|
+
*
|
|
22
|
+
* @template Schema - The schema for the vector storage
|
|
23
|
+
* @template PrimaryKeyNames - The primary key names
|
|
24
|
+
* @template Vector - The vector type (default Float32Array)
|
|
25
|
+
* @template Metadata - The metadata type
|
|
26
|
+
*/
|
|
27
|
+
export declare class SqliteAiVectorStorage<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Vector extends TypedArray = Float32Array, Metadata extends Record<string, unknown> | undefined = Record<string, unknown>, Entity = FromSchema<Schema, TypedArraySchemaOptions>> extends SqliteTabularStorage<Schema, PrimaryKeyNames, Entity> implements IVectorStorage<Metadata, Schema, Entity, PrimaryKeyNames> {
|
|
28
|
+
private vectorDimensions;
|
|
29
|
+
private VectorType;
|
|
30
|
+
private vectorPropertyName;
|
|
31
|
+
private metadataPropertyName;
|
|
32
|
+
private vectorTypeSuffix;
|
|
33
|
+
private extensionLoaded;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new SQLite AI vector storage
|
|
36
|
+
* @param dbOrPath - Either a Database instance or a path to the SQLite database file
|
|
37
|
+
* @param table - The name of the table to use for storage
|
|
38
|
+
* @param schema - The schema for the entity
|
|
39
|
+
* @param primaryKeyNames - Array of property names forming the primary key
|
|
40
|
+
* @param indexes - Array of columns to index
|
|
41
|
+
* @param dimensions - The number of dimensions of the vector
|
|
42
|
+
* @param VectorType - The type of vector to use (defaults to Float32Array)
|
|
43
|
+
*/
|
|
44
|
+
constructor(dbOrPath: string | Sqlite.Database, table: string | undefined, schema: Schema, primaryKeyNames: PrimaryKeyNames, indexes: readonly (keyof Entity | readonly (keyof Entity)[])[] | undefined, dimensions: number, VectorType?: new (array: number[]) => TypedArray);
|
|
45
|
+
getVectorDimensions(): number;
|
|
46
|
+
/**
|
|
47
|
+
* Load the sqlite-vector extension and initialize vector indexing on the vector column.
|
|
48
|
+
* Extension loading is best-effort: if unavailable, operations fall back to in-memory search.
|
|
49
|
+
*/
|
|
50
|
+
setupDatabase(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Encode a vector as a BLOB using sqlite-vector functions.
|
|
53
|
+
* Returns a JSON string representation suitable for vector_as_f32() etc.
|
|
54
|
+
*/
|
|
55
|
+
private encodeVectorJson;
|
|
56
|
+
/**
|
|
57
|
+
* Decode a vector BLOB from SQLite back to a TypedArray.
|
|
58
|
+
* sqlite-vector stores vectors as BLOBs, but when we SELECT them
|
|
59
|
+
* they come back as Buffer/Uint8Array. We also handle JSON string fallback.
|
|
60
|
+
*/
|
|
61
|
+
private decodeVector;
|
|
62
|
+
/**
|
|
63
|
+
* Override jsToSqlValue to encode vectors as BLOBs via sqlite-vector functions
|
|
64
|
+
*/
|
|
65
|
+
protected jsToSqlValue(column: string, value: Entity[keyof Entity]): ReturnType<SqliteTabularStorage<Schema, PrimaryKeyNames, Entity>["jsToSqlValue"]>;
|
|
66
|
+
/**
|
|
67
|
+
* Override sqlToJsValue to decode vector BLOBs back to TypedArrays
|
|
68
|
+
*/
|
|
69
|
+
protected sqlToJsValue(column: string, value: any): Entity[keyof Entity];
|
|
70
|
+
/**
|
|
71
|
+
* Override mapTypeToSQL to use BLOB for vector columns instead of TEXT
|
|
72
|
+
*/
|
|
73
|
+
protected mapTypeToSQL(typeDef: any): string;
|
|
74
|
+
/**
|
|
75
|
+
* Override put to use sqlite-vector encoding for vector data.
|
|
76
|
+
* Builds a custom INSERT OR REPLACE that wraps the vector column
|
|
77
|
+
* with vector_as_fXX() to encode as a native vector BLOB.
|
|
78
|
+
* Falls back to base class put() if the extension is not available.
|
|
79
|
+
*/
|
|
80
|
+
put(entity: any): Promise<Entity>;
|
|
81
|
+
/**
|
|
82
|
+
* Perform similarity search using sqlite-vector's vector_full_scan.
|
|
83
|
+
* Uses native COSINE distance computation in SQLite rather than in-memory JS.
|
|
84
|
+
* Falls back to in-memory search if the extension is unavailable.
|
|
85
|
+
*/
|
|
86
|
+
similaritySearch(query: TypedArray, options?: VectorSearchOptions<Metadata>): Promise<(Entity & {
|
|
87
|
+
score: number;
|
|
88
|
+
})[]>;
|
|
89
|
+
/**
|
|
90
|
+
* Hybrid search combining vector similarity with text relevance.
|
|
91
|
+
* Uses sqlite-vector for the vector component and keyword matching for text.
|
|
92
|
+
* Falls back to in-memory search if the extension is unavailable.
|
|
93
|
+
*/
|
|
94
|
+
hybridSearch(query: TypedArray, options: HybridSearchOptions<Metadata>): Promise<(Entity & {
|
|
95
|
+
score: number;
|
|
96
|
+
})[]>;
|
|
97
|
+
/**
|
|
98
|
+
* Fallback search using in-memory cosine similarity
|
|
99
|
+
*/
|
|
100
|
+
private searchFallback;
|
|
101
|
+
/**
|
|
102
|
+
* Fallback hybrid search using in-memory computation
|
|
103
|
+
*/
|
|
104
|
+
private hybridSearchFallback;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=SqliteAiVectorStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqliteAiVectorStorage.d.ts","sourceRoot":"","sources":["../../src/vector/SqliteAiVectorStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAuD1B;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,qBAAqB,CAChC,MAAM,SAAS,oBAAoB,EACnC,eAAe,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EACjE,MAAM,SAAS,UAAU,GAAG,YAAY,EACxC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9E,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAEpD,SAAQ,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAC5D,YAAW,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;IAEpE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAkB;IAEzC;;;;;;;;;OASG;gBAED,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,EAClC,KAAK,EAAE,MAAM,YAAY,EACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,SAAS,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,YAAK,EACnE,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,KAAK,KAAK,EAAE,MAAM,EAAE,KAAK,UAAyB;IAiBhE,mBAAmB,IAAI,MAAM;IAI7B;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCpC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,SAAS,CAAC,YAAY,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC,GAC1B,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IASpF;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC;IAOxE;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM;IAU5C;;;;;OAKG;IACG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IA0GvC;;;;OAIG;IACG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM;eAsM5C,MAAM;;IAhG/C;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC;eA2FnC,MAAM;;IAN/C;;OAEG;YACW,cAAc;IA0B5B;;OAEG;YACW,oBAAoB;CAyCnC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { DataPortSchemaObject, FromSchema, TypedArray, TypedArraySchemaOptions } from "@workglow/util";
|
|
7
|
+
import type { AutoGeneratedKeys, InsertEntity, SimplifyPrimaryKey } from "../tabular/ITabularStorage";
|
|
8
|
+
import { TelemetryTabularStorage } from "../tabular/TelemetryTabularStorage";
|
|
9
|
+
import type { HybridSearchOptions, IVectorStorage, VectorSearchOptions } from "./IVectorStorage";
|
|
10
|
+
/**
|
|
11
|
+
* Telemetry wrapper for any IVectorStorage implementation.
|
|
12
|
+
* Extends TelemetryTabularStorage and adds spans for vector-specific operations.
|
|
13
|
+
*/
|
|
14
|
+
export declare class TelemetryVectorStorage<Metadata extends Record<string, unknown> | undefined, Schema extends DataPortSchemaObject, Entity = FromSchema<Schema, TypedArraySchemaOptions>, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]> = ReadonlyArray<keyof Schema["properties"]>, PrimaryKey = SimplifyPrimaryKey<Entity, PrimaryKeyNames>, InsertType = InsertEntity<Entity, AutoGeneratedKeys<Schema>>> extends TelemetryTabularStorage<Schema, PrimaryKeyNames, Entity, PrimaryKey, InsertType> implements IVectorStorage<Metadata, Schema, Entity, PrimaryKeyNames, PrimaryKey, InsertType> {
|
|
15
|
+
private readonly vectorInner;
|
|
16
|
+
constructor(storageName: string, inner: IVectorStorage<Metadata, Schema, Entity, PrimaryKeyNames, PrimaryKey, InsertType>);
|
|
17
|
+
getVectorDimensions(): number;
|
|
18
|
+
similaritySearch(query: TypedArray, options?: VectorSearchOptions<Metadata>): Promise<(Entity & {
|
|
19
|
+
score: number;
|
|
20
|
+
})[]>;
|
|
21
|
+
hybridSearch(query: TypedArray, options: HybridSearchOptions<Metadata>): Promise<(Entity & {
|
|
22
|
+
score: number;
|
|
23
|
+
})[]>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=TelemetryVectorStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryVectorStorage.d.ts","sourceRoot":"","sources":["../../src/vector/TelemetryVectorStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEjG;;;GAGG;AACH,qBAAa,sBAAsB,CACjC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACpD,MAAM,SAAS,oBAAoB,EACnC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACpD,eAAe,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,aAAa,CAC/E,MAAM,MAAM,CAAC,YAAY,CAAC,CAC3B,EACD,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,EACxD,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAE5D,SAAQ,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CACvF,YAAW,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,CAAC;IAE5F,OAAO,CAAC,QAAQ,CAAC,WAAW,CAO1B;gBAGA,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,CAAC;IAM1F,mBAAmB,IAAI,MAAM;IAI7B,gBAAgB,CACd,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GACtC,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAM1C,YAAY,CACV,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GACrC,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;CAQ3C"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workglow/storage",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.116",
|
|
5
5
|
"description": "Storage abstraction layer for Workglow, supporting IndexedDB, PostgreSQL, and Supabase with unified interfaces.",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"watch": "concurrently -c 'auto' 'bun:watch-*'",
|
|
@@ -21,10 +21,11 @@
|
|
|
21
21
|
"test": "bun test"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@workglow/sqlite": "0.0.
|
|
25
|
-
"@workglow/util": "0.0.
|
|
24
|
+
"@workglow/sqlite": "0.0.116",
|
|
25
|
+
"@workglow/util": "0.0.116",
|
|
26
26
|
"pg": "^8.20.0",
|
|
27
|
-
"@supabase/supabase-js": "^2.98.0"
|
|
27
|
+
"@supabase/supabase-js": "^2.98.0",
|
|
28
|
+
"@sqliteai/sqlite-vector": "^0.9.90"
|
|
28
29
|
},
|
|
29
30
|
"peerDependenciesMeta": {
|
|
30
31
|
"@workglow/sqlite": {
|
|
@@ -32,11 +33,14 @@
|
|
|
32
33
|
},
|
|
33
34
|
"@workglow/util": {
|
|
34
35
|
"optional": false
|
|
36
|
+
},
|
|
37
|
+
"@sqliteai/sqlite-vector": {
|
|
38
|
+
"optional": true
|
|
35
39
|
}
|
|
36
40
|
},
|
|
37
41
|
"devDependencies": {
|
|
38
|
-
"@workglow/sqlite": "0.0.
|
|
39
|
-
"@workglow/util": "0.0.
|
|
42
|
+
"@workglow/sqlite": "0.0.116",
|
|
43
|
+
"@workglow/util": "0.0.116",
|
|
40
44
|
"pg": "^8.20.0",
|
|
41
45
|
"@types/pg": "^8.18.0",
|
|
42
46
|
"@supabase/supabase-js": "^2.98.0",
|