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

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 (32) hide show
  1. package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts +24 -0
  2. package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts.map +1 -0
  3. package/dist/custom/MJAIAgentSessionEntityServer.server.js +63 -0
  4. package/dist/custom/MJAIAgentSessionEntityServer.server.js.map +1 -0
  5. package/dist/custom/MJAIPromptRunEntityServer.server.d.ts +32 -1
  6. package/dist/custom/MJAIPromptRunEntityServer.server.d.ts.map +1 -1
  7. package/dist/custom/MJAIPromptRunEntityServer.server.js +96 -31
  8. package/dist/custom/MJAIPromptRunEntityServer.server.js.map +1 -1
  9. package/dist/custom/MJApplicationEntityServer.server.js +5 -3
  10. package/dist/custom/MJApplicationEntityServer.server.js.map +1 -1
  11. package/dist/custom/MJArtifactVersionEntityServer.server.js +2 -2
  12. package/dist/custom/MJArtifactVersionEntityServer.server.js.map +1 -1
  13. package/dist/custom/MJConversationDetailEntityServer.server.d.ts +16 -3
  14. package/dist/custom/MJConversationDetailEntityServer.server.d.ts.map +1 -1
  15. package/dist/custom/MJConversationDetailEntityServer.server.js +62 -5
  16. package/dist/custom/MJConversationDetailEntityServer.server.js.map +1 -1
  17. package/dist/custom/MJVectorIndexEntityServer.server.d.ts +19 -0
  18. package/dist/custom/MJVectorIndexEntityServer.server.d.ts.map +1 -1
  19. package/dist/custom/MJVectorIndexEntityServer.server.js +31 -2
  20. package/dist/custom/MJVectorIndexEntityServer.server.js.map +1 -1
  21. package/dist/custom/rubrics/versionPublish.d.ts.map +1 -1
  22. package/dist/custom/rubrics/versionPublish.js +7 -5
  23. package/dist/custom/rubrics/versionPublish.js.map +1 -1
  24. package/dist/custom/sessionConfigGuard.d.ts +70 -0
  25. package/dist/custom/sessionConfigGuard.d.ts.map +1 -0
  26. package/dist/custom/sessionConfigGuard.js +125 -0
  27. package/dist/custom/sessionConfigGuard.js.map +1 -0
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/package.json +30 -30
@@ -4,12 +4,13 @@ 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
- import { BaseEntity } from "@memberjunction/core";
8
- import { RegisterClass } from "@memberjunction/global";
7
+ import { BaseEntity, BaseEntityResult, LogError, RunView } from "@memberjunction/core";
8
+ import { EscapeSQLString, RegisterClass, UUIDsEqual } from "@memberjunction/global";
9
9
  import { MJConversationDetailEntityExtended } from "@memberjunction/core-entities";
10
10
  /**
11
11
  * Server-side subclass of MJConversationDetailEntity that automatically tracks
12
- * when the original message content has been modified.
12
+ * when the original message content has been modified, and checks the fork of
13
+ * each new message.
13
14
  *
14
15
  * When a user edits their message after initial creation, the OriginalMessageChanged
15
16
  * flag is set to true, allowing the UI to display an "(Edited)" indicator. This is
@@ -31,18 +32,74 @@ import { MJConversationDetailEntityExtended } from "@memberjunction/core-entitie
31
32
  * run server-side (`ProviderType === 'Database'`), which is exactly where it was being
32
33
  * shadowed out. Inheriting composes the two behaviors instead: this class flags the edit,
33
34
  * then delegates to the permission gate via `super.Save`.
35
+ *
36
+ * A new row keeps the `BranchID` its writer set (null is Main). On create, a non-null `BranchID`
37
+ * must name a fork of the same conversation; otherwise `Save` returns `false` with a result
38
+ * entry and nothing is written.
34
39
  */
35
40
  let MJConversationDetailEntityServer = class MJConversationDetailEntityServer extends MJConversationDetailEntityExtended {
36
41
  /**
37
- * Override Save to detect message changes and set the OriginalMessageChanged flag.
38
- * This is done as pre-processing before calling super.Save() to ensure it's a single DB round trip.
42
+ * Sets the OriginalMessageChanged flag on a genuine message edit, checks a new row's fork,
43
+ * then calls super.Save(). Returns `false` without saving when the fork check fails.
39
44
  */
40
45
  async Save(options) {
41
46
  if (this.ShouldFlagOriginalMessageChanged()) {
42
47
  this.OriginalMessageChanged = true;
43
48
  }
49
+ const problem = await this.CheckBranchOnCreate();
50
+ if (problem) {
51
+ this.recordCreateFailure(problem);
52
+ return false;
53
+ }
44
54
  return super.Save(options);
45
55
  }
56
+ /**
57
+ * On create, a non-null BranchID must name a fork of the same conversation. Returns why the save
58
+ * must fail, or null when it may go on. An existing row, a Main row (null BranchID), a row with no
59
+ * ConversationID and a save with no context user are not checked.
60
+ */
61
+ async CheckBranchOnCreate() {
62
+ if (this.IsSaved || this.BranchID == null || !this.ConversationID) {
63
+ return null;
64
+ }
65
+ const user = this.ContextCurrentUser;
66
+ if (!user) {
67
+ return null;
68
+ }
69
+ const branchId = this.BranchID;
70
+ try {
71
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
72
+ const result = await rv.RunView({
73
+ EntityName: 'MJ: Conversation Branches',
74
+ ExtraFilter: `ID='${EscapeSQLString(branchId)}'`,
75
+ Fields: ['ID', 'ConversationID'],
76
+ ResultType: 'simple',
77
+ }, user);
78
+ if (!result.Success) {
79
+ LogError(`MJConversationDetailEntityServer: could not read fork ${branchId}: ${result.ErrorMessage}`);
80
+ return 'Unable to check the fork of this message.';
81
+ }
82
+ const fork = result.Results?.[0];
83
+ if (!fork || !UUIDsEqual(fork.ConversationID, this.ConversationID)) {
84
+ return `Fork ${branchId} does not belong to conversation ${this.ConversationID}.`;
85
+ }
86
+ return null;
87
+ }
88
+ catch (error) {
89
+ LogError(`MJConversationDetailEntityServer: could not read fork ${branchId}: ${error instanceof Error ? error.message : String(error)}`);
90
+ return 'Unable to check the fork of this message.';
91
+ }
92
+ }
93
+ /** Records a failed create in the result history, so callers see why nothing was written. */
94
+ recordCreateFailure(message) {
95
+ const result = new BaseEntityResult();
96
+ result.Success = false;
97
+ result.Type = 'create';
98
+ result.Message = message;
99
+ result.StartedAt = new Date();
100
+ result.EndedAt = new Date();
101
+ this.RegisterResultHistoryEntry(result);
102
+ }
46
103
  /**
47
104
  * True when this save is a genuine Message EDIT on an existing record — not one of
48
105
  * the framework's own Message rewrites:
@@ -1 +1 @@
1
- {"version":3,"file":"MJConversationDetailEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJConversationDetailEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,kCAAkC;IACpF;;;OAGG;IACM,KAAK,CAAC,IAAI,CAAC,OAA2B;QAC3C,IAAI,IAAI,CAAC,gCAAgC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;OAWG;IACI,gCAAgC;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,WAAW,EAAE,KAAK,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAA;AA1CY,gCAAgC;IAD5C,aAAa,CAAC,UAAU,EAAE,0BAA0B,CAAC;GACzC,gCAAgC,CA0C5C"}
1
+ {"version":3,"file":"MJConversationDetailEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJConversationDetailEntityServer.server.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,23 @@ import { MJVectorIndexEntity } from "@memberjunction/core-entities";
4
4
  * Server-side VectorIndex entity that syncs with the vector database provider.
5
5
  * On create: calls vectorDB.CreateIndex() to provision the index in the provider (e.g., Pinecone).
6
6
  * On delete: calls vectorDB.DeleteIndex() to remove the index from the provider.
7
+ *
8
+ * Provisioning is DETACHED from the save that triggers it: the save returns once the metadata row is
9
+ * written, and the provider call runs afterwards (see {@link Save}). That call is bounded by
10
+ * {@link CREATE_INDEX_TIMEOUT_MS}: past it the hook stops waiting, logs, and skips the metadata
11
+ * write-back. The provider call itself is abandoned, not cancelled (there is no cancellation handle),
12
+ * so the bound limits how long this record's provisioning stays open, not the provider's work.
13
+ * Pinecone's createIndex returns as soon as the request is accepted (we never pass waitUntilReady),
14
+ * so the bound only ever trips on a hung connection, not on a slow index build.
7
15
  */
8
16
  export declare class MJVectorIndexEntityServer extends MJVectorIndexEntity {
17
+ /** Upper bound on one provider CreateIndex call. */
18
+ static readonly CREATE_INDEX_TIMEOUT_MS = 60000;
9
19
  /**
10
20
  * After saving, if this is a new record, create the index in the provider.
21
+ * The provider call is deliberately NOT awaited: the client only needs the metadata row, and the
22
+ * request that triggered the save (an "Auto" index from the UI, or the Config page) must not wait
23
+ * on the provider. Failures are logged; the record keeps its metadata row either way.
11
24
  */
12
25
  Save(options?: EntitySaveOptions): Promise<boolean>;
13
26
  /**
@@ -45,6 +58,12 @@ export declare class MJVectorIndexEntityServer extends MJVectorIndexEntity {
45
58
  * 1536 (OpenAI text-embedding-3-small) remains the fallback for records that never set it.
46
59
  */
47
60
  private resolveDimensions;
61
+ /**
62
+ * Resolve `work` or reject after `timeoutMs`, whichever comes first. The timer is cleared when the
63
+ * work settles, so a fast provider leaves nothing behind. On timeout the provider may still finish
64
+ * on its side; the record simply does not get its metadata written back, and the log says so.
65
+ */
66
+ private static withTimeout;
48
67
  /**
49
68
  * After provider creates the index, save the returned metadata back to our record.
50
69
  * Stores ExternalID, Dimensions, Metric, and full provider config as JSON.
@@ -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;;;;GAIG;AACH,qBACa,yBAA0B,SAAQ,mBAAmB;IAC9D;;OAEG;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;IAuCnC;;OAEG;YACW,uBAAuB;IAmBrC;;;OAGG;YACW,mBAAmB;IAgDjC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;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,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"}
@@ -4,6 +4,7 @@ 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";
@@ -14,10 +15,24 @@ import { AIEngineBase } from "@memberjunction/ai-engine-base";
14
15
  * Server-side VectorIndex entity that syncs with the vector database provider.
15
16
  * On create: calls vectorDB.CreateIndex() to provision the index in the provider (e.g., Pinecone).
16
17
  * On delete: calls vectorDB.DeleteIndex() to remove the index from the provider.
18
+ *
19
+ * Provisioning is DETACHED from the save that triggers it: the save returns once the metadata row is
20
+ * 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.
24
+ * Pinecone's createIndex returns as soon as the request is accepted (we never pass waitUntilReady),
25
+ * so the bound only ever trips on a hung connection, not on a slow index build.
17
26
  */
18
27
  let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVectorIndexEntity {
28
+ static { MJVectorIndexEntityServer_1 = this; }
29
+ /** Upper bound on one provider CreateIndex call. */
30
+ static { this.CREATE_INDEX_TIMEOUT_MS = 60_000; }
19
31
  /**
20
32
  * After saving, if this is a new record, create the index in the provider.
33
+ * The provider call is deliberately NOT awaited: the client only needs the metadata row, and the
34
+ * 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.
21
36
  */
22
37
  async Save(options) {
23
38
  const isNew = this.IsSaved === false;
@@ -87,7 +102,7 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
87
102
  };
88
103
  LogStatus(`Creating index "${sanitizedName}" in vector DB provider...`);
89
104
  try {
90
- const result = await vectorDB.CreateIndex(params);
105
+ const result = await MJVectorIndexEntityServer_1.withTimeout(vectorDB.CreateIndex(params), MJVectorIndexEntityServer_1.CREATE_INDEX_TIMEOUT_MS, `CreateIndex("${sanitizedName}")`);
91
106
  if (result.success) {
92
107
  LogStatus(`Index "${sanitizedName}" created successfully in provider`);
93
108
  await this.saveProviderMetadata(result.data, params, sanitizedName);
@@ -179,6 +194,20 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
179
194
  resolveDimensions() {
180
195
  return this.Dimensions ?? 1536;
181
196
  }
197
+ /**
198
+ * Resolve `work` or reject after `timeoutMs`, whichever comes first. The timer is cleared when the
199
+ * work settles, so a fast provider leaves nothing behind. On timeout the provider may still finish
200
+ * on its side; the record simply does not get its metadata written back, and the log says so.
201
+ */
202
+ static withTimeout(work, timeoutMs, label) {
203
+ return new Promise((resolve, reject) => {
204
+ 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`));
207
+ }, timeoutMs);
208
+ Promise.resolve(work).then((value) => { clearTimeout(timer); resolve(value); }, (error) => { clearTimeout(timer); reject(error); });
209
+ });
210
+ }
182
211
  /**
183
212
  * After provider creates the index, save the returned metadata back to our record.
184
213
  * Stores ExternalID, Dimensions, Metric, and full provider config as JSON.
@@ -215,7 +244,7 @@ let MJVectorIndexEntityServer = class MJVectorIndexEntityServer extends MJVector
215
244
  }
216
245
  }
217
246
  };
218
- MJVectorIndexEntityServer = __decorate([
247
+ MJVectorIndexEntityServer = MJVectorIndexEntityServer_1 = __decorate([
219
248
  RegisterClass(BaseEntity, 'MJ: Vector Indexes')
220
249
  ], MJVectorIndexEntityServer);
221
250
  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":"versionPublish.d.ts","sourceRoot":"","sources":["../../../src/custom/rubrics/versionPublish.ts"],"names":[],"mappings":"AACA,OAAO,EAA0E,KAAK,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE7L,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,SAAgB,OAAO,EAAE,MAAM,EAAE,CAAC;gBACf,OAAO,EAAE,MAAM,EAAE;CAKvC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE;QACX,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,EAAE,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC3F,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,EAAE,IAAI,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,CAqDnH;AAoBD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,qBAAqB,GAAG,IAAI,EAClC,KAAK,EAAE,qBAAqB,EAC5B,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,GACnD,OAAO,CAAC,aAAa,CAAC,CA4BxB;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAOnF;AAED,KAAK,MAAM,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAAC;AAQzG;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAK1M"}
1
+ {"version":3,"file":"versionPublish.d.ts","sourceRoot":"","sources":["../../../src/custom/rubrics/versionPublish.ts"],"names":[],"mappings":"AACA,OAAO,EAA0E,KAAK,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE7L,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,SAAgB,OAAO,EAAE,MAAM,EAAE,CAAC;gBACf,OAAO,EAAE,MAAM,EAAE;CAKvC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE;QACX,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,EAAE,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC3F,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,EAAE,IAAI,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,CAuDnH;AAoBD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,qBAAqB,GAAG,IAAI,EAClC,KAAK,EAAE,qBAAqB,EAC5B,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,GACnD,OAAO,CAAC,aAAa,CAAC,CA4BxB;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAOnF;AAED,KAAK,MAAM,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAAC;AAQzG;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAK1M"}
@@ -1,4 +1,4 @@
1
- import { NormalizeUUID, UUIDsEqual } from '@memberjunction/global';
1
+ import { NormalizeUUID, UUIDMap, UUIDsEqual } from '@memberjunction/global';
2
2
  import { HighestNonDraftVersion, RubricVersionDiff, SnapshotFromRows, Sha256Hex } from '@memberjunction/rubrics-base';
3
3
  export class RubricPublishError extends Error {
4
4
  constructor(details) {
@@ -18,14 +18,16 @@ export class RubricPublishError extends Error {
18
18
  export function ValidateRubricTree(version) {
19
19
  const errors = [];
20
20
  const warnings = [];
21
- const byId = new Map(version.nodes.map(node => [NormalizeUUID(node.id), node]));
21
+ // UUIDMap, so every lookup below is case-insensitive. The advisory-ancestor walk used to look up
22
+ // a raw parentId in a normalized-key Map and silently stopped on upper-case (SQL Server) IDs.
23
+ const byId = new UUIDMap(version.nodes.map((node) => [node.id, node]));
22
24
  const keys = new Set();
23
25
  const childrenOf = (id) => version.nodes.filter(item => UUIDsEqual(item.parentId, id));
24
26
  for (const node of version.nodes) {
25
27
  if (keys.has(node.key))
26
28
  errors.push(`Duplicate key ${node.key}.`);
27
29
  keys.add(node.key);
28
- if (node.parentId && !byId.has(NormalizeUUID(node.parentId)))
30
+ if (node.parentId && !byId.Has(node.parentId))
29
31
  errors.push(`${node.key} points at a missing parent.`);
30
32
  if (node.nodeType === 'Criterion' && !node.scaleId)
31
33
  errors.push(`${node.key} is a criterion with no scale.`);
@@ -51,9 +53,9 @@ export function ValidateRubricTree(version) {
51
53
  for (const leaf of version.nodes.filter(node => node.nodeType === 'Criterion' && !node.isAdvisory)) {
52
54
  const seen = new Set();
53
55
  let parentId = leaf.parentId;
54
- while (parentId && byId.has(parentId) && !seen.has(parentId)) {
56
+ while (parentId && byId.Has(parentId) && !seen.has(parentId)) {
55
57
  seen.add(parentId);
56
- const parent = byId.get(parentId);
58
+ const parent = byId.Get(parentId);
57
59
  if (parent.isAdvisory) {
58
60
  errors.push(`${leaf.key} is a non-advisory leaf under the advisory group ${parent.key}.`);
59
61
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"versionPublish.js","sourceRoot":"","sources":["../../../src/custom/rubrics/versionPublish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versionPublish.js","sourceRoot":"","sources":["../../../src/custom/rubrics/versionPublish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @fileoverview Server-authoritative keys inside `MJ: AI Agent Sessions.Config`, and the in-process
3
+ * capability that lets server code (and only server code) change them.
4
+ *
5
+ * ## The problem this solves
6
+ *
7
+ * `AIAgentSession.Config` is a free-form JSON column that the **session owner can write directly**:
8
+ * the `UI` and `Widget Guest` roles hold `CanUpdate` on the entity (scoped to their own rows), and the
9
+ * generated `UpdateMJAIAgentSession` mutation plus `StartAgentSession(configJson)` hand client JSON
10
+ * straight to `Save()`. A few keys in that blob are not preferences — they are **server decisions the
11
+ * client must not be able to make for itself**:
12
+ *
13
+ * - `maxSessionDeadlineIso` — the absolute wall-clock deadline the `SessionJanitor` enforces. A guest
14
+ * who could rewrite it could extend its own (cost-bearing) voice session indefinitely.
15
+ * - `identityVerification` — the verification state of the session (pending hashed token/code,
16
+ * attempt counters, and the verified identity). A client who could write it could mark itself
17
+ * verified, reset its attempt counter, or forge the policy it is held to.
18
+ * - `channels` — the session's resolved channel scope (which interactive channels the server put IN
19
+ * the session). A client who could delete or widen it could unscope the session and save state or
20
+ * artifacts for channels its agent/app configuration excluded.
21
+ *
22
+ * `MJAIAgentSessionEntityServer` calls {@link FindProtectedSessionConfigChanges} from `Validate()` and
23
+ * refuses any save that changes one of these keys — **unless** the save runs inside
24
+ * {@link RunWithTrustedSessionConfigWrites}.
25
+ *
26
+ * ## Why an in-process scope, not a role or flag
27
+ *
28
+ * Trust must be something a remote caller cannot assert. A request body, a header, an entity field —
29
+ * all attacker-controlled. An `AsyncLocalStorage` scope entered by server code is invisible to the
30
+ * network: only code already running inside the MJServer process can enter it. Every legitimate
31
+ * writer (the mint resolver, the verification service) is such code.
32
+ *
33
+ * The scope is held in the **global object store**, not a module-level variable, for the same reason
34
+ * `BaseSingleton` is: if a bundler or a duplicated install loads this module twice, a module-level
35
+ * `AsyncLocalStorage` would give the writer and the validator two different scopes and every trusted
36
+ * write would be refused.
37
+ *
38
+ * @module @memberjunction/core-entities-server
39
+ */
40
+ /**
41
+ * The `Config` keys only trusted server code may add, change or remove.
42
+ * New server-authoritative session keys belong here (and nowhere else).
43
+ */
44
+ export declare const PROTECTED_SESSION_CONFIG_KEYS: readonly string[];
45
+ /**
46
+ * Runs `work` with permission to change {@link PROTECTED_SESSION_CONFIG_KEYS}. The permission follows
47
+ * the async call chain started inside `work` (every `await`, timer and promise it spawns) and ends
48
+ * when `work` settles.
49
+ *
50
+ * **Server code only.** Never call this from anything that forwards client-supplied JSON into the
51
+ * session `Config` — wrap exactly the statement that writes server-decided values, nothing wider.
52
+ *
53
+ * @param work - the asynchronous operation that saves the trusted values
54
+ * @returns whatever `work` returns
55
+ */
56
+ export declare function RunWithTrustedSessionConfigWrites<T>(work: () => Promise<T>): Promise<T>;
57
+ /** True while inside {@link RunWithTrustedSessionConfigWrites}. */
58
+ export declare function IsTrustedSessionConfigWriteActive(): boolean;
59
+ /**
60
+ * Which protected keys differ between two `Config` JSON values.
61
+ *
62
+ * Comparison is semantic (key order and whitespace are ignored), so a server rewrite that merely
63
+ * re-serializes the blob is not a change. Adding, altering or removing a protected key is.
64
+ *
65
+ * @param previousRaw - the stored `Config` (null/undefined for a new record)
66
+ * @param nextRaw - the `Config` about to be saved
67
+ * @returns the protected keys that changed (empty when none did)
68
+ */
69
+ export declare function FindProtectedSessionConfigChanges(previousRaw: string | null | undefined, nextRaw: string | null | undefined): string[];
70
+ //# sourceMappingURL=sessionConfigGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionConfigGuard.d.ts","sourceRoot":"","sources":["../../src/custom/sessionConfigGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAKH;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAAkE,CAAC;AAgB9H;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEvF;AAED,mEAAmE;AACnE,wBAAgB,iCAAiC,IAAI,OAAO,CAE3D;AAoCD;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC7C,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,EAAE,CAIV"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * @fileoverview Server-authoritative keys inside `MJ: AI Agent Sessions.Config`, and the in-process
3
+ * capability that lets server code (and only server code) change them.
4
+ *
5
+ * ## The problem this solves
6
+ *
7
+ * `AIAgentSession.Config` is a free-form JSON column that the **session owner can write directly**:
8
+ * the `UI` and `Widget Guest` roles hold `CanUpdate` on the entity (scoped to their own rows), and the
9
+ * generated `UpdateMJAIAgentSession` mutation plus `StartAgentSession(configJson)` hand client JSON
10
+ * straight to `Save()`. A few keys in that blob are not preferences — they are **server decisions the
11
+ * client must not be able to make for itself**:
12
+ *
13
+ * - `maxSessionDeadlineIso` — the absolute wall-clock deadline the `SessionJanitor` enforces. A guest
14
+ * who could rewrite it could extend its own (cost-bearing) voice session indefinitely.
15
+ * - `identityVerification` — the verification state of the session (pending hashed token/code,
16
+ * attempt counters, and the verified identity). A client who could write it could mark itself
17
+ * verified, reset its attempt counter, or forge the policy it is held to.
18
+ * - `channels` — the session's resolved channel scope (which interactive channels the server put IN
19
+ * the session). A client who could delete or widen it could unscope the session and save state or
20
+ * artifacts for channels its agent/app configuration excluded.
21
+ *
22
+ * `MJAIAgentSessionEntityServer` calls {@link FindProtectedSessionConfigChanges} from `Validate()` and
23
+ * refuses any save that changes one of these keys — **unless** the save runs inside
24
+ * {@link RunWithTrustedSessionConfigWrites}.
25
+ *
26
+ * ## Why an in-process scope, not a role or flag
27
+ *
28
+ * Trust must be something a remote caller cannot assert. A request body, a header, an entity field —
29
+ * all attacker-controlled. An `AsyncLocalStorage` scope entered by server code is invisible to the
30
+ * network: only code already running inside the MJServer process can enter it. Every legitimate
31
+ * writer (the mint resolver, the verification service) is such code.
32
+ *
33
+ * The scope is held in the **global object store**, not a module-level variable, for the same reason
34
+ * `BaseSingleton` is: if a bundler or a duplicated install loads this module twice, a module-level
35
+ * `AsyncLocalStorage` would give the writer and the validator two different scopes and every trusted
36
+ * write would be refused.
37
+ *
38
+ * @module @memberjunction/core-entities-server
39
+ */
40
+ import { AsyncLocalStorage } from 'node:async_hooks';
41
+ import { MJGlobal } from '@memberjunction/global';
42
+ /**
43
+ * The `Config` keys only trusted server code may add, change or remove.
44
+ * New server-authoritative session keys belong here (and nowhere else).
45
+ */
46
+ export const PROTECTED_SESSION_CONFIG_KEYS = ['maxSessionDeadlineIso', 'identityVerification', 'channels'];
47
+ /** Global-object-store key holding the one process-wide trusted-write scope. */
48
+ const TRUSTED_SCOPE_STORE_KEY = '___MJCoreEntitiesServer___TrustedSessionConfigWriteScope';
49
+ /** The process-wide scope (created on first use). The stored value is just a marker. */
50
+ function trustedScope() {
51
+ const store = MJGlobal.Instance.GetGlobalObjectStore();
52
+ let scope = store[TRUSTED_SCOPE_STORE_KEY];
53
+ if (!scope) {
54
+ scope = new AsyncLocalStorage();
55
+ store[TRUSTED_SCOPE_STORE_KEY] = scope;
56
+ }
57
+ return scope;
58
+ }
59
+ /**
60
+ * Runs `work` with permission to change {@link PROTECTED_SESSION_CONFIG_KEYS}. The permission follows
61
+ * the async call chain started inside `work` (every `await`, timer and promise it spawns) and ends
62
+ * when `work` settles.
63
+ *
64
+ * **Server code only.** Never call this from anything that forwards client-supplied JSON into the
65
+ * session `Config` — wrap exactly the statement that writes server-decided values, nothing wider.
66
+ *
67
+ * @param work - the asynchronous operation that saves the trusted values
68
+ * @returns whatever `work` returns
69
+ */
70
+ export function RunWithTrustedSessionConfigWrites(work) {
71
+ return trustedScope().run(true, work);
72
+ }
73
+ /** True while inside {@link RunWithTrustedSessionConfigWrites}. */
74
+ export function IsTrustedSessionConfigWriteActive() {
75
+ return trustedScope().getStore() === true;
76
+ }
77
+ /** Parses a `Config` JSON string into a plain object; anything else (null, garbage, arrays) is `{}`. */
78
+ function parseConfigObject(raw) {
79
+ if (typeof raw !== 'string' || raw.trim().length === 0) {
80
+ return {};
81
+ }
82
+ try {
83
+ const parsed = JSON.parse(raw);
84
+ return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)
85
+ ? parsed
86
+ : {};
87
+ }
88
+ catch {
89
+ // Unparseable Config carries no protected keys. If the PREVIOUS value had some, the diff below
90
+ // reports them as removed — which is the correct refusal for a client that corrupts the blob
91
+ // to wipe a server decision.
92
+ return {};
93
+ }
94
+ }
95
+ /** Key-order-independent serialization, so semantically equal JSON compares equal. */
96
+ function canonicalize(value) {
97
+ if (value === undefined) {
98
+ return 'undefined';
99
+ }
100
+ if (Array.isArray(value)) {
101
+ return `[${value.map(canonicalize).join(',')}]`;
102
+ }
103
+ if (typeof value === 'object' && value !== null) {
104
+ const record = value;
105
+ const keys = Object.keys(record).sort();
106
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${canonicalize(record[k])}`).join(',')}}`;
107
+ }
108
+ return JSON.stringify(value);
109
+ }
110
+ /**
111
+ * Which protected keys differ between two `Config` JSON values.
112
+ *
113
+ * Comparison is semantic (key order and whitespace are ignored), so a server rewrite that merely
114
+ * re-serializes the blob is not a change. Adding, altering or removing a protected key is.
115
+ *
116
+ * @param previousRaw - the stored `Config` (null/undefined for a new record)
117
+ * @param nextRaw - the `Config` about to be saved
118
+ * @returns the protected keys that changed (empty when none did)
119
+ */
120
+ export function FindProtectedSessionConfigChanges(previousRaw, nextRaw) {
121
+ const previous = parseConfigObject(previousRaw);
122
+ const next = parseConfigObject(nextRaw);
123
+ return PROTECTED_SESSION_CONFIG_KEYS.filter((key) => canonicalize(previous[key]) !== canonicalize(next[key]));
124
+ }
125
+ //# sourceMappingURL=sessionConfigGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionConfigGuard.js","sourceRoot":"","sources":["../../src/custom/sessionConfigGuard.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -29,6 +29,8 @@ export * from './custom/MJAIBridgeProviderEntityServer.server.js';
29
29
  export * from './custom/MJAIBridgeAgentIdentityEntityServer.server.js';
30
30
  export * from './custom/MJAIBridgeProviderChannelEntityServer.server.js';
31
31
  export * from './custom/MJAIAgentSessionBridgeEntityServer.server.js';
32
+ export * from './custom/sessionConfigGuard.js';
33
+ export * from './custom/MJAIAgentSessionEntityServer.server.js';
32
34
  export * from './custom/MJAIAgentSessionBridgeParticipantEntityServer.server.js';
33
35
  export * from './custom/MJAIRemoteBrowserProviderEntityServer.server.js';
34
36
  export * from './custom/MJMaterializedResultEntityServer.server.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,kDAAkD,CAAC;AACjE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,mBAAmB,GAC3B,MAAM,yBAAyB,CAAC;AACjC,cAAc,kDAAkD,CAAC;AACjE,cAAc,sDAAsD,CAAC;AACrE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,kDAAkD,CAAC;AACjE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,mBAAmB,GAC3B,MAAM,yBAAyB,CAAC;AACjC,cAAc,kDAAkD,CAAC;AACjE,cAAc,sDAAsD,CAAC;AACrE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC"}
package/dist/index.js CHANGED
@@ -29,6 +29,8 @@ export * from './custom/MJAIBridgeProviderEntityServer.server.js';
29
29
  export * from './custom/MJAIBridgeAgentIdentityEntityServer.server.js';
30
30
  export * from './custom/MJAIBridgeProviderChannelEntityServer.server.js';
31
31
  export * from './custom/MJAIAgentSessionBridgeEntityServer.server.js';
32
+ export * from './custom/sessionConfigGuard.js';
33
+ export * from './custom/MJAIAgentSessionEntityServer.server.js';
32
34
  export * from './custom/MJAIAgentSessionBridgeParticipantEntityServer.server.js';
33
35
  export * from './custom/MJAIRemoteBrowserProviderEntityServer.server.js';
34
36
  export * from './custom/MJMaterializedResultEntityServer.server.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,kDAAkD,CAAC;AACjE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GAEzB,MAAM,yBAAyB,CAAC;AACjC,cAAc,kDAAkD,CAAC;AACjE,cAAc,sDAAsD,CAAC;AACrE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,kDAAkD,CAAC;AACjE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GAEzB,MAAM,yBAAyB,CAAC;AACjC,cAAc,kDAAkD,CAAC;AACjE,cAAc,sDAAsD,CAAC;AACrE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC"}