@workglow/storage 0.0.102 → 0.0.103

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.
@@ -25,5 +25,6 @@ export * from "./kv/IndexedDbKvStorage";
25
25
  export * from "./queue-limiter/IndexedDbRateLimiterStorage";
26
26
  export * from "./queue/IndexedDbQueueStorage";
27
27
  export * from "./tabular/IndexedDbTabularStorage";
28
+ export * from "./vector/IndexedDbVectorStorage";
28
29
  export * from "./util/IndexedDbTable";
29
30
  //# sourceMappingURL=common-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common-server.d.ts","sourceRoot":"","sources":["../src/common-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AAEzB,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"common-server.d.ts","sourceRoot":"","sources":["../src/common-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AAEzB,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryKvStorage.d.ts","sourceRoot":"","sources":["../../src/kv/InMemoryKvStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAsB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,oBAAoB,qEAEhC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACjD,iBAAiB,EAAE,sBAAsB,CAC9C,OAAO,qBAAqB,EAC5B,OAAO,kBAAkB,CAC1B,CAAC;IAEF;;OAEG;gBACS,SAAS,GAAE,UAA+B,EAAE,WAAW,GAAE,UAAe;CAOrF"}
1
+ {"version":3,"file":"InMemoryKvStorage.d.ts","sourceRoot":"","sources":["../../src/kv/InMemoryKvStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAsB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,oBAAoB,qEAEhC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACjD,iBAAiB,EAAE,sBAAsB,CAC9C,OAAO,qBAAqB,EAC5B,OAAO,kBAAkB,CAC1B,CAAC;IAEF;;OAEG;gBACS,SAAS,GAAE,UAA+B,EAAE,WAAW,GAAE,UAAe;CAIrF"}
@@ -1 +1 @@
1
- {"version":3,"file":"KvStorage.d.ts","sourceRoot":"","sources":["../../src/kv/KvStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAsB,YAAY,EAAE,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EACH,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACpB,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,aAAa,kEAC6C,CAAC;AAExE;;;;;;;GAOG;AACH,8BAAsB,SAAS,CAC7B,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,KAAK,SAAS,GAAG,GAAG,GAAG,EACvB,QAAQ,GAAG;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CACrC,YAAW,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IASlC,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IARhC,0CAA0C;IAC1C,SAAS,CAAC,MAAM,uDAA8D;IAE9E;;OAEG;gBAEM,SAAS,GAAE,UAA+B,EAC1C,WAAW,GAAE,UAAe;IAGrC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzE;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAElD;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAEnC;;;OAGG;IACH,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAEhC;;;;;OAKG;IACU,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;;;OAIG;IACH,EAAE,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAI3F;;;;OAIG;IACH,GAAG,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAI5F;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAI7F;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAS,WAAW,EAC5B,IAAI,EAAE,KAAK,EACX,GAAG,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAKzD;;;;OAIG;IACH,MAAM,CAAC,KAAK,SAAS,WAAW,EAC9B,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;CAG3D"}
1
+ {"version":3,"file":"KvStorage.d.ts","sourceRoot":"","sources":["../../src/kv/KvStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAsB,YAAY,EAAE,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EACL,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,aAAa,kEAAwE,CAAC;AAEnG;;;;;;;GAOG;AACH,8BAAsB,SAAS,CAC7B,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,KAAK,SAAS,GAAG,GAAG,GAAG,EACvB,QAAQ,GAAG;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CACrC,YAAW,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAQlC,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IARhC,0CAA0C;IAC1C,SAAS,CAAC,MAAM,uDAA8D;IAE9E;;OAEG;gBAEM,SAAS,GAAE,UAA+B,EAC1C,WAAW,GAAE,UAAe;IAGrC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzE;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAElD;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAEnC;;;OAGG;IACH,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAEhC;;;;;OAKG;IACU,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;;;OAIG;IACH,EAAE,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAI3F;;;;OAIG;IACH,GAAG,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAI5F;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAI7F;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAS,WAAW,EAC5B,IAAI,EAAE,KAAK,EACX,GAAG,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;IAKzD;;;;OAIG;IACH,MAAM,CAAC,KAAK,SAAS,WAAW,EAC9B,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;CAG3D"}
package/dist/node.js CHANGED
@@ -1031,7 +1031,14 @@ class InMemoryKvStorage extends KvViaTabularStorage {
1031
1031
  }
1032
1032
  }
1033
1033
  // src/queue/InMemoryQueueStorage.ts
1034
- import { createServiceToken as createServiceToken9, EventEmitter as EventEmitter3, makeFingerprint as makeFingerprint4, sleep, uuid4 as uuid42 } from "@workglow/util";
1034
+ import {
1035
+ createServiceToken as createServiceToken9,
1036
+ EventEmitter as EventEmitter3,
1037
+ getLogger,
1038
+ makeFingerprint as makeFingerprint4,
1039
+ sleep,
1040
+ uuid4 as uuid42
1041
+ } from "@workglow/util";
1035
1042
 
1036
1043
  // src/queue/IQueueStorage.ts
1037
1044
  import { createServiceToken as createServiceToken8 } from "@workglow/util";
@@ -1125,11 +1132,23 @@ class InMemoryQueueStorage {
1125
1132
  await sleep(0);
1126
1133
  const job = this.jobQueue.find((j) => j.id === id && this.matchesPrefixes(j));
1127
1134
  if (!job) {
1128
- console.warn("Job not found for progress update", id);
1135
+ const jobWithAnyPrefix = this.jobQueue.find((j) => j.id === id);
1136
+ getLogger().warn("Job not found for progress update", {
1137
+ id,
1138
+ reason: jobWithAnyPrefix ? "prefix_mismatch" : "missing",
1139
+ existingStatus: jobWithAnyPrefix?.status,
1140
+ queueName: this.queueName,
1141
+ prefixValues: this.prefixValues
1142
+ });
1129
1143
  return;
1130
1144
  }
1131
1145
  if (job.status === JobStatus.COMPLETED || job.status === JobStatus.FAILED) {
1132
- console.warn("Job already completed or failed for progress update", id);
1146
+ getLogger().warn("Job already completed or failed for progress update", {
1147
+ id,
1148
+ status: job.status,
1149
+ completedAt: job.completed_at,
1150
+ error: job.error
1151
+ });
1133
1152
  return;
1134
1153
  }
1135
1154
  const oldJob = { ...job };
@@ -7088,6 +7107,105 @@ class IndexedDbQueueStorage {
7088
7107
  }
7089
7108
  }
7090
7109
  }
7110
+ // src/vector/IndexedDbVectorStorage.ts
7111
+ import { cosineSimilarity as cosineSimilarity4, createServiceToken as createServiceToken31 } from "@workglow/util";
7112
+ var IDB_VECTOR_REPOSITORY = createServiceToken31("storage.vectorRepository.indexedDb");
7113
+ function matchesFilter3(metadata, filter) {
7114
+ for (const [key, value] of Object.entries(filter)) {
7115
+ if (metadata[key] !== value) {
7116
+ return false;
7117
+ }
7118
+ }
7119
+ return true;
7120
+ }
7121
+ function textRelevance2(text, query) {
7122
+ const textLower = text.toLowerCase();
7123
+ const queryLower = query.toLowerCase();
7124
+ const queryWords = queryLower.split(/\s+/).filter((w) => w.length > 0);
7125
+ if (queryWords.length === 0) {
7126
+ return 0;
7127
+ }
7128
+ let matches = 0;
7129
+ for (const word of queryWords) {
7130
+ if (textLower.includes(word)) {
7131
+ matches++;
7132
+ }
7133
+ }
7134
+ return matches / queryWords.length;
7135
+ }
7136
+
7137
+ class IndexedDbVectorStorage extends IndexedDbTabularStorage {
7138
+ vectorDimensions;
7139
+ VectorType;
7140
+ vectorPropertyName;
7141
+ metadataPropertyName;
7142
+ constructor(table = "vectors", schema, primaryKeyNames, indexes = [], dimensions, VectorType = Float32Array, migrationOptions = {}, clientProvidedKeys = "if-missing") {
7143
+ super(table, schema, primaryKeyNames, indexes, migrationOptions, clientProvidedKeys);
7144
+ this.vectorDimensions = dimensions;
7145
+ this.VectorType = VectorType;
7146
+ const vectorProp = getVectorProperty(schema);
7147
+ if (!vectorProp) {
7148
+ throw new Error("Schema must have a property with type array and format TypedArray");
7149
+ }
7150
+ this.vectorPropertyName = vectorProp;
7151
+ this.metadataPropertyName = getMetadataProperty(schema);
7152
+ }
7153
+ getVectorDimensions() {
7154
+ return this.vectorDimensions;
7155
+ }
7156
+ async similaritySearch(query, options = {}) {
7157
+ const { topK = 10, filter, scoreThreshold = 0 } = options;
7158
+ const results = [];
7159
+ const allEntities = await this.getAll() || [];
7160
+ for (const entity of allEntities) {
7161
+ const vector = entity[this.vectorPropertyName];
7162
+ const metadata = this.metadataPropertyName ? entity[this.metadataPropertyName] : {};
7163
+ if (filter && !matchesFilter3(metadata, filter)) {
7164
+ continue;
7165
+ }
7166
+ const score = cosineSimilarity4(query, vector);
7167
+ if (score < scoreThreshold) {
7168
+ continue;
7169
+ }
7170
+ results.push({
7171
+ ...entity,
7172
+ score
7173
+ });
7174
+ }
7175
+ results.sort((a, b) => b.score - a.score);
7176
+ const topResults = results.slice(0, topK);
7177
+ return topResults;
7178
+ }
7179
+ async hybridSearch(query, options) {
7180
+ const { topK = 10, filter, scoreThreshold = 0, textQuery, vectorWeight = 0.7 } = options;
7181
+ if (!textQuery || textQuery.trim().length === 0) {
7182
+ return this.similaritySearch(query, { topK, filter, scoreThreshold });
7183
+ }
7184
+ const results = [];
7185
+ const allEntities = await this.getAll() || [];
7186
+ for (const entity of allEntities) {
7187
+ const vector = entity[this.vectorPropertyName];
7188
+ const metadata = this.metadataPropertyName ? entity[this.metadataPropertyName] : {};
7189
+ if (filter && !matchesFilter3(metadata, filter)) {
7190
+ continue;
7191
+ }
7192
+ const vectorScore = cosineSimilarity4(query, vector);
7193
+ const metadataText = Object.values(metadata).join(" ").toLowerCase();
7194
+ const textScore = textRelevance2(metadataText, textQuery);
7195
+ const combinedScore = vectorWeight * vectorScore + (1 - vectorWeight) * textScore;
7196
+ if (combinedScore < scoreThreshold) {
7197
+ continue;
7198
+ }
7199
+ results.push({
7200
+ ...entity,
7201
+ score: combinedScore
7202
+ });
7203
+ }
7204
+ results.sort((a, b) => b.score - a.score);
7205
+ const topResults = results.slice(0, topK);
7206
+ return topResults;
7207
+ }
7208
+ }
7091
7209
  export {
7092
7210
  registerTabularRepository,
7093
7211
  isSearchCondition,
@@ -7134,6 +7252,7 @@ export {
7134
7252
  KvStorage,
7135
7253
  KV_REPOSITORY,
7136
7254
  JobStatus,
7255
+ IndexedDbVectorStorage,
7137
7256
  IndexedDbTabularStorage,
7138
7257
  IndexedDbRateLimiterStorage,
7139
7258
  IndexedDbQueueStorage,
@@ -7147,6 +7266,7 @@ export {
7147
7266
  IN_MEMORY_QUEUE_STORAGE,
7148
7267
  INDEXED_DB_RATE_LIMITER_STORAGE,
7149
7268
  INDEXED_DB_QUEUE_STORAGE,
7269
+ IDB_VECTOR_REPOSITORY,
7150
7270
  IDB_TABULAR_REPOSITORY,
7151
7271
  IDB_KV_REPOSITORY,
7152
7272
  HybridSubscriptionManager,
@@ -7165,4 +7285,4 @@ export {
7165
7285
  BaseTabularStorage
7166
7286
  };
7167
7287
 
7168
- //# debugId=8A11082CCBBE123F64756E2164756E21
7288
+ //# debugId=24D8B8B9BAD9862964756E2164756E21