@workglow/storage 0.0.115 → 0.0.117

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,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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAEL,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAExB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EAEZ,YAAY,EACZ,cAAc,EAEd,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,yBAAyB,0DAErC,CAAC;AAOF;;;;GAIG;AACH,qBAAa,oBAAoB,CAC/B,MAAM,SAAS,oBAAoB,EACnC,eAAe,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAEjE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACpD,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,EACxD,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,EAC5D,UAAU,SAAS,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAC/E,MAAM,EACN,iBAAiB,CAAC,MAAM,CAAC,CAC1B,CACD,SAAQ,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAC7F,mCAAmC;IACnC,OAAO,CAAC,EAAE,CAAkB;IAE5B,yEAAyE;IACzE,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAExC;IAED;;;;;;;;;OASG;gBAED,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,EAClC,KAAK,EAAE,MAAM,YAAkB,EAC/B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,OAAO,GAAE,SAAS,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,EAAO,EACnE,kBAAkB,GAAE,wBAAuC;IAU7D;;OAEG;IACH,SAAS,CAAC,0BAA0B,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAerE;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D3C;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG,eAAe;IAgFpF;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC;IA0CpF;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAmDnD;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,GAAG,MAAM,GAAG,MAAM;IAUhG;;;;;OAKG;IACG,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IA2L9C;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkFxD;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0BvD;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5C;;;;OAIG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAsC3E;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ7B;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAyB3E;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG;QACxE,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,eAAe,EAAE,CAAC;KAC3B;IA8BD;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAczE;;;;;;OAMG;IACG,KAAK,CACT,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAC7B,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IA4ChC;;;;;OAKG;IACH,kBAAkB,CAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,IAAI,EACxD,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
@@ -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"]>> extends ITabularStorage<Schema, PrimaryKeyNames, Entity> {
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":"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"}
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.115",
4
+ "version": "0.0.117",
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.115",
25
- "@workglow/util": "0.0.115",
24
+ "@workglow/sqlite": "0.0.117",
25
+ "@workglow/util": "0.0.117",
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.115",
39
- "@workglow/util": "0.0.115",
42
+ "@workglow/sqlite": "0.0.117",
43
+ "@workglow/util": "0.0.117",
40
44
  "pg": "^8.20.0",
41
45
  "@types/pg": "^8.18.0",
42
46
  "@supabase/supabase-js": "^2.98.0",