@memberjunction/core-entities-server 6.2.0-edge.3 → 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.
- package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts +47 -0
- package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJAIAgentSessionEntityServer.server.js +101 -0
- package/dist/custom/MJAIAgentSessionEntityServer.server.js.map +1 -0
- package/dist/custom/MJAIPromptRunEntityServer.server.d.ts +32 -1
- package/dist/custom/MJAIPromptRunEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJAIPromptRunEntityServer.server.js +96 -31
- package/dist/custom/MJAIPromptRunEntityServer.server.js.map +1 -1
- package/dist/custom/MJApplicationEntityServer.server.js +5 -3
- package/dist/custom/MJApplicationEntityServer.server.js.map +1 -1
- package/dist/custom/MJArtifactVersionEntityServer.server.js +2 -2
- package/dist/custom/MJArtifactVersionEntityServer.server.js.map +1 -1
- package/dist/custom/MJConversationDetailEntityServer.server.d.ts +16 -3
- package/dist/custom/MJConversationDetailEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJConversationDetailEntityServer.server.js +62 -5
- package/dist/custom/MJConversationDetailEntityServer.server.js.map +1 -1
- package/dist/custom/MJDataContextItemEntityServer.server.d.ts +33 -0
- package/dist/custom/MJDataContextItemEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJDataContextItemEntityServer.server.js +84 -0
- package/dist/custom/MJDataContextItemEntityServer.server.js.map +1 -0
- package/dist/custom/MJFileEntityServer.server.d.ts +45 -0
- package/dist/custom/MJFileEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJFileEntityServer.server.js +101 -0
- package/dist/custom/MJFileEntityServer.server.js.map +1 -0
- package/dist/custom/MJQueryEntityServer.server.d.ts +5 -1
- package/dist/custom/MJQueryEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJQueryEntityServer.server.js +11 -6
- package/dist/custom/MJQueryEntityServer.server.js.map +1 -1
- package/dist/custom/MJQuerySQLEntityServer.server.js +3 -3
- package/dist/custom/MJQuerySQLEntityServer.server.js.map +1 -1
- package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.d.ts +26 -14
- package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.js +57 -32
- package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.js.map +1 -1
- package/dist/custom/MJUserRoutineEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJUserRoutineEntityServer.server.js +12 -3
- package/dist/custom/MJUserRoutineEntityServer.server.js.map +1 -1
- package/dist/custom/MJUserViewEntityServer.server.d.ts +26 -0
- package/dist/custom/MJUserViewEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJUserViewEntityServer.server.js +74 -4
- package/dist/custom/MJUserViewEntityServer.server.js.map +1 -1
- package/dist/custom/MJVectorIndexEntityServer.server.d.ts +96 -7
- package/dist/custom/MJVectorIndexEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJVectorIndexEntityServer.server.js +276 -37
- package/dist/custom/MJVectorIndexEntityServer.server.js.map +1 -1
- package/dist/custom/query-extraction/pipeline.d.ts.map +1 -1
- package/dist/custom/query-extraction/pipeline.js +56 -5
- package/dist/custom/query-extraction/pipeline.js.map +1 -1
- package/dist/custom/query-extraction/types.d.ts +3 -0
- package/dist/custom/query-extraction/types.d.ts.map +1 -1
- package/dist/custom/rowFilterValidation.d.ts +47 -2
- package/dist/custom/rowFilterValidation.d.ts.map +1 -1
- package/dist/custom/rowFilterValidation.js +122 -11
- package/dist/custom/rowFilterValidation.js.map +1 -1
- package/dist/custom/rubrics/versionPublish.d.ts.map +1 -1
- package/dist/custom/rubrics/versionPublish.js +7 -5
- package/dist/custom/rubrics/versionPublish.js.map +1 -1
- package/dist/custom/sessionConfigGuard.d.ts +70 -0
- package/dist/custom/sessionConfigGuard.d.ts.map +1 -0
- package/dist/custom/sessionConfigGuard.js +125 -0
- package/dist/custom/sessionConfigGuard.js.map +1 -0
- package/dist/custom/template-extraction/pipeline.d.ts +6 -1
- package/dist/custom/template-extraction/pipeline.d.ts.map +1 -1
- package/dist/custom/template-extraction/pipeline.js +15 -6
- package/dist/custom/template-extraction/pipeline.js.map +1 -1
- package/dist/custom/template-extraction/types.d.ts +1 -1
- package/dist/custom/template-extraction/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +30 -30
|
@@ -4,20 +4,50 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var MJVectorIndexEntityServer_1;
|
|
7
8
|
import { BaseEntity, LogError, LogStatus, RunView } from "@memberjunction/core";
|
|
8
9
|
import { RegisterClass, MJGlobal } from "@memberjunction/global";
|
|
9
10
|
import { MJVectorIndexEntity } from "@memberjunction/core-entities";
|
|
10
11
|
import { VectorDBBase } from "@memberjunction/ai-vectordb";
|
|
11
12
|
import { GetAIAPIKey } from "@memberjunction/ai";
|
|
13
|
+
import { AIEmbeddingRunner } from "@memberjunction/ai-prompts";
|
|
12
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
|
+
}
|
|
13
20
|
/**
|
|
14
21
|
* Server-side VectorIndex entity that syncs with the vector database provider.
|
|
15
22
|
* On create: calls vectorDB.CreateIndex() to provision the index in the provider (e.g., Pinecone).
|
|
16
23
|
* On delete: calls vectorDB.DeleteIndex() to remove the index from the provider.
|
|
24
|
+
*
|
|
25
|
+
* Provisioning is DETACHED from the save that triggers it: the save returns once the metadata row is
|
|
26
|
+
* written, and the provider call runs afterwards (see {@link Save}). That call is bounded by
|
|
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.
|
|
30
|
+
* Pinecone's createIndex returns as soon as the request is accepted (we never pass waitUntilReady),
|
|
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}.
|
|
17
34
|
*/
|
|
18
35
|
let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVectorIndexEntity {
|
|
36
|
+
static { MJVectorIndexEntityServer_1 = this; }
|
|
37
|
+
/** Upper bound on one provider CreateIndex call. */
|
|
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'; }
|
|
19
45
|
/**
|
|
20
46
|
* After saving, if this is a new record, create the index in the provider.
|
|
47
|
+
* The provider call is deliberately NOT awaited: the client only needs the metadata row, and the
|
|
48
|
+
* request that triggered the save (an "Auto" index from the UI, or the Config page) must not wait
|
|
49
|
+
* on the provider. Save() never throws over provisioning; the outcome is recorded on the row's
|
|
50
|
+
* `ProviderConfig` instead (see {@link createIndexInProvider}).
|
|
21
51
|
*/
|
|
22
52
|
async Save(options) {
|
|
23
53
|
const isNew = this.IsSaved === false;
|
|
@@ -61,13 +91,63 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
|
|
|
61
91
|
return sanitized;
|
|
62
92
|
}
|
|
63
93
|
/**
|
|
64
|
-
*
|
|
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.
|
|
65
102
|
*/
|
|
66
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() {
|
|
67
138
|
const vectorDB = await this.getVectorDBInstance();
|
|
68
139
|
if (!vectorDB) {
|
|
69
|
-
|
|
70
|
-
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
|
+
};
|
|
71
151
|
}
|
|
72
152
|
// Sanitize the index name for the provider (e.g., Pinecone requires lowercase, no spaces)
|
|
73
153
|
const sanitizedName = this.sanitizeIndexName(this.Name);
|
|
@@ -76,8 +156,8 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
|
|
|
76
156
|
}
|
|
77
157
|
const params = {
|
|
78
158
|
id: sanitizedName,
|
|
79
|
-
dimension: this.resolveDimensions(),
|
|
80
|
-
metric:
|
|
159
|
+
dimension: await this.resolveDimensions(),
|
|
160
|
+
metric: this.resolveMetric(),
|
|
81
161
|
additionalParams: {
|
|
82
162
|
serverless: {
|
|
83
163
|
cloud: 'aws',
|
|
@@ -86,19 +166,13 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
|
|
|
86
166
|
}
|
|
87
167
|
};
|
|
88
168
|
LogStatus(`Creating index "${sanitizedName}" in vector DB provider...`);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
LogStatus(`Index "${sanitizedName}" created successfully in provider`);
|
|
93
|
-
await this.saveProviderMetadata(result.data, params, sanitizedName);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
LogError(`Provider returned error creating index "${sanitizedName}": ${result.message}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
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' };
|
|
101
172
|
}
|
|
173
|
+
LogStatus(`Index "${sanitizedName}" created successfully in provider`);
|
|
174
|
+
await this.saveProviderMetadata(result.data, params, sanitizedName);
|
|
175
|
+
return { state: 'provisioned' };
|
|
102
176
|
}
|
|
103
177
|
/**
|
|
104
178
|
* Delete the index from the vector database provider.
|
|
@@ -109,6 +183,11 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
|
|
|
109
183
|
LogError(`Cannot delete index: no VectorDB instance for database ${this.VectorDatabaseID}`);
|
|
110
184
|
return;
|
|
111
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
|
+
}
|
|
112
191
|
// Same rule every read path uses to address the index on its provider (ExternalID, else Name).
|
|
113
192
|
// An index provisioned through Save() above always has ExternalID set to its sanitized name.
|
|
114
193
|
const providerIndexName = AIEngineBase.Instance.GetProviderIndexName(this);
|
|
@@ -169,53 +248,213 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
|
|
|
169
248
|
* Resolve the embedding dimensions to create the provider index at.
|
|
170
249
|
*
|
|
171
250
|
* Prefers this index's own `Dimensions` column, which is where the operator states it and what the
|
|
172
|
-
* embedding call already honors.
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
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.
|
|
176
257
|
*
|
|
177
|
-
* 1536 (OpenAI text-embedding-3-small) remains the fallback
|
|
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.
|
|
178
262
|
*/
|
|
179
|
-
resolveDimensions() {
|
|
180
|
-
|
|
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.
|
|
314
|
+
*
|
|
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.
|
|
319
|
+
*/
|
|
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';
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Resolve `work` or reject after `timeoutMs`, whichever comes first. The timer is cleared when the
|
|
330
|
+
* work settles, so a fast provider leaves nothing behind. On timeout the provider may still finish
|
|
331
|
+
* on its side; the record simply does not get its metadata written back, and the log says so.
|
|
332
|
+
*/
|
|
333
|
+
static withTimeout(work, timeoutMs, label) {
|
|
334
|
+
return new Promise((resolve, reject) => {
|
|
335
|
+
const timer = setTimeout(() => {
|
|
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`));
|
|
338
|
+
}, timeoutMs);
|
|
339
|
+
Promise.resolve(work).then((value) => { clearTimeout(timer); resolve(value); }, (error) => { clearTimeout(timer); reject(error); });
|
|
340
|
+
});
|
|
181
341
|
}
|
|
182
342
|
/**
|
|
183
343
|
* After provider creates the index, save the returned metadata back to our record.
|
|
184
|
-
* Stores ExternalID, Dimensions, Metric, and
|
|
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.
|
|
185
354
|
*/
|
|
186
355
|
async saveProviderMetadata(providerResult, params, sanitizedName) {
|
|
187
356
|
try {
|
|
188
|
-
// Save what we know from our params + whatever the provider returned
|
|
189
357
|
this.ExternalID = sanitizedName; // The sanitized name used in the provider
|
|
190
|
-
this.Dimensions = params.dimension;
|
|
191
|
-
this.Metric = params.metric;
|
|
192
|
-
// Store full provider response + our spec as JSON config
|
|
193
|
-
const
|
|
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 = {};
|
|
194
362
|
if (params.additionalParams) {
|
|
195
|
-
|
|
363
|
+
extra['spec'] = params.additionalParams;
|
|
196
364
|
}
|
|
197
365
|
if (providerResult && typeof providerResult === 'object') {
|
|
198
366
|
// Extract useful provider metadata (host, status, etc.)
|
|
199
367
|
if ('host' in providerResult)
|
|
200
|
-
|
|
368
|
+
extra['host'] = providerResult['host'];
|
|
201
369
|
if ('status' in providerResult)
|
|
202
|
-
|
|
370
|
+
extra['status'] = providerResult['status'];
|
|
203
371
|
}
|
|
204
|
-
this.ProviderConfig =
|
|
372
|
+
this.ProviderConfig = this.buildProviderConfig({ state: 'provisioned' }, extra);
|
|
205
373
|
const saved = await super.Save();
|
|
206
374
|
if (saved) {
|
|
207
375
|
LogStatus(`Saved provider metadata for index "${this.Name}"`);
|
|
208
376
|
}
|
|
209
377
|
else {
|
|
210
|
-
LogError(
|
|
378
|
+
LogError(this.writeBackFailureMessage(sanitizedName, this.LatestResult?.CompleteMessage ?? 'the record save returned false with no message'));
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
catch (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'}`);
|
|
211
421
|
}
|
|
212
422
|
}
|
|
213
423
|
catch (error) {
|
|
214
|
-
LogError(`
|
|
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'];
|
|
215
453
|
}
|
|
454
|
+
return JSON.stringify(merged);
|
|
216
455
|
}
|
|
217
456
|
};
|
|
218
|
-
MJVectorIndexEntityServer = __decorate([
|
|
457
|
+
MJVectorIndexEntityServer = MJVectorIndexEntityServer_1 = __decorate([
|
|
219
458
|
RegisterClass(BaseEntity, 'MJ: Vector Indexes')
|
|
220
459
|
], MJVectorIndexEntityServer);
|
|
221
460
|
export { MJVectorIndexEntityServer };
|
|
@@ -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;
|
|
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 =
|
|
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
|
-
|
|
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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EACH,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,gCAAgC,EAChC,kCAAkC,GACrC,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/custom/query-extraction/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EACH,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,gCAAgC,EAChC,kCAAkC,GACrC,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAUpD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAqB;IAC7D,uBAAuB;IACvB,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEzD,yBAAyB;IACzB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAEhD,sGAAsG;IACtG,MAAM,SAAS,GAAG,GAAG,CAAC,gBAAgB;QAClC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE3G,uBAAuB;IACvB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAEvF,kFAAkF;IAClF,MAAM,uBAAuB,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9G,OAAO;QACH,YAAY,EAAE,aAAa,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC;KAChE,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAqB;IACxD,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;QACxG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;QACpG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;QACtG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;QAC1G,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC;KACrG,CAAC,CAAC;AACP,CAAC;AAED,gFAAgF;AAEhF,SAAS,OAAO,CAAC,GAAqB,EAAE,WAA6C;IACjF,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAChC,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;IAEhD,yBAAyB;IACzB,MAAM,uBAAuB,GAAG,4BAA4B,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEjG,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;IACtH,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,WAAW,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAE1G,oDAAoD;IACpD,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtG,8GAA8G;IAC9G,MAAM,cAAc,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC;WACvG,4BAA4B,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAE/D,OAAO;QACH,uBAAuB,EAAE,uBAAuB;QAChD,sBAAsB,EAAE,sBAAsB;QAC9C,kBAAkB,EAAE,kBAAkB;QACtC,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,cAAc;KACjC,CAAC;AACN,CAAC;AAED,SAAS,KAAK,CACV,aAA4B,EAC5B,SAAmF,EACnF,WAA6C,EAC7C,GAAqB;IAErB,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAEhC,wCAAwC;IACxC,MAAM,WAAW,GAAG,aAAa,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC;QAC/D,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,sBAAsB,EAAE,SAAS,EAAE,aAAa,CAAC,kBAAkB,EAAE,GAAG,CAAC,cAAc,CAAC;QAC/H,CAAC,CAAC,IAAI,CAAC;IAEX,mFAAmF;IACnF,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;IACpD,MAAM,SAAS,GAAG,SAAS,EAAE,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QACnH,CAAC,CAAC,SAAS,CAAC,YAAY;QACxB,CAAC,CAAC,IAAI,CAAC;IAEX,2EAA2E;IAC3E,MAAM,SAAS,GAAG,cAAc;QAC5B,CAAC,CAAC,8BAA8B,CAAC,cAAc,EAAE,SAAS,CAAC;QAC3D,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,WAAW,GAAG,SAAS;QACzB,CAAC,CAAC,kCAAkC,CAC9B,gCAAgC,CAAC,SAAS,EAAE,aAAa,CAAC,uBAAuB,EAAE,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC,EACjH,WAAW,CAAC,aAAa,EACzB,WAAW,CAAC,SAAS,EACrB,EAAE,CACL;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,GAAqB;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,YAAY,GAAiB;YAC/B,GAAG,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;YACzC,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;YACrC,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACvE,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;SACzE,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,uBAAuB,CAAC,MAAgB,EAAE,IAAyB;IAC9E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IAChC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9G,CAAC;AAED,KAAK,UAAU,IAAI,CACf,GAAqB,EACrB,WAA6D,EAC7D,WAAoC,EACpC,aAA4B;IAE5B,MAAM,YAAY,GAAoB,EAAE,CAAC;IAEzC,aAAa;IACb,IAAI,WAAW,EAAE,CAAC;QACd,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACzI,CAAC;SAAM,CAAC;QACJ,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAChI,CAAC;IAED,uFAAuF;IACvF,qGAAqG;IACrG,IAAI,WAAW,EAAE,CAAC;QACd,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnJ,CAAC;IACD,2GAA2G;IAE3G,WAAW;IACX,IAAI,aAAa,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACxJ,CAAC;SAAM,CAAC;QACJ,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9H,CAAC;IAED,eAAe;IACf,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,uBAAuB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjK,8FAA8F;IAC9F,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IAC1F,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,OAAO,CAAC,MAAM,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,8BAA8B,CACnC,cAAgC,EAChC,SAAkC;IAElC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAEhE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IACpD,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QACzB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,OAAO;YACH,GAAG,EAAE;YACL,mEAAmE;YACnE,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW;YACnD,6DAA6D;YAC7D,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;YAC1D,kDAAkD;YAClD,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS;YAC7C,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,IAAI,EAAE,CAAC,sBAAsB;YACpF,sEAAsE;YACtE,YAAY,EAAE,EAAE,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY;SACzD,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -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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"}
|