@memberjunction/core-entities-server 6.2.0-edge.4 → 6.2.0-edge.5

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 (53) hide show
  1. package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts +26 -3
  2. package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts.map +1 -1
  3. package/dist/custom/MJAIAgentSessionEntityServer.server.js +41 -3
  4. package/dist/custom/MJAIAgentSessionEntityServer.server.js.map +1 -1
  5. package/dist/custom/MJDataContextItemEntityServer.server.d.ts +33 -0
  6. package/dist/custom/MJDataContextItemEntityServer.server.d.ts.map +1 -0
  7. package/dist/custom/MJDataContextItemEntityServer.server.js +84 -0
  8. package/dist/custom/MJDataContextItemEntityServer.server.js.map +1 -0
  9. package/dist/custom/MJFileEntityServer.server.d.ts +45 -0
  10. package/dist/custom/MJFileEntityServer.server.d.ts.map +1 -0
  11. package/dist/custom/MJFileEntityServer.server.js +101 -0
  12. package/dist/custom/MJFileEntityServer.server.js.map +1 -0
  13. package/dist/custom/MJQueryEntityServer.server.d.ts +5 -1
  14. package/dist/custom/MJQueryEntityServer.server.d.ts.map +1 -1
  15. package/dist/custom/MJQueryEntityServer.server.js +11 -6
  16. package/dist/custom/MJQueryEntityServer.server.js.map +1 -1
  17. package/dist/custom/MJQuerySQLEntityServer.server.js +3 -3
  18. package/dist/custom/MJQuerySQLEntityServer.server.js.map +1 -1
  19. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.d.ts +26 -14
  20. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.d.ts.map +1 -1
  21. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.js +57 -32
  22. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.js.map +1 -1
  23. package/dist/custom/MJUserRoutineEntityServer.server.d.ts.map +1 -1
  24. package/dist/custom/MJUserRoutineEntityServer.server.js +12 -3
  25. package/dist/custom/MJUserRoutineEntityServer.server.js.map +1 -1
  26. package/dist/custom/MJUserViewEntityServer.server.d.ts +26 -0
  27. package/dist/custom/MJUserViewEntityServer.server.d.ts.map +1 -1
  28. package/dist/custom/MJUserViewEntityServer.server.js +74 -4
  29. package/dist/custom/MJUserViewEntityServer.server.js.map +1 -1
  30. package/dist/custom/MJVectorIndexEntityServer.server.d.ts +81 -11
  31. package/dist/custom/MJVectorIndexEntityServer.server.d.ts.map +1 -1
  32. package/dist/custom/MJVectorIndexEntityServer.server.js +252 -42
  33. package/dist/custom/MJVectorIndexEntityServer.server.js.map +1 -1
  34. package/dist/custom/query-extraction/pipeline.d.ts.map +1 -1
  35. package/dist/custom/query-extraction/pipeline.js +56 -5
  36. package/dist/custom/query-extraction/pipeline.js.map +1 -1
  37. package/dist/custom/query-extraction/types.d.ts +3 -0
  38. package/dist/custom/query-extraction/types.d.ts.map +1 -1
  39. package/dist/custom/rowFilterValidation.d.ts +47 -2
  40. package/dist/custom/rowFilterValidation.d.ts.map +1 -1
  41. package/dist/custom/rowFilterValidation.js +122 -11
  42. package/dist/custom/rowFilterValidation.js.map +1 -1
  43. package/dist/custom/template-extraction/pipeline.d.ts +6 -1
  44. package/dist/custom/template-extraction/pipeline.d.ts.map +1 -1
  45. package/dist/custom/template-extraction/pipeline.js +15 -6
  46. package/dist/custom/template-extraction/pipeline.js.map +1 -1
  47. package/dist/custom/template-extraction/types.d.ts +1 -1
  48. package/dist/custom/template-extraction/types.d.ts.map +1 -1
  49. package/dist/index.d.ts +2 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/package.json +30 -30
@@ -1 +1 @@
1
- {"version":3,"file":"MJVectorIndexEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJVectorIndexEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAA0C,MAAM,sBAAsB,CAAC;AAE7G,OAAO,EAAE,mBAAmB,EAA0B,MAAM,+BAA+B,CAAC;AAK5F;;;;;;;;;;;;GAYG;AACH,qBACa,yBAA0B,SAAQ,mBAAmB;IAC9D,oDAAoD;IACpD,gBAAuB,uBAAuB,SAAU;IAExD;;;;;OAKG;IACmB,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAazE;;OAEG;IACmB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAShD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;YACW,qBAAqB;IA2CnC;;OAEG;YACW,uBAAuB;IAmBrC;;;OAGG;YACW,mBAAmB;IAgDjC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAe1B;;;OAGG;YACW,oBAAoB;CAiCrC"}
1
+ {"version":3,"file":"MJVectorIndexEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJVectorIndexEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAmD,MAAM,sBAAsB,CAAC;AAEtH,OAAO,EAAE,mBAAmB,EAA0B,MAAM,+BAA+B,CAAC;AAoC5F;;;;;;;;;;;;;;GAcG;AACH,qBACa,yBAA0B,SAAQ,mBAAmB;IAC9D,oDAAoD;IACpD,gBAAuB,uBAAuB,SAAU;IACxD,iGAAiG;IACjG,gBAAuB,0BAA0B,SAAU;IAC3D,4GAA4G;IAC5G,gBAAuB,kBAAkB,QAAQ;IACjD,qHAAqH;IACrH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAEjE;;;;;;OAMG;IACmB,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAazE;;OAEG;IACmB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAShD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;;;;;;OASG;YACW,qBAAqB;IAkCnC;;;;;OAKG;YACW,wBAAwB;IAkDtC;;OAEG;YACW,uBAAuB;IAyBrC;;;OAGG;YACW,mBAAmB;IAgDjC;;;;;;;;;;;;;;;OAeG;YACW,iBAAiB;IAY/B;;;;OAIG;YACW,oBAAoB;IAqClC;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IASrB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAe1B;;;;;;;;;;;;OAYG;YACW,oBAAoB;IAiClC,OAAO,CAAC,uBAAuB;IAM/B,mEAAmE;IACnE,OAAO,CAAC,qBAAqB;IAM7B,oEAAoE;IACpE,OAAO,CAAC,kBAAkB;IAS1B;;;;;;OAMG;YACW,oBAAoB;IAelC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAuB9B"}
@@ -10,7 +10,13 @@ import { RegisterClass, MJGlobal } from "@memberjunction/global";
10
10
  import { MJVectorIndexEntity } from "@memberjunction/core-entities";
11
11
  import { VectorDBBase } from "@memberjunction/ai-vectordb";
12
12
  import { GetAIAPIKey } from "@memberjunction/ai";
13
+ import { AIEmbeddingRunner } from "@memberjunction/ai-prompts";
13
14
  import { AIEngineBase } from "@memberjunction/ai-engine-base";
15
+ /** The distance metrics a provider index can be created with. */
16
+ const VALID_METRICS = ['cosine', 'euclidean', 'dotproduct'];
17
+ /** Raised by {@link MJVectorIndexEntityServer.withTimeout}, so a hung provider is told apart from one that refused. */
18
+ class ProvisionTimeoutError extends Error {
19
+ }
14
20
  /**
15
21
  * Server-side VectorIndex entity that syncs with the vector database provider.
16
22
  * On create: calls vectorDB.CreateIndex() to provision the index in the provider (e.g., Pinecone).
@@ -18,21 +24,30 @@ import { AIEngineBase } from "@memberjunction/ai-engine-base";
18
24
  *
19
25
  * Provisioning is DETACHED from the save that triggers it: the save returns once the metadata row is
20
26
  * written, and the provider call runs afterwards (see {@link Save}). That call is bounded by
21
- * {@link CREATE_INDEX_TIMEOUT_MS}: past it the hook stops waiting, logs, and skips the metadata
22
- * write-back. The provider call itself is abandoned, not cancelled (there is no cancellation handle),
23
- * so the bound limits how long this record's provisioning stays open, not the provider's work.
27
+ * {@link CREATE_INDEX_TIMEOUT_MS}: past it the hook stops waiting and records `timed-out`. The provider
28
+ * call itself is abandoned, not cancelled (there is no cancellation handle), so the bound limits how
29
+ * long this record's provisioning stays open, not the provider's work.
24
30
  * Pinecone's createIndex returns as soon as the request is accepted (we never pass waitUntilReady),
25
31
  * so the bound only ever trips on a hung connection, not on a slow index build.
32
+ *
33
+ * Whatever the outcome, it is written onto the row's `ProviderConfig` as a {@link VectorIndexProvisionState}.
26
34
  */
27
35
  let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVectorIndexEntity {
28
36
  static { MJVectorIndexEntityServer_1 = this; }
29
37
  /** Upper bound on one provider CreateIndex call. */
30
38
  static { this.CREATE_INDEX_TIMEOUT_MS = 60_000; }
39
+ /** Upper bound on the one embedding call that learns a model's width (see resolveDimensions). */
40
+ static { this.DIMENSION_PROBE_TIMEOUT_MS = 30_000; }
41
+ /** Width used only when the record has none and the probe cannot answer (OpenAI text-embedding-3-small). */
42
+ static { this.DEFAULT_DIMENSIONS = 1536; }
43
+ /** The one string embedded to learn a model's width; its content is irrelevant, only the vector's length is read. */
44
+ static { this.DIMENSION_PROBE_TEXT = 'dimension probe'; }
31
45
  /**
32
46
  * After saving, if this is a new record, create the index in the provider.
33
47
  * The provider call is deliberately NOT awaited: the client only needs the metadata row, and the
34
48
  * request that triggered the save (an "Auto" index from the UI, or the Config page) must not wait
35
- * on the provider. Failures are logged; the record keeps its metadata row either way.
49
+ * on the provider. Save() never throws over provisioning; the outcome is recorded on the row's
50
+ * `ProviderConfig` instead (see {@link createIndexInProvider}).
36
51
  */
37
52
  async Save(options) {
38
53
  const isNew = this.IsSaved === false;
@@ -76,13 +91,63 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
76
91
  return sanitized;
77
92
  }
78
93
  /**
79
- * Create the index in the vector database provider.
94
+ * The detached half of {@link Save}: provision, then write the outcome onto the row.
95
+ *
96
+ * Before this, a provider that refused (`success: false`), threw, or never answered reached only
97
+ * the server log, and the committed row looked exactly like one with an index behind it. The
98
+ * row's `ProviderConfig` now says which of the {@link VectorIndexProvisionState}s it is in.
99
+ *
100
+ * Keep this name: the integration suite's content-vectorization fixture stubs it by name to keep
101
+ * the provider out of the run.
80
102
  */
81
103
  async createIndexInProvider() {
104
+ let outcome;
105
+ try {
106
+ outcome = await this.provisionIndexInProvider();
107
+ }
108
+ catch (error) {
109
+ const reason = error instanceof Error ? error.message : String(error);
110
+ // A driver that throws rather than returning `success: false` is the same verdict; a call
111
+ // that outlived the bound is not, because the provider may still finish it.
112
+ outcome = { state: error instanceof ProvisionTimeoutError ? 'timed-out' : 'failed', reason };
113
+ }
114
+ await this.recordProvisionState(outcome);
115
+ switch (outcome.state) {
116
+ case 'failed':
117
+ LogError(`Vector index "${this.Name}" was NOT created in the vector database provider: ` +
118
+ `${outcome.reason ?? 'the provider reported a failure with no message'}. ` +
119
+ `Recorded provisionState "failed" on the record; delete it and recreate it once the provider is reachable.`);
120
+ break;
121
+ case 'timed-out':
122
+ LogError(`Vector index "${this.Name}": ${outcome.reason ?? 'the provider did not answer in time'}. ` +
123
+ `Recorded provisionState "timed-out" on the record.`);
124
+ break;
125
+ case 'unprovisioned':
126
+ case 'not-applicable':
127
+ LogStatus(`Vector index "${this.Name}": provisionState "${outcome.state}" (${outcome.reason ?? 'no detail'})`);
128
+ break;
129
+ }
130
+ }
131
+ /**
132
+ * Create the index in the vector database provider and report what happened.
133
+ *
134
+ * Returns rather than logs, so {@link createIndexInProvider} records every outcome the same way.
135
+ * Throws only when the driver throws or the call times out; the caller classifies both.
136
+ */
137
+ async provisionIndexInProvider() {
82
138
  const vectorDB = await this.getVectorDBInstance();
83
139
  if (!vectorDB) {
84
- LogError(`Cannot create index: no VectorDB instance for database ${this.VectorDatabaseID}`);
85
- return;
140
+ // getVectorDBInstance() has already logged the specific reason.
141
+ return {
142
+ state: 'unprovisioned',
143
+ reason: `No vector DB driver instance could be built for VectorDatabaseID ${this.VectorDatabaseID} in this process`,
144
+ };
145
+ }
146
+ if (vectorDB.ManagesIndexes === false) {
147
+ return {
148
+ state: 'not-applicable',
149
+ reason: 'This vector database driver owns no index objects; this record is the whole index definition',
150
+ };
86
151
  }
87
152
  // Sanitize the index name for the provider (e.g., Pinecone requires lowercase, no spaces)
88
153
  const sanitizedName = this.sanitizeIndexName(this.Name);
@@ -91,8 +156,8 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
91
156
  }
92
157
  const params = {
93
158
  id: sanitizedName,
94
- dimension: this.resolveDimensions(),
95
- metric: 'cosine',
159
+ dimension: await this.resolveDimensions(),
160
+ metric: this.resolveMetric(),
96
161
  additionalParams: {
97
162
  serverless: {
98
163
  cloud: 'aws',
@@ -101,19 +166,13 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
101
166
  }
102
167
  };
103
168
  LogStatus(`Creating index "${sanitizedName}" in vector DB provider...`);
104
- try {
105
- const result = await MJVectorIndexEntityServer_1.withTimeout(vectorDB.CreateIndex(params), MJVectorIndexEntityServer_1.CREATE_INDEX_TIMEOUT_MS, `CreateIndex("${sanitizedName}")`);
106
- if (result.success) {
107
- LogStatus(`Index "${sanitizedName}" created successfully in provider`);
108
- await this.saveProviderMetadata(result.data, params, sanitizedName);
109
- }
110
- else {
111
- LogError(`Provider returned error creating index "${sanitizedName}": ${result.message}`);
112
- }
113
- }
114
- catch (error) {
115
- LogError(`Exception while creating index "${sanitizedName}" in vector DB provider`, undefined, error);
169
+ const result = await MJVectorIndexEntityServer_1.withTimeout(vectorDB.CreateIndex(params), MJVectorIndexEntityServer_1.CREATE_INDEX_TIMEOUT_MS, `CreateIndex("${sanitizedName}")`);
170
+ if (!result.success) {
171
+ return { state: 'failed', reason: result.message || 'the provider reported a failure with no message' };
116
172
  }
173
+ LogStatus(`Index "${sanitizedName}" created successfully in provider`);
174
+ await this.saveProviderMetadata(result.data, params, sanitizedName);
175
+ return { state: 'provisioned' };
117
176
  }
118
177
  /**
119
178
  * Delete the index from the vector database provider.
@@ -124,6 +183,11 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
124
183
  LogError(`Cannot delete index: no VectorDB instance for database ${this.VectorDatabaseID}`);
125
184
  return;
126
185
  }
186
+ if (vectorDB.ManagesIndexes === false) {
187
+ // Nothing was ever provisioned, so there is nothing to remove. Asking anyway just
188
+ // produces an "unsupported" error log on every delete.
189
+ return;
190
+ }
127
191
  // Same rule every read path uses to address the index on its provider (ExternalID, else Name).
128
192
  // An index provisioned through Save() above always has ExternalID set to its sanitized name.
129
193
  const providerIndexName = AIEngineBase.Instance.GetProviderIndexName(this);
@@ -184,15 +248,82 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
184
248
  * Resolve the embedding dimensions to create the provider index at.
185
249
  *
186
250
  * Prefers this index's own `Dimensions` column, which is where the operator states it and what the
187
- * embedding call already honors. Falling straight through to 1536 ignored that column entirely, so
188
- * an index for any other model was created at the wrong width — harmless with providers that don't
189
- * enforce it, and fatal with ones that do: a colocated SQL Server index is a `VECTOR(n)` column, and
190
- * inserting 384-dimension vectors into a `VECTOR(1536)` is rejected outright.
251
+ * embedding call already honors. When the record carries none (every index created from the UI:
252
+ * the Config page's Create Index and the "Vector Index: Auto" path both leave it null, and
253
+ * `MJ: AI Models` has no width column to copy from), the width is learned by embedding one short
254
+ * string with the index's own model and reading the vector's length. Every provider fixes the width
255
+ * at create time, so guessing it wrong gives an index the sync can never write to: a 384-dimension
256
+ * model's vectors are rejected by a `VECTOR(1536)` column or a 1536-wide Pinecone index outright.
257
+ *
258
+ * 1536 (OpenAI text-embedding-3-small) remains the fallback only when the probe cannot run or
259
+ * fails, and the failure is logged so the width can be set by hand. A wrong fallback does not go
260
+ * unnoticed: the vectorize pipeline compares every returned vector against the index's width and
261
+ * refuses the batch before upserting it.
262
+ */
263
+ async resolveDimensions() {
264
+ if (this.Dimensions) {
265
+ return this.Dimensions;
266
+ }
267
+ const probed = await this.probeModelDimensions();
268
+ if (probed === null) {
269
+ LogError(`Vector index "${this.Name}": could not learn the embedding width; creating the provider index at the ${MJVectorIndexEntityServer_1.DEFAULT_DIMENSIONS} fallback. Set Dimensions on the record if the model's width differs.`);
270
+ return MJVectorIndexEntityServer_1.DEFAULT_DIMENSIONS;
271
+ }
272
+ return probed;
273
+ }
274
+ /**
275
+ * Embed one short string with this index's embedding model and return the vector's length, or null
276
+ * when there is no model, no user context, or the call fails. `ModelID` is pinned so the answer
277
+ * comes from the model the index is for; the run row is skipped since this is not a real workload.
278
+ */
279
+ async probeModelDimensions() {
280
+ if (!this.EmbeddingModelID) {
281
+ LogError(`Vector index "${this.Name}" has no EmbeddingModelID; cannot probe its embedding width`);
282
+ return null;
283
+ }
284
+ if (!this.ContextCurrentUser) {
285
+ LogError(`Vector index "${this.Name}" has no context user; cannot probe its embedding width`);
286
+ return null;
287
+ }
288
+ try {
289
+ const result = await MJVectorIndexEntityServer_1.withTimeout(new AIEmbeddingRunner().RunEmbedding({
290
+ Texts: [MJVectorIndexEntityServer_1.DIMENSION_PROBE_TEXT],
291
+ ModelID: this.EmbeddingModelID,
292
+ ContextUser: this.ContextCurrentUser,
293
+ // The entity's data provider is the same object as its metadata provider; this is
294
+ // the cast BaseEntity itself uses wherever it needs the metadata view of it.
295
+ Provider: this.ProviderToUse,
296
+ SkipRunRecord: true,
297
+ Description: `Vector index "${this.Name}" dimension probe`,
298
+ }), MJVectorIndexEntityServer_1.DIMENSION_PROBE_TIMEOUT_MS, `Dimension probe for vector index "${this.Name}"`);
299
+ const width = result.Success ? result.Vectors?.[0]?.length ?? 0 : 0;
300
+ if (width <= 0) {
301
+ LogError(`Dimension probe for vector index "${this.Name}" returned no vector: ${result.ErrorMessage ?? 'empty result'}`);
302
+ return null;
303
+ }
304
+ LogStatus(`Vector index "${this.Name}": embedding width ${width} learned from model ${result.ModelName ?? this.EmbeddingModelID}`);
305
+ return width;
306
+ }
307
+ catch (error) {
308
+ LogError(`Dimension probe for vector index "${this.Name}" failed`, undefined, error);
309
+ return null;
310
+ }
311
+ }
312
+ /**
313
+ * Resolve the distance metric to request the provider index be created with.
191
314
  *
192
- * 1536 (OpenAI text-embedding-3-small) remains the fallback for records that never set it.
315
+ * `Metric` on this row is what the operator asked for; `cosine` is the fallback. This used to be
316
+ * hardcoded to `cosine` at the call site, which made the `Metric` write-back a tautology: the
317
+ * column simply echoed a constant this file had chosen, so it could never disagree with the
318
+ * provider and could never tell you the provider had done something else.
193
319
  */
194
- resolveDimensions() {
195
- return this.Dimensions ?? 1536;
320
+ resolveMetric() {
321
+ const stated = this.Metric?.trim().toLowerCase();
322
+ const match = VALID_METRICS.find((m) => m === stated);
323
+ if (stated && !match) {
324
+ LogError(`Vector index "${this.Name}" declares an unrecognized Metric "${this.Metric}"; requesting "cosine" instead. Valid values: ${VALID_METRICS.join(', ')}.`);
325
+ }
326
+ return match ?? 'cosine';
196
327
  }
197
328
  /**
198
329
  * Resolve `work` or reject after `timeoutMs`, whichever comes first. The timer is cleared when the
@@ -202,46 +333,125 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
202
333
  static withTimeout(work, timeoutMs, label) {
203
334
  return new Promise((resolve, reject) => {
204
335
  const timer = setTimeout(() => {
205
- reject(new Error(`${label} timed out after ${timeoutMs}ms; the provider may still finish creating the index, ` +
206
- `but its metadata was not written back to the record`));
336
+ reject(new ProvisionTimeoutError(`${label} timed out after ${timeoutMs}ms; the provider may still finish on its side, ` +
337
+ `but nothing it returns will be written back to the record`));
207
338
  }, timeoutMs);
208
339
  Promise.resolve(work).then((value) => { clearTimeout(timer); resolve(value); }, (error) => { clearTimeout(timer); reject(error); });
209
340
  });
210
341
  }
211
342
  /**
212
343
  * After provider creates the index, save the returned metadata back to our record.
213
- * Stores ExternalID, Dimensions, Metric, and full provider config as JSON.
344
+ * Stores ExternalID, Dimensions, Metric, the provisioning state, and provider config as JSON.
345
+ *
346
+ * **Provider truth beats our request.** `Dimensions` and `Metric` are read off the provider's
347
+ * own response when it reports them, and only fall back to what we asked for. A provider is
348
+ * free to round, clamp or ignore a requested dimension, and the whole point of these two
349
+ * columns is to be checkable against the embeddings we later generate; a column that can
350
+ * only ever repeat our own request is not a check.
351
+ *
352
+ * A failed write-back is logged rather than recorded: the index exists, and the only way to
353
+ * record anything on the row is the same save that just failed.
214
354
  */
215
355
  async saveProviderMetadata(providerResult, params, sanitizedName) {
216
356
  try {
217
- // Save what we know from our params + whatever the provider returned
218
357
  this.ExternalID = sanitizedName; // The sanitized name used in the provider
219
- this.Dimensions = params.dimension;
220
- this.Metric = params.metric;
221
- // Store full provider response + our spec as JSON config
222
- const config = {};
358
+ this.Dimensions = this.readProviderDimension(providerResult) ?? params.dimension;
359
+ this.Metric = this.readProviderMetric(providerResult) ?? params.metric;
360
+ // Store full provider response + our spec as JSON config while preserving existing keys (e.g. namespaceField)
361
+ const extra = {};
223
362
  if (params.additionalParams) {
224
- config['spec'] = params.additionalParams;
363
+ extra['spec'] = params.additionalParams;
225
364
  }
226
365
  if (providerResult && typeof providerResult === 'object') {
227
366
  // Extract useful provider metadata (host, status, etc.)
228
367
  if ('host' in providerResult)
229
- config['host'] = providerResult['host'];
368
+ extra['host'] = providerResult['host'];
230
369
  if ('status' in providerResult)
231
- config['status'] = providerResult['status'];
370
+ extra['status'] = providerResult['status'];
232
371
  }
233
- this.ProviderConfig = JSON.stringify(config);
372
+ this.ProviderConfig = this.buildProviderConfig({ state: 'provisioned' }, extra);
234
373
  const saved = await super.Save();
235
374
  if (saved) {
236
375
  LogStatus(`Saved provider metadata for index "${this.Name}"`);
237
376
  }
238
377
  else {
239
- LogError(`Failed to save provider metadata for index "${this.Name}": ${this.LatestResult?.CompleteMessage}`);
378
+ LogError(this.writeBackFailureMessage(sanitizedName, this.LatestResult?.CompleteMessage ?? 'the record save returned false with no message'));
240
379
  }
241
380
  }
242
381
  catch (error) {
243
- LogError(`Error saving provider metadata for index "${this.Name}"`, undefined, error);
382
+ LogError(this.writeBackFailureMessage(sanitizedName, error instanceof Error ? error.message : String(error)), undefined, error);
383
+ }
384
+ }
385
+ writeBackFailureMessage(sanitizedName, reason) {
386
+ return `Vector index "${this.Name}" WAS created in the vector database provider as "${sanitizedName}", but its ` +
387
+ `provider metadata could not be written back to the record: ${reason}. The index exists and the record ` +
388
+ `does not yet address it; set ExternalID to "${sanitizedName}" to reconcile them.`;
389
+ }
390
+ /** The provider's own dimension, when it reported a usable one. */
391
+ readProviderDimension(providerResult) {
392
+ const raw = providerResult?.['dimension'];
393
+ const value = typeof raw === 'number' ? raw : typeof raw === 'string' ? Number(raw) : NaN;
394
+ return Number.isFinite(value) && value > 0 ? value : null;
395
+ }
396
+ /** The provider's own metric, when it reported a recognized one. */
397
+ readProviderMetric(providerResult) {
398
+ const raw = providerResult?.['metric'];
399
+ if (typeof raw !== 'string') {
400
+ return null;
401
+ }
402
+ const normalized = raw.trim().toLowerCase();
403
+ return VALID_METRICS.find((m) => m === normalized) ?? null;
404
+ }
405
+ /**
406
+ * Write the provisioning outcome onto the row, so a row that has no index behind it says so
407
+ * instead of looking identical to one that does.
408
+ *
409
+ * Best-effort by construction: this runs after the caller's save has already returned, and a
410
+ * second failure here must not replace the original diagnosis with a save error.
411
+ */
412
+ async recordProvisionState(outcome) {
413
+ if (outcome.state === 'provisioned') {
414
+ return; // saveProviderMetadata already stamped it, along with the provider's values
415
+ }
416
+ try {
417
+ this.ProviderConfig = this.buildProviderConfig(outcome);
418
+ const saved = await super.Save();
419
+ if (!saved) {
420
+ LogError(`Could not record provisioning state "${outcome.state}" on vector index "${this.Name}": ${this.LatestResult?.CompleteMessage ?? 'save returned false'}`);
421
+ }
422
+ }
423
+ catch (error) {
424
+ LogError(`Could not record provisioning state "${outcome.state}" on vector index "${this.Name}"`, undefined, error);
425
+ }
426
+ }
427
+ /**
428
+ * Merge the provisioning outcome into the existing `ProviderConfig` JSON bag, preserving any
429
+ * driver-specific keys already there (e.g. Pinecone's `namespaceField`).
430
+ */
431
+ buildProviderConfig(outcome, extra) {
432
+ let existing = {};
433
+ if (this.ProviderConfig) {
434
+ try {
435
+ const parsed = JSON.parse(this.ProviderConfig);
436
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
437
+ existing = parsed;
438
+ }
439
+ }
440
+ catch {
441
+ // A ProviderConfig we cannot parse is not something to preserve silently.
442
+ LogError(`Vector index "${this.Name}" has an unparseable ProviderConfig; it is being replaced.`);
443
+ }
444
+ }
445
+ const merged = { ...existing, ...(extra ?? {}) };
446
+ merged['provisionState'] = outcome.state;
447
+ merged['provisionCheckedAt'] = new Date().toISOString();
448
+ if (outcome.reason) {
449
+ merged['provisionMessage'] = outcome.reason;
450
+ }
451
+ else {
452
+ delete merged['provisionMessage'];
244
453
  }
454
+ return JSON.stringify(merged);
245
455
  }
246
456
  };
247
457
  MJVectorIndexEntityServer = MJVectorIndexEntityServer_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"MJVectorIndexEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJVectorIndexEntityServer.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MJVectorIndexEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJVectorIndexEntityServer.server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/custom/query-extraction/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,SAAS,CAAC;AAgB/E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,YAAY,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwB1F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/custom/query-extraction/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,SAAS,CAAC;AAkB/E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,YAAY,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqB1F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E"}
@@ -3,6 +3,8 @@ import { ResolveCompositionReferences, BuildPassthroughParams, MergePassthroughP
3
3
  import { RunLLMEnrichment, MergeParametersWithLLM } from "./enrich.js";
4
4
  import { SyncParameters, SyncFields, SyncEntities, SyncDependencies, RemoveAllRecords } from "./sync.js";
5
5
  import { QueryEngine } from "@memberjunction/core-entities";
6
+ import { LocalCacheManager } from "@memberjunction/core";
7
+ import { UUIDsEqual } from "@memberjunction/global";
6
8
  /**
7
9
  * Runs the full query extraction pipeline:
8
10
  * 1. PARSE — single-pass SQL analysis
@@ -18,12 +20,14 @@ export async function RunExtractionPipeline(ctx) {
18
20
  const parseResult = ParseQuerySQL(ctx.sql, ctx.platform);
19
21
  // ── STAGE 2: RESOLVE ──
20
22
  const resolveResult = resolve(ctx, parseResult);
21
- // ── STAGE 3: ENRICH (best-effort, non-fatal) ──
22
- const llmResult = await RunLLMEnrichment(ctx.sql, resolveResult.EntityMetadata, ctx.contextUser, ctx.metadataProvider);
23
+ // ── STAGE 3: ENRICH (best-effort, non-fatal; skipped on request, which merges like a failed call) ──
24
+ const llmResult = ctx.SkipAIEnrichment
25
+ ? null
26
+ : await RunLLMEnrichment(ctx.sql, resolveResult.EntityMetadata, ctx.contextUser, ctx.metadataProvider);
23
27
  // ── STAGE 4: MERGE ──
24
28
  const { finalParams, finalFields } = merge(resolveResult, llmResult, parseResult, ctx);
25
- // ── STAGE 5: SYNC (parallel DB writes) ──
26
- await sync(ctx, finalParams, finalFields, resolveResult);
29
+ // ── STAGE 5: SYNC (parallel DB writes, cache slots rewritten once at the end) ──
30
+ await runInEntityEventBatches(syncBatchOwners(ctx), () => sync(ctx, finalParams, finalFields, resolveResult));
27
31
  return {
28
32
  UsesTemplate: resolveResult.AllDeterministicParams.length > 0,
29
33
  };
@@ -82,6 +86,47 @@ function merge(resolveResult, llmResult, parseResult, ctx) {
82
86
  : null;
83
87
  return { finalParams, finalFields };
84
88
  }
89
+ /**
90
+ * The objects the sync stage's saves raise their events through. New rows use the pipeline's
91
+ * provider. Existing rows come from `QueryEngine`'s cache and keep whatever provider they were
92
+ * loaded or saved through: the engine's own, or, for a row an earlier request created, that
93
+ * request's provider instance. Each distinct one gets a batch, or its saves would rewrite and
94
+ * publish their slots one save at a time.
95
+ */
96
+ function syncBatchOwners(ctx) {
97
+ const engine = QueryEngine.Instance;
98
+ const owners = new Set([ctx.metadataProvider]);
99
+ if (engine.ProviderToUse) {
100
+ owners.add(engine.ProviderToUse);
101
+ }
102
+ if (engine.Loaded) {
103
+ const existingRows = [
104
+ ...engine.GetQueryParameters(ctx.queryID),
105
+ ...engine.GetQueryFields(ctx.queryID),
106
+ ...engine.QueryEntities.filter(e => UUIDsEqual(e.QueryID, ctx.queryID)),
107
+ ...engine.Dependencies.filter(d => UUIDsEqual(d.QueryID, ctx.queryID)),
108
+ ];
109
+ for (const row of existingRows) {
110
+ if (row.ProviderToUse) {
111
+ owners.add(row.ProviderToUse);
112
+ }
113
+ }
114
+ }
115
+ return [...owners];
116
+ }
117
+ /**
118
+ * Runs `work` inside an entity-event batch for every owner. Each row save would otherwise rewrite
119
+ * and publish its entity's whole shared cache slot (every field of every query, for Query Fields);
120
+ * in a batch each slot is rewritten once when the batch closes. When `work` fails the batch closes
121
+ * as failed and the touched slots are invalidated instead, so every server reloads them.
122
+ */
123
+ async function runInEntityEventBatches(owners, work) {
124
+ if (owners.length === 0) {
125
+ return work();
126
+ }
127
+ const [owner, ...rest] = owners;
128
+ return LocalCacheManager.Instance.RunInEntityEventBatch(owner, () => runInEntityEventBatches(rest, work));
129
+ }
85
130
  async function sync(ctx, finalParams, finalFields, resolveResult) {
86
131
  const syncPromises = [];
87
132
  // Parameters
@@ -106,7 +151,13 @@ async function sync(ctx, finalParams, finalFields, resolveResult) {
106
151
  }
107
152
  // Dependencies
108
153
  syncPromises.push(SyncDependencies(ctx.queryID, resolveResult.ResolvedCompositionRefs, ctx.contextUser, ctx.metadataProvider, ctx.runViewProvider, ctx.isSaved));
109
- await Promise.all(syncPromises);
154
+ // Wait for every write before failing, so the enclosing event batch closes after the last one
155
+ // instead of while some are still in flight.
156
+ const outcomes = await Promise.allSettled(syncPromises);
157
+ const failure = outcomes.find((o) => o.status === 'rejected');
158
+ if (failure) {
159
+ throw failure.reason;
160
+ }
110
161
  }
111
162
  /**
112
163
  * Supplements deterministic fields with richer descriptions from LLM output.
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/custom/query-extraction/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/custom/query-extraction/pipeline.ts"],"names":[],"mappings":"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"}
@@ -118,5 +118,8 @@ export interface QuerySyncContext {
118
118
  /** Caller-provided tested parameter sample values (paramName → sampleValue).
119
119
  * When present, these take highest priority over LLM-generated or heuristic sampleValues. */
120
120
  parameterHints?: Map<string, string>;
121
+ /** Skip the LLM enrichment stage, so the deterministic extraction alone decides parameters
122
+ * and fields (with heuristic descriptions). Set from the save's `SkipEntityAIActions`. */
123
+ SkipAIEnrichment?: boolean;
121
124
  }
122
125
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/custom/query-extraction/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/custom/query-extraction/types.ts"],"names":[],"mappings":"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"}