@seanhogg/builderforce-memory 2026.7.14 → 2026.9.27

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.
Files changed (223) hide show
  1. package/README.md +10 -0
  2. package/dist/bridges/AnthropicBridge.d.ts +9 -1
  3. package/dist/bridges/AnthropicBridge.d.ts.map +1 -1
  4. package/dist/bridges/AnthropicBridge.js +58 -2
  5. package/dist/bridges/AnthropicBridge.js.map +1 -1
  6. package/dist/bridges/CachingBridge.d.ts +9 -1
  7. package/dist/bridges/CachingBridge.d.ts.map +1 -1
  8. package/dist/bridges/CachingBridge.js +24 -1
  9. package/dist/bridges/CachingBridge.js.map +1 -1
  10. package/dist/bridges/OpenAIBridge.d.ts +4 -1
  11. package/dist/bridges/OpenAIBridge.d.ts.map +1 -1
  12. package/dist/bridges/OpenAIBridge.js +40 -2
  13. package/dist/bridges/OpenAIBridge.js.map +1 -1
  14. package/dist/bridges/SemanticCachingBridge.d.ts +8 -1
  15. package/dist/bridges/SemanticCachingBridge.d.ts.map +1 -1
  16. package/dist/bridges/SemanticCachingBridge.js +26 -1
  17. package/dist/bridges/SemanticCachingBridge.js.map +1 -1
  18. package/dist/bridges/TransformerBridge.d.ts +13 -0
  19. package/dist/bridges/TransformerBridge.d.ts.map +1 -1
  20. package/dist/bridges/VertexAIBridge.d.ts +102 -0
  21. package/dist/bridges/VertexAIBridge.d.ts.map +1 -0
  22. package/dist/bridges/VertexAIBridge.js +224 -0
  23. package/dist/bridges/VertexAIBridge.js.map +1 -0
  24. package/dist/bridges/index.d.ts +3 -1
  25. package/dist/bridges/index.d.ts.map +1 -1
  26. package/dist/bridges/index.js +1 -0
  27. package/dist/bridges/index.js.map +1 -1
  28. package/dist/eval/EvalHarness.d.ts +37 -0
  29. package/dist/eval/EvalHarness.d.ts.map +1 -0
  30. package/dist/eval/EvalHarness.js +178 -0
  31. package/dist/eval/EvalHarness.js.map +1 -0
  32. package/dist/eval/graders.d.ts +76 -0
  33. package/dist/eval/graders.d.ts.map +1 -0
  34. package/dist/eval/graders.js +168 -0
  35. package/dist/eval/graders.js.map +1 -0
  36. package/dist/eval/index.d.ts +26 -0
  37. package/dist/eval/index.d.ts.map +1 -0
  38. package/dist/eval/index.js +26 -0
  39. package/dist/eval/index.js.map +1 -0
  40. package/dist/eval/types.d.ts +97 -0
  41. package/dist/eval/types.d.ts.map +1 -0
  42. package/dist/eval/types.js +5 -0
  43. package/dist/eval/types.js.map +1 -0
  44. package/dist/evermind/contract.d.ts +40 -0
  45. package/dist/evermind/contract.d.ts.map +1 -0
  46. package/dist/evermind/contract.js +13 -0
  47. package/dist/evermind/contract.js.map +1 -0
  48. package/dist/evermind/index.d.ts +15 -0
  49. package/dist/evermind/index.d.ts.map +1 -0
  50. package/dist/evermind/index.js +4 -0
  51. package/dist/evermind/index.js.map +1 -0
  52. package/dist/evermind/memoryBlock.d.ts +7 -0
  53. package/dist/evermind/memoryBlock.d.ts.map +1 -0
  54. package/dist/evermind/memoryBlock.js +37 -0
  55. package/dist/evermind/memoryBlock.js.map +1 -0
  56. package/dist/evermind/recall.d.ts +55 -0
  57. package/dist/evermind/recall.d.ts.map +1 -0
  58. package/dist/evermind/recall.js +105 -0
  59. package/dist/evermind/recall.js.map +1 -0
  60. package/dist/index.d.ts +18 -3
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +14 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/ingest/IngestionPipeline.d.ts +95 -0
  65. package/dist/ingest/IngestionPipeline.d.ts.map +1 -0
  66. package/dist/ingest/IngestionPipeline.js +295 -0
  67. package/dist/ingest/IngestionPipeline.js.map +1 -0
  68. package/dist/ingest/index.d.ts +10 -0
  69. package/dist/ingest/index.d.ts.map +1 -0
  70. package/dist/ingest/index.js +8 -0
  71. package/dist/ingest/index.js.map +1 -0
  72. package/dist/ingest/parsers.d.ts +53 -0
  73. package/dist/ingest/parsers.d.ts.map +1 -0
  74. package/dist/ingest/parsers.js +306 -0
  75. package/dist/ingest/parsers.js.map +1 -0
  76. package/dist/ingest/types.d.ts +114 -0
  77. package/dist/ingest/types.d.ts.map +1 -0
  78. package/dist/ingest/types.js +19 -0
  79. package/dist/ingest/types.js.map +1 -0
  80. package/dist/memory/MemoryStore.d.ts +33 -0
  81. package/dist/memory/MemoryStore.d.ts.map +1 -1
  82. package/dist/memory/MemoryStore.js +29 -3
  83. package/dist/memory/MemoryStore.js.map +1 -1
  84. package/dist/memory/index.d.ts +1 -1
  85. package/dist/memory/index.d.ts.map +1 -1
  86. package/dist/orchestration/AgentGraph.d.ts +104 -0
  87. package/dist/orchestration/AgentGraph.d.ts.map +1 -0
  88. package/dist/orchestration/AgentGraph.js +364 -0
  89. package/dist/orchestration/AgentGraph.js.map +1 -0
  90. package/dist/orchestration/checkpoint.d.ts +58 -0
  91. package/dist/orchestration/checkpoint.d.ts.map +1 -0
  92. package/dist/orchestration/checkpoint.js +92 -0
  93. package/dist/orchestration/checkpoint.js.map +1 -0
  94. package/dist/orchestration/index.d.ts +14 -0
  95. package/dist/orchestration/index.d.ts.map +1 -0
  96. package/dist/orchestration/index.js +10 -0
  97. package/dist/orchestration/index.js.map +1 -0
  98. package/dist/orchestration/patterns.d.ts +159 -0
  99. package/dist/orchestration/patterns.d.ts.map +1 -0
  100. package/dist/orchestration/patterns.js +371 -0
  101. package/dist/orchestration/patterns.js.map +1 -0
  102. package/dist/orchestration/types.d.ts +146 -0
  103. package/dist/orchestration/types.d.ts.map +1 -0
  104. package/dist/orchestration/types.js +20 -0
  105. package/dist/orchestration/types.js.map +1 -0
  106. package/dist/rag/EnterpriseRetriever.d.ts +114 -0
  107. package/dist/rag/EnterpriseRetriever.d.ts.map +1 -0
  108. package/dist/rag/EnterpriseRetriever.js +240 -0
  109. package/dist/rag/EnterpriseRetriever.js.map +1 -0
  110. package/dist/rag/index.d.ts +6 -0
  111. package/dist/rag/index.d.ts.map +1 -0
  112. package/dist/rag/index.js +5 -0
  113. package/dist/rag/index.js.map +1 -0
  114. package/dist/retrieval/bm25.d.ts +48 -1
  115. package/dist/retrieval/bm25.d.ts.map +1 -1
  116. package/dist/retrieval/bm25.js +59 -13
  117. package/dist/retrieval/bm25.js.map +1 -1
  118. package/dist/retrieval/index.d.ts +2 -2
  119. package/dist/retrieval/index.d.ts.map +1 -1
  120. package/dist/retrieval/index.js +1 -1
  121. package/dist/retrieval/index.js.map +1 -1
  122. package/dist/telemetry/InstrumentedBridge.d.ts +62 -0
  123. package/dist/telemetry/InstrumentedBridge.d.ts.map +1 -0
  124. package/dist/telemetry/InstrumentedBridge.js +120 -0
  125. package/dist/telemetry/InstrumentedBridge.js.map +1 -0
  126. package/dist/telemetry/MetricsRegistry.d.ts +88 -0
  127. package/dist/telemetry/MetricsRegistry.d.ts.map +1 -0
  128. package/dist/telemetry/MetricsRegistry.js +167 -0
  129. package/dist/telemetry/MetricsRegistry.js.map +1 -0
  130. package/dist/telemetry/Tracer.d.ts +137 -0
  131. package/dist/telemetry/Tracer.d.ts.map +1 -0
  132. package/dist/telemetry/Tracer.js +244 -0
  133. package/dist/telemetry/Tracer.js.map +1 -0
  134. package/dist/telemetry/exporters.d.ts +68 -0
  135. package/dist/telemetry/exporters.d.ts.map +1 -0
  136. package/dist/telemetry/exporters.js +145 -0
  137. package/dist/telemetry/exporters.js.map +1 -0
  138. package/dist/telemetry/index.d.ts +19 -0
  139. package/dist/telemetry/index.d.ts.map +1 -0
  140. package/dist/telemetry/index.js +12 -0
  141. package/dist/telemetry/index.js.map +1 -0
  142. package/dist/telemetry/pricing.d.ts +74 -0
  143. package/dist/telemetry/pricing.d.ts.map +1 -0
  144. package/dist/telemetry/pricing.js +98 -0
  145. package/dist/telemetry/pricing.js.map +1 -0
  146. package/dist/telemetry/traceparent.d.ts +50 -0
  147. package/dist/telemetry/traceparent.d.ts.map +1 -0
  148. package/dist/telemetry/traceparent.js +77 -0
  149. package/dist/telemetry/traceparent.js.map +1 -0
  150. package/dist/telemetry/types.d.ts +90 -0
  151. package/dist/telemetry/types.d.ts.map +1 -0
  152. package/dist/telemetry/types.js +17 -0
  153. package/dist/telemetry/types.js.map +1 -0
  154. package/dist/vectorstore/MemoryVectorStore.d.ts +72 -0
  155. package/dist/vectorstore/MemoryVectorStore.d.ts.map +1 -0
  156. package/dist/vectorstore/MemoryVectorStore.js +205 -0
  157. package/dist/vectorstore/MemoryVectorStore.js.map +1 -0
  158. package/dist/vectorstore/RestVectorStore.d.ts +79 -0
  159. package/dist/vectorstore/RestVectorStore.d.ts.map +1 -0
  160. package/dist/vectorstore/RestVectorStore.js +170 -0
  161. package/dist/vectorstore/RestVectorStore.js.map +1 -0
  162. package/dist/vectorstore/dialects.d.ts +101 -0
  163. package/dist/vectorstore/dialects.d.ts.map +1 -0
  164. package/dist/vectorstore/dialects.js +618 -0
  165. package/dist/vectorstore/dialects.js.map +1 -0
  166. package/dist/vectorstore/filter.d.ts +42 -0
  167. package/dist/vectorstore/filter.d.ts.map +1 -0
  168. package/dist/vectorstore/filter.js +132 -0
  169. package/dist/vectorstore/filter.js.map +1 -0
  170. package/dist/vectorstore/index.d.ts +15 -0
  171. package/dist/vectorstore/index.d.ts.map +1 -0
  172. package/dist/vectorstore/index.js +11 -0
  173. package/dist/vectorstore/index.js.map +1 -0
  174. package/dist/vectorstore/types.d.ts +151 -0
  175. package/dist/vectorstore/types.d.ts.map +1 -0
  176. package/dist/vectorstore/types.js +30 -0
  177. package/dist/vectorstore/types.js.map +1 -0
  178. package/package.json +39 -5
  179. package/src/bridges/AnthropicBridge.ts +68 -3
  180. package/src/bridges/CachingBridge.ts +28 -2
  181. package/src/bridges/OpenAIBridge.ts +48 -3
  182. package/src/bridges/SemanticCachingBridge.ts +29 -2
  183. package/src/bridges/TransformerBridge.ts +16 -0
  184. package/src/bridges/VertexAIBridge.ts +297 -0
  185. package/src/bridges/index.ts +3 -1
  186. package/src/eval/EvalHarness.ts +214 -0
  187. package/src/eval/graders.ts +218 -0
  188. package/src/eval/index.ts +26 -0
  189. package/src/eval/types.ts +107 -0
  190. package/src/evermind/contract.ts +39 -0
  191. package/src/evermind/index.ts +21 -0
  192. package/src/evermind/memoryBlock.ts +38 -0
  193. package/src/evermind/recall.ts +122 -0
  194. package/src/index.ts +232 -0
  195. package/src/ingest/IngestionPipeline.ts +378 -0
  196. package/src/ingest/index.ts +46 -0
  197. package/src/ingest/parsers.ts +318 -0
  198. package/src/ingest/types.ts +116 -0
  199. package/src/memory/MemoryStore.ts +55 -3
  200. package/src/memory/index.ts +1 -1
  201. package/src/orchestration/AgentGraph.ts +462 -0
  202. package/src/orchestration/checkpoint.ts +129 -0
  203. package/src/orchestration/index.ts +63 -0
  204. package/src/orchestration/patterns.ts +532 -0
  205. package/src/orchestration/types.ts +128 -0
  206. package/src/rag/EnterpriseRetriever.ts +348 -0
  207. package/src/rag/index.ts +18 -0
  208. package/src/retrieval/bm25.ts +71 -13
  209. package/src/retrieval/index.ts +2 -2
  210. package/src/telemetry/InstrumentedBridge.ts +152 -0
  211. package/src/telemetry/MetricsRegistry.ts +263 -0
  212. package/src/telemetry/Tracer.ts +310 -0
  213. package/src/telemetry/exporters.ts +187 -0
  214. package/src/telemetry/index.ts +56 -0
  215. package/src/telemetry/pricing.ts +129 -0
  216. package/src/telemetry/traceparent.ts +89 -0
  217. package/src/telemetry/types.ts +105 -0
  218. package/src/vectorstore/MemoryVectorStore.ts +250 -0
  219. package/src/vectorstore/RestVectorStore.ts +236 -0
  220. package/src/vectorstore/dialects.ts +702 -0
  221. package/src/vectorstore/filter.ts +148 -0
  222. package/src/vectorstore/index.ts +53 -0
  223. package/src/vectorstore/types.ts +149 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryVectorStore.js","sourceRoot":"","sources":["../../src/vectorstore/MemoryVectorStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * vectorstore/RestVectorStore.ts — ONE adapter for every HTTP vector database.
3
+ *
4
+ * The vendor-specific part is the {@link VectorDialect}; everything that is the
5
+ * same everywhere lives here exactly once: auth headers, batching, retry with
6
+ * backoff, residual filtering, capability emulation, and text hydration for stores
7
+ * that hold vectors only.
8
+ *
9
+ * The residual pass is the part that matters for correctness. When a dialect
10
+ * cannot push a filter clause down, the store over-fetches and applies the
11
+ * remaining clauses locally with the SAME evaluator the in-process store uses. A
12
+ * clause is therefore never dropped — which on an ACL or tenant clause would be a
13
+ * data leak, and is precisely the failure mode a naive adapter ships with.
14
+ */
15
+ import { type VectorDialect } from './dialects.js';
16
+ import type { AccessScope, MetadataFilter, UpsertResult, VectorMatch, VectorQuery, VectorRecord, VectorStore } from './types.js';
17
+ export interface RestVectorStoreOptions {
18
+ /** Dialect id (`evermind`, `qdrant`, `pinecone`, `vertex-ai`) or an instance. */
19
+ dialect: string | VectorDialect;
20
+ /** Service root, e.g. `https://my-cluster.qdrant.io`. */
21
+ baseUrl: string;
22
+ /** Collection / index / namespace. */
23
+ collection: string;
24
+ /** Static headers — API keys, `Authorization: Bearer …`. */
25
+ headers?: Record<string, string>;
26
+ /**
27
+ * Per-request auth, for credentials that expire. On GCP this is where a
28
+ * Workload-Identity access token goes, refreshed by the caller's token source
29
+ * rather than cached here — the store must never own a credential lifecycle.
30
+ */
31
+ authorize?: () => Promise<Record<string, string>> | Record<string, string>;
32
+ /** Dialect-specific deployment values (`index`, `indexEndpoint`, `deployedIndexId`, …). */
33
+ options?: Record<string, string>;
34
+ /** Records per upsert request. Default 100. */
35
+ batchSize?: number;
36
+ /** Retries on 429/5xx/network failure. Default 2. */
37
+ maxRetries?: number;
38
+ /** Base backoff in ms, doubled per attempt. Default 200. */
39
+ retryBackoffMs?: number;
40
+ /** Over-fetch multiplier when a residual filter must be applied locally. Default 4. */
41
+ residualOverfetch?: number;
42
+ /**
43
+ * Supplies chunk text for dialects that store vectors only (Vertex AI). In a
44
+ * GCP reference architecture this reads the chunk table from Firestore or
45
+ * BigQuery keyed by the same ids the index holds.
46
+ */
47
+ textResolver?: (ids: readonly string[]) => Promise<Map<string, string>>;
48
+ /** Injected for test. Default global `fetch`. */
49
+ fetchImpl?: typeof fetch;
50
+ /** Injected for test so retry backoff does not really sleep. */
51
+ sleep?: (ms: number) => Promise<void>;
52
+ }
53
+ export declare class RestVectorStore implements VectorStore {
54
+ readonly name: string;
55
+ readonly dialect: VectorDialect;
56
+ private readonly _baseUrl;
57
+ private readonly _ctx;
58
+ private readonly _headers;
59
+ private readonly _authorize;
60
+ private readonly _batchSize;
61
+ private readonly _maxRetries;
62
+ private readonly _backoffMs;
63
+ private readonly _overfetch;
64
+ private readonly _textResolver;
65
+ private readonly _fetch;
66
+ private readonly _sleep;
67
+ constructor(opts: RestVectorStoreOptions);
68
+ upsert(records: readonly VectorRecord[]): Promise<UpsertResult>;
69
+ query(query: VectorQuery): Promise<VectorMatch[]>;
70
+ keywordSearch(query: VectorQuery): Promise<VectorMatch[]>;
71
+ fetch(ids: readonly string[]): Promise<VectorRecord[]>;
72
+ delete(ids: readonly string[]): Promise<number>;
73
+ deleteByFilter(filter: MetadataFilter, scope?: AccessScope): Promise<number>;
74
+ count(filter?: MetadataFilter, scope?: AccessScope): Promise<number>;
75
+ /** Shared query path: translate, over-fetch for the residual, filter, hydrate. */
76
+ private _search;
77
+ private _send;
78
+ }
79
+ //# sourceMappingURL=RestVectorStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestVectorStore.d.ts","sourceRoot":"","sources":["../../src/vectorstore/RestVectorStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * vectorstore/RestVectorStore.ts — ONE adapter for every HTTP vector database.
3
+ *
4
+ * The vendor-specific part is the {@link VectorDialect}; everything that is the
5
+ * same everywhere lives here exactly once: auth headers, batching, retry with
6
+ * backoff, residual filtering, capability emulation, and text hydration for stores
7
+ * that hold vectors only.
8
+ *
9
+ * The residual pass is the part that matters for correctness. When a dialect
10
+ * cannot push a filter clause down, the store over-fetches and applies the
11
+ * remaining clauses locally with the SAME evaluator the in-process store uses. A
12
+ * clause is therefore never dropped — which on an ACL or tenant clause would be a
13
+ * data leak, and is precisely the failure mode a naive adapter ships with.
14
+ */
15
+ import { combineFilters, matchesFilter } from './filter.js';
16
+ import { getDialect } from './dialects.js';
17
+ export class RestVectorStore {
18
+ name;
19
+ dialect;
20
+ _baseUrl;
21
+ _ctx;
22
+ _headers;
23
+ _authorize;
24
+ _batchSize;
25
+ _maxRetries;
26
+ _backoffMs;
27
+ _overfetch;
28
+ _textResolver;
29
+ _fetch;
30
+ _sleep;
31
+ constructor(opts) {
32
+ this.dialect = typeof opts.dialect === 'string' ? getDialect(opts.dialect) : opts.dialect;
33
+ this.name = `rest:${this.dialect.id}`;
34
+ this._baseUrl = opts.baseUrl.replace(/\/+$/, '');
35
+ this._ctx = { collection: opts.collection, options: opts.options ?? {} };
36
+ this._headers = opts.headers ?? {};
37
+ this._authorize = opts.authorize;
38
+ this._batchSize = Math.max(1, opts.batchSize ?? 100);
39
+ this._maxRetries = Math.max(0, opts.maxRetries ?? 2);
40
+ this._backoffMs = Math.max(0, opts.retryBackoffMs ?? 200);
41
+ this._overfetch = Math.max(1, opts.residualOverfetch ?? 4);
42
+ this._textResolver = opts.textResolver;
43
+ this._fetch = opts.fetchImpl ?? ((...args) => fetch(...args));
44
+ this._sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
45
+ }
46
+ async upsert(records) {
47
+ let upserted = 0;
48
+ let skipped = 0;
49
+ // Batched because every vendor caps request size, and a 10k-record ingest
50
+ // that fails at record 9,999 must not lose the first 9,998.
51
+ for (let i = 0; i < records.length; i += this._batchSize) {
52
+ const batch = records.slice(i, i + this._batchSize);
53
+ const json = await this._send(this.dialect.upsert(this._ctx, batch));
54
+ const result = this.dialect.parseUpsert(json, batch.length);
55
+ upserted += result.upserted;
56
+ skipped += result.skipped;
57
+ }
58
+ return { upserted, skipped };
59
+ }
60
+ async query(query) {
61
+ return this._search(query, (translated, topK) => this.dialect.query(this._ctx, {
62
+ ...(query.vector ? { vector: query.vector } : {}),
63
+ ...(query.text ? { text: query.text } : {}),
64
+ topK,
65
+ ...(translated !== undefined ? { filter: translated } : {}),
66
+ includeVectors: query.includeVectors ?? false,
67
+ }));
68
+ }
69
+ async keywordSearch(query) {
70
+ const text = query.text?.trim();
71
+ if (!text || !this.dialect.supportsKeywordSearch || !this.dialect.keywordSearch)
72
+ return [];
73
+ const build = this.dialect.keywordSearch.bind(this.dialect);
74
+ return this._search(query, (translated, topK) => build(this._ctx, { text, topK, ...(translated !== undefined ? { filter: translated } : {}) }));
75
+ }
76
+ async fetch(ids) {
77
+ if (ids.length === 0)
78
+ return [];
79
+ const json = await this._send(this.dialect.fetch(this._ctx, ids));
80
+ const records = this.dialect.parseRecords(json);
81
+ if (this.dialect.storesText || !this._textResolver)
82
+ return records;
83
+ const texts = await this._textResolver(records.map((r) => r.id));
84
+ return records.map((r) => ({ ...r, text: texts.get(r.id) ?? r.text }));
85
+ }
86
+ async delete(ids) {
87
+ if (ids.length === 0)
88
+ return 0;
89
+ for (let i = 0; i < ids.length; i += this._batchSize) {
90
+ await this._send(this.dialect.deleteByIds(this._ctx, ids.slice(i, i + this._batchSize)));
91
+ }
92
+ return ids.length;
93
+ }
94
+ async deleteByFilter(filter, scope) {
95
+ const effective = combineFilters(filter, scope);
96
+ const translated = this.dialect.translateFilter(effective);
97
+ // Server-side bulk delete is only safe when the dialect can express the
98
+ // WHOLE predicate. A residual would mean deleting a superset — so the
99
+ // emulated path (query, filter locally, delete by id) is used instead.
100
+ if (this.dialect.supportsDeleteByFilter && this.dialect.deleteByFilter && !translated.residual) {
101
+ await this._send(this.dialect.deleteByFilter(this._ctx, translated.pushed));
102
+ return -1; // vendor bulk deletes do not report a count
103
+ }
104
+ const doomed = await this.query({ filter, ...(scope ? { scope } : {}), topK: 10_000 });
105
+ return this.delete(doomed.map((m) => m.id));
106
+ }
107
+ async count(filter, scope) {
108
+ const effective = combineFilters(filter, scope);
109
+ const translated = effective ? this.dialect.translateFilter(effective) : undefined;
110
+ if (this.dialect.supportsCount && this.dialect.count && this.dialect.parseCount && !translated?.residual) {
111
+ const json = await this._send(this.dialect.count(this._ctx, translated?.pushed));
112
+ return this.dialect.parseCount(json);
113
+ }
114
+ const matches = await this.query({ ...(filter ? { filter } : {}), ...(scope ? { scope } : {}), topK: 10_000 });
115
+ return matches.length;
116
+ }
117
+ /** Shared query path: translate, over-fetch for the residual, filter, hydrate. */
118
+ async _search(query, build) {
119
+ const topK = Math.max(1, query.topK ?? 10);
120
+ const effective = combineFilters(query.filter, query.scope);
121
+ const translated = effective ? this.dialect.translateFilter(effective) : undefined;
122
+ const wanted = translated?.residual ? topK * this._overfetch : topK;
123
+ const json = await this._send(build(translated?.pushed, wanted));
124
+ let matches = this.dialect.parseMatches(json);
125
+ if (translated?.residual) {
126
+ const residual = translated.residual;
127
+ matches = matches.filter((m) => matchesFilter(m.metadata, residual));
128
+ }
129
+ if (query.minScore !== undefined) {
130
+ matches = matches.filter((m) => m.score >= query.minScore);
131
+ }
132
+ matches = matches.slice(0, topK);
133
+ if (!this.dialect.storesText && this._textResolver && matches.length > 0) {
134
+ const texts = await this._textResolver(matches.map((m) => m.id));
135
+ matches = matches.map((m) => ({ ...m, text: texts.get(m.id) ?? m.text }));
136
+ }
137
+ return matches;
138
+ }
139
+ async _send(request) {
140
+ const dynamic = this._authorize ? await this._authorize() : {};
141
+ const headers = { 'Content-Type': 'application/json', ...this._headers, ...dynamic };
142
+ const url = `${this._baseUrl}${request.path}`;
143
+ let lastError;
144
+ for (let attempt = 0; attempt <= this._maxRetries; attempt++) {
145
+ if (attempt > 0)
146
+ await this._sleep(this._backoffMs * 2 ** (attempt - 1));
147
+ try {
148
+ const res = await this._fetch(url, {
149
+ method: request.method,
150
+ headers,
151
+ ...(request.body !== undefined ? { body: JSON.stringify(request.body) } : {}),
152
+ });
153
+ if (res.ok)
154
+ return await res.json().catch(() => ({}));
155
+ const detail = await res.text().catch(() => '');
156
+ lastError = new Error(`${this.name} ${request.method} ${request.path} → ${res.status}: ${detail}`);
157
+ // 4xx other than rate-limiting is a request the server will reject
158
+ // identically on retry; failing fast keeps a bad filter from
159
+ // becoming a retry storm.
160
+ if (res.status !== 429 && res.status < 500)
161
+ break;
162
+ }
163
+ catch (err) {
164
+ lastError = err;
165
+ }
166
+ }
167
+ throw lastError instanceof Error ? lastError : new Error(String(lastError));
168
+ }
169
+ }
170
+ //# sourceMappingURL=RestVectorStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestVectorStore.js","sourceRoot":"","sources":["../../src/vectorstore/RestVectorStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * vectorstore/dialects.ts — vendor wire shapes, as registry DATA.
3
+ *
4
+ * A dialect is everything that differs between vector databases: the URL shape,
5
+ * the request bodies, the response parsing, and how much of the filter algebra the
6
+ * vendor's query language can express. Supporting a new database is REGISTERING a
7
+ * dialect, never editing a branch in the store — which is the whole reason the
8
+ * adapter is one class over a registry rather than one class per vendor.
9
+ *
10
+ * `translateFilter` returns a `residual`: the part of the filter the vendor cannot
11
+ * express. The store applies the residual locally AFTER the server has done the
12
+ * part it could push down, and over-fetches to compensate. That is the honest
13
+ * design — the alternative is silently dropping a clause, which on an ACL clause
14
+ * is a cross-tenant leak.
15
+ *
16
+ * ⚠️ The three vendor dialects here are validated by unit tests that assert the
17
+ * emitted request bodies and parse recorded response shapes; they have NOT been
18
+ * run against live services in this repository (no credentials). The `evermind`
19
+ * dialect is the canonical contract this package defines and owns.
20
+ */
21
+ import type { MetadataFilter, UpsertResult, VectorMatch, VectorRecord } from './types.js';
22
+ export interface HttpRequest {
23
+ /** Appended to the adapter's `baseUrl`. */
24
+ path: string;
25
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
26
+ body?: unknown;
27
+ }
28
+ export interface DialectContext {
29
+ /** Collection / index / namespace name. */
30
+ collection: string;
31
+ /** Extra per-deployment values a dialect needs (project, deployedIndexId, …). */
32
+ options: Record<string, string>;
33
+ }
34
+ export interface TranslatedFilter {
35
+ /** The vendor-native filter object, or `undefined` when there is nothing to push. */
36
+ pushed?: unknown;
37
+ /** The clauses the vendor could not express — applied locally by the store. */
38
+ residual?: MetadataFilter;
39
+ }
40
+ export interface VectorDialect {
41
+ readonly id: string;
42
+ /**
43
+ * False when the vendor stores vectors only (Vertex AI Vector Search). The
44
+ * store then hydrates `text` through its `textResolver`, and says so on the
45
+ * telemetry span, rather than returning matches with empty text.
46
+ */
47
+ readonly storesText: boolean;
48
+ readonly supportsKeywordSearch: boolean;
49
+ /** False when `count` must be emulated by a capped query. */
50
+ readonly supportsCount: boolean;
51
+ /** False when a filtered bulk delete must be emulated by query-then-delete. */
52
+ readonly supportsDeleteByFilter: boolean;
53
+ translateFilter(filter: MetadataFilter): TranslatedFilter;
54
+ upsert(ctx: DialectContext, records: readonly VectorRecord[]): HttpRequest;
55
+ parseUpsert(json: unknown, sent: number): UpsertResult;
56
+ query(ctx: DialectContext, args: {
57
+ vector?: Float32Array;
58
+ text?: string;
59
+ topK: number;
60
+ filter?: unknown;
61
+ includeVectors: boolean;
62
+ }): HttpRequest;
63
+ parseMatches(json: unknown): VectorMatch[];
64
+ deleteByIds(ctx: DialectContext, ids: readonly string[]): HttpRequest;
65
+ fetch(ctx: DialectContext, ids: readonly string[]): HttpRequest;
66
+ parseRecords(json: unknown): VectorRecord[];
67
+ keywordSearch?(ctx: DialectContext, args: {
68
+ text: string;
69
+ topK: number;
70
+ filter?: unknown;
71
+ }): HttpRequest;
72
+ deleteByFilter?(ctx: DialectContext, filter?: unknown): HttpRequest;
73
+ count?(ctx: DialectContext, filter?: unknown): HttpRequest;
74
+ parseCount?(json: unknown): number;
75
+ }
76
+ /**
77
+ * The canonical gateway contract. A thin service in front of ANY database can
78
+ * implement it (the BuilderForce.ai gateway does), which keeps a customer's chosen
79
+ * store behind their own network boundary while this package speaks one protocol.
80
+ * The filter algebra crosses the wire unchanged, so nothing is ever residual.
81
+ */
82
+ export declare const evermindDialect: VectorDialect;
83
+ export declare const qdrantDialect: VectorDialect;
84
+ export declare const pineconeDialect: VectorDialect;
85
+ /**
86
+ * Vertex expresses filters as `restricts` (string namespaces with an allow list)
87
+ * and `numericRestricts` (numeric comparisons), which is a close fit for this
88
+ * algebra: `eq`/`in`/`anyOf` on strings become a restrict namespace, and numeric
89
+ * comparisons become a numeric restrict. Anything else stays residual.
90
+ *
91
+ * Vertex stores vectors and restricts, NOT text — hence `storesText: false`. The
92
+ * store hydrates chunk text through its `textResolver`, which in a real GCP
93
+ * architecture reads from Firestore, BigQuery or GCS beside the index. Pretending
94
+ * otherwise would return matches with empty text and an answer with no evidence.
95
+ */
96
+ export declare const vertexAiDialect: VectorDialect;
97
+ /** Registers (or replaces) a dialect — how a customer adds their own database. */
98
+ export declare function registerDialect(dialect: VectorDialect): void;
99
+ export declare function getDialect(id: string): VectorDialect;
100
+ export declare function listDialects(): string[];
101
+ //# sourceMappingURL=dialects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialects.d.ts","sourceRoot":"","sources":["../../src/vectorstore/dialects.ts"],"names":[],"mappings":"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"}