@memberjunction/react-runtime 5.50.0 → 6.1.0-edge.0

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.
@@ -11,7 +11,7 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 503
14
+ /***/ 332
15
15
  (module, exports, __webpack_require__) {
16
16
 
17
17
  /* eslint-env browser */
@@ -271,7 +271,7 @@ function localstorage() {
271
271
  }
272
272
  }
273
273
 
274
- module.exports = __webpack_require__(50)(exports);
274
+ module.exports = __webpack_require__(235)(exports);
275
275
 
276
276
  const {formatters} = module.exports;
277
277
 
@@ -290,7 +290,7 @@ formatters.j = function (v) {
290
290
 
291
291
  /***/ },
292
292
 
293
- /***/ 50
293
+ /***/ 235
294
294
  (module, __unused_webpack_exports, __webpack_require__) {
295
295
 
296
296
 
@@ -306,7 +306,7 @@ function setup(env) {
306
306
  createDebug.disable = disable;
307
307
  createDebug.enable = enable;
308
308
  createDebug.enabled = enabled;
309
- createDebug.humanize = __webpack_require__(339);
309
+ createDebug.humanize = __webpack_require__(207);
310
310
  createDebug.destroy = destroy;
311
311
 
312
312
  Object.keys(env).forEach(key => {
@@ -589,7 +589,7 @@ module.exports = setup;
589
589
 
590
590
  /***/ },
591
591
 
592
- /***/ 637
592
+ /***/ 923
593
593
  (module, exports, __webpack_require__) {
594
594
 
595
595
  /* module decorator */ module = __webpack_require__.nmd(module);
@@ -17838,7 +17838,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/**
17838
17838
 
17839
17839
  /***/ },
17840
17840
 
17841
- /***/ 339
17841
+ /***/ 207
17842
17842
  (module) {
17843
17843
 
17844
17844
  /**
@@ -18007,15 +18007,15 @@ function plural(ms, msAbs, n, name) {
18007
18007
 
18008
18008
  /***/ },
18009
18009
 
18010
- /***/ 156
18010
+ /***/ 562
18011
18011
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18012
18012
 
18013
18013
  "use strict";
18014
18014
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
18015
18015
  /* harmony export */ t: () => (/* binding */ BehaviorSubject)
18016
18016
  /* harmony export */ });
18017
- /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(823);
18018
- /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49);
18017
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(198);
18018
+ /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(291);
18019
18019
 
18020
18020
 
18021
18021
  var BehaviorSubject = (function (_super) {
@@ -18055,7 +18055,7 @@ var BehaviorSubject = (function (_super) {
18055
18055
 
18056
18056
  /***/ },
18057
18057
 
18058
- /***/ 600
18058
+ /***/ 942
18059
18059
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18060
18060
 
18061
18061
  "use strict";
@@ -18065,18 +18065,18 @@ __webpack_require__.d(__webpack_exports__, {
18065
18065
  c: () => (/* binding */ Observable)
18066
18066
  });
18067
18067
 
18068
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js + 1 modules
18069
- var Subscriber = __webpack_require__(290);
18070
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
18071
- var Subscription = __webpack_require__(226);
18072
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js
18073
- var observable = __webpack_require__(6);
18074
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/identity.js
18068
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js + 1 modules
18069
+ var Subscriber = __webpack_require__(380);
18070
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
18071
+ var Subscription = __webpack_require__(112);
18072
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js
18073
+ var observable = __webpack_require__(348);
18074
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js
18075
18075
  function identity(x) {
18076
18076
  return x;
18077
18077
  }
18078
18078
  //# sourceMappingURL=identity.js.map
18079
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js
18079
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js
18080
18080
 
18081
18081
  function pipe() {
18082
18082
  var fns = [];
@@ -18097,13 +18097,13 @@ function pipeFromArray(fns) {
18097
18097
  };
18098
18098
  }
18099
18099
  //# sourceMappingURL=pipe.js.map
18100
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/config.js
18101
- var config = __webpack_require__(906);
18102
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js
18103
- var isFunction = __webpack_require__(407);
18104
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js
18105
- var errorContext = __webpack_require__(834);
18106
- ;// ../../../node_modules/rxjs/dist/esm5/internal/Observable.js
18100
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js
18101
+ var config = __webpack_require__(656);
18102
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js
18103
+ var isFunction = __webpack_require__(41);
18104
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js
18105
+ var errorContext = __webpack_require__(640);
18106
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js
18107
18107
 
18108
18108
 
18109
18109
 
@@ -18209,16 +18209,16 @@ function isSubscriber(value) {
18209
18209
 
18210
18210
  /***/ },
18211
18211
 
18212
- /***/ 107
18212
+ /***/ 205
18213
18213
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18214
18214
 
18215
18215
  "use strict";
18216
18216
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
18217
18217
  /* harmony export */ m: () => (/* binding */ ReplaySubject)
18218
18218
  /* harmony export */ });
18219
- /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(823);
18220
- /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49);
18221
- /* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(953);
18219
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(198);
18220
+ /* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(291);
18221
+ /* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(987);
18222
18222
 
18223
18223
 
18224
18224
 
@@ -18280,7 +18280,7 @@ var ReplaySubject = (function (_super) {
18280
18280
 
18281
18281
  /***/ },
18282
18282
 
18283
- /***/ 49
18283
+ /***/ 291
18284
18284
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18285
18285
 
18286
18286
  "use strict";
@@ -18292,15 +18292,15 @@ __webpack_require__.d(__webpack_exports__, {
18292
18292
 
18293
18293
  // UNUSED EXPORTS: AnonymousSubject
18294
18294
 
18295
- // EXTERNAL MODULE: ../../../node_modules/tslib/tslib.es6.mjs
18296
- var tslib_es6 = __webpack_require__(823);
18297
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Observable.js + 2 modules
18298
- var Observable = __webpack_require__(600);
18299
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
18300
- var Subscription = __webpack_require__(226);
18301
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js
18302
- var createErrorClass = __webpack_require__(525);
18303
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js
18295
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs
18296
+ var tslib_es6 = __webpack_require__(198);
18297
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js + 2 modules
18298
+ var Observable = __webpack_require__(942);
18299
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
18300
+ var Subscription = __webpack_require__(112);
18301
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js
18302
+ var createErrorClass = __webpack_require__(755);
18303
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js
18304
18304
 
18305
18305
  var ObjectUnsubscribedError = (0,createErrorClass/* createErrorClass */.L)(function (_super) {
18306
18306
  return function ObjectUnsubscribedErrorImpl() {
@@ -18310,11 +18310,11 @@ var ObjectUnsubscribedError = (0,createErrorClass/* createErrorClass */.L)(funct
18310
18310
  };
18311
18311
  });
18312
18312
  //# sourceMappingURL=ObjectUnsubscribedError.js.map
18313
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js
18314
- var arrRemove = __webpack_require__(444);
18315
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js
18316
- var errorContext = __webpack_require__(834);
18317
- ;// ../../../node_modules/rxjs/dist/esm5/internal/Subject.js
18313
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js
18314
+ var arrRemove = __webpack_require__(750);
18315
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js
18316
+ var errorContext = __webpack_require__(640);
18317
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js
18318
18318
 
18319
18319
 
18320
18320
 
@@ -18480,7 +18480,7 @@ var AnonymousSubject = (function (_super) {
18480
18480
 
18481
18481
  /***/ },
18482
18482
 
18483
- /***/ 290
18483
+ /***/ 380
18484
18484
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18485
18485
 
18486
18486
  "use strict";
@@ -18493,19 +18493,19 @@ __webpack_require__.d(__webpack_exports__, {
18493
18493
 
18494
18494
  // UNUSED EXPORTS: EMPTY_OBSERVER
18495
18495
 
18496
- // EXTERNAL MODULE: ../../../node_modules/tslib/tslib.es6.mjs
18497
- var tslib_es6 = __webpack_require__(823);
18498
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js
18499
- var isFunction = __webpack_require__(407);
18500
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
18501
- var Subscription = __webpack_require__(226);
18502
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/config.js
18503
- var config = __webpack_require__(906);
18504
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js
18505
- var reportUnhandledError = __webpack_require__(174);
18506
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/noop.js
18507
- var noop = __webpack_require__(788);
18508
- ;// ../../../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js
18496
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs
18497
+ var tslib_es6 = __webpack_require__(198);
18498
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js
18499
+ var isFunction = __webpack_require__(41);
18500
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
18501
+ var Subscription = __webpack_require__(112);
18502
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js
18503
+ var config = __webpack_require__(656);
18504
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js
18505
+ var reportUnhandledError = __webpack_require__(564);
18506
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js
18507
+ var noop = __webpack_require__(821);
18508
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js
18509
18509
  var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();
18510
18510
  function errorNotification(error) {
18511
18511
  return createNotification('E', undefined, error);
@@ -18521,11 +18521,11 @@ function createNotification(kind, value, error) {
18521
18521
  };
18522
18522
  }
18523
18523
  //# sourceMappingURL=NotificationFactories.js.map
18524
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js
18525
- var timeoutProvider = __webpack_require__(438);
18526
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js
18527
- var errorContext = __webpack_require__(834);
18528
- ;// ../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js
18524
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js
18525
+ var timeoutProvider = __webpack_require__(64);
18526
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js
18527
+ var errorContext = __webpack_require__(640);
18528
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js
18529
18529
 
18530
18530
 
18531
18531
 
@@ -18713,7 +18713,7 @@ var EMPTY_OBSERVER = {
18713
18713
 
18714
18714
  /***/ },
18715
18715
 
18716
- /***/ 226
18716
+ /***/ 112
18717
18717
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18718
18718
 
18719
18719
  "use strict";
@@ -18725,13 +18725,13 @@ __webpack_require__.d(__webpack_exports__, {
18725
18725
  Uv: () => (/* binding */ isSubscription)
18726
18726
  });
18727
18727
 
18728
- // EXTERNAL MODULE: ../../../node_modules/tslib/tslib.es6.mjs
18729
- var tslib_es6 = __webpack_require__(823);
18730
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js
18731
- var isFunction = __webpack_require__(407);
18732
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js
18733
- var createErrorClass = __webpack_require__(525);
18734
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js
18728
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs
18729
+ var tslib_es6 = __webpack_require__(198);
18730
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js
18731
+ var isFunction = __webpack_require__(41);
18732
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js
18733
+ var createErrorClass = __webpack_require__(755);
18734
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js
18735
18735
 
18736
18736
  var UnsubscriptionError = (0,createErrorClass/* createErrorClass */.L)(function (_super) {
18737
18737
  return function UnsubscriptionErrorImpl(errors) {
@@ -18744,9 +18744,9 @@ var UnsubscriptionError = (0,createErrorClass/* createErrorClass */.L)(function
18744
18744
  };
18745
18745
  });
18746
18746
  //# sourceMappingURL=UnsubscriptionError.js.map
18747
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js
18748
- var arrRemove = __webpack_require__(444);
18749
- ;// ../../../node_modules/rxjs/dist/esm5/internal/Subscription.js
18747
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js
18748
+ var arrRemove = __webpack_require__(750);
18749
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js
18750
18750
 
18751
18751
 
18752
18752
 
@@ -18893,7 +18893,7 @@ function execFinalizer(finalizer) {
18893
18893
 
18894
18894
  /***/ },
18895
18895
 
18896
- /***/ 906
18896
+ /***/ 656
18897
18897
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18898
18898
 
18899
18899
  "use strict";
@@ -18911,7 +18911,7 @@ var config = {
18911
18911
 
18912
18912
  /***/ },
18913
18913
 
18914
- /***/ 953
18914
+ /***/ 987
18915
18915
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18916
18916
 
18917
18917
  "use strict";
@@ -18928,14 +18928,14 @@ var dateTimestampProvider = {
18928
18928
 
18929
18929
  /***/ },
18930
18930
 
18931
- /***/ 438
18931
+ /***/ 64
18932
18932
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18933
18933
 
18934
18934
  "use strict";
18935
18935
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
18936
18936
  /* harmony export */ f: () => (/* binding */ timeoutProvider)
18937
18937
  /* harmony export */ });
18938
- /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(823);
18938
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(198);
18939
18939
 
18940
18940
  var timeoutProvider = {
18941
18941
  setTimeout: function (handler, timeout) {
@@ -18959,7 +18959,7 @@ var timeoutProvider = {
18959
18959
 
18960
18960
  /***/ },
18961
18961
 
18962
- /***/ 6
18962
+ /***/ 348
18963
18963
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18964
18964
 
18965
18965
  "use strict";
@@ -18971,7 +18971,7 @@ var observable = (function () { return (typeof Symbol === 'function' && Symbol.o
18971
18971
 
18972
18972
  /***/ },
18973
18973
 
18974
- /***/ 444
18974
+ /***/ 750
18975
18975
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18976
18976
 
18977
18977
  "use strict";
@@ -18988,7 +18988,7 @@ function arrRemove(arr, item) {
18988
18988
 
18989
18989
  /***/ },
18990
18990
 
18991
- /***/ 525
18991
+ /***/ 755
18992
18992
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18993
18993
 
18994
18994
  "use strict";
@@ -19009,7 +19009,7 @@ function createErrorClass(createImpl) {
19009
19009
 
19010
19010
  /***/ },
19011
19011
 
19012
- /***/ 834
19012
+ /***/ 640
19013
19013
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
19014
19014
 
19015
19015
  "use strict";
@@ -19017,7 +19017,7 @@ function createErrorClass(createImpl) {
19017
19017
  /* harmony export */ Y: () => (/* binding */ errorContext),
19018
19018
  /* harmony export */ l: () => (/* binding */ captureError)
19019
19019
  /* harmony export */ });
19020
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(906);
19020
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(656);
19021
19021
 
19022
19022
  var context = null;
19023
19023
  function errorContext(cb) {
@@ -19049,7 +19049,7 @@ function captureError(err) {
19049
19049
 
19050
19050
  /***/ },
19051
19051
 
19052
- /***/ 407
19052
+ /***/ 41
19053
19053
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
19054
19054
 
19055
19055
  "use strict";
@@ -19063,7 +19063,7 @@ function isFunction(value) {
19063
19063
 
19064
19064
  /***/ },
19065
19065
 
19066
- /***/ 788
19066
+ /***/ 821
19067
19067
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
19068
19068
 
19069
19069
  "use strict";
@@ -19075,15 +19075,15 @@ function noop() { }
19075
19075
 
19076
19076
  /***/ },
19077
19077
 
19078
- /***/ 174
19078
+ /***/ 564
19079
19079
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
19080
19080
 
19081
19081
  "use strict";
19082
19082
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
19083
19083
  /* harmony export */ m: () => (/* binding */ reportUnhandledError)
19084
19084
  /* harmony export */ });
19085
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(906);
19086
- /* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(438);
19085
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(656);
19086
+ /* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64);
19087
19087
 
19088
19088
 
19089
19089
  function reportUnhandledError(err) {
@@ -19101,7 +19101,7 @@ function reportUnhandledError(err) {
19101
19101
 
19102
19102
  /***/ },
19103
19103
 
19104
- /***/ 752
19104
+ /***/ 63
19105
19105
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19106
19106
 
19107
19107
  "use strict";
@@ -19149,7 +19149,7 @@ __webpack_require__.d(__webpack_exports__, {
19149
19149
  // UNUSED EXPORTS: AUTH_PROVIDER_TYPES, AfterKeyNotSupportedError, AllMetadata, AllMetadataArrays, ApplicationEntityInfo, ApplicationInfo, ApplicationSettingInfo, AuditLogTypeInfo, AuthorizationEvaluator, AuthorizationInfo, AuthorizationRoleInfo, AuthorizationRoleType, BaseEnginePropertyConfig, BaseEngineRegistry, BaseEntityAIActionParams, BaseEntityEvent, BaseEntitySaveQueue, BaseRemotableOperation, CacheCategory, ClearAllDataHooks, CodeNameFromString, ColumnDescriptor, CommonStopWords, ComputeRRF, Concurrent, ConsoleColor, DataObjectParams, DataObjectRelatedEntityParam, DataSnapshot, DataTable, DatabaseProviderBase, EntityDeleteOptions, EntityDependency, EntityDocumentTypeInfo, EntityField, EntityFieldGraphQLType, EntityFieldInfo, EntityFieldRules, EntityFieldValueInfo, EntityFieldValueListType, EntityInfo, EntityMergeOptions, EntityOrganicKeyInfo, EntityOrganicKeyRelatedEntityInfo, EntityPermissionEffect, EntityPermissionInfo, EntityRecordNameInput, EntityRecordNameResult, EntityRelationshipInfo, EntitySaveOptions, EntitySettingInfo, EntityUserPermissionInfo, ExplorerNavigationItem, ExternalDataSourceReadRouter, ExtractActualDefaultValue, FieldValueCollection, FormatConsoleMessage, FormatFileMessage, FormatValue, GeneratedFormSectionType, GetDataHooks, GetEntityNameFromSchemaAndViewString, GridColumnDescriptor, IsKeysetPaginationOrderableType, KEYSET_PAGINATION_ORDERABLE_PK_TYPES, KeyValuePair, LibraryInfo, LoadOnStartup, LocalCacheManager, LogDebug, MJColumnDescriptor, MJ_CORE_SCHEMA, MetadataFromSimpleObject, MetadataFromSimpleObjectWithoutUser, MetadataInfo, NormalizeToTables, ParsePlatformVariants, PermissionConstrainedError, PotentialDuplicate, PotentialDuplicateRequest, PotentialDuplicateResponse, PotentialDuplicateResult, ProjectRowsToFields, QueryCache, QueryCategoryInfo, QueryDependencyInfo, QueryEntityInfo, QueryExecutionSpec, QueryFieldInfo, QueryInfo, QueryParameterInfo, QueryPermissionInfo, QueryResultEnricherBase, QuerySQLInfo, RUN_QUERY_SQL_FILTERS, RUN_QUERY_SQL_FILTERS_WITH_IMPLEMENTATIONS, RecordChange, RecordChangeStatus, RecordDependency, RecordMergeDetailResult, RecordMergeRequest, RecordMergeResult, RegisterDataHook, ResolvePlatformVariant, ResolveStartupMode, RoleInfo, RowLevelSecurityFilterInfo, RunMaybeSerial, RunQuerySQLFilterManager, RunReport, RunViewParams, SQLDialectInfo, SQLFullType, SQLMaxLength, STARTUP_MODE_ENV_VAR, SetProductionStatus, SetVerboseLogging, SeverityType, StripContainingParens, StripSingleQuotes, StripStopWords, StripUnicodePrefix, TelemetryLevelValue, TelemetryManager, TotalAvailableRowCount, TotalRowCount, TransactionPreprocessingItem, TransactionVariable, TypeScriptTypeFromSQLType, TypeScriptTypeFromSQLTypeWithNullableOption, UpdateCurrentConsoleLine, UpdateCurrentConsoleProgress, dispatchRemoteOperationInProcess, getAnsiColorCode, getRunQuerySQLFilter, getRunQuerySQLFilterNames, getSchemaPrefix, isAIParams, isBatchRunQueryParams, isBatchRunViewParams, isCacheParams, isEngineParams, isNetworkParams, isSingleRunQueryParams, isSingleRunViewParams, resolveQueryResultEnricher, sanitizeGraphQLName
19150
19150
 
19151
19151
  // EXTERNAL MODULE: ../../MJGlobal/dist/index.js + 24 modules
19152
- var dist = __webpack_require__(198);
19152
+ var dist = __webpack_require__(899);
19153
19153
  ;// ../../MJCore/dist/generic/dataHooks.js
19154
19154
  /* unused harmony import specifier */ var GetGlobalObjectStore;
19155
19155
  /**
@@ -19204,8 +19204,8 @@ function ClearAllDataHooks() {
19204
19204
  gos[DATA_HOOKS_KEY] = {};
19205
19205
  }
19206
19206
  }
19207
- // EXTERNAL MODULE: ../../../node_modules/debug/src/browser.js
19208
- var browser = __webpack_require__(503);
19207
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/browser.js
19208
+ var browser = __webpack_require__(332);
19209
19209
  ;// ../../MJCore/dist/generic/logging.js
19210
19210
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
19211
19211
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -22626,8 +22626,16 @@ function ResolvePlatformVariant(variants, fieldName, platform) {
22626
22626
  }
22627
22627
  ;// ../../MJCore/dist/generic/securityInfo.js
22628
22628
  function securityInfo_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = securityInfo_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
22629
+ function securityInfo_toConsumableArray(r) { return securityInfo_arrayWithoutHoles(r) || securityInfo_iterableToArray(r) || securityInfo_unsupportedIterableToArray(r) || securityInfo_nonIterableSpread(); }
22630
+ function securityInfo_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22631
+ function securityInfo_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
22632
+ function securityInfo_arrayWithoutHoles(r) { if (Array.isArray(r)) return securityInfo_arrayLikeToArray(r); }
22633
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || securityInfo_unsupportedIterableToArray(r, e) || _nonIterableRest(); }
22634
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22629
22635
  function securityInfo_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return securityInfo_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? securityInfo_arrayLikeToArray(r, a) : void 0; } }
22630
22636
  function securityInfo_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
22637
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
22638
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
22631
22639
  function securityInfo_typeof(o) { "@babel/helpers - typeof"; return securityInfo_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, securityInfo_typeof(o); }
22632
22640
  function securityInfo_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
22633
22641
  function securityInfo_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, securityInfo_toPropertyKey(o.key), o); } }
@@ -22753,6 +22761,8 @@ var UserInfo = /*#__PURE__*/function (_BaseInfo) {
22753
22761
  _this.EmployeeSupervisorEmail = null;
22754
22762
  _this._TenantContext = undefined;
22755
22763
  _this._MagicLinkScope = undefined;
22764
+ _this._APIKeyActingContext = undefined;
22765
+ _this._APIKeyRowFilters = undefined;
22756
22766
  _this._ReturningVisitorContext = undefined;
22757
22767
  _this._WidgetGuestContext = undefined;
22758
22768
  _this._IsMagicLinkAnonymous = false;
@@ -22799,6 +22809,41 @@ var UserInfo = /*#__PURE__*/function (_BaseInfo) {
22799
22809
  set: function set(value) {
22800
22810
  this._MagicLinkScope = value;
22801
22811
  }
22812
+ /**
22813
+ * Per-request acting context for an API-key session. Set server-side in the
22814
+ * API-key auth path from an authenticated identity, ON A CLONED UserInfo
22815
+ * (the resolved userRecord may be the shared UserCache instance — stamping
22816
+ * it in place leaks one session's scope to every concurrent session of the
22817
+ * same user). Consumed by API-key row filters via the {{Acting*}} tokens.
22818
+ * Same getter/setter (non-enumerable accessor) rationale as TenantContext —
22819
+ * not a DB/GraphQL field, and it must NEVER be exposed via a resolver.
22820
+ */
22821
+ }, {
22822
+ key: "APIKeyActingContext",
22823
+ get: function get() {
22824
+ return this._APIKeyActingContext;
22825
+ },
22826
+ set: function set(value) {
22827
+ this._APIKeyActingContext = value;
22828
+ }
22829
+ /**
22830
+ * Row-filter bindings for the API key this session authenticated with,
22831
+ * resolved per request from the key's scope rules and stamped on the CLONED
22832
+ * per-request UserInfo. Consumed by
22833
+ * {@link EntityInfo.GetEffectiveRowFilterWhereClause}, which AND-composes
22834
+ * each matching binding's filter with role RLS — outside the role-RLS
22835
+ * exemption. Plain data on purpose: MJCore cannot depend on the APIKeys
22836
+ * packages, so the bridge is this carrier. Never a DB/GraphQL field; never
22837
+ * exposed to or settable by a client.
22838
+ */
22839
+ }, {
22840
+ key: "APIKeyRowFilters",
22841
+ get: function get() {
22842
+ return this._APIKeyRowFilters;
22843
+ },
22844
+ set: function set(value) {
22845
+ this._APIKeyRowFilters = value;
22846
+ }
22802
22847
  /**
22803
22848
  * Returning-visitor context for a public web-widget guest session. Set at request time from the
22804
22849
  * verified session token's claims (the widget mint embeds the resolved VisitorKey / prior
@@ -23010,7 +23055,7 @@ var RowLevelSecurityFilterInfo = /*#__PURE__*/function (_BaseInfo4) {
23010
23055
  */
23011
23056
  }, {
23012
23057
  key: "MarkupFilterText",
23013
- value: function MarkupFilterText(user) {
23058
+ value: function MarkupFilterText(user, options) {
23014
23059
  var ret = this.FilterText;
23015
23060
  if (user) {
23016
23061
  var _scope$ResourceID, _scope$ResourceType;
@@ -23018,23 +23063,72 @@ var RowLevelSecurityFilterInfo = /*#__PURE__*/function (_BaseInfo4) {
23018
23063
  for (var i = 0; i < keys.length; i++) {
23019
23064
  var key = keys[i];
23020
23065
  var val = user[key];
23021
- if (val !== null && securityInfo_typeof(val) !== 'object') {
23022
- ret = ret.replace(new RegExp("{{User".concat(key, "}}"), 'g'), String(val));
23066
+ // `val != null` deliberately excludes BOTH null and undefined. The old
23067
+ // `val !== null` guard let `undefined` through, substituting the literal
23068
+ // string "undefined" — which made negation-shaped filters
23069
+ // (Col <> '{{UserX}}') match every row. Undefined is unresolved, period.
23070
+ if (val != null && securityInfo_typeof(val) !== 'object') {
23071
+ // Escape embedded quotes in the substituted value: a user-sourced value
23072
+ // containing an apostrophe must not break (or rewrite) the predicate —
23073
+ // the same defect class as the tenant-header injection, in the engine
23074
+ // every RLS filter depends on.
23075
+ ret = ret.replace(new RegExp("{{User".concat(key, "}}"), 'g'), String(val).replace(/'/g, "''"));
23023
23076
  }
23024
23077
  }
23025
23078
  // Per-session magic-link resource scope. Fail-closed: an absent scope resolves
23026
23079
  // to '' so a resource-pinned predicate (e.g. ID = '{{ScopeResourceID}}') matches
23027
23080
  // NO rows rather than leaking — a session without the scope sees nothing.
23028
23081
  var scope = user.MagicLinkScope;
23029
- ret = ret.replace(/\{\{ScopeResourceID\}\}/g, (_scope$ResourceID = scope === null || scope === void 0 ? void 0 : scope.ResourceID) !== null && _scope$ResourceID !== void 0 ? _scope$ResourceID : '');
23030
- ret = ret.replace(/\{\{ScopeResourceType\}\}/g, (_scope$ResourceType = scope === null || scope === void 0 ? void 0 : scope.ResourceType) !== null && _scope$ResourceType !== void 0 ? _scope$ResourceType : '');
23082
+ ret = ret.replace(/\{\{ScopeResourceID\}\}/g, ((_scope$ResourceID = scope === null || scope === void 0 ? void 0 : scope.ResourceID) !== null && _scope$ResourceID !== void 0 ? _scope$ResourceID : '').replace(/'/g, "''"));
23083
+ ret = ret.replace(/\{\{ScopeResourceType\}\}/g, ((_scope$ResourceType = scope === null || scope === void 0 ? void 0 : scope.ResourceType) !== null && _scope$ResourceType !== void 0 ? _scope$ResourceType : '').replace(/'/g, "''"));
23084
+ ret = this.resolveActingTokens(ret, user);
23031
23085
  }
23032
- var unresolvedMatch = ret.match(/\{\{User\w+\}\}/);
23086
+ var unresolvedMatch = ret.match(/\{\{(?:User|Acting)\w+\}\}/);
23033
23087
  if (unresolvedMatch) {
23088
+ if ((options === null || options === void 0 ? void 0 : options.unresolvedBehavior) === 'match-nothing') {
23089
+ // API-key row filters fail closed AND diagnosably: '' substitution is only
23090
+ // safe for equality shapes (Col <> '' or LIKE '%%' match everything), so an
23091
+ // unresolved token collapses the ENTIRE filter to a predicate that matches
23092
+ // nothing regardless of the expression's operators.
23093
+ LogError('Row filter has unresolved token after markup — resolving filter to (1=0): ' + unresolvedMatch[0] + ' in filter: ' + this.FilterText);
23094
+ return '(1=0)';
23095
+ }
23034
23096
  LogError('RLS filter has unresolved token after markup: ' + unresolvedMatch[0] + ' in filter: ' + this.FilterText);
23035
23097
  }
23036
23098
  return ret;
23037
23099
  }
23100
+ /**
23101
+ * Resolves the `{{Acting*}}` token family from {@link UserInfo.APIKeyActingContext}.
23102
+ * Scalars substitute escaped; the list token renders as a canonical (sorted),
23103
+ * per-element-escaped, quoted list for use inside `IN (...)`. Sorting is not
23104
+ * cosmetic: the resolved clause participates in the RunView cache fingerprint,
23105
+ * so the same set must always produce the same clause bytes (INV-2). An absent
23106
+ * context or empty list leaves tokens unresolved, which the caller's
23107
+ * unresolved-token handling turns into a match-nothing filter for key filters.
23108
+ */
23109
+ }, {
23110
+ key: "resolveActingTokens",
23111
+ value: function resolveActingTokens(text, user) {
23112
+ var acting = user.APIKeyActingContext;
23113
+ var ret = text;
23114
+ var scalars = [['ActingOrganizationID', acting === null || acting === void 0 ? void 0 : acting.ActingOrganizationID], ['ActingPersonID', acting === null || acting === void 0 ? void 0 : acting.ActingPersonID], ['ActingScopeID', acting === null || acting === void 0 ? void 0 : acting.ActingScopeID]];
23115
+ for (var _i = 0, _scalars = scalars; _i < _scalars.length; _i++) {
23116
+ var _scalars$_i = _slicedToArray(_scalars[_i], 2),
23117
+ token = _scalars$_i[0],
23118
+ value = _scalars$_i[1];
23119
+ if (value != null && value.length > 0) {
23120
+ ret = ret.replace(new RegExp("\\{\\{".concat(token, "\\}\\}"), 'g'), value.replace(/'/g, "''"));
23121
+ }
23122
+ }
23123
+ var companies = acting === null || acting === void 0 ? void 0 : acting.ActingCompanyIDs;
23124
+ if (companies && companies.length > 0) {
23125
+ var rendered = securityInfo_toConsumableArray(companies).sort().map(function (c) {
23126
+ return "'".concat(c.replace(/'/g, "''"), "'");
23127
+ }).join(',');
23128
+ ret = ret.replace(/\{\{ActingCompanyIDs\}\}/g, rendered);
23129
+ }
23130
+ return ret;
23131
+ }
23038
23132
  }]);
23039
23133
  }(BaseInfo);
23040
23134
  /**
@@ -23301,10 +23395,10 @@ var AuditLogTypeInfo = /*#__PURE__*/function (_BaseInfo7) {
23301
23395
  ;// ../../MJCore/dist/generic/compositeKey.js
23302
23396
  function compositeKey_typeof(o) { "@babel/helpers - typeof"; return compositeKey_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, compositeKey_typeof(o); }
23303
23397
  var _FieldValueCollection;
23304
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || compositeKey_unsupportedIterableToArray(r, e) || _nonIterableRest(); }
23305
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23306
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
23307
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
23398
+ function compositeKey_slicedToArray(r, e) { return compositeKey_arrayWithHoles(r) || compositeKey_iterableToArrayLimit(r, e) || compositeKey_unsupportedIterableToArray(r, e) || compositeKey_nonIterableRest(); }
23399
+ function compositeKey_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23400
+ function compositeKey_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
23401
+ function compositeKey_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
23308
23402
  function compositeKey_callSuper(t, o, e) { return o = compositeKey_getPrototypeOf(o), compositeKey_possibleConstructorReturn(t, compositeKey_isNativeReflectConstruct() ? Reflect.construct(o, e || [], compositeKey_getPrototypeOf(t).constructor) : o.apply(t, e)); }
23309
23403
  function compositeKey_possibleConstructorReturn(t, e) { if (e && ("object" == compositeKey_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return compositeKey_assertThisInitialized(t); }
23310
23404
  function compositeKey_assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
@@ -23788,7 +23882,7 @@ var CompositeKey = /*#__PURE__*/function (_FieldValueCollection2) {
23788
23882
  try {
23789
23883
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
23790
23884
  var _kvPair$Value, _sourcekvPair$Value;
23791
- var _step3$value = _slicedToArray(_step3.value, 2),
23885
+ var _step3$value = compositeKey_slicedToArray(_step3.value, 2),
23792
23886
  index = _step3$value[0],
23793
23887
  kvPair = _step3$value[1];
23794
23888
  var sourcekvPair = this.KeyValuePairs[index];
@@ -26787,6 +26881,30 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
26787
26881
  * Whether the base view is generated by CodeGen (true) or manually created (false)
26788
26882
  */
26789
26883
  _this0.BaseViewGenerated = null;
26884
+ /**
26885
+ * When set, CodeGen generates the entity's full base view under THIS name instead of
26886
+ * {@link BaseView}, and the application owns `BaseView` — which is expected to wrap it:
26887
+ *
26888
+ * ```sql
26889
+ * CREATE VIEW vwOrderHeaders AS
26890
+ * SELECT g.*, CASE WHEN ... END AS IsOverdue
26891
+ * FROM vwOrderHeadersGenerated g
26892
+ * ```
26893
+ *
26894
+ * This is how an entity gets a custom base view WITHOUT inheriting the generated SQL. With
26895
+ * `BaseViewGenerated = 0` alone the application takes over the whole view — every related-entity
26896
+ * display join, the geo join, the recursive root-ID apply — and must hand-maintain it forever;
26897
+ * a foreign key added later then silently never appears, because nothing regenerates the join.
26898
+ * Naming an inner view keeps all of that regenerating underneath a thin, reviewable custom layer.
26899
+ *
26900
+ * NULL (the default, and every pre-existing entity) preserves the original behaviour exactly:
26901
+ * `BaseViewGenerated` alone decides whether CodeGen writes `BaseView`, and there is no second view.
26902
+ *
26903
+ * `BaseView` remains the public surface either way — field discovery, permissions and the
26904
+ * generated CRUD procedures all target it, so a column added by the custom layer becomes a
26905
+ * first-class virtual `EntityField`.
26906
+ */
26907
+ _this0.GeneratedBaseViewName = null;
26790
26908
  /**
26791
26909
  * Database schema that contains this entity's table and view
26792
26910
  */
@@ -26871,6 +26989,47 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
26871
26989
  * Global flag controlling whether records can be deleted via API
26872
26990
  */
26873
26991
  _this0.AllowDeleteAPI = false;
26992
+ /**
26993
+ * Whether rows may be INSERTed by SQL that does not go through {@link BaseEntity}.Save() —
26994
+ * bulk loads, ETL/integration sync, or rows created as a side effect of a stored procedure.
26995
+ *
26996
+ * `false` (the default, and every entity that has not opted in) means all inserts are expected
26997
+ * to flow through `BaseEntity`, which is the only path where record-change tracking, entity
26998
+ * actions, validation and cache invalidation actually run.
26999
+ *
27000
+ * **This DECLARES intent; it enforces nothing.** No constraint, trigger or grant prevents
27001
+ * anyone from executing SQL. It exists so the code paths and tooling that *choose* to honour
27002
+ * the platform contract — bulk/ETL and integration sync, record-set processing, and generators
27003
+ * or agents authoring SQL — have one authoritative answer instead of tribal knowledge.
27004
+ *
27005
+ * A database CHECK requires {@link TrackRecordChanges} and {@link TrustServerCacheCompletely}
27006
+ * to both be `false` when this is set, because a direct insert produces neither an audit row
27007
+ * nor a cache-invalidation event — leaving either on yields an audit trail that looks complete
27008
+ * but is not, and a server cache that serves stale rows indefinitely.
27009
+ */
27010
+ _this0.AllowDirectSQLInsert = false;
27011
+ /**
27012
+ * Whether rows may be UPDATEd by SQL that does not go through {@link BaseEntity}.Save() —
27013
+ * bulk backfills, integration sync, or maintenance routines.
27014
+ *
27015
+ * `false` (the default) means all updates are expected to flow through `BaseEntity`. See
27016
+ * {@link AllowDirectSQLInsert} for the full rationale, the "declares, does not enforce"
27017
+ * caveat, and the `TrackRecordChanges` / `TrustServerCacheCompletely` requirement.
27018
+ */
27019
+ _this0.AllowDirectSQLUpdate = false;
27020
+ /**
27021
+ * Whether rows may be DELETEd by SQL that does not go through {@link BaseEntity}.Delete() —
27022
+ * purge and retention routines, or integration sync reconciling against a remote source.
27023
+ *
27024
+ * `false` (the default) means all deletes are expected to flow through `BaseEntity`. See
27025
+ * {@link AllowDirectSQLInsert} for the full rationale and the `TrackRecordChanges` /
27026
+ * {@link TrustServerCacheCompletely} requirement.
27027
+ *
27028
+ * Additionally requires {@link DeleteType} to be `'Hard'`: a direct `DELETE` removes the row
27029
+ * outright rather than setting `DeletedAt`, so sanctioning it on a soft-delete entity would
27030
+ * quietly defeat soft delete. A database CHECK refuses the combination.
27031
+ */
27032
+ _this0.AllowDirectSQLDelete = false;
26874
27033
  /**
26875
27034
  * If true, uses a custom resolver for GraphQL operations instead of standard CRUD
26876
27035
  */
@@ -27210,8 +27369,44 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
27210
27369
  }
27211
27370
  entityInfo_inherits(EntityInfo, _BaseInfo0);
27212
27371
  return entityInfo_createClass(EntityInfo, [{
27213
- key: "FieldByName",
27214
- value:
27372
+ key: "GeneratedViewName",
27373
+ get:
27374
+ /**
27375
+ * The view CodeGen actually WRITES for this entity.
27376
+ *
27377
+ * Normally {@link BaseView}. When {@link GeneratedBaseViewName} is set, the generated SQL goes
27378
+ * there instead and `BaseView` belongs to the application, which layers over it — see
27379
+ * {@link HasLayeredBaseView}.
27380
+ *
27381
+ * Resolved in ONE place because the two names must never drift: several call sites decide where
27382
+ * to write the view, what to call the emitted file, and which object to refresh, and a
27383
+ * disagreement between any two of them produces a view that exists under a name nothing reads.
27384
+ *
27385
+ * Derived FROM {@link HasLayeredBaseView} rather than re-testing `GeneratedBaseViewName`, so the
27386
+ * two getters cannot disagree by construction. Testing the raw column here would diverge on a
27387
+ * name that differs from `BaseView` only by case: `HasLayeredBaseView` would say "not layered"
27388
+ * (it compares case-insensitively, because SQL Server object names are) while this getter
27389
+ * returned the differently-cased string — leaving CodeGen writing to one object while every
27390
+ * layering-gated code path believed there was no second view at all.
27391
+ */
27392
+ function get() {
27393
+ if (this.HasLayeredBaseView) return this.GeneratedBaseViewName.trim();
27394
+ return this.BaseView ? this.BaseView : "vw".concat(this.CodeName);
27395
+ }
27396
+ /**
27397
+ * True when this entity has a generated inner view with an application-owned `BaseView` on top.
27398
+ *
27399
+ * In that arrangement CodeGen still generates everything — related-entity display fields, geo
27400
+ * columns, recursive root-ID columns — into {@link GeneratedViewName}, so the custom layer stays
27401
+ * thin and does not go stale when the schema gains a foreign key.
27402
+ */
27403
+ }, {
27404
+ key: "HasLayeredBaseView",
27405
+ get: function get() {
27406
+ var _this$GeneratedBaseVi, _this$BaseView;
27407
+ var layered = (_this$GeneratedBaseVi = this.GeneratedBaseViewName) === null || _this$GeneratedBaseVi === void 0 ? void 0 : _this$GeneratedBaseVi.trim();
27408
+ return !!layered && layered.toLowerCase() !== ((_this$BaseView = this.BaseView) !== null && _this$BaseView !== void 0 ? _this$BaseView : '').toLowerCase();
27409
+ }
27215
27410
  /**
27216
27411
  * O(1) case-insensitive field lookup by name. Use this instead of `Fields.find(f => f.Name === name)`
27217
27412
  * on hot paths — it builds a lowercased+trimmed `Map` once (lazily) and reuses it.
@@ -27223,7 +27418,9 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
27223
27418
  * @param name field name (matched case-insensitively, whitespace-trimmed)
27224
27419
  * @returns the matching EntityFieldInfo, or undefined if not found
27225
27420
  */
27226
- function FieldByName(name) {
27421
+ }, {
27422
+ key: "FieldByName",
27423
+ value: function FieldByName(name) {
27227
27424
  if (name == null) return undefined;
27228
27425
  if (this._fieldByNameMap === null) {
27229
27426
  var map = new Map();
@@ -27792,6 +27989,12 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
27792
27989
  }
27793
27990
  /**
27794
27991
  * Generates a where clause for SQL filtering for a given entity for a given user and permission type. If there is no RLS for a given entity or the user is exempt from RLS for the entity, a blank string is returned.
27992
+ *
27993
+ * @deprecated ROLE RLS ONLY — this method is subject to the role-RLS exemption and
27994
+ * silently omits API-key row filters, so a caller reaching for this familiar name gets
27995
+ * a clause that is fail-open for filtered API-key sessions. Use
27996
+ * {@link GetEffectiveRowFilterWhereClause}, which composes every filter layer. A repo
27997
+ * test asserts no non-test caller exists outside that method.
27795
27998
  * @param user
27796
27999
  * @param type
27797
28000
  * @param returnPrefix
@@ -27816,6 +28019,80 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
27816
28019
  return sRLSSQL.length > 0 ? "".concat(returnPrefix && returnPrefix.length > 0 ? returnPrefix + ' ' : '').concat(sRLSSQL) : '';
27817
28020
  } else return '';
27818
28021
  }
28022
+ /**
28023
+ * The EFFECTIVE row-filter clause for a user + permission type: role RLS (subject to the
28024
+ * role exemption) AND the API-key row filters carried on the session (NOT subject to the
28025
+ * role exemption — a key ceiling exists precisely to bind principals whose roles are
28026
+ * unrestricted; see UserExemptFromRowLevelSecurity, which exempts off the mere presence
28027
+ * of a filter-less permission row). Composition: OR within the role layer (roles are
28028
+ * additive), AND across layers (no layer can widen another). Returns '' only when no
28029
+ * layer contributes.
28030
+ *
28031
+ * This is THE method every enforcement point must call. Deterministic by construction —
28032
+ * key-filter clauses render in FilterID order and list tokens sort their elements —
28033
+ * because the identical clause participates in the RunView cache fingerprint (INV-2):
28034
+ * any nondeterminism silently splits or merges cache slots.
28035
+ *
28036
+ * The application-ceiling layer (APIApplicationScope.RowFilterID) is deferred to v2 by
28037
+ * design decision; the column ships unused and the term composes here when it lands.
28038
+ */
28039
+ }, {
28040
+ key: "GetEffectiveRowFilterWhereClause",
28041
+ value: function GetEffectiveRowFilterWhereClause(user, type, returnPrefix) {
28042
+ var layers = [];
28043
+ var roleClause = this.GetUserRowLevelSecurityWhereClause(user, type, '');
28044
+ if (roleClause && roleClause.length > 0) {
28045
+ layers.push("(".concat(roleClause, ")"));
28046
+ }
28047
+ var keyClause = this.getAPIKeyRowFilterClause(user, type);
28048
+ if (keyClause && keyClause.length > 0) {
28049
+ layers.push("(".concat(keyClause, ")"));
28050
+ }
28051
+ if (layers.length === 0) {
28052
+ return '';
28053
+ }
28054
+ var sql = layers.join(' AND ');
28055
+ return "".concat(returnPrefix && returnPrefix.length > 0 ? returnPrefix + ' ' : '').concat(sql);
28056
+ }
28057
+ /**
28058
+ * Resolves the API-key row-filter clause for this entity + permission type from the
28059
+ * bindings stamped on the session UserInfo. Multiple matching bindings AND together
28060
+ * (most-restrictive-wins — an unfiltered grant elsewhere cannot cancel a filter).
28061
+ * Fail-closed at every edge: a binding whose filter is missing from metadata (dangling
28062
+ * or unloaded) contributes `(1=0)`, and unresolved tokens inside a filter collapse it
28063
+ * to `(1=0)` via the match-nothing markup mode.
28064
+ */
28065
+ }, {
28066
+ key: "getAPIKeyRowFilterClause",
28067
+ value: function getAPIKeyRowFilterClause(user, type) {
28068
+ var _this14 = this;
28069
+ var bindings = user === null || user === void 0 ? void 0 : user.APIKeyRowFilters;
28070
+ if (!bindings || bindings.length === 0) {
28071
+ return '';
28072
+ }
28073
+ var mine = bindings.filter(function (b) {
28074
+ return (0,dist/* UUIDsEqual */.jd)(b.EntityID, _this14.ID) && b.PermissionType === type;
28075
+ });
28076
+ if (mine.length === 0) {
28077
+ return '';
28078
+ }
28079
+ var clauses = entityInfo_toConsumableArray(mine).sort(function (a, b) {
28080
+ return a.FilterID.localeCompare(b.FilterID);
28081
+ }) // deterministic order for the cache fingerprint (INV-2)
28082
+ .map(function (b) {
28083
+ var filter = Metadata.Provider.RowLevelSecurityFilters.find(function (f) {
28084
+ return (0,dist/* UUIDsEqual */.jd)(f.ID, b.FilterID);
28085
+ }); // global-provider-ok: same resolution path as RLSFilter() above — stateless info class proxying to global metadata
28086
+ if (!filter) {
28087
+ LogError("API-key row filter ".concat(b.FilterID, " for entity ").concat(_this14.Name, " not found in metadata \u2014 resolving to (1=0)"));
28088
+ return '(1=0)';
28089
+ }
28090
+ return "(".concat(filter.MarkupFilterText(user, {
28091
+ unresolvedBehavior: 'match-nothing'
28092
+ }), ")");
28093
+ });
28094
+ return clauses.join(' AND ');
28095
+ }
27819
28096
  /**
27820
28097
  * Returns a RunViewParams object that is setup to filter the related entity for the provided record
27821
28098
  * @param record
@@ -28484,11 +28761,11 @@ var AllMetadata = /*#__PURE__*/interfaces_createClass(function AllMetadata() {
28484
28761
  this.AllLibraries = [];
28485
28762
  this.AllExplorerNavigationItems = [];
28486
28763
  });
28487
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subject.js + 1 modules
28488
- var Subject = __webpack_require__(49);
28489
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js
28490
- var createErrorClass = __webpack_require__(525);
28491
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js
28764
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js + 1 modules
28765
+ var Subject = __webpack_require__(291);
28766
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js
28767
+ var createErrorClass = __webpack_require__(755);
28768
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js
28492
28769
 
28493
28770
  var EmptyError = (0,createErrorClass/* createErrorClass */.L)(function (_super) {
28494
28771
  return function EmptyErrorImpl() {
@@ -28498,9 +28775,9 @@ var EmptyError = (0,createErrorClass/* createErrorClass */.L)(function (_super)
28498
28775
  };
28499
28776
  });
28500
28777
  //# sourceMappingURL=EmptyError.js.map
28501
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js + 1 modules
28502
- var Subscriber = __webpack_require__(290);
28503
- ;// ../../../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js
28778
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js + 1 modules
28779
+ var Subscriber = __webpack_require__(380);
28780
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js
28504
28781
 
28505
28782
 
28506
28783
  function firstValueFrom(source, config) {
@@ -28525,15 +28802,15 @@ function firstValueFrom(source, config) {
28525
28802
  });
28526
28803
  }
28527
28804
  //# sourceMappingURL=firstValueFrom.js.map
28528
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js
28529
- var isFunction = __webpack_require__(407);
28530
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js
28805
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js
28806
+ var isFunction = __webpack_require__(41);
28807
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js
28531
28808
 
28532
28809
  function isScheduler(value) {
28533
28810
  return value && (0,isFunction/* isFunction */.T)(value.schedule);
28534
28811
  }
28535
28812
  //# sourceMappingURL=isScheduler.js.map
28536
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/args.js
28813
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/args.js
28537
28814
  /* unused harmony import specifier */ var args_isFunction;
28538
28815
 
28539
28816
 
@@ -28550,40 +28827,40 @@ function popNumber(args, defaultValue) {
28550
28827
  return typeof last(args) === 'number' ? args.pop() : defaultValue;
28551
28828
  }
28552
28829
  //# sourceMappingURL=args.js.map
28553
- // EXTERNAL MODULE: ../../../node_modules/tslib/tslib.es6.mjs
28554
- var tslib_es6 = __webpack_require__(823);
28555
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js
28830
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs
28831
+ var tslib_es6 = __webpack_require__(198);
28832
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js
28556
28833
  var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
28557
28834
  //# sourceMappingURL=isArrayLike.js.map
28558
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js
28835
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isPromise.js
28559
28836
 
28560
28837
  function isPromise(value) {
28561
28838
  return (0,isFunction/* isFunction */.T)(value === null || value === void 0 ? void 0 : value.then);
28562
28839
  }
28563
28840
  //# sourceMappingURL=isPromise.js.map
28564
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Observable.js + 2 modules
28565
- var Observable = __webpack_require__(600);
28566
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js
28567
- var observable = __webpack_require__(6);
28568
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js
28841
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js + 2 modules
28842
+ var Observable = __webpack_require__(942);
28843
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js
28844
+ var observable = __webpack_require__(348);
28845
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js
28569
28846
 
28570
28847
 
28571
28848
  function isInteropObservable(input) {
28572
28849
  return (0,isFunction/* isFunction */.T)(input[observable/* observable */.s]);
28573
28850
  }
28574
28851
  //# sourceMappingURL=isInteropObservable.js.map
28575
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js
28852
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js
28576
28853
 
28577
28854
  function isAsyncIterable(obj) {
28578
28855
  return Symbol.asyncIterator && (0,isFunction/* isFunction */.T)(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);
28579
28856
  }
28580
28857
  //# sourceMappingURL=isAsyncIterable.js.map
28581
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js
28858
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js
28582
28859
  function createInvalidObservableTypeError(input) {
28583
28860
  return new TypeError("You provided " + (input !== null && typeof input === 'object' ? 'an invalid object' : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.");
28584
28861
  }
28585
28862
  //# sourceMappingURL=throwUnobservableError.js.map
28586
- ;// ../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js
28863
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js
28587
28864
  function getSymbolIterator() {
28588
28865
  if (typeof Symbol !== 'function' || !Symbol.iterator) {
28589
28866
  return '@@iterator';
@@ -28592,14 +28869,14 @@ function getSymbolIterator() {
28592
28869
  }
28593
28870
  var iterator_iterator = getSymbolIterator();
28594
28871
  //# sourceMappingURL=iterator.js.map
28595
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js
28872
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isIterable.js
28596
28873
 
28597
28874
 
28598
28875
  function isIterable(input) {
28599
28876
  return (0,isFunction/* isFunction */.T)(input === null || input === void 0 ? void 0 : input[iterator_iterator]);
28600
28877
  }
28601
28878
  //# sourceMappingURL=isIterable.js.map
28602
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js
28879
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js
28603
28880
 
28604
28881
 
28605
28882
  function readableStreamLikeToAsyncGenerator(readableStream) {
@@ -28640,9 +28917,9 @@ function isReadableStreamLike(obj) {
28640
28917
  return (0,isFunction/* isFunction */.T)(obj === null || obj === void 0 ? void 0 : obj.getReader);
28641
28918
  }
28642
28919
  //# sourceMappingURL=isReadableStreamLike.js.map
28643
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js
28644
- var reportUnhandledError = __webpack_require__(174);
28645
- ;// ../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js
28920
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js
28921
+ var reportUnhandledError = __webpack_require__(564);
28922
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js
28646
28923
 
28647
28924
 
28648
28925
 
@@ -28786,7 +29063,7 @@ function innerFrom_process(asyncIterable, subscriber) {
28786
29063
  });
28787
29064
  }
28788
29065
  //# sourceMappingURL=innerFrom.js.map
28789
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js
29066
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js
28790
29067
  function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {
28791
29068
  if (delay === void 0) { delay = 0; }
28792
29069
  if (repeat === void 0) { repeat = false; }
@@ -28805,7 +29082,7 @@ function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {
28805
29082
  }
28806
29083
  }
28807
29084
  //# sourceMappingURL=executeSchedule.js.map
28808
- ;// ../../../node_modules/rxjs/dist/esm5/internal/util/lift.js
29085
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/lift.js
28809
29086
 
28810
29087
  function hasLift(source) {
28811
29088
  return (0,isFunction/* isFunction */.T)(source === null || source === void 0 ? void 0 : source.lift);
@@ -28826,7 +29103,7 @@ function operate(init) {
28826
29103
  };
28827
29104
  }
28828
29105
  //# sourceMappingURL=lift.js.map
28829
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js
29106
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js
28830
29107
 
28831
29108
 
28832
29109
  function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
@@ -28888,7 +29165,7 @@ var OperatorSubscriber = (function (_super) {
28888
29165
  }(Subscriber/* Subscriber */.vU));
28889
29166
 
28890
29167
  //# sourceMappingURL=OperatorSubscriber.js.map
28891
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js
29168
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js
28892
29169
 
28893
29170
 
28894
29171
 
@@ -28899,7 +29176,7 @@ function observeOn(scheduler, delay) {
28899
29176
  });
28900
29177
  }
28901
29178
  //# sourceMappingURL=observeOn.js.map
28902
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js
29179
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js
28903
29180
 
28904
29181
  function subscribeOn(scheduler, delay) {
28905
29182
  if (delay === void 0) { delay = 0; }
@@ -28908,7 +29185,7 @@ function subscribeOn(scheduler, delay) {
28908
29185
  });
28909
29186
  }
28910
29187
  //# sourceMappingURL=subscribeOn.js.map
28911
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js
29188
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js
28912
29189
 
28913
29190
 
28914
29191
 
@@ -28916,7 +29193,7 @@ function scheduleObservable(input, scheduler) {
28916
29193
  return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
28917
29194
  }
28918
29195
  //# sourceMappingURL=scheduleObservable.js.map
28919
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js
29196
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js
28920
29197
 
28921
29198
 
28922
29199
 
@@ -28924,7 +29201,7 @@ function schedulePromise(input, scheduler) {
28924
29201
  return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
28925
29202
  }
28926
29203
  //# sourceMappingURL=schedulePromise.js.map
28927
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js
29204
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js
28928
29205
 
28929
29206
  function scheduleArray(input, scheduler) {
28930
29207
  return new Observable/* Observable */.c(function (subscriber) {
@@ -28943,7 +29220,7 @@ function scheduleArray(input, scheduler) {
28943
29220
  });
28944
29221
  }
28945
29222
  //# sourceMappingURL=scheduleArray.js.map
28946
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js
29223
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js
28947
29224
 
28948
29225
 
28949
29226
 
@@ -28976,7 +29253,7 @@ function scheduleIterable(input, scheduler) {
28976
29253
  });
28977
29254
  }
28978
29255
  //# sourceMappingURL=scheduleIterable.js.map
28979
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js
29256
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js
28980
29257
 
28981
29258
 
28982
29259
  function scheduleAsyncIterable(input, scheduler) {
@@ -29000,14 +29277,14 @@ function scheduleAsyncIterable(input, scheduler) {
29000
29277
  });
29001
29278
  }
29002
29279
  //# sourceMappingURL=scheduleAsyncIterable.js.map
29003
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js
29280
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js
29004
29281
 
29005
29282
 
29006
29283
  function scheduleReadableStreamLike(input, scheduler) {
29007
29284
  return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);
29008
29285
  }
29009
29286
  //# sourceMappingURL=scheduleReadableStreamLike.js.map
29010
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js
29287
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js
29011
29288
 
29012
29289
 
29013
29290
 
@@ -29045,14 +29322,14 @@ function scheduled(input, scheduler) {
29045
29322
  throw createInvalidObservableTypeError(input);
29046
29323
  }
29047
29324
  //# sourceMappingURL=scheduled.js.map
29048
- ;// ../../../node_modules/rxjs/dist/esm5/internal/observable/from.js
29325
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/from.js
29049
29326
 
29050
29327
 
29051
29328
  function from(input, scheduler) {
29052
29329
  return scheduler ? scheduled(input, scheduler) : innerFrom(input);
29053
29330
  }
29054
29331
  //# sourceMappingURL=from.js.map
29055
- ;// ../../../node_modules/rxjs/dist/esm5/internal/observable/of.js
29332
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/of.js
29056
29333
 
29057
29334
 
29058
29335
  function of() {
@@ -29064,7 +29341,7 @@ function of() {
29064
29341
  return from(args, scheduler);
29065
29342
  }
29066
29343
  //# sourceMappingURL=of.js.map
29067
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js
29344
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js
29068
29345
 
29069
29346
 
29070
29347
 
@@ -29089,7 +29366,7 @@ function switchMap(project, resultSelector) {
29089
29366
  });
29090
29367
  }
29091
29368
  //# sourceMappingURL=switchMap.js.map
29092
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/finalize.js
29369
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/finalize.js
29093
29370
 
29094
29371
  function finalize(callback) {
29095
29372
  return operate(function (source, subscriber) {
@@ -29102,9 +29379,9 @@ function finalize(callback) {
29102
29379
  });
29103
29380
  }
29104
29381
  //# sourceMappingURL=finalize.js.map
29105
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js
29106
- var ReplaySubject = __webpack_require__(107);
29107
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/share.js
29382
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js
29383
+ var ReplaySubject = __webpack_require__(205);
29384
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/share.js
29108
29385
 
29109
29386
 
29110
29387
 
@@ -29190,7 +29467,7 @@ function handleReset(reset, on) {
29190
29467
  return innerFrom(on.apply(void 0, (0,tslib_es6/* __spreadArray */.fX)([], (0,tslib_es6/* __read */.zs)(args)))).subscribe(onSubscriber);
29191
29468
  }
29192
29469
  //# sourceMappingURL=share.js.map
29193
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js
29470
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js
29194
29471
 
29195
29472
 
29196
29473
  function shareReplay(configOrBufferSize, windowTime, scheduler) {
@@ -31730,6 +32007,36 @@ var BaseEntity = /*#__PURE__*/function () {
31730
32007
  * Debounces multiple calls so that if Save() is called again while a save is in progress,
31731
32008
  * the second call will simply receive the same result as the first.
31732
32009
  *
32010
+ * ## IS-A entities: one Save() writes the whole chain
32011
+ *
32012
+ * For a Table-Per-Type child, this saves EVERY level — root first, then down to this entity —
32013
+ * inside one transaction, with a single primary key shared across all of them. Set fields
32014
+ * belonging to any ancestor directly on this object; {@link Set} routes each one to the entity
32015
+ * that owns it. There is no depth limit.
32016
+ *
32017
+ * ```typescript
32018
+ * // Webinar IS-A Meeting IS-A Product
32019
+ * const webinar = await md.GetEntityObject<WebinarEntity>('Webinars', contextUser);
32020
+ * webinar.NewRecord();
32021
+ * webinar.RecordingURL = '...'; // Webinar's own
32022
+ * webinar.StartTime = start; // Meeting's
32023
+ * webinar.Name = 'Q1'; // Product's — set on the SAME object
32024
+ * await webinar.Save(); // writes Product, Meeting, Webinar
32025
+ * ```
32026
+ *
32027
+ * Do NOT create the parent separately and then try to attach a child to it — `NewRecord()`
32028
+ * starts a new chain rather than adopting an existing parent row, so that produces a second
32029
+ * parent and a primary-key conflict.
32030
+ *
32031
+ * If a PARENT level fails validation, this returns false and the failure is reported on THIS
32032
+ * entity's result as `Failed to save parent entity '<Name>': <detail>`. The commonest cause is a
32033
+ * NOT NULL column on an ancestor table that was never set — the child looks complete and the
32034
+ * save still fails. (Before v5.50.0 that result was recorded only on the parent object, so the
32035
+ * caller saw `false` with a null `LatestResult` and an empty `ResultHistory`.)
32036
+ *
32037
+ * @see {@link ISAParent} to inspect the parent instance directly
32038
+ * @see packages/MJCore/docs/isa-relationships.md — "Creating a Child Record"
32039
+ *
31733
32040
  * @param options
31734
32041
  * @returns Promise<boolean>
31735
32042
  */
@@ -35513,11 +35820,11 @@ _TelemetryManager.ENGINE_CACHE_SUGGESTION_ANALYZERS = new Set(['SameEntityMultip
35513
35820
  _TelemetryManager.CACHE_SUGGESTION_REWRITE_ANALYZERS = new Set(['DuplicateRunViewAnalyzer']);
35514
35821
  /** Replacement suggestion for cache-oriented findings on a non-cacheable entity. */
35515
35822
  _TelemetryManager.NON_CACHEABLE_DEDUPE_SUGGESTION = 'This entity has caching disabled (AllowCaching=false), so caching is not an option — ' + 'deduplicate or consolidate the identical call at the call site (read once and reuse), or ' + 'mark an intentional repeat with RunView Telemetry.Exempt';
35516
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js
35517
- var BehaviorSubject = __webpack_require__(156);
35518
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/noop.js
35519
- var noop = __webpack_require__(788);
35520
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js
35823
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js
35824
+ var BehaviorSubject = __webpack_require__(562);
35825
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js
35826
+ var noop = __webpack_require__(821);
35827
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/buffer.js
35521
35828
 
35522
35829
 
35523
35830
 
@@ -35540,9 +35847,9 @@ function buffer(closingNotifier) {
35540
35847
  });
35541
35848
  }
35542
35849
  //# sourceMappingURL=buffer.js.map
35543
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
35544
- var Subscription = __webpack_require__(226);
35545
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js
35850
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js + 1 modules
35851
+ var Subscription = __webpack_require__(112);
35852
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js
35546
35853
 
35547
35854
 
35548
35855
  var Action = (function (_super) {
@@ -35558,7 +35865,7 @@ var Action = (function (_super) {
35558
35865
  }(Subscription/* Subscription */.yU));
35559
35866
 
35560
35867
  //# sourceMappingURL=Action.js.map
35561
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js
35868
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js
35562
35869
 
35563
35870
  var intervalProvider = {
35564
35871
  setInterval: function (handler, timeout) {
@@ -35579,9 +35886,9 @@ var intervalProvider = {
35579
35886
  delegate: undefined,
35580
35887
  };
35581
35888
  //# sourceMappingURL=intervalProvider.js.map
35582
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js
35583
- var arrRemove = __webpack_require__(444);
35584
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js
35889
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js
35890
+ var arrRemove = __webpack_require__(750);
35891
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js
35585
35892
 
35586
35893
 
35587
35894
 
@@ -35672,9 +35979,9 @@ var AsyncAction = (function (_super) {
35672
35979
  }(Action));
35673
35980
 
35674
35981
  //# sourceMappingURL=AsyncAction.js.map
35675
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js
35676
- var dateTimestampProvider = __webpack_require__(953);
35677
- ;// ../../../node_modules/rxjs/dist/esm5/internal/Scheduler.js
35982
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js
35983
+ var dateTimestampProvider = __webpack_require__(987);
35984
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Scheduler.js
35678
35985
 
35679
35986
  var Scheduler = (function () {
35680
35987
  function Scheduler(schedulerActionCtor, now) {
@@ -35691,7 +35998,7 @@ var Scheduler = (function () {
35691
35998
  }());
35692
35999
 
35693
36000
  //# sourceMappingURL=Scheduler.js.map
35694
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js
36001
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js
35695
36002
 
35696
36003
 
35697
36004
  var AsyncScheduler = (function (_super) {
@@ -35728,13 +36035,13 @@ var AsyncScheduler = (function (_super) {
35728
36035
  }(Scheduler));
35729
36036
 
35730
36037
  //# sourceMappingURL=AsyncScheduler.js.map
35731
- ;// ../../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js
36038
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/async.js
35732
36039
 
35733
36040
 
35734
36041
  var asyncScheduler = new AsyncScheduler(AsyncAction);
35735
36042
  var async_async = (/* unused pure expression or super */ null && (asyncScheduler));
35736
36043
  //# sourceMappingURL=async.js.map
35737
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js
36044
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js
35738
36045
 
35739
36046
 
35740
36047
 
@@ -35779,7 +36086,7 @@ function debounceTime(dueTime, scheduler) {
35779
36086
  });
35780
36087
  }
35781
36088
  //# sourceMappingURL=debounceTime.js.map
35782
- ;// ../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js
36089
+ ;// ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/filter.js
35783
36090
 
35784
36091
 
35785
36092
  function filter(predicate, thisArg) {
@@ -45043,7 +45350,7 @@ var ProviderBase = /*#__PURE__*/function () {
45043
45350
  if (!user || !params.EntityName) return '';
45044
45351
  var entity = this.EntityByName(params.EntityName);
45045
45352
  if (!entity) return '';
45046
- return entity.GetUserRowLevelSecurityWhereClause(user, EntityPermissionType.Read, '');
45353
+ return entity.GetEffectiveRowFilterWhereClause(user, EntityPermissionType.Read, '');
45047
45354
  }
45048
45355
  /**
45049
45356
  * Pre-processing hook for RunView.
@@ -50874,7 +51181,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
50874
51181
  key: "syncLocalCacheForConfig",
50875
51182
  value: (function () {
50876
51183
  var _syncLocalCacheForConfig = baseEngine_asyncToGenerator(/*#__PURE__*/baseEngine_regenerator().m(function _callee16(config, event) {
50877
- var entity, provider, connectionString, params, fingerprint, key, rawUpdatedAt, updatedAt, entityData;
51184
+ var entity, provider, connectionString, fingerprint, key, rawUpdatedAt, updatedAt, entityData;
50878
51185
  return baseEngine_regenerator().w(function (_context17) {
50879
51186
  while (1) switch (_context17.n) {
50880
51187
  case 0:
@@ -50890,16 +51197,9 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
50890
51197
  if (provider && 'InstanceConnectionString' in provider) {
50891
51198
  connectionString = provider.InstanceConnectionString;
50892
51199
  }
50893
- // Generate the same fingerprint that would be used when loading this data
50894
- params = {
50895
- EntityName: config.EntityName,
50896
- ExtraFilter: config.Filter || '',
50897
- OrderBy: config.OrderBy || '',
50898
- ResultType: 'entity_object',
50899
- MaxRows: -1,
50900
- StartRow: 0
50901
- };
50902
- fingerprint = LocalCacheManager.Instance.GenerateRunViewFingerprint(params, connectionString); // Build CompositeKey from the entity's primary key fields
51200
+ // Use the shared builder so the fingerprint matches what LoadSingleEntityConfig
51201
+ // and RegisterCacheChangeCallbacks produce — prevents silent cache-slot mismatches
51202
+ fingerprint = LocalCacheManager.Instance.GenerateRunViewFingerprint(this.BuildRunViewParamsForConfig(config), connectionString); // Build CompositeKey from the entity's primary key fields
50903
51203
  key = entity.PrimaryKey;
50904
51204
  if (!(!key || key.KeyValuePairs.length === 0 || key.KeyValuePairs.some(function (kv) {
50905
51205
  return kv.Value == null;
@@ -50969,7 +51269,18 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
50969
51269
  // Compare all primary key values
50970
51270
  return primaryKeys.every(function (pk, idx) {
50971
51271
  var entityValue = e[pk.Name];
50972
- return entityValue === targetKeyValues[idx];
51272
+ var targetValue = targetKeyValues[idx];
51273
+ // UUID columns must compare case-insensitively: the SAME id can arrive with
51274
+ // different casing depending on its source (a client-minted lowercase UUID from
51275
+ // BaseEntity.NewRecord vs. an uppercase value loaded from SQL Server). A raw `===`
51276
+ // then misses the match, and the caller's "not found → add it" branch appends a
51277
+ // DUPLICATE copy of the row into the engine cache. Drive this off metadata
51278
+ // (EntityFieldInfo.IsUniqueIdentifier, which is PG-aware) — never a string-shape
51279
+ // heuristic. See guides/UUID_COMPARISON_GUIDE.md.
51280
+ if (pk.IsUniqueIdentifier) {
51281
+ return (0,dist/* UUIDsEqual */.jd)(entityValue, targetValue);
51282
+ }
51283
+ return entityValue === targetValue;
50973
51284
  });
50974
51285
  });
50975
51286
  }
@@ -51173,6 +51484,31 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
51173
51484
  value: function isLatestConfigRefresh(propertyName, generation) {
51174
51485
  return this._configRefreshGeneration.get(propertyName) === generation;
51175
51486
  }
51487
+ /**
51488
+ * Builds the RunViewParams for an engine config. Used by LoadSingleEntityConfig,
51489
+ * LoadMultipleEntityConfigs, RegisterCacheChangeCallbacks, and syncLocalCacheForConfig
51490
+ * to ensure the fingerprint-affecting params (EntityName, ExtraFilter, OrderBy,
51491
+ * IgnoreMaxRows) are always consistent — preventing cache key mismatches that break
51492
+ * cross-server invalidation via Redis pub/sub and local cache upsert/remove operations.
51493
+ */
51494
+ }, {
51495
+ key: "BuildRunViewParamsForConfig",
51496
+ value: function BuildRunViewParamsForConfig(config) {
51497
+ var bypassCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
51498
+ return {
51499
+ EntityName: config.EntityName,
51500
+ ResultType: config.ResultType || this.EngineDefaultResultType,
51501
+ ExtraFilter: config.Filter,
51502
+ OrderBy: config.OrderBy,
51503
+ IgnoreMaxRows: true,
51504
+ // Engines always need ALL data — bypass entity-level UserViewMaxRows caps
51505
+ _fromEngine: true,
51506
+ // Mark as engine-initiated to avoid false positive telemetry warnings
51507
+ CacheLocal: config.CacheLocal,
51508
+ CacheLocalTTL: config.CacheLocalTTL,
51509
+ BypassCache: bypassCache
51510
+ };
51511
+ }
51176
51512
  /**
51177
51513
  * Handles the process of loading a single config of type 'entity'.
51178
51514
  * @param config
@@ -51202,19 +51538,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
51202
51538
  p = this.RunViewProviderToUse;
51203
51539
  rv = new RunView(p);
51204
51540
  _context20.n = 1;
51205
- return rv.RunView({
51206
- EntityName: config.EntityName,
51207
- ResultType: config.ResultType || this.EngineDefaultResultType,
51208
- ExtraFilter: config.Filter,
51209
- OrderBy: config.OrderBy,
51210
- IgnoreMaxRows: true,
51211
- // Engines always need ALL data — bypass entity-level UserViewMaxRows caps
51212
- _fromEngine: true,
51213
- // Mark as engine-initiated to avoid false positive telemetry warnings
51214
- CacheLocal: config.CacheLocal,
51215
- CacheLocalTTL: config.CacheLocalTTL,
51216
- BypassCache: bypassCache
51217
- }, contextUser);
51541
+ return rv.RunView(this.BuildRunViewParamsForConfig(config, bypassCache), contextUser);
51218
51542
  case 1:
51219
51543
  result = _context20.v;
51220
51544
  if (this.isLatestConfigRefresh(config.PropertyName, generation)) {
@@ -51367,19 +51691,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
51367
51691
  p = this.RunViewProviderToUse;
51368
51692
  rv = new RunView(p);
51369
51693
  viewConfigs = configs.map(function (c) {
51370
- return {
51371
- EntityName: c.EntityName,
51372
- ResultType: c.ResultType || _this1.EngineDefaultResultType,
51373
- ExtraFilter: c.Filter,
51374
- OrderBy: c.OrderBy,
51375
- IgnoreMaxRows: true,
51376
- // Engines always need ALL data — bypass entity-level UserViewMaxRows caps
51377
- _fromEngine: true,
51378
- // Mark as engine-initiated to avoid false positive telemetry warnings
51379
- CacheLocal: c.CacheLocal,
51380
- CacheLocalTTL: c.CacheLocalTTL,
51381
- BypassCache: bypassCache
51382
- };
51694
+ return _this1.BuildRunViewParamsForConfig(c, bypassCache);
51383
51695
  });
51384
51696
  _context21.n = 1;
51385
51697
  return rv.RunViews(viewConfigs, contextUser);
@@ -51643,12 +51955,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
51643
51955
  try {
51644
51956
  var _loop2 = function _loop2() {
51645
51957
  var config = _step11.value;
51646
- var fingerprint = LocalCacheManager.Instance.GenerateRunViewFingerprint({
51647
- EntityName: config.EntityName,
51648
- ExtraFilter: config.Filter,
51649
- OrderBy: config.OrderBy,
51650
- ResultType: 'entity_object'
51651
- }, connectionPrefix);
51958
+ var fingerprint = LocalCacheManager.Instance.GenerateRunViewFingerprint(_this10.BuildRunViewParamsForConfig(config), connectionPrefix);
51652
51959
  var unsubscribe = LocalCacheManager.Instance.RegisterChangeCallback(fingerprint, function (event) {
51653
51960
  return _this10.OnExternalCacheChange(config, event);
51654
51961
  });
@@ -55781,7 +56088,9 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
55781
56088
  var stringLiteralPattern = /(['"])(?:(?=(\\?))\2[\s\S])*?\1/g;
55782
56089
  var clauseWithoutStrings = clause.replace(stringLiteralPattern, '');
55783
56090
  var lowerClause = clauseWithoutStrings.toLowerCase();
55784
- var forbiddenPatterns = [/\binsert\b/, /\bupdate\b/, /\bdelete\b/, /\bexec\b/, /\bexecute\b/, /\bdrop\b/, /--/, /\/\*/, /\*\//, /\bunion\b/, /\bxp_/, /;/];
56091
+ var forbiddenPatterns = [/\binsert\b/, /\bupdate\b/, /\bdelete\b/, /\bexec\b/, /\bexecute\b/, /\bdrop\b/, /--/, /\/\*/, /\*\//, /\bunion\b/, /\bxp_/, /;/,
56092
+ // Time-based blind injection vector — no legitimate filter/order-by clause uses WAITFOR.
56093
+ /\bwaitfor\b/];
55785
56094
  for (var _i = 0, _forbiddenPatterns = forbiddenPatterns; _i < _forbiddenPatterns.length; _i++) {
55786
56095
  var pattern = _forbiddenPatterns[_i];
55787
56096
  if (pattern.test(lowerClause)) return false;
@@ -56185,7 +56494,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
56185
56494
  value: (function () {
56186
56495
  var _Save = databaseProviderBase_asyncToGenerator(/*#__PURE__*/databaseProviderBase_regenerator().m(function _callee15(entity, user, options) {
56187
56496
  var _this5 = this;
56188
- var entityResult, bNewRecord, bReplay, saveContext, validationMessage, createRLSPass, updateRLSPass, sqlDetails, _sqlDetails$parameter, extraData, result, _sqlDetails$parameter2, execOptions, rawResult, patches, _t8;
56497
+ var entityResult, bNewRecord, bReplay, saveContext, validationMessage, createRLSPass, updateRLSPass, postHookCreatePass, postImagePass, sqlDetails, _sqlDetails$parameter, extraData, result, _sqlDetails$parameter2, execOptions, rawResult, patches, _t8;
56189
56498
  return databaseProviderBase_regenerator().w(function (_context17) {
56190
56499
  while (1) switch (_context17.p = _context17.n) {
56191
56500
  case 0:
@@ -56222,7 +56531,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
56222
56531
  throw new Error("CREATE not allowed for entity ".concat(entity.EntityInfo.Name));
56223
56532
  case 4:
56224
56533
  if (!(entity.Dirty || options.IgnoreDirtyState || options.ReplayOnly)) {
56225
- _context17.n = 23;
56534
+ _context17.n = 28;
56226
56535
  break;
56227
56536
  }
56228
56537
  entityResult.StartedAt = new Date();
@@ -56311,12 +56620,49 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
56311
56620
  _context17.n = 12;
56312
56621
  return this.OnBeforeSaveExecute(entity, user, options, saveContext);
56313
56622
  case 12:
56623
+ if (bReplay) {
56624
+ _context17.n = 17;
56625
+ break;
56626
+ }
56627
+ if (!bNewRecord) {
56628
+ _context17.n = 15;
56629
+ break;
56630
+ }
56314
56631
  _context17.n = 13;
56315
- return this.GenerateSaveSQL(entity, bNewRecord, user);
56632
+ return this.CheckCreateRLS(entity, user);
56316
56633
  case 13:
56634
+ postHookCreatePass = _context17.v;
56635
+ if (postHookCreatePass) {
56636
+ _context17.n = 14;
56637
+ break;
56638
+ }
56639
+ entityResult.Success = false;
56640
+ entityResult.EndedAt = new Date();
56641
+ entityResult.Message = "Access denied for new ".concat(entity.EntityInfo.Name, " record: a before-save hook produced field values that no longer pass row-level security");
56642
+ throw new Error(entityResult.Message);
56643
+ case 14:
56644
+ _context17.n = 17;
56645
+ break;
56646
+ case 15:
56647
+ _context17.n = 16;
56648
+ return this.CheckUpdateRLSPostImage(entity, user);
56649
+ case 16:
56650
+ postImagePass = _context17.v;
56651
+ if (postImagePass) {
56652
+ _context17.n = 17;
56653
+ break;
56654
+ }
56655
+ entityResult.Success = false;
56656
+ entityResult.EndedAt = new Date();
56657
+ entityResult.Message = "Access denied: the requested changes would move this ".concat(entity.EntityInfo.Name, " record outside your permitted row scope");
56658
+ throw new Error(entityResult.Message);
56659
+ case 17:
56660
+ _context17.n = 18;
56661
+ return this.GenerateSaveSQL(entity, bNewRecord, user);
56662
+ case 18:
56317
56663
  sqlDetails = _context17.v;
56318
56664
  if (!(entity.TransactionGroup && !bReplay)) {
56319
- _context17.n = 14;
56665
+ _context17.n = 19;
56320
56666
  break;
56321
56667
  }
56322
56668
  // ---- Transaction Group path ----
@@ -56340,31 +56686,31 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
56340
56686
  }
56341
56687
  }));
56342
56688
  return _context17.a(2, true);
56343
- case 14:
56689
+ case 19:
56344
56690
  // ---- Direct execution path ----
56345
56691
  this.OnSuspendRefresh();
56346
56692
  if (!bReplay) {
56347
- _context17.n = 15;
56693
+ _context17.n = 20;
56348
56694
  break;
56349
56695
  }
56350
56696
  result = [entity.GetAll()];
56351
- _context17.n = 18;
56697
+ _context17.n = 23;
56352
56698
  break;
56353
- case 15:
56699
+ case 20:
56354
56700
  execOptions = this.BuildSaveExecuteOptions(entity, sqlDetails);
56355
- _context17.n = 16;
56701
+ _context17.n = 21;
56356
56702
  return this.ExecuteSQL(sqlDetails.fullSQL, (_sqlDetails$parameter2 = sqlDetails.parameters) !== null && _sqlDetails$parameter2 !== void 0 ? _sqlDetails$parameter2 : undefined, execOptions, user);
56357
- case 16:
56703
+ case 21:
56358
56704
  rawResult = _context17.v;
56359
- _context17.n = 17;
56705
+ _context17.n = 22;
56360
56706
  return this.PostProcessRows(rawResult, entity.EntityInfo, user);
56361
- case 17:
56707
+ case 22:
56362
56708
  result = _context17.v;
56363
- case 18:
56709
+ case 23:
56364
56710
  this.OnResumeRefresh();
56365
56711
  entityResult.EndedAt = new Date();
56366
56712
  if (!(result && result.length > 0)) {
56367
- _context17.n = 20;
56713
+ _context17.n = 25;
56368
56714
  break;
56369
56715
  }
56370
56716
  this.OnAfterSaveExecute(entity, user, options, saveContext);
@@ -56372,42 +56718,42 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
56372
56718
  // OnSaveCompleted may return patch fields (e.g., updated lat/lng
56373
56719
  // from geocoding) that need to be merged onto the SP result before
56374
56720
  // the entity loads the data via finalizeSave().
56375
- _context17.n = 19;
56721
+ _context17.n = 24;
56376
56722
  return this.OnSaveCompleted(entity, sqlDetails, user, options, saveContext);
56377
- case 19:
56723
+ case 24:
56378
56724
  patches = _context17.v;
56379
56725
  if (patches) {
56380
56726
  Object.assign(result[0], patches);
56381
56727
  }
56382
56728
  return _context17.a(2, result[0]);
56383
- case 20:
56729
+ case 25:
56384
56730
  if (!bNewRecord) {
56385
- _context17.n = 21;
56731
+ _context17.n = 26;
56386
56732
  break;
56387
56733
  }
56388
56734
  throw new Error("SQL Error: Error creating new record, no rows returned from SQL: ".concat(sqlDetails.fullSQL));
56389
- case 21:
56735
+ case 26:
56390
56736
  throw new Error("SQL Error: Error updating record, no MATCHING rows found within the database: ".concat(sqlDetails.fullSQL));
56391
- case 22:
56392
- _context17.n = 24;
56737
+ case 27:
56738
+ _context17.n = 29;
56393
56739
  break;
56394
- case 23:
56740
+ case 28:
56395
56741
  return _context17.a(2, entity);
56396
- case 24:
56397
- _context17.n = 26;
56742
+ case 29:
56743
+ _context17.n = 31;
56398
56744
  break;
56399
- case 25:
56400
- _context17.p = 25;
56745
+ case 30:
56746
+ _context17.p = 30;
56401
56747
  _t8 = _context17.v;
56402
56748
  this.OnResumeRefresh();
56403
56749
  entityResult.EndedAt = new Date();
56404
56750
  entityResult.Message = _t8.message;
56405
56751
  LogError(_t8);
56406
56752
  throw _t8;
56407
- case 26:
56753
+ case 31:
56408
56754
  return _context17.a(2);
56409
56755
  }
56410
- }, _callee15, this, [[1, 25]]);
56756
+ }, _callee15, this, [[1, 30]]);
56411
56757
  }));
56412
56758
  function Save(_x54, _x55, _x56) {
56413
56759
  return _Save.apply(this, arguments);
@@ -58725,7 +59071,7 @@ function SetProvider(provider) {
58725
59071
 
58726
59072
  /***/ },
58727
59073
 
58728
- /***/ 964
59074
+ /***/ 791
58729
59075
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
58730
59076
 
58731
59077
  "use strict";
@@ -58733,8 +59079,8 @@ __webpack_require__.r(__webpack_exports__);
58733
59079
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
58734
59080
  /* harmony export */ UserViewEngine: () => (/* binding */ UserViewEngine)
58735
59081
  /* harmony export */ });
58736
- /* harmony import */ var _memberjunction_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(752);
58737
- /* harmony import */ var _memberjunction_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(198);
59082
+ /* harmony import */ var _memberjunction_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63);
59083
+ /* harmony import */ var _memberjunction_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(899);
58738
59084
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
58739
59085
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
58740
59086
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
@@ -59088,7 +59434,7 @@ var UserViewEngine = /*#__PURE__*/function (_BaseEngine) {
59088
59434
 
59089
59435
  /***/ },
59090
59436
 
59091
- /***/ 148
59437
+ /***/ 835
59092
59438
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
59093
59439
 
59094
59440
  "use strict";
@@ -59102,10 +59448,10 @@ __webpack_require__.d(__webpack_exports__, {
59102
59448
  // UNUSED EXPORTS: AIAgentPermissionProvider, AISkillExportMarkdownOperation, AISkillImportMarkdownOperation, AISkillPermissionProvider, AccessControlRuleProvider, ApplicationRolePermissionProvider, ApplicationSettingEngine, ArtifactExtractor, ArtifactMetadataEngine, ArtifactPermissionProvider, AuditLogTypeEngine, BuildUnregisteredMimeError, CollectionPermissionProvider, ConversationEngine, ConversationWindowFields, CreateShareNotification, DEFAULT_AGGREGATE_DISPLAY, DashboardEngine, DashboardPermissionProvider, DecideInlineStorage, EncryptionEngineBase, EntityPermissionProvider, EntityPermissionType, EntitySaveOptions, ExtractBase64FromDataUrl, FileStorageEngineBase, FindArtifactTypeConflicts, GeoDataEngine, INJECTABLE_NOTE_STATUSES, InjectableNoteStatusSQLList, InstanceConfigEngine, InteractiveFormsEngine, IsInjectableNoteStatus, IsTextyMime, KnowledgeHubMetadataEngine, LoadMJAccessControlRuleEntityExtended, LoadMJArtifactPermissionEntityExtended, LoadMJCollectionPermissionEntityExtended, LoadMJConversationDetailEntityExtended, LoadMJDashboardPermissionEntityExtended, LoadPermissionEntityExtensions, LoadPermissionProviders, MCPEngine, MJAIActionEntity, MJAIActionSchema, MJAIAgentActionEntity, MJAIAgentActionSchema, MJAIAgentArtifactTypeEntity, MJAIAgentArtifactTypeSchema, MJAIAgentCategoryEntity, MJAIAgentCategorySchema, MJAIAgentChannelEntity, MJAIAgentChannelSchema, MJAIAgentClientToolEntity, MJAIAgentClientToolSchema, MJAIAgentCoAgentEntity, MJAIAgentCoAgentSchema, MJAIAgentConfigurationEntity, MJAIAgentConfigurationSchema, MJAIAgentDataSourceEntity, MJAIAgentDataSourceSchema, MJAIAgentEntity, MJAIAgentExampleEntity, MJAIAgentExampleSchema, MJAIAgentLearningCycleEntity, MJAIAgentLearningCycleSchema, MJAIAgentModalityEntity, MJAIAgentModalitySchema, MJAIAgentModelEntity, MJAIAgentModelSchema, MJAIAgentNoteEntity, MJAIAgentNoteSchema, MJAIAgentNoteTypeEntity, MJAIAgentNoteTypeSchema, MJAIAgentPermissionEntity, MJAIAgentPermissionSchema, MJAIAgentPromptEntity, MJAIAgentPromptSchema, MJAIAgentRelationshipEntity, MJAIAgentRelationshipSchema, MJAIAgentRequestEntity, MJAIAgentRequestSchema, MJAIAgentRequestTypeEntity, MJAIAgentRequestTypeSchema, MJAIAgentRunEntity, MJAIAgentRunMediaEntity, MJAIAgentRunMediaSchema, MJAIAgentRunSchema, MJAIAgentRunStepEntity, MJAIAgentRunStepSchema, MJAIAgentSchema, MJAIAgentSearchScopeEntity, MJAIAgentSearchScopeSchema, MJAIAgentSessionBridgeEntity, MJAIAgentSessionBridgeParticipantEntity, MJAIAgentSessionBridgeParticipantSchema, MJAIAgentSessionBridgeSchema, MJAIAgentSessionChannelEntity, MJAIAgentSessionChannelSchema, MJAIAgentSessionEntity, MJAIAgentSessionSchema, MJAIAgentSkillEntity, MJAIAgentSkillSchema, MJAIAgentStepEntity, MJAIAgentStepPathEntity, MJAIAgentStepPathSchema, MJAIAgentStepSchema, MJAIAgentTypeEntity, MJAIAgentTypeSchema, MJAIArchitectureEntity, MJAIArchitectureSchema, MJAIBridgeAgentIdentityEntity, MJAIBridgeAgentIdentitySchema, MJAIBridgeProviderChannelEntity, MJAIBridgeProviderChannelSchema, MJAIBridgeProviderEntity, MJAIBridgeProviderSchema, MJAIClientToolDefinitionEntity, MJAIClientToolDefinitionSchema, MJAIConfigurationEntity, MJAIConfigurationParamEntity, MJAIConfigurationParamSchema, MJAIConfigurationSchema, MJAICredentialBindingEntity, MJAICredentialBindingSchema, MJAIModalityEntity, MJAIModalitySchema, MJAIModelActionEntity, MJAIModelActionSchema, MJAIModelArchitectureEntity, MJAIModelArchitectureSchema, MJAIModelCostEntity, MJAIModelCostSchema, MJAIModelEntity, MJAIModelModalityEntity, MJAIModelModalitySchema, MJAIModelPriceTypeEntity, MJAIModelPriceTypeSchema, MJAIModelPriceUnitTypeEntity, MJAIModelPriceUnitTypeSchema, MJAIModelSchema, MJAIModelTypeEntity, MJAIModelTypeSchema, MJAIModelVendorEntity, MJAIModelVendorSchema, MJAIPromptCategoryEntity, MJAIPromptCategorySchema, MJAIPromptEntity, MJAIPromptModelEntity, MJAIPromptModelSchema, MJAIPromptRunEntity, MJAIPromptRunMediaEntity, MJAIPromptRunMediaSchema, MJAIPromptRunSchema, MJAIPromptSchema, MJAIPromptTypeEntity, MJAIPromptTypeSchema, MJAIRemoteBrowserProviderEntity, MJAIRemoteBrowserProviderSchema, MJAIResultCacheEntity, MJAIResultCacheSchema, MJAISkillActionEntity, MJAISkillActionSchema, MJAISkillEntity, MJAISkillPermissionEntity, MJAISkillPermissionSchema, MJAISkillSchema, MJAISkillSearchScopeEntity, MJAISkillSearchScopeSchema, MJAISkillSubAgentEntity, MJAISkillSubAgentSchema, MJAIVendorEntity, MJAIVendorSchema, MJAIVendorTypeDefinitionEntity, MJAIVendorTypeDefinitionSchema, MJAIVendorTypeEntity, MJAIVendorTypeSchema, MJAPIApplicationEntity, MJAPIApplicationSchema, MJAPIApplicationScopeEntity, MJAPIApplicationScopeSchema, MJAPIKeyApplicationEntity, MJAPIKeyApplicationSchema, MJAPIKeyEntity, MJAPIKeySchema, MJAPIKeyScopeEntity, MJAPIKeyScopeSchema, MJAPIKeyUsageLogEntity, MJAPIKeyUsageLogSchema, MJAPIScopeEntity, MJAPIScopeSchema, MJAccessControlRuleEntity, MJAccessControlRuleEntityExtended, MJAccessControlRuleSchema, MJActionAuthorizationEntity, MJActionAuthorizationSchema, MJActionCategoryEntity, MJActionCategorySchema, MJActionContextEntity, MJActionContextSchema, MJActionContextTypeEntity, MJActionContextTypeSchema, MJActionEntity, MJActionExecutionLogEntity, MJActionExecutionLogSchema, MJActionFilterEntity, MJActionFilterSchema, MJActionLibraryEntity, MJActionLibrarySchema, MJActionParamEntity, MJActionParamSchema, MJActionResultCodeEntity, MJActionResultCodeSchema, MJActionSchema, MJApplicationEntity, MJApplicationEntityEntity, MJApplicationEntitySchema, MJApplicationRoleEntity, MJApplicationRoleSchema, MJApplicationSchema, MJApplicationSettingEntity, MJApplicationSettingSchema, MJArchiveConfigurationEntity, MJArchiveConfigurationEntityEntity, MJArchiveConfigurationEntitySchema, MJArchiveConfigurationSchema, MJArchiveRunDetailEntity, MJArchiveRunDetailSchema, MJArchiveRunEntity, MJArchiveRunSchema, MJArtifactEntity, MJArtifactPermissionEntity, MJArtifactPermissionEntityExtended, MJArtifactPermissionSchema, MJArtifactSchema, MJArtifactTypeEntity, MJArtifactTypeSchema, MJArtifactUseEntity, MJArtifactUseSchema, MJArtifactVersionAttributeEntity, MJArtifactVersionAttributeSchema, MJArtifactVersionEntity, MJArtifactVersionSchema, MJAuditLogEntity, MJAuditLogSchema, MJAuditLogTypeEntity, MJAuditLogTypeSchema, MJAuthorizationEntity, MJAuthorizationRoleEntity, MJAuthorizationRoleSchema, MJAuthorizationSchema, MJClusterAnalysisClusterEntity, MJClusterAnalysisClusterSchema, MJClusterAnalysisEntity, MJClusterAnalysisSchema, MJCollectionArtifactEntity, MJCollectionArtifactSchema, MJCollectionEntity, MJCollectionPermissionEntity, MJCollectionPermissionEntityExtended, MJCollectionPermissionSchema, MJCollectionSchema, MJCommunicationBaseMessageTypeEntity, MJCommunicationBaseMessageTypeSchema, MJCommunicationLogEntity, MJCommunicationLogSchema, MJCommunicationProviderEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderMessageTypeSchema, MJCommunicationProviderSchema, MJCommunicationRunEntity, MJCommunicationRunSchema, MJCompanyEntity, MJCompanyIntegrationEntity, MJCompanyIntegrationEntityMapEntity, MJCompanyIntegrationEntityMapSchema, MJCompanyIntegrationFieldMapEntity, MJCompanyIntegrationFieldMapSchema, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRecordMapSchema, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunAPILogSchema, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunDetailSchema, MJCompanyIntegrationRunEntity, MJCompanyIntegrationRunSchema, MJCompanyIntegrationSchema, MJCompanyIntegrationSyncWatermarkEntity, MJCompanyIntegrationSyncWatermarkSchema, MJCompanySchema, MJComponentDependencyEntity, MJComponentDependencySchema, MJComponentEntity, MJComponentEntityExtended, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentLibraryLinkSchema, MJComponentLibrarySchema, MJComponentRegistryEntity, MJComponentRegistrySchema, MJComponentSchema, MJContentFileTypeEntity, MJContentFileTypeSchema, MJContentItemAttributeEntity, MJContentItemAttributeSchema, MJContentItemChunkEntity, MJContentItemChunkSchema, MJContentItemDuplicateEntity, MJContentItemDuplicateSchema, MJContentItemEntity, MJContentItemSchema, MJContentItemTagEntity, MJContentItemTagSchema, MJContentProcessRunDetailEntity, MJContentProcessRunDetailSchema, MJContentProcessRunEntity, MJContentProcessRunPromptRunEntity, MJContentProcessRunPromptRunSchema, MJContentProcessRunSchema, MJContentSourceEntity, MJContentSourceParamEntity, MJContentSourceParamSchema, MJContentSourceSchema, MJContentSourceTypeEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeParamSchema, MJContentSourceTypeSchema, MJContentTypeAttributeEntity, MJContentTypeAttributeSchema, MJContentTypeEntity, MJContentTypeSchema, MJConversationArtifactEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactPermissionSchema, MJConversationArtifactSchema, MJConversationArtifactVersionEntity, MJConversationArtifactVersionSchema, MJConversationCompactionRunEntity, MJConversationCompactionRunSchema, MJConversationDetailArtifactEntity, MJConversationDetailArtifactSchema, MJConversationDetailAttachmentEntity, MJConversationDetailAttachmentSchema, MJConversationDetailEntity, MJConversationDetailEntityExtended, MJConversationDetailRatingEntity, MJConversationDetailRatingSchema, MJConversationDetailSchema, MJConversationEntity, MJConversationSchema, MJConversationWidgetInstanceEntity, MJConversationWidgetInstanceSchema, MJCountryEntity, MJCountrySchema, MJCredentialCategoryEntity, MJCredentialCategorySchema, MJCredentialEntity, MJCredentialSchema, MJCredentialTypeEntity, MJCredentialTypeSchema, MJDashboardCategoryEntity, MJDashboardCategoryLinkEntity, MJDashboardCategoryLinkSchema, MJDashboardCategoryPermissionEntity, MJDashboardCategoryPermissionSchema, MJDashboardCategorySchema, MJDashboardEntity, MJDashboardEntityExtended, MJDashboardPartTypeEntity, MJDashboardPartTypeSchema, MJDashboardPermissionEntity, MJDashboardPermissionEntityExtended, MJDashboardPermissionSchema, MJDashboardSchema, MJDashboardUserPreferenceEntity, MJDashboardUserPreferenceSchema, MJDashboardUserStateEntity, MJDashboardUserStateSchema, MJDataContextEntity, MJDataContextItemEntity, MJDataContextItemSchema, MJDataContextSchema, MJDatasetEntity, MJDatasetItemEntity, MJDatasetItemSchema, MJDatasetSchema, MJDuplicateRunDetailEntity, MJDuplicateRunDetailMatchEntity, MJDuplicateRunDetailMatchSchema, MJDuplicateRunDetailSchema, MJDuplicateRunEntity, MJDuplicateRunSchema, MJEmployeeCompanyIntegrationEntity, MJEmployeeCompanyIntegrationSchema, MJEmployeeEntity, MJEmployeeRoleEntity, MJEmployeeRoleSchema, MJEmployeeSchema, MJEmployeeSkillEntity, MJEmployeeSkillSchema, MJEncryptionAlgorithmEntity, MJEncryptionAlgorithmSchema, MJEncryptionKeyEntity, MJEncryptionKeySchema, MJEncryptionKeySourceEntity, MJEncryptionKeySourceSchema, MJEntityAIActionEntity, MJEntityAIActionSchema, MJEntityActionEntity, MJEntityActionFilterEntity, MJEntityActionFilterSchema, MJEntityActionInvocationEntity, MJEntityActionInvocationSchema, MJEntityActionInvocationTypeEntity, MJEntityActionInvocationTypeSchema, MJEntityActionParamEntity, MJEntityActionParamSchema, MJEntityActionSchema, MJEntityCommunicationFieldEntity, MJEntityCommunicationFieldSchema, MJEntityCommunicationMessageTypeEntity, MJEntityCommunicationMessageTypeSchema, MJEntityDocumentEntity, MJEntityDocumentRunEntity, MJEntityDocumentRunSchema, MJEntityDocumentSchema, MJEntityDocumentSettingEntity, MJEntityDocumentSettingSchema, MJEntityDocumentTypeEntity, MJEntityDocumentTypeSchema, MJEntityEntity, MJEntityEntityExtended, MJEntityFieldEntity, MJEntityFieldEntityExtended, MJEntityFieldSchema, MJEntityFieldValueEntity, MJEntityFieldValueSchema, MJEntityFormOverrideEntity, MJEntityFormOverrideSchema, MJEntityOrganicKeyEntity, MJEntityOrganicKeyRelatedEntityEntity, MJEntityOrganicKeyRelatedEntitySchema, MJEntityOrganicKeySchema, MJEntityPermissionEntity, MJEntityPermissionSchema, MJEntityRecordDocumentEntity, MJEntityRecordDocumentSchema, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipDisplayComponentSchema, MJEntityRelationshipEntity, MJEntityRelationshipSchema, MJEntitySchema, MJEntitySettingEntity, MJEntitySettingSchema, MJEnvironmentEntity, MJEnvironmentEntityExtended, MJEnvironmentSchema, MJErrorLogEntity, MJErrorLogSchema, MJExperimentEntity, MJExperimentSchema, MJExperimentSessionEntity, MJExperimentSessionIterationEntity, MJExperimentSessionIterationSchema, MJExperimentSessionSchema, MJExplorerNavigationItemEntity, MJExplorerNavigationItemSchema, MJExternalDataSourceEntity, MJExternalDataSourceSchema, MJExternalDataSourceTypeEntity, MJExternalDataSourceTypeSchema, MJFileCategoryEntity, MJFileCategorySchema, MJFileEntity, MJFileEntityRecordLinkEntity, MJFileEntityRecordLinkSchema, MJFileSchema, MJFileStorageAccountEntity, MJFileStorageAccountPermissionEntity, MJFileStorageAccountPermissionSchema, MJFileStorageAccountSchema, MJFileStorageProviderEntity, MJFileStorageProviderSchema, MJGeneratedCodeCategoryEntity, MJGeneratedCodeCategorySchema, MJGeneratedCodeEntity, MJGeneratedCodeSchema, MJInstanceConfigurationEntity, MJInstanceConfigurationSchema, MJIntegrationEntity, MJIntegrationObjectEntity, MJIntegrationObjectFieldEntity, MJIntegrationObjectFieldSchema, MJIntegrationObjectSchema, MJIntegrationSchema, MJIntegrationSourceTypeEntity, MJIntegrationSourceTypeSchema, MJIntegrationURLFormatEntity, MJIntegrationURLFormatSchema, MJKnowledgeHubSavedSearchEntity, MJKnowledgeHubSavedSearchSchema, MJLibraryEntity, MJLibraryItemEntity, MJLibraryItemSchema, MJLibrarySchema, MJListCategoryEntity, MJListCategorySchema, MJListDetailEntity, MJListDetailEntityExtended, MJListDetailSchema, MJListEntity, MJListEntityExtended, MJListInvitationEntity, MJListInvitationSchema, MJListSchema, MJListShareEntity, MJListShareSchema, MJMCPServerConnectionEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionPermissionSchema, MJMCPServerConnectionSchema, MJMCPServerConnectionToolEntity, MJMCPServerConnectionToolSchema, MJMCPServerEntity, MJMCPServerSchema, MJMCPServerToolEntity, MJMCPServerToolSchema, MJMCPToolExecutionLogEntity, MJMCPToolExecutionLogSchema, MJMCPToolFavoriteEntity, MJMCPToolFavoriteSchema, MJMLAlgorithmEntity, MJMLAlgorithmSchema, MJMLAlgorithmUseCaseEntity, MJMLAlgorithmUseCaseRankingEntity, MJMLAlgorithmUseCaseRankingSchema, MJMLAlgorithmUseCaseSchema, MJMLModelEntity, MJMLModelSchema, MJMLModelScoringBindingEntity, MJMLModelScoringBindingSchema, MJMLTrainingPipelineEntity, MJMLTrainingPipelineSchema, MJMLTrainingRunEntity, MJMLTrainingRunSchema, MJMagicLinkInviteAllowedDomainEntity, MJMagicLinkInviteAllowedDomainSchema, MJMagicLinkInviteAllowedPathEntity, MJMagicLinkInviteAllowedPathSchema, MJMagicLinkInviteApplicationEntity, MJMagicLinkInviteApplicationSchema, MJMagicLinkInviteEntity, MJMagicLinkInviteRoleEntity, MJMagicLinkInviteRoleSchema, MJMagicLinkInviteSchema, MJMagicLinkRedemptionEntity, MJMagicLinkRedemptionSchema, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthServerMetadataCacheSchema, MJOAuthAuthorizationStateEntity, MJOAuthAuthorizationStateSchema, MJOAuthClientRegistrationEntity, MJOAuthClientRegistrationSchema, MJOAuthTokenEntity, MJOAuthTokenSchema, MJOpenAppDependencyEntity, MJOpenAppDependencySchema, MJOpenAppEntity, MJOpenAppInstallHistoryEntity, MJOpenAppInstallHistorySchema, MJOpenAppSchema, MJOutputDeliveryTypeEntity, MJOutputDeliveryTypeSchema, MJOutputFormatTypeEntity, MJOutputFormatTypeSchema, MJOutputTriggerTypeEntity, MJOutputTriggerTypeSchema, MJPermissionDomainEntity, MJPermissionDomainSchema, MJProcessRunDetailEntity, MJProcessRunDetailSchema, MJProcessRunEntity, MJProcessRunSchema, MJProjectEntity, MJProjectSchema, MJPublicLinkEntity, MJPublicLinkSchema, MJQueryCategoryEntity, MJQueryCategorySchema, MJQueryDependencyEntity, MJQueryDependencySchema, MJQueryEntity, MJQueryEntityEntity, MJQueryEntityExtended, MJQueryEntitySchema, MJQueryFieldEntity, MJQueryFieldSchema, MJQueryParameterEntity, MJQueryParameterSchema, MJQueryPermissionEntity, MJQueryPermissionSchema, MJQuerySQLEntity, MJQuerySQLSchema, MJQuerySchema, MJQueueEntity, MJQueueSchema, MJQueueTaskEntity, MJQueueTaskSchema, MJQueueTypeEntity, MJQueueTypeSchema, MJRecommendationEntity, MJRecommendationItemEntity, MJRecommendationItemSchema, MJRecommendationProviderEntity, MJRecommendationProviderSchema, MJRecommendationRunEntity, MJRecommendationRunSchema, MJRecommendationSchema, MJRecordChangeEntity, MJRecordChangeReplayRunEntity, MJRecordChangeReplayRunSchema, MJRecordChangeSchema, MJRecordGeoCodeEntity, MJRecordGeoCodeSchema, MJRecordLinkEntity, MJRecordLinkSchema, MJRecordMergeDeletionLogEntity, MJRecordMergeDeletionLogSchema, MJRecordMergeLogEntity, MJRecordMergeLogSchema, MJRecordProcessCategoryEntity, MJRecordProcessCategorySchema, MJRecordProcessEntity, MJRecordProcessSchema, MJRecordProcessWatermarkEntity, MJRecordProcessWatermarkSchema, MJRemoteOperationCategoryEntity, MJRemoteOperationCategorySchema, MJRemoteOperationEntity, MJRemoteOperationSchema, MJReportCategoryEntity, MJReportCategorySchema, MJReportEntity, MJReportSchema, MJReportSnapshotEntity, MJReportSnapshotSchema, MJReportUserStateEntity, MJReportUserStateSchema, MJReportVersionEntity, MJReportVersionSchema, MJResourceLinkEntity, MJResourceLinkSchema, MJResourcePermissionEntity, MJResourcePermissionEntityExtended, MJResourcePermissionSchema, MJResourceTypeEntity, MJResourceTypeSchema, MJRoleEntity, MJRoleSchema, MJRowLevelSecurityFilterEntity, MJRowLevelSecurityFilterSchema, MJSQLDialectEntity, MJSQLDialectSchema, MJScheduledActionEntity, MJScheduledActionEntityExtended, MJScheduledActionParamEntity, MJScheduledActionParamSchema, MJScheduledActionSchema, MJScheduledJobEntity, MJScheduledJobRunEntity, MJScheduledJobRunSchema, MJScheduledJobSchema, MJScheduledJobTypeEntity, MJScheduledJobTypeSchema, MJSchemaInfoEntity, MJSchemaInfoSchema, MJScopedPromptConfigEntity, MJScopedPromptConfigSchema, MJScopedPromptPartEntity, MJScopedPromptPartSchema, MJSearchExecutionLogEntity, MJSearchExecutionLogSchema, MJSearchProviderEntity, MJSearchProviderSchema, MJSearchScopeEntity, MJSearchScopeEntityEntity, MJSearchScopeEntitySchema, MJSearchScopeExternalIndexEntity, MJSearchScopeExternalIndexSchema, MJSearchScopePermissionEntity, MJSearchScopePermissionSchema, MJSearchScopeProviderEntity, MJSearchScopeProviderSchema, MJSearchScopeSchema, MJSearchScopeStorageAccountEntity, MJSearchScopeStorageAccountSchema, MJSearchScopeTestQueryEntity, MJSearchScopeTestQuerySchema, MJSignatureAccountEntity, MJSignatureAccountSchema, MJSignatureProviderEntity, MJSignatureProviderSchema, MJSignatureRequestDocumentEntity, MJSignatureRequestDocumentSchema, MJSignatureRequestEntity, MJSignatureRequestLogEntity, MJSignatureRequestLogSchema, MJSignatureRequestRecipientEntity, MJSignatureRequestRecipientSchema, MJSignatureRequestSchema, MJSkillEntity, MJSkillSchema, MJStateProvinceEntity, MJStateProvinceSchema, MJTagAuditLogEntity, MJTagAuditLogSchema, MJTagCoOccurrenceEntity, MJTagCoOccurrenceSchema, MJTagEntity, MJTagSchema, MJTagScopeEntity, MJTagScopeSchema, MJTagSuggestionEntity, MJTagSuggestionSchema, MJTagSynonymEntity, MJTagSynonymSchema, MJTaggedItemEntity, MJTaggedItemSchema, MJTaskDependencyEntity, MJTaskDependencySchema, MJTaskEntity, MJTaskSchema, MJTaskTypeEntity, MJTaskTypeSchema, MJTemplateCategoryEntity, MJTemplateCategorySchema, MJTemplateContentEntity, MJTemplateContentSchema, MJTemplateContentTypeEntity, MJTemplateContentTypeSchema, MJTemplateEntity, MJTemplateEntityExtended, MJTemplateParamEntity, MJTemplateParamSchema, MJTemplateSchema, MJTestEntity, MJTestRubricEntity, MJTestRubricSchema, MJTestRunEntity, MJTestRunFeedbackEntity, MJTestRunFeedbackSchema, MJTestRunOutputEntity, MJTestRunOutputSchema, MJTestRunOutputTypeEntity, MJTestRunOutputTypeSchema, MJTestRunSchema, MJTestSchema, MJTestSuiteEntity, MJTestSuiteRunEntity, MJTestSuiteRunSchema, MJTestSuiteSchema, MJTestSuiteTestEntity, MJTestSuiteTestSchema, MJTestTypeEntity, MJTestTypeSchema, MJThemeEntity, MJThemeSchema, MJUserApplicationEntity, MJUserApplicationEntityEntity, MJUserApplicationEntitySchema, MJUserApplicationSchema, MJUserEntity, MJUserFavoriteEntity, MJUserFavoriteSchema, MJUserNotificationEntity, MJUserNotificationPreferenceEntity, MJUserNotificationPreferenceSchema, MJUserNotificationSchema, MJUserNotificationTypeEntity, MJUserNotificationTypeSchema, MJUserRecordLogEntity, MJUserRecordLogSchema, MJUserRoleEntity, MJUserRoleSchema, MJUserRoutineEntity, MJUserRoutineRecipientEntity, MJUserRoutineRecipientSchema, MJUserRoutineRunEntity, MJUserRoutineRunSchema, MJUserRoutineSchema, MJUserSchema, MJUserSettingEntity, MJUserSettingSchema, MJUserViewCategoryEntity, MJUserViewCategorySchema, MJUserViewEntity, MJUserViewEntityExtended, MJUserViewRunDetailEntity, MJUserViewRunDetailSchema, MJUserViewRunEntity, MJUserViewRunSchema, MJUserViewSchema, MJVectorDatabaseEntity, MJVectorDatabaseSchema, MJVectorIndexEntity, MJVectorIndexSchema, MJVersionInstallationEntity, MJVersionInstallationSchema, MJVersionLabelEntity, MJVersionLabelItemEntity, MJVersionLabelItemSchema, MJVersionLabelRestoreEntity, MJVersionLabelRestoreSchema, MJVersionLabelSchema, MJViewTypeEntity, MJViewTypeSchema, MJWorkflowEngineEntity, MJWorkflowEngineSchema, MJWorkflowEntity, MJWorkflowRunEntity, MJWorkflowRunSchema, MJWorkflowSchema, MJWorkspaceEntity, MJWorkspaceItemEntity, MJWorkspaceItemSchema, MJWorkspaceSchema, PERMISSION_DOMAIN_ICONS, PERMISSION_DOMAIN_ICON_FALLBACK, PermissionEngine, PredictiveStudioControlExperimentSessionOperation, PredictiveStudioCreateScoringProcessOperation, PredictiveStudioPromoteModelOperation, PredictiveStudioRunFeaturePipelineOperation, PredictiveStudioScoreRecordSetOperation, PredictiveStudioStartExperimentSessionOperation, PredictiveStudioTrainModelOperation, QueryEngine, QueryPermissionProvider, ReadOnlyExternalBaseEntity, RecordComparisonCompareOperation, RecordProcessCancelRunOperation, RecordProcessGetRunStatusOperation, RecordProcessPauseRunOperation, RecordProcessResumeRunOperation, RecordProcessRunNowOperation, RegisterShareNotificationHandler, RemoteOperationEngineBase, ResolveArtifactTypeByMime, ResourceData, ResourcePermissionEngine, ResourcePermissionProvider, ResourceTypeEngine, SearchEngineBase, TemplateRunOperation, TypeTablesCache, UserInfoEngine, UserRoutineEngine, UserViewEngine, ViewColumnInfo, ViewFilterInfo, ViewFilterLogicInfo, ViewGridState, ViewSortDirectionInfo, ViewSortInfo, assertCallerMayCreateShare, buildActionsSummary, checkShareManagePermission, dispatchShareNotificationAfterSave, loadModule, parseConversationDetailComplete
59103
59449
 
59104
59450
  // EXTERNAL MODULE: ../../MJCore/dist/index.js + 88 modules
59105
- var dist = __webpack_require__(752);
59451
+ var dist = __webpack_require__(63);
59106
59452
  // EXTERNAL MODULE: ../../MJGlobal/dist/index.js + 24 modules
59107
- var MJGlobal_dist = __webpack_require__(198);
59108
- ;// ../../../node_modules/zod/v3/helpers/util.js
59453
+ var MJGlobal_dist = __webpack_require__(899);
59454
+ ;// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js
59109
59455
  var util;
59110
59456
  (function (util) {
59111
59457
  util.assertEqual = (_) => { };
@@ -59240,7 +59586,7 @@ const getParsedType = (data) => {
59240
59586
  }
59241
59587
  };
59242
59588
 
59243
- ;// ../../../node_modules/zod/v3/ZodError.js
59589
+ ;// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js
59244
59590
 
59245
59591
  const ZodIssueCode = util.arrayToEnum([
59246
59592
  "invalid_type",
@@ -59375,7 +59721,7 @@ ZodError.create = (issues) => {
59375
59721
  return error;
59376
59722
  };
59377
59723
 
59378
- ;// ../../../node_modules/zod/v3/locales/en.js
59724
+ ;// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js
59379
59725
 
59380
59726
 
59381
59727
  const errorMap = (issue, _ctx) => {
@@ -59486,7 +59832,7 @@ const errorMap = (issue, _ctx) => {
59486
59832
  };
59487
59833
  /* harmony default export */ const en = (errorMap);
59488
59834
 
59489
- ;// ../../../node_modules/zod/v3/errors.js
59835
+ ;// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js
59490
59836
 
59491
59837
  let overrideErrorMap = en;
59492
59838
 
@@ -59497,7 +59843,7 @@ function getErrorMap() {
59497
59843
  return overrideErrorMap;
59498
59844
  }
59499
59845
 
59500
- ;// ../../../node_modules/zod/v3/helpers/errorUtil.js
59846
+ ;// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js
59501
59847
  var errorUtil;
59502
59848
  (function (errorUtil) {
59503
59849
  errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {};
@@ -59505,7 +59851,7 @@ var errorUtil;
59505
59851
  errorUtil.toString = (message) => typeof message === "string" ? message : message?.message;
59506
59852
  })(errorUtil || (errorUtil = {}));
59507
59853
 
59508
- ;// ../../../node_modules/zod/v3/helpers/parseUtil.js
59854
+ ;// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
59509
59855
 
59510
59856
 
59511
59857
  const makeIssue = (params) => {
@@ -59616,7 +59962,7 @@ const isDirty = (x) => x.status === "dirty";
59616
59962
  const isValid = (x) => x.status === "valid";
59617
59963
  const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise;
59618
59964
 
59619
- ;// ../../../node_modules/zod/v3/types.js
59965
+ ;// ../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js
59620
59966
  /* unused harmony import specifier */ var types_INVALID;
59621
59967
 
59622
59968
 
@@ -63326,13 +63672,13 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
63326
63672
  * zod schema definition for the entity MJ: Action Contexts
63327
63673
  */var MJActionContextSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),ContextTypeID:stringType().nullable().describe("\n * * Field Name: ContextTypeID\n * * Display Name: Context Type ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Action Context Types (vwActionContextTypes.ID)"),Status:unionType([literalType('Active'),literalType('Disabled'),literalType('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Disabled\n * * Pending\n * * Description: Status of the action context (Pending, Active, Disabled)."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)"),ContextType:stringType().nullable().describe("\n * * Field Name: ContextType\n * * Display Name: Context Type\n * * SQL Data Type: nvarchar(255)")});/**
63328
63674
  * zod schema definition for the entity MJ: Action Execution Logs
63329
- */var MJActionExecutionLogSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),StartedAt:dateType().describe("\n * * Field Name: StartedAt\n * * Display Name: Started At\n * * SQL Data Type: datetimeoffset\n * * Default Value: sysdatetimeoffset()\n * * Description: Timestamp when the action execution started (timezone-aware)"),EndedAt:dateType().nullable().describe("\n * * Field Name: EndedAt\n * * Display Name: Ended At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp when the action execution ended (timezone-aware)"),Params:stringType().nullable().describe("\n * * Field Name: Params\n * * Display Name: Params\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON-formatted input parameters passed to the action during execution, storing the exact values used for this specific run."),ResultCode:stringType().nullable().describe("\n * * Field Name: ResultCode\n * * Display Name: Result Code\n * * SQL Data Type: nvarchar(255)\n * * Description: The outcome code returned by the action execution, indicating success, failure, or specific error conditions as defined in Action Result Codes."),UserID:stringType().describe("\n * * Field Name: UserID\n * * Display Name: User ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),RetentionPeriod:numberType().nullable().describe("\n * * Field Name: RetentionPeriod\n * * Display Name: Retention Period\n * * SQL Data Type: int\n * * Description: Number of days to retain the log; NULL for indefinite retention."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Message:stringType().nullable().describe("\n * * Field Name: Message\n * * Display Name: Message\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON-formatted output data or response from the action execution"),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)"),User:stringType().describe("\n * * Field Name: User\n * * Display Name: User\n * * SQL Data Type: nvarchar(100)")});/**
63675
+ */var MJActionExecutionLogSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),StartedAt:dateType().describe("\n * * Field Name: StartedAt\n * * Display Name: Started At\n * * SQL Data Type: datetimeoffset\n * * Default Value: sysdatetimeoffset()\n * * Description: Timestamp when the action execution started (timezone-aware)"),EndedAt:dateType().nullable().describe("\n * * Field Name: EndedAt\n * * Display Name: Ended At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp when the action execution ended (timezone-aware)"),Params:stringType().nullable().describe("\n * * Field Name: Params\n * * Display Name: Params\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON-formatted input parameters AS THE ACTION WAS CALLED, captured once when execution starts and never overwritten. Custom and Generated actions mutate their parameter array in place, so this is the only durable record of the values actually passed in; the final state lives in ResultParams. Parameter values may be redacted per ActionParam.LogValue / EntityActionParam.LogValue, and whole-record value types are never written - see the parameter's own documentation."),ResultCode:stringType().nullable().describe("\n * * Field Name: ResultCode\n * * Display Name: Result Code\n * * SQL Data Type: nvarchar(255)\n * * Description: The outcome code returned by the action execution, indicating success, failure, or specific error conditions as defined in Action Result Codes."),UserID:stringType().describe("\n * * Field Name: UserID\n * * Display Name: User ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),RetentionPeriod:numberType().nullable().describe("\n * * Field Name: RetentionPeriod\n * * Display Name: Retention Period\n * * SQL Data Type: int\n * * Description: Number of days to retain the log; NULL for indefinite retention."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Message:stringType().nullable().describe("\n * * Field Name: Message\n * * Display Name: Message\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Human-readable summary message returned by the action - the reason for a refusal, or a short description of what was done. Not the action's output data: parameter values live in Params and ResultParams, and the outcome code in ResultCode."),EntityActionID:stringType().nullable().describe("\n * * Field Name: EntityActionID\n * * Display Name: Entity Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entity Actions (vwEntityActions.ID)\n * * Description: Optional. The Entity Action binding that caused this run. NULL when the action was invoked directly - from a resolver, a script, an agent step or a scheduled action."),EntityActionInvocationTypeID:stringType().nullable().describe("\n * * Field Name: EntityActionInvocationTypeID\n * * Display Name: Entity Action Invocation Type ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entity Action Invocation Types (vwEntityActionInvocationTypes.ID)\n * * Description: Optional. Which lifecycle event fired the binding - AfterUpdate, Validate, List and so on. Recorded separately from EntityActionID because one binding may be attached to several invocation types, and telling a Validate refusal apart from an AfterUpdate side effect is the first question anyone asks of this log."),TargetEntityID:stringType().nullable().describe("\n * * Field Name: TargetEntityID\n * * Display Name: Target Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)\n * * Description: Optional. The entity of the record this run operated on. Deliberately denormalized rather than joined through EntityActionID: it survives the binding being deleted or retargeted, and it lets the log be queried by record with no join. Kept generic because every invoker has a subject - not only Entity Actions."),TargetRecordID:stringType().nullable().describe("\n * * Field Name: TargetRecordID\n * * Display Name: Target Record ID\n * * SQL Data Type: nvarchar(450)\n * * Description: Optional. The primary key of the record this run operated on, as text, paired with TargetEntityID. For multi-record invocation types (List, View) one log row is written per record, so this is always a single record."),ResultParams:stringType().nullable().describe("\n * * Field Name: ResultParams\n * * Display Name: Result Params\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON-formatted FINAL parameter set captured when the action finished - the inputs as the action left them, plus any output parameters it produced. Written on FAILURE exactly as on success, under the same redaction rules: a failed run's partially-mutated inputs are usually the most diagnostic thing available, and an audit trail that records only successes is not an audit trail. Distinct from Params, which holds the values the action was called with and is never overwritten. NULL means one thing only - the run never finished (process died, host killed) - so it is a signal rather than an absence, and must not be backfilled."),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)"),User:stringType().describe("\n * * Field Name: User\n * * Display Name: User\n * * SQL Data Type: nvarchar(100)"),EntityAction:stringType().nullable().describe("\n * * Field Name: EntityAction\n * * Display Name: Entity Action\n * * SQL Data Type: nvarchar(425)"),EntityActionInvocationType:stringType().nullable().describe("\n * * Field Name: EntityActionInvocationType\n * * Display Name: Entity Action Invocation Type\n * * SQL Data Type: nvarchar(255)"),TargetEntity:stringType().nullable().describe("\n * * Field Name: TargetEntity\n * * Display Name: Target Entity\n * * SQL Data Type: nvarchar(255)")});/**
63330
63676
  * zod schema definition for the entity MJ: Action Filters
63331
63677
  */var MJActionFilterSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),UserDescription:stringType().describe("\n * * Field Name: UserDescription\n * * Display Name: User Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Human-readable explanation of what this filter checks and when it should prevent action execution, written for non-technical users."),UserComments:stringType().nullable().describe("\n * * Field Name: UserComments\n * * Display Name: User Comments\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Additional notes or implementation details about the filter logic, including examples or edge cases to consider."),Code:stringType().describe("\n * * Field Name: Code\n * * Display Name: Code\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JavaScript code that evaluates to true (allow action) or false (prevent action), executed in the same context as the action."),CodeExplanation:stringType().nullable().describe("\n * * Field Name: CodeExplanation\n * * Display Name: Code Explanation\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Technical documentation of the filter code logic, including expected inputs, outputs, and any dependencies or assumptions."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: __mj _Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: __mj _Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()")});/**
63332
63678
  * zod schema definition for the entity MJ: Action Libraries
63333
63679
  */var MJActionLibrarySchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),LibraryID:stringType().describe("\n * * Field Name: LibraryID\n * * Display Name: Library ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Libraries (vwLibraries.ID)"),ItemsUsed:stringType().nullable().describe("\n * * Field Name: ItemsUsed\n * * Display Name: Items Used\n * * SQL Data Type: nvarchar(MAX)\n * * Description: List of classes and functions used by the action from the library."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)"),Library:stringType().describe("\n * * Field Name: Library\n * * Display Name: Library\n * * SQL Data Type: nvarchar(255)")});/**
63334
63680
  * zod schema definition for the entity MJ: Action Params
63335
- */var MJActionParamSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Parameter Name\n * * SQL Data Type: nvarchar(255)"),DefaultValue:stringType().nullable().describe("\n * * Field Name: DefaultValue\n * * Display Name: Default Value\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The default value for this parameter if not provided during action execution, can be a literal value or JSON for complex types."),Type:unionType([literalType('Both'),literalType('Input'),literalType('Output')]).describe("\n * * Field Name: Type\n * * Display Name: Parameter Direction\n * * SQL Data Type: nchar(10)\n * * Value List Type: List\n * * Possible Values \n * * Both\n * * Input\n * * Output\n * * Description: Specifies whether this parameter is used for Input, Output, or Both directions in the action execution flow."),ValueType:unionType([literalType('BaseEntity Sub-Class'),literalType('BaseEntity Sub-Class'),literalType('MediaOutput'),literalType('Other'),literalType('Other'),literalType('Scalar'),literalType('Scalar'),literalType('Simple Object'),literalType('Simple Object')]).describe("\n * * Field Name: ValueType\n * * Display Name: Value Type\n * * SQL Data Type: nvarchar(30)\n * * Value List Type: List\n * * Possible Values \n * * BaseEntity Sub-Class\n * * BaseEntity Sub-Class\n * * MediaOutput\n * * Other\n * * Other\n * * Scalar\n * * Scalar\n * * Simple Object\n * * Simple Object\n * * Description: Tracks the basic value type of the parameter, additional information can be provided in the Description field"),IsArray:booleanType().describe("\n * * Field Name: IsArray\n * * Display Name: Is Array\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Indicates whether this parameter accepts or returns an array of values rather than a single value."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)"),IsRequired:booleanType().describe("\n * * Field Name: IsRequired\n * * Display Name: Is Required\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Determines if this parameter must be provided for input parameters or will always be populated for output parameters."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),MediaModality:unionType([literalType('Audio'),literalType('Image'),literalType('Video')]).nullable().describe("\n * * Field Name: MediaModality\n * * Display Name: Media Modality\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * Audio\n * * Image\n * * Video\n * * Description: Specifies the type of media this parameter outputs when ValueType is MediaOutput. Used for action discovery and validation."),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)")});/**
63681
+ */var MJActionParamSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Parameter Name\n * * SQL Data Type: nvarchar(255)"),DefaultValue:stringType().nullable().describe("\n * * Field Name: DefaultValue\n * * Display Name: Default Value\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The default value for this parameter if not provided during action execution, can be a literal value or JSON for complex types."),Type:unionType([literalType('Both'),literalType('Input'),literalType('Output')]).describe("\n * * Field Name: Type\n * * Display Name: Parameter Direction\n * * SQL Data Type: nchar(10)\n * * Value List Type: List\n * * Possible Values \n * * Both\n * * Input\n * * Output\n * * Description: Specifies whether this parameter is used for Input, Output, or Both directions in the action execution flow."),ValueType:unionType([literalType('BaseEntity Sub-Class'),literalType('BaseEntity Sub-Class'),literalType('MediaOutput'),literalType('Other'),literalType('Other'),literalType('Scalar'),literalType('Scalar'),literalType('Simple Object'),literalType('Simple Object')]).describe("\n * * Field Name: ValueType\n * * Display Name: Value Type\n * * SQL Data Type: nvarchar(30)\n * * Value List Type: List\n * * Possible Values \n * * BaseEntity Sub-Class\n * * BaseEntity Sub-Class\n * * MediaOutput\n * * Other\n * * Other\n * * Scalar\n * * Scalar\n * * Simple Object\n * * Simple Object\n * * Description: Tracks the basic value type of the parameter, additional information can be provided in the Description field"),IsArray:booleanType().describe("\n * * Field Name: IsArray\n * * Display Name: Is Array\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Indicates whether this parameter accepts or returns an array of values rather than a single value."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)"),IsRequired:booleanType().describe("\n * * Field Name: IsRequired\n * * Display Name: Is Required\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Determines if this parameter must be provided for input parameters or will always be populated for output parameters."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),MediaModality:unionType([literalType('Audio'),literalType('Image'),literalType('Video')]).nullable().describe("\n * * Field Name: MediaModality\n * * Display Name: Media Modality\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * Audio\n * * Image\n * * Video\n * * Description: Specifies the type of media this parameter outputs when ValueType is MediaOutput. Used for action discovery and validation."),LogValue:booleanType().describe("\n * * Field Name: LogValue\n * * Display Name: Log Value\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether this parameter's VALUE may be written to ActionExecutionLog.Params. Default 1. Set to 0 for parameters that carry records, credentials or personal data - for example the Data payload of Execute Agent. Independent of the hard rule that Entity Action params of ValueType 'Entity Object' or 'Entity Object Data' are never logged regardless of this flag. When logging is suppressed the log records the parameter name, its type and a redaction marker, never the value."),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)")});/**
63336
63682
  * zod schema definition for the entity MJ: Action Result Codes
63337
63683
  */var MJActionResultCodeSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),ResultCode:stringType().describe("\n * * Field Name: ResultCode\n * * Display Name: Result Code\n * * SQL Data Type: nvarchar(255)\n * * Description: The unique code string returned by the action to indicate specific outcomes, used for programmatic handling of results."),IsSuccess:booleanType().describe("\n * * Field Name: IsSuccess\n * * Display Name: Is Success\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Indicates if the result code is a success or not. It is possible an action might have more than one failure condition/result code and same for success conditions."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Description of the result code."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)")});/**
63338
63684
  * zod schema definition for the entity MJ: Actions
@@ -63472,13 +63818,13 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
63472
63818
  * zod schema definition for the entity MJ: AI Vendors
63473
63819
  */var MJAIVendorSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(50)\n * * Description: The unique name of the vendor."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Detailed description of the vendor and their AI offerings."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),CredentialTypeID:stringType().nullable().describe("\n * * Field Name: CredentialTypeID\n * * Display Name: Credential Type ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Credential Types (vwCredentialTypes.ID)\n * * Description: Reference to the type of credential this vendor expects (e.g., API Key, GCP Service Account, Azure Service Principal). Used for type-based default credential resolution when no explicit binding exists, and for UI guidance when creating credentials."),CredentialType:stringType().nullable().describe("\n * * Field Name: CredentialType\n * * Display Name: Credential Type\n * * SQL Data Type: nvarchar(100)")});/**
63474
63820
  * zod schema definition for the entity MJ: API Application Scopes
63475
- */var MJAPIApplicationScopeSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ApplicationID:stringType().describe("\n * * Field Name: ApplicationID\n * * Display Name: Application\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Applications (vwAPIApplications.ID)\n * * Description: Reference to the application this ceiling rule applies to."),ScopeID:stringType().describe("\n * * Field Name: ScopeID\n * * Display Name: Scope\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Scopes (vwAPIScopes.ID)\n * * Description: Reference to the scope this rule applies to."),ResourcePattern:stringType().nullable().describe("\n * * Field Name: ResourcePattern\n * * Display Name: Resource Pattern\n * * SQL Data Type: nvarchar(750)\n * * Description: Glob pattern for matching resources (e.g., Users,Accounts or Skip* or *). NULL means match all resources."),PatternType:unionType([literalType('Exclude'),literalType('Include')]).describe("\n * * Field Name: PatternType\n * * Display Name: Pattern Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Include\n * * Value List Type: List\n * * Possible Values \n * * Exclude\n * * Include\n * * Description: How to interpret the pattern: Include (grant if matches) or Exclude (grant if does NOT match)."),IsDeny:booleanType().describe("\n * * Field Name: IsDeny\n * * Display Name: Deny\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If true, this rule explicitly DENIES access. Deny rules trump allow rules at the same priority level."),Priority:numberType().describe("\n * * Field Name: Priority\n * * Display Name: Priority\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Rule evaluation order. Higher priority rules are evaluated first. Within same priority, deny rules are evaluated before allow rules."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Application:stringType().describe("\n * * Field Name: Application\n * * Display Name: Application Name\n * * SQL Data Type: nvarchar(100)"),Scope:stringType().describe("\n * * Field Name: Scope\n * * Display Name: Scope Name\n * * SQL Data Type: nvarchar(100)")});/**
63821
+ */var MJAPIApplicationScopeSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ApplicationID:stringType().describe("\n * * Field Name: ApplicationID\n * * Display Name: Application\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Applications (vwAPIApplications.ID)\n * * Description: Reference to the application this ceiling rule applies to."),ScopeID:stringType().describe("\n * * Field Name: ScopeID\n * * Display Name: Scope\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Scopes (vwAPIScopes.ID)\n * * Description: Reference to the scope this rule applies to."),ResourcePattern:stringType().nullable().describe("\n * * Field Name: ResourcePattern\n * * Display Name: Resource Pattern\n * * SQL Data Type: nvarchar(750)\n * * Description: Glob pattern for matching resources (e.g., Users,Accounts or Skip* or *). NULL means match all resources."),PatternType:unionType([literalType('Exclude'),literalType('Include')]).describe("\n * * Field Name: PatternType\n * * Display Name: Pattern Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Include\n * * Value List Type: List\n * * Possible Values \n * * Exclude\n * * Include\n * * Description: How to interpret the pattern: Include (grant if matches) or Exclude (grant if does NOT match)."),IsDeny:booleanType().describe("\n * * Field Name: IsDeny\n * * Display Name: Deny\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If true, this rule explicitly DENIES access. Deny rules trump allow rules at the same priority level."),Priority:numberType().describe("\n * * Field Name: Priority\n * * Display Name: Priority\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Rule evaluation order. Higher priority rules are evaluated first. Within same priority, deny rules are evaluated before allow rules."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),RowFilterID:stringType().nullable().describe("\n * * Field Name: RowFilterID\n * * Display Name: Row Filter ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Row Level Security Filters (vwRowLevelSecurityFilters.ID)\n * * Description: Optional row-level filter acting as a CEILING for every API key operating under this application \u2014 a restriction keys inherit and cannot widen. Composes with the per-key filter (APIKeyScope.RowFilterID) and with role-based RLS using AND, never OR, so no layer can broaden another. References the same RowLevelSecurityFilter catalog used by role-based RLS. NULL (the default) means the application imposes no row ceiling. The same authoring constraints as APIKeyScope.RowFilterID apply: exact single-entity resource pattern, all referenced columns must exist on that entity, and all referrers of the filter record must resolve to the same entity."),Application:stringType().describe("\n * * Field Name: Application\n * * Display Name: Application Name\n * * SQL Data Type: nvarchar(100)"),Scope:stringType().describe("\n * * Field Name: Scope\n * * Display Name: Scope Name\n * * SQL Data Type: nvarchar(100)"),RowFilter:stringType().nullable().describe("\n * * Field Name: RowFilter\n * * Display Name: Row Filter\n * * SQL Data Type: nvarchar(100)")});/**
63476
63822
  * zod schema definition for the entity MJ: API Applications
63477
63823
  */var MJAPIApplicationSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(100)\n * * Description: Unique name identifying the application (e.g., MJAPI, MCPServer, Portal, CLI)."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(500)\n * * Description: Human-readable description of the application and its purpose."),IsActive:booleanType().describe("\n * * Field Name: IsActive\n * * Display Name: Active\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether this application is currently active. Inactive applications reject all API key authentication."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()")});/**
63478
63824
  * zod schema definition for the entity MJ: API Key Applications
63479
63825
  */var MJAPIKeyApplicationSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),APIKeyID:stringType().describe("\n * * Field Name: APIKeyID\n * * Display Name: API Key\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Keys (vwAPIKeys.ID)\n * * Description: Reference to the API key being bound to an application."),ApplicationID:stringType().describe("\n * * Field Name: ApplicationID\n * * Display Name: Application\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Applications (vwAPIApplications.ID)\n * * Description: Reference to the application this key is authorized to use."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),APIKey:stringType().describe("\n * * Field Name: APIKey\n * * Display Name: API Key Value\n * * SQL Data Type: nvarchar(255)"),Application:stringType().describe("\n * * Field Name: Application\n * * Display Name: Application Name\n * * SQL Data Type: nvarchar(100)")});/**
63480
63826
  * zod schema definition for the entity MJ: API Key Scopes
63481
- */var MJAPIKeyScopeSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),APIKeyID:stringType().describe("\n * * Field Name: APIKeyID\n * * Display Name: API Key\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Keys (vwAPIKeys.ID)"),ScopeID:stringType().describe("\n * * Field Name: ScopeID\n * * Display Name: Scope\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Scopes (vwAPIScopes.ID)"),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ResourcePattern:stringType().nullable().describe("\n * * Field Name: ResourcePattern\n * * Display Name: Resource Pattern\n * * SQL Data Type: nvarchar(750)\n * * Description: Glob pattern for matching resources (e.g., Users,Accounts or Skip* or *). NULL means match all resources under this scope."),PatternType:unionType([literalType('Exclude'),literalType('Include')]).describe("\n * * Field Name: PatternType\n * * Display Name: Pattern Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Include\n * * Value List Type: List\n * * Possible Values \n * * Exclude\n * * Include\n * * Description: How to interpret the pattern: Include (grant if matches) or Exclude (grant if does NOT match)."),IsDeny:booleanType().describe("\n * * Field Name: IsDeny\n * * Display Name: Is Deny\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If true, this rule explicitly DENIES access. Deny rules trump allow rules at the same priority level."),Priority:numberType().describe("\n * * Field Name: Priority\n * * Display Name: Priority\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Rule evaluation order. Higher priority rules are evaluated first. Within same priority, deny rules are evaluated before allow rules."),APIKey:stringType().describe("\n * * Field Name: APIKey\n * * Display Name: API Key\n * * SQL Data Type: nvarchar(255)"),Scope:stringType().describe("\n * * Field Name: Scope\n * * Display Name: Scope\n * * SQL Data Type: nvarchar(100)")});/**
63827
+ */var MJAPIKeyScopeSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),APIKeyID:stringType().describe("\n * * Field Name: APIKeyID\n * * Display Name: API Key\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Keys (vwAPIKeys.ID)"),ScopeID:stringType().describe("\n * * Field Name: ScopeID\n * * Display Name: Scope\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Scopes (vwAPIScopes.ID)"),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ResourcePattern:stringType().nullable().describe("\n * * Field Name: ResourcePattern\n * * Display Name: Resource Pattern\n * * SQL Data Type: nvarchar(750)\n * * Description: Glob pattern for matching resources (e.g., Users,Accounts or Skip* or *). NULL means match all resources under this scope."),PatternType:unionType([literalType('Exclude'),literalType('Include')]).describe("\n * * Field Name: PatternType\n * * Display Name: Pattern Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Include\n * * Value List Type: List\n * * Possible Values \n * * Exclude\n * * Include\n * * Description: How to interpret the pattern: Include (grant if matches) or Exclude (grant if does NOT match)."),IsDeny:booleanType().describe("\n * * Field Name: IsDeny\n * * Display Name: Is Deny\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If true, this rule explicitly DENIES access. Deny rules trump allow rules at the same priority level."),Priority:numberType().describe("\n * * Field Name: Priority\n * * Display Name: Priority\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Rule evaluation order. Higher priority rules are evaluated first. Within same priority, deny rules are evaluated before allow rules."),RowFilterID:stringType().nullable().describe("\n * * Field Name: RowFilterID\n * * Display Name: Row Filter ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Row Level Security Filters (vwRowLevelSecurityFilters.ID)\n * * Description: Optional row-level filter narrowing WHICH RECORDS this scope grant applies to, in addition to the resource pattern that governs which entities. References the same RowLevelSecurityFilter catalog used by role-based RLS, so the filter text flows through the standard {{Token}} substitution engine and every existing RLS enforcement point (RunView, Load by primary key, save, delete, search). NULL (the default) means no row restriction \u2014 behavior identical to before this column existed. When set, the rule's ResourcePattern must name a single exact entity (no wildcards, no comma-separated lists), every column the filter references must resolve to a real non-virtual field on that entity, and every other referrer of the same filter record must resolve to that same entity. Critically, this filter is evaluated INDEPENDENTLY of the role-RLS exemption: a user exempt from role RLS is still bound by their key's filter, because narrowing a principal below what their roles allow is the entire purpose of a key ceiling."),APIKey:stringType().describe("\n * * Field Name: APIKey\n * * Display Name: API Key\n * * SQL Data Type: nvarchar(255)"),Scope:stringType().describe("\n * * Field Name: Scope\n * * Display Name: Scope\n * * SQL Data Type: nvarchar(100)"),RowFilter:stringType().nullable().describe("\n * * Field Name: RowFilter\n * * Display Name: Row Filter\n * * SQL Data Type: nvarchar(100)")});/**
63482
63828
  * zod schema definition for the entity MJ: API Key Usage Logs
63483
63829
  */var MJAPIKeyUsageLogSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),APIKeyID:stringType().describe("\n * * Field Name: APIKeyID\n * * Display Name: API Key\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Keys (vwAPIKeys.ID)"),Endpoint:stringType().describe("\n * * Field Name: Endpoint\n * * Display Name: Endpoint\n * * SQL Data Type: nvarchar(500)\n * * Description: The API endpoint path that was accessed (e.g., /mcp, /graphql, /api/v1/entities)."),Operation:stringType().nullable().describe("\n * * Field Name: Operation\n * * Display Name: Operation\n * * SQL Data Type: nvarchar(255)\n * * Description: The specific operation performed, such as the GraphQL operation name or MCP tool invoked (e.g., Get_Users_Record, Run_Agent)."),Method:stringType().describe("\n * * Field Name: Method\n * * Display Name: Method\n * * SQL Data Type: nvarchar(10)\n * * Description: HTTP method used for the request (GET, POST, PUT, DELETE, etc.)."),StatusCode:numberType().describe("\n * * Field Name: StatusCode\n * * Display Name: Status Code\n * * SQL Data Type: int\n * * Description: HTTP response status code returned to the client (e.g., 200 for success, 401 for unauthorized, 500 for server error)."),ResponseTimeMs:numberType().nullable().describe("\n * * Field Name: ResponseTimeMs\n * * Display Name: Response Time (ms)\n * * SQL Data Type: int\n * * Description: Total time in milliseconds to process the request and return a response. Useful for performance monitoring."),IPAddress:stringType().nullable().describe("\n * * Field Name: IPAddress\n * * Display Name: IP Address\n * * SQL Data Type: nvarchar(45)\n * * Description: Client IP address that made the request. Supports both IPv4 and IPv6 addresses (up to 45 characters)."),UserAgent:stringType().nullable().describe("\n * * Field Name: UserAgent\n * * Display Name: User Agent\n * * SQL Data Type: nvarchar(500)\n * * Description: User-Agent header from the HTTP request, identifying the client application or library making the API call."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ApplicationID:stringType().nullable().describe("\n * * Field Name: ApplicationID\n * * Display Name: Application\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: API Applications (vwAPIApplications.ID)\n * * Description: The application through which this request was made (MJAPI, MCPServer, etc.)."),RequestedResource:stringType().nullable().describe("\n * * Field Name: RequestedResource\n * * Display Name: Requested Resource\n * * SQL Data Type: nvarchar(500)\n * * Description: The specific resource that was requested (e.g., entity name, agent name, query name)."),ScopesEvaluated:stringType().nullable().describe("\n * * Field Name: ScopesEvaluated\n * * Display Name: Scopes Evaluated\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON array containing detailed evaluation of each scope rule checked during authorization."),AuthorizationResult:unionType([literalType('Allowed'),literalType('Denied'),literalType('NoScopesRequired')]).describe("\n * * Field Name: AuthorizationResult\n * * Display Name: Authorization Result\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Allowed\n * * Value List Type: List\n * * Possible Values \n * * Allowed\n * * Denied\n * * NoScopesRequired\n * * Description: Final authorization result: Allowed, Denied, or NoScopesRequired (for operations that do not require scope checks)."),DeniedReason:stringType().nullable().describe("\n * * Field Name: DeniedReason\n * * Display Name: Denied Reason\n * * SQL Data Type: nvarchar(500)\n * * Description: When authorization is denied, explains why (e.g., app ceiling blocked, no matching key scope, explicit deny rule)."),APIKey:stringType().describe("\n * * Field Name: APIKey\n * * Display Name: API Key\n * * SQL Data Type: nvarchar(255)"),Application:stringType().nullable().describe("\n * * Field Name: Application\n * * Display Name: Application\n * * SQL Data Type: nvarchar(100)")});/**
63484
63830
  * zod schema definition for the entity MJ: API Keys
@@ -63574,7 +63920,7 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
63574
63920
  * zod schema definition for the entity MJ: Content Item Attributes
63575
63921
  */var MJContentItemAttributeSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ContentItemID:stringType().describe("\n * * Field Name: ContentItemID\n * * Display Name: Content Item ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(100)"),Value:stringType().describe("\n * * Field Name: Value\n * * Display Name: Value\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The extracted or assigned value for this attribute on the content item."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ContentItem:stringType().nullable().describe("\n * * Field Name: ContentItem\n * * Display Name: Content Item\n * * SQL Data Type: nvarchar(250)")});/**
63576
63922
  * zod schema definition for the entity MJ: Content Item Chunks
63577
- */var MJContentItemChunkSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ContentItemID:stringType().describe("\n * * Field Name: ContentItemID\n * * Display Name: Content Item\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)"),Sequence:numberType().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Description: Zero-based ordinal position of this chunk within the parent Content Item, preserving the original order in which the text was split."),Text:stringType().nullable().describe("\n * * Field Name: Text\n * * Display Name: Text\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The chunk of extracted text (from the parent Content Item) that was embedded to produce this chunk's vector. NULL for media-only segments (for example an image, or a video window with no transcript), where the embedded payload is the media itself and any readable representation lives in Description/Transcript."),VectorRecordID:stringType().nullable().describe("\n * * Field Name: VectorRecordID\n * * Display Name: Vector Record ID\n * * SQL Data Type: nvarchar(100)\n * * Description: The identifier of this chunk's vector record in the vector database (e.g. Pinecone) \u2014 the deterministic key MemberJunction assigns and upserts the chunk's embedding under. Provides traceability from the chunk back to its stored vector."),EmbeddingStatus:unionType([literalType('Active'),literalType('Complete'),literalType('Failed'),literalType('Pending'),literalType('Processed'),literalType('Processing'),literalType('Skipped')]).describe("\n * * Field Name: EmbeddingStatus\n * * Display Name: Embedding Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Complete\n * * Failed\n * * Pending\n * * Processed\n * * Processing\n * * Skipped\n * * Description: Embedding lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped."),TaggingStatus:unionType([literalType('Active'),literalType('Complete'),literalType('Failed'),literalType('Pending'),literalType('Processed'),literalType('Processing'),literalType('Skipped')]).describe("\n * * Field Name: TaggingStatus\n * * Display Name: Tagging Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Complete\n * * Failed\n * * Pending\n * * Processed\n * * Processing\n * * Skipped\n * * Description: Tagging lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped."),DeleteStatus:unionType([literalType('Deleted'),literalType('Pending')]).nullable().describe("\n * * Field Name: DeleteStatus\n * * Display Name: Delete Status\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * Deleted\n * * Pending\n * * Description: Deletion lifecycle state of this chunk's vector: NULL when not slated for deletion, Pending when vector removal is queued, or Deleted once the vector has been removed from the vector database."),LastEmbeddedAt:dateType().nullable().describe("\n * * Field Name: LastEmbeddedAt\n * * Display Name: Last Embedded At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp of the last successful embedding of this chunk."),LastTaggedAt:dateType().nullable().describe("\n * * Field Name: LastTaggedAt\n * * Display Name: Last Tagged At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp of the last successful tagging of this chunk."),LastDeletedAt:dateType().nullable().describe("\n * * Field Name: LastDeletedAt\n * * Display Name: Last Deleted At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp of the last successful deletion of this chunk's vector from the vector database."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Modality:unionType([literalType('audio'),literalType('image'),literalType('multimodal'),literalType('text'),literalType('video')]).describe("\n * * Field Name: Modality\n * * Display Name: Modality\n * * SQL Data Type: nvarchar(20)\n * * Default Value: text\n * * Value List Type: List\n * * Possible Values \n * * audio\n * * image\n * * multimodal\n * * text\n * * video\n * * Description: The modality of this chunk's embedded payload: text (default), image, audio, video, or multimodal (text and media fused into a single vector). Determines which vector index the chunk's embedding belongs to, since a multimodal embedding model produces vectors of a different dimension than a text model, and is used at retrieval time to merge results per modality rather than taking a single global top-k."),StartOffset:numberType().nullable().describe("\n * * Field Name: StartOffset\n * * Display Name: Start Offset\n * * SQL Data Type: int\n * * Description: Inclusive character offset where this chunk begins within the parent Content Item's extracted text. Together with EndOffset this is the provenance link that resolves a search hit back to the exact passage in the source document. NULL for media segments, which are positioned by StartMs/EndMs instead."),EndOffset:numberType().nullable().describe("\n * * Field Name: EndOffset\n * * Display Name: End Offset\n * * SQL Data Type: int\n * * Description: Exclusive character offset where this chunk ends within the parent Content Item's extracted text. See StartOffset. NULL for media segments."),StartMs:numberType().nullable().describe("\n * * Field Name: StartMs\n * * Display Name: Start (ms)\n * * SQL Data Type: int\n * * Description: Start of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. Set by transcript- or window-based segmentation; enables time-windowed playback deep-links from a search result (for example 14:22-15:05 of a session recording). NULL for text segments."),EndMs:numberType().nullable().describe("\n * * Field Name: EndMs\n * * Display Name: End (ms)\n * * SQL Data Type: int\n * * Description: End of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. See StartMs. NULL for text segments."),PageNumber:numberType().nullable().describe("\n * * Field Name: PageNumber\n * * Display Name: Page Number\n * * SQL Data Type: int\n * * Description: One-based page number this chunk came from, for paginated sources such as PDFs or slide decks. Provides citation-grade provenance alongside the character offsets. NULL when the source is not paginated."),SegmentTitle:stringType().nullable().describe("\n * * Field Name: SegmentTitle\n * * Display Name: Segment Title\n * * SQL Data Type: nvarchar(500)\n * * Description: Human-readable label for this segment \u2014 a document heading for structure-based segmentation, or a generated chapter title for topic- and transcript-based segmentation. Displayed with search results and prepended to the embedded text so a chunk's vector carries its own topic."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: An AI-generated description of this chunk's content, primarily for non-text segments. Retrieval of a media chunk otherwise yields only a pointer (an asset and a time window) that an agent cannot reason over; this column is the readable representation that an agent reads, a cross-encoder reranks, and lexical search matches. A short summary of it may be mirrored into the vector record's metadata for display and filtering, but the full text belongs here."),Transcript:stringType().nullable().describe("\n * * Field Name: Transcript\n * * Display Name: Transcript\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The verbatim transcript covering this chunk's time window, for audio and video segments, including speaker labels where the source provides them. Distinct from Description, which is a generated summary: this is what was actually said, and it is what makes a recording findable by lexical search."),SegmenterKey:stringType().nullable().describe("\n * * Field Name: SegmenterKey\n * * Display Name: Segmenter Key\n * * SQL Data Type: nvarchar(100)\n * * Description: Registration key of the segmentation strategy that produced this chunk (for example StructuralText, SemanticText, Transcript, or FixedWindow). Provenance: when a Content Source's configured strategy changes, this identifies which chunks were produced by the previous strategy and therefore need re-chunking."),ParentChunkID:stringType().nullable().describe("\n * * Field Name: ParentChunkID\n * * Display Name: Parent Chunk\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Content Item Chunks (vwContentItemChunks.ID)\n * * Description: Optional self-reference to another chunk of the same Content Item that is the parent of this one, expressing a chapter to sub-chapter hierarchy \u2014 for example a five-minute chapter of a recording and the individual speaker turns within it, or a document section and its subsections. NULL for top-level segments."),ContentItem:stringType().nullable().describe("\n * * Field Name: ContentItem\n * * Display Name: Content Item\n * * SQL Data Type: nvarchar(250)"),RootParentChunkID:stringType().nullable().describe("\n * * Field Name: RootParentChunkID\n * * Display Name: Root Parent Chunk\n * * SQL Data Type: uniqueidentifier")});/**
63923
+ */var MJContentItemChunkSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ContentItemID:stringType().describe("\n * * Field Name: ContentItemID\n * * Display Name: Content Item\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)"),Sequence:numberType().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Description: Zero-based ordinal position of this chunk within the parent Content Item, preserving the original order in which the text was split."),Text:stringType().nullable().describe("\n * * Field Name: Text\n * * Display Name: Text\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The chunk of extracted text (from the parent Content Item) that was embedded to produce this chunk's vector. NULL for media-only segments (for example an image, or a video window with no transcript), where the embedded payload is the media itself and any readable representation lives in Description/Transcript."),VectorRecordID:stringType().nullable().describe("\n * * Field Name: VectorRecordID\n * * Display Name: Vector Record ID\n * * SQL Data Type: nvarchar(100)\n * * Description: The identifier of this chunk's vector record in the vector database (e.g. Pinecone) \u2014 the deterministic key MemberJunction assigns and upserts the chunk's embedding under. Provides traceability from the chunk back to its stored vector."),EmbeddingStatus:unionType([literalType('Active'),literalType('Complete'),literalType('Failed'),literalType('Pending'),literalType('Processed'),literalType('Processing'),literalType('Skipped')]).describe("\n * * Field Name: EmbeddingStatus\n * * Display Name: Embedding Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Complete\n * * Failed\n * * Pending\n * * Processed\n * * Processing\n * * Skipped\n * * Description: Embedding lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped."),TaggingStatus:unionType([literalType('Active'),literalType('Complete'),literalType('Failed'),literalType('Pending'),literalType('Processed'),literalType('Processing'),literalType('Skipped')]).describe("\n * * Field Name: TaggingStatus\n * * Display Name: Tagging Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Complete\n * * Failed\n * * Pending\n * * Processed\n * * Processing\n * * Skipped\n * * Description: Tagging lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped."),DeleteStatus:unionType([literalType('Deleted'),literalType('Pending')]).nullable().describe("\n * * Field Name: DeleteStatus\n * * Display Name: Delete Status\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * Deleted\n * * Pending\n * * Description: Deletion lifecycle state of this chunk's vector: NULL when not slated for deletion, Pending when vector removal is queued, or Deleted once the vector has been removed from the vector database."),LastEmbeddedAt:dateType().nullable().describe("\n * * Field Name: LastEmbeddedAt\n * * Display Name: Last Embedded At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp of the last successful embedding of this chunk."),LastTaggedAt:dateType().nullable().describe("\n * * Field Name: LastTaggedAt\n * * Display Name: Last Tagged At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp of the last successful tagging of this chunk."),LastDeletedAt:dateType().nullable().describe("\n * * Field Name: LastDeletedAt\n * * Display Name: Last Deleted At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp of the last successful deletion of this chunk's vector from the vector database."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Modality:unionType([literalType('audio'),literalType('image'),literalType('multimodal'),literalType('text'),literalType('video')]).describe("\n * * Field Name: Modality\n * * Display Name: Modality\n * * SQL Data Type: nvarchar(20)\n * * Default Value: text\n * * Value List Type: List\n * * Possible Values \n * * audio\n * * image\n * * multimodal\n * * text\n * * video\n * * Description: The modality of this chunk's embedded payload: text (default), image, audio, video, or multimodal (text and media fused into a single vector). Determines which vector index the chunk's embedding belongs to, since a multimodal embedding model produces vectors of a different dimension than a text model, and is used at retrieval time to merge results per modality rather than taking a single global top-k."),StartOffset:numberType().nullable().describe("\n * * Field Name: StartOffset\n * * Display Name: Start Offset\n * * SQL Data Type: int\n * * Description: Inclusive character offset where this chunk begins within the parent Content Item's extracted text. Together with EndOffset this is the provenance link that resolves a search hit back to the exact passage in the source document. NULL for media segments, which are positioned by StartMs/EndMs instead."),EndOffset:numberType().nullable().describe("\n * * Field Name: EndOffset\n * * Display Name: End Offset\n * * SQL Data Type: int\n * * Description: Exclusive character offset where this chunk ends within the parent Content Item's extracted text. See StartOffset. NULL for media segments."),StartMs:numberType().nullable().describe("\n * * Field Name: StartMs\n * * Display Name: Start Milliseconds\n * * SQL Data Type: int\n * * Description: Start of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. Set by transcript- or window-based segmentation; enables time-windowed playback deep-links from a search result (for example 14:22-15:05 of a session recording). NULL for text segments."),EndMs:numberType().nullable().describe("\n * * Field Name: EndMs\n * * Display Name: End Milliseconds\n * * SQL Data Type: int\n * * Description: End of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. See StartMs. NULL for text segments."),PageNumber:numberType().nullable().describe("\n * * Field Name: PageNumber\n * * Display Name: Page Number\n * * SQL Data Type: int\n * * Description: One-based page number this chunk came from, for paginated sources such as PDFs or slide decks. Provides citation-grade provenance alongside the character offsets. NULL when the source is not paginated."),SegmentTitle:stringType().nullable().describe("\n * * Field Name: SegmentTitle\n * * Display Name: Segment Title\n * * SQL Data Type: nvarchar(500)\n * * Description: Human-readable label for this segment \u2014 a document heading for structure-based segmentation, or a generated chapter title for topic- and transcript-based segmentation. Displayed with search results and prepended to the embedded text so a chunk's vector carries its own topic."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: An AI-generated description of this chunk's content, primarily for non-text segments. Retrieval of a media chunk otherwise yields only a pointer (an asset and a time window) that an agent cannot reason over; this column is the readable representation that an agent reads, a cross-encoder reranks, and lexical search matches. A short summary of it may be mirrored into the vector record's metadata for display and filtering, but the full text belongs here."),Transcript:stringType().nullable().describe("\n * * Field Name: Transcript\n * * Display Name: Transcript\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The verbatim transcript covering this chunk's time window, for audio and video segments, including speaker labels where the source provides them. Distinct from Description, which is a generated summary: this is what was actually said, and it is what makes a recording findable by lexical search."),SegmenterKey:stringType().nullable().describe("\n * * Field Name: SegmenterKey\n * * Display Name: Segmenter Key\n * * SQL Data Type: nvarchar(100)\n * * Description: Registration key of the segmentation strategy that produced this chunk (for example StructuralText, SemanticText, Transcript, or FixedWindow). Provenance: when a Content Source's configured strategy changes, this identifies which chunks were produced by the previous strategy and therefore need re-chunking."),ParentChunkID:stringType().nullable().describe("\n * * Field Name: ParentChunkID\n * * Display Name: Parent Chunk\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Content Item Chunks (vwContentItemChunks.ID)\n * * Description: Optional self-reference to another chunk of the same Content Item that is the parent of this one, expressing a chapter to sub-chapter hierarchy \u2014 for example a five-minute chapter of a recording and the individual speaker turns within it, or a document section and its subsections. NULL for top-level segments."),ContentItem:stringType().nullable().describe("\n * * Field Name: ContentItem\n * * Display Name: Content Item Name\n * * SQL Data Type: nvarchar(250)"),ParentChunk:stringType().nullable().describe("\n * * Field Name: ParentChunk\n * * Display Name: Parent Chunk Name\n * * SQL Data Type: nvarchar(500)"),RootParentChunkID:stringType().nullable().describe("\n * * Field Name: RootParentChunkID\n * * Display Name: Root Parent Chunk\n * * SQL Data Type: uniqueidentifier")});/**
63578
63924
  * zod schema definition for the entity MJ: Content Item Duplicates
63579
63925
  */var MJContentItemDuplicateSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ContentItemAID:stringType().describe("\n * * Field Name: ContentItemAID\n * * Display Name: Content Item A ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)"),ContentItemBID:stringType().describe("\n * * Field Name: ContentItemBID\n * * Display Name: Content Item B ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)"),SimilarityScore:numberType().describe("\n * * Field Name: SimilarityScore\n * * Display Name: Similarity Score\n * * SQL Data Type: decimal(5, 4)\n * * Description: Cosine similarity (for Vector) or exact match score (1.0 for Checksum/URL). Range 0.0-1.0."),DetectionMethod:unionType([literalType('Checksum'),literalType('Title'),literalType('URL'),literalType('Vector')]).describe("\n * * Field Name: DetectionMethod\n * * Display Name: Detection Method\n * * SQL Data Type: nvarchar(30)\n * * Default Value: Checksum\n * * Value List Type: List\n * * Possible Values \n * * Checksum\n * * Title\n * * URL\n * * Vector\n * * Description: How the duplicate was detected: Checksum (identical text hash), Vector (embedding similarity), Title (same title text), URL (same source URL)."),Status:unionType([literalType('Confirmed'),literalType('Dismissed'),literalType('Merged'),literalType('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Confirmed\n * * Dismissed\n * * Merged\n * * Pending\n * * Description: Current status: Pending (awaiting review), Confirmed (verified duplicate), Dismissed (not a duplicate), Merged (one item was removed)."),ResolvedByUserID:stringType().nullable().describe("\n * * Field Name: ResolvedByUserID\n * * Display Name: Resolved By User ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),ResolvedAt:dateType().nullable().describe("\n * * Field Name: ResolvedAt\n * * Display Name: Resolved At\n * * SQL Data Type: datetimeoffset"),Resolution:unionType([literalType('KeepA'),literalType('KeepB'),literalType('MergeBoth'),literalType('NotDuplicate')]).nullable().describe("\n * * Field Name: Resolution\n * * Display Name: Resolution\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * KeepA\n * * KeepB\n * * MergeBoth\n * * NotDuplicate\n * * Description: How the duplicate was resolved: KeepA (keep first, remove second), KeepB (keep second, remove first), MergeBoth (combine into one), NotDuplicate (false positive)."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ContentItemA:stringType().nullable().describe("\n * * Field Name: ContentItemA\n * * Display Name: Content Item A\n * * SQL Data Type: nvarchar(250)"),ContentItemB:stringType().nullable().describe("\n * * Field Name: ContentItemB\n * * Display Name: Content Item B\n * * SQL Data Type: nvarchar(250)"),ResolvedByUser:stringType().nullable().describe("\n * * Field Name: ResolvedByUser\n * * Display Name: Resolved By User\n * * SQL Data Type: nvarchar(100)")});/**
63580
63926
  * zod schema definition for the entity MJ: Content Item Tags
@@ -63672,7 +64018,7 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
63672
64018
  * zod schema definition for the entity MJ: Encryption Keys
63673
64019
  */var MJEncryptionKeySchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()\n * * Description: Unique identifier for the encryption key configuration."),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(100)\n * * Description: Unique name for this key (e.g., PII Master Key, API Secrets Key)."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Description of this key purpose and scope."),EncryptionKeySourceID:stringType().describe("\n * * Field Name: EncryptionKeySourceID\n * * Display Name: Encryption Key Source ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Encryption Key Sources (vwEncryptionKeySources.ID)\n * * Description: References the key source that provides the key material."),EncryptionAlgorithmID:stringType().describe("\n * * Field Name: EncryptionAlgorithmID\n * * Display Name: Encryption Algorithm ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Encryption Algorithms (vwEncryptionAlgorithms.ID)\n * * Description: References the algorithm to use for encryption/decryption."),KeyLookupValue:stringType().describe("\n * * Field Name: KeyLookupValue\n * * Display Name: Key Lookup Value\n * * SQL Data Type: nvarchar(500)\n * * Description: Source-specific lookup value (e.g., environment variable name, vault path)."),KeyVersion:stringType().describe("\n * * Field Name: KeyVersion\n * * Display Name: Key Version\n * * SQL Data Type: nvarchar(20)\n * * Default Value: 1\n * * Description: Version string for key rotation tracking. Incremented during rotation."),Marker:stringType().describe("\n * * Field Name: Marker\n * * Display Name: Marker\n * * SQL Data Type: nvarchar(20)\n * * Default Value: $ENC$\n * * Description: Prefix marker for encrypted values (default: $ENC$)."),IsActive:booleanType().describe("\n * * Field Name: IsActive\n * * Display Name: Is Active\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether this key can be used for new encryption operations."),Status:unionType([literalType('Active'),literalType('Expired'),literalType('Inactive'),literalType('Rotating')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Expired\n * * Inactive\n * * Rotating\n * * Description: Current status: Active, Inactive, Rotating, or Expired."),ActivatedAt:dateType().nullable().describe("\n * * Field Name: ActivatedAt\n * * Display Name: Activated At\n * * SQL Data Type: datetimeoffset\n * * Description: When the current key version was activated."),ExpiresAt:dateType().nullable().describe("\n * * Field Name: ExpiresAt\n * * Display Name: Expires At\n * * SQL Data Type: datetimeoffset\n * * Description: Optional expiration date. Keys past this date cannot be used for new encryption."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),EncryptionKeySource:stringType().describe("\n * * Field Name: EncryptionKeySource\n * * Display Name: Encryption Key Source\n * * SQL Data Type: nvarchar(100)"),EncryptionAlgorithm:stringType().describe("\n * * Field Name: EncryptionAlgorithm\n * * Display Name: Encryption Algorithm\n * * SQL Data Type: nvarchar(50)")});/**
63674
64020
  * zod schema definition for the entity MJ: Entities
63675
- */var MJEntitySchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ParentID:stringType().nullable().describe("\n * * Field Name: ParentID\n * * Display Name: Parent\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(255)\n * * Description: The canonical, unique name for this entity. For entities in schemas with an EntityNamePrefix configured (e.g., \"MJ: \" for the core schema), the Name includes the prefix: \"MJ: AI Models\", \"MJ: Users\", etc. This is the value used in GetEntityObject(), RunView({ EntityName }), and @RegisterClass decorators. The DisplayName column provides the shorter, UI-friendly alternative without the prefix."),NameSuffix:stringType().nullable().describe("\n * * Field Name: NameSuffix\n * * Display Name: Name Suffix\n * * SQL Data Type: nvarchar(255)\n * * Description: Optional suffix appended to entity names for display purposes."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)"),AutoUpdateDescription:booleanType().describe("\n * * Field Name: AutoUpdateDescription\n * * Display Name: Auto-Update Description\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1 (default), whenever a description is modified in the underlying view (first choice) or table (second choice), the Description column in the entity definition will be automatically updated. If you never set metadata in the database directly, you can leave this alone. However, if you have metadata set in the database level for description, and you want to provide a DIFFERENT description in this entity definition, turn this bit off and then set the Description field and future CodeGen runs will NOT override the Description field here."),BaseTable:stringType().describe("\n * * Field Name: BaseTable\n * * Display Name: Base Table\n * * SQL Data Type: nvarchar(255)\n * * Description: The underlying database table name for this entity."),BaseView:stringType().describe("\n * * Field Name: BaseView\n * * Display Name: Base View\n * * SQL Data Type: nvarchar(255)\n * * Description: The \"wrapper\" database view used for querying this entity with joins and computed fields."),BaseViewGenerated:booleanType().describe("\n * * Field Name: BaseViewGenerated\n * * Display Name: Base View Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 0, CodeGen no longer generates a base view for the entity."),SchemaName:stringType().describe("\n * * Field Name: SchemaName\n * * Display Name: Schema Name\n * * SQL Data Type: nvarchar(255)\n * * Default Value: dbo\n * * Description: Database schema containing this entity's table and view."),VirtualEntity:booleanType().describe("\n * * Field Name: VirtualEntity\n * * Display Name: Is Virtual Entity\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Indicates if this is a virtual entity without a physical database table."),TrackRecordChanges:booleanType().describe("\n * * Field Name: TrackRecordChanges\n * * Display Name: Track Record Changes\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1, changes made via the MemberJunction architecture will result in tracking records being created in the RecordChange table. In addition, when turned on CodeGen will ensure that your table has two fields: __mj_CreatedAt and __mj_UpdatedAt which are special fields used in conjunction with the RecordChange table to track changes to rows in your entity."),AuditRecordAccess:booleanType().describe("\n * * Field Name: AuditRecordAccess\n * * Display Name: Audit Record Access\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1, accessing a record by an end-user will result in an Audit Log record being created"),AuditViewRuns:booleanType().describe("\n * * Field Name: AuditViewRuns\n * * Display Name: Audit View Runs\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1, users running a view against this entity will result in an Audit Log record being created."),IncludeInAPI:booleanType().describe("\n * * Field Name: IncludeInAPI\n * * Display Name: Include In API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If set to 0, the entity will not be available at all in the GraphQL API or the object model."),AllowAllRowsAPI:booleanType().describe("\n * * Field Name: AllowAllRowsAPI\n * * Display Name: Allow All Rows API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If set to 1, a GraphQL query will be enabled that allows access to all rows in the entity."),AllowUpdateAPI:booleanType().describe("\n * * Field Name: AllowUpdateAPI\n * * Display Name: Allow Update API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Global flag controlling if updates are allowed for any user, or not. If set to 1, a GraqhQL mutation and stored procedure are created. Permissions are still required to perform the action but if this flag is set to 0, no user will be able to perform the action."),AllowCreateAPI:booleanType().describe("\n * * Field Name: AllowCreateAPI\n * * Display Name: Allow Create API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Global flag controlling if creates are allowed for any user, or not. If set to 1, a GraqhQL mutation and stored procedure are created. Permissions are still required to perform the action but if this flag is set to 0, no user will be able to perform the action."),AllowDeleteAPI:booleanType().describe("\n * * Field Name: AllowDeleteAPI\n * * Display Name: Allow Delete API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Global flag controlling if deletes are allowed for any user, or not. If set to 1, a GraqhQL mutation and stored procedure are created. Permissions are still required to perform the action but if this flag is set to 0, no user will be able to perform the action."),CustomResolverAPI:booleanType().describe("\n * * Field Name: CustomResolverAPI\n * * Display Name: Custom Resolver API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Set to 1 if a custom resolver has been created for the entity."),AllowUserSearchAPI:booleanType().describe("\n * * Field Name: AllowUserSearchAPI\n * * Display Name: Allow User Search API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Enabling this bit will result in search being possible at the API and UI layers"),FullTextSearchEnabled:booleanType().describe("\n * * Field Name: FullTextSearchEnabled\n * * Display Name: Full-Text Search Enabled\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether full-text search indexing is enabled for this entity."),FullTextCatalog:stringType().nullable().describe("\n * * Field Name: FullTextCatalog\n * * Display Name: Full-Text Catalog\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the SQL Server full-text catalog if search is enabled."),FullTextCatalogGenerated:booleanType().describe("\n * * Field Name: FullTextCatalogGenerated\n * * Display Name: Full-Text Catalog Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the full-text catalog was auto-generated by CodeGen."),FullTextIndex:stringType().nullable().describe("\n * * Field Name: FullTextIndex\n * * Display Name: Full-Text Index\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the full-text index on this entity's table."),FullTextIndexGenerated:booleanType().describe("\n * * Field Name: FullTextIndexGenerated\n * * Display Name: Full-Text Index Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the full-text index was auto-generated by CodeGen."),FullTextSearchFunction:stringType().nullable().describe("\n * * Field Name: FullTextSearchFunction\n * * Display Name: Full-Text Search Function\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the function used for full-text searching this entity."),FullTextSearchFunctionGenerated:booleanType().describe("\n * * Field Name: FullTextSearchFunctionGenerated\n * * Display Name: Full-Text Search Function Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the search function was auto-generated by CodeGen."),UserViewMaxRows:numberType().nullable().describe("\n * * Field Name: UserViewMaxRows\n * * Display Name: User View Max Rows\n * * SQL Data Type: int\n * * Default Value: 1000\n * * Description: Maximum number of rows to return in user-created views for this entity."),spCreate:stringType().nullable().describe("\n * * Field Name: spCreate\n * * Display Name: Create Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the stored procedure for creating records in this entity."),spUpdate:stringType().nullable().describe("\n * * Field Name: spUpdate\n * * Display Name: Update Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the stored procedure for updating records in this entity."),spDelete:stringType().nullable().describe("\n * * Field Name: spDelete\n * * Display Name: Delete Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the stored procedure for deleting records in this entity."),spCreateGenerated:booleanType().describe("\n * * Field Name: spCreateGenerated\n * * Display Name: Create Procedure Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the create procedure was auto-generated by CodeGen."),spUpdateGenerated:booleanType().describe("\n * * Field Name: spUpdateGenerated\n * * Display Name: Update Procedure Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the update procedure was auto-generated by CodeGen."),spDeleteGenerated:booleanType().describe("\n * * Field Name: spDeleteGenerated\n * * Display Name: Delete Procedure Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the delete procedure was auto-generated by CodeGen."),CascadeDeletes:booleanType().describe("\n * * Field Name: CascadeDeletes\n * * Display Name: Cascade Deletes\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When set to 1, the deleted spDelete will pre-process deletion to related entities that have 1:M cardinality with this entity. This does not have effect if spDeleteGenerated = 0"),DeleteType:unionType([literalType('Hard'),literalType('Soft')]).describe("\n * * Field Name: DeleteType\n * * Display Name: Delete Type\n * * SQL Data Type: nvarchar(10)\n * * Default Value: Hard\n * * Value List Type: List\n * * Possible Values \n * * Hard\n * * Soft\n * * Description: Hard deletes physically remove rows from the underlying BaseTable. Soft deletes do not remove rows but instead mark the row as deleted by using the special field __mj_DeletedAt which will automatically be added to the entity's basetable by the CodeGen tool."),AllowRecordMerge:booleanType().describe("\n * * Field Name: AllowRecordMerge\n * * Display Name: Allow Record Merge\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: This field must be turned on in order to enable merging of records for the entity. For AllowRecordMerge to be turned on, AllowDeleteAPI must be set to 1, and DeleteType must be set to Soft"),spMatch:stringType().nullable().describe("\n * * Field Name: spMatch\n * * Display Name: Match Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: When specified, this stored procedure is used to find matching records in this particular entity. The convention is to pass in the primary key(s) columns for the given entity to the procedure and the return will be zero to many rows where there is a column for each primary key field(s) and a ProbabilityScore (numeric(1,12)) column that has a 0 to 1 value of the probability of a match."),RelationshipDefaultDisplayType:unionType([literalType('Dropdown'),literalType('Search')]).describe("\n * * Field Name: RelationshipDefaultDisplayType\n * * Display Name: Default Display Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Search\n * * Value List Type: List\n * * Possible Values \n * * Dropdown\n * * Search\n * * Description: When another entity links to this entity with a foreign key, this is the default component type that will be used in the UI. CodeGen will populate the RelatedEntityDisplayType column in the Entity Fields entity with whatever is provided here whenever a new foreign key is detected by CodeGen. The selection can be overridden on a per-foreign-key basis in each row of the Entity Fields entity."),UserFormGenerated:booleanType().describe("\n * * Field Name: UserFormGenerated\n * * Display Name: User Form Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the default user form was auto-generated for this entity."),EntityObjectSubclassName:stringType().nullable().describe("\n * * Field Name: EntityObjectSubclassName\n * * Display Name: Subclass Name\n * * SQL Data Type: nvarchar(255)\n * * Description: TypeScript class name for the entity subclass in the codebase."),EntityObjectSubclassImport:stringType().nullable().describe("\n * * Field Name: EntityObjectSubclassImport\n * * Display Name: Subclass Import\n * * SQL Data Type: nvarchar(255)\n * * Description: Import path for the entity subclass in the TypeScript codebase."),PreferredCommunicationField:stringType().nullable().describe("\n * * Field Name: PreferredCommunicationField\n * * Display Name: Preferred Communication Field\n * * SQL Data Type: nvarchar(255)\n * * Description: Used to specify a field within the entity that in turn contains the field name that will be used for record-level communication preferences. For example in a hypothetical entity called Contacts, say there is a field called PreferredComm and that field had possible values of Email1, SMS, and Phone, and those value in turn corresponded to field names in the entity. Each record in the Contacts entity could have a specific preference for which field would be used for communication. The MJ Communication Framework will use this information when available, as a priority ahead of the data in the Entity Communication Fields entity which is entity-level and not record-level."),Icon:stringType().nullable().describe("\n * * Field Name: Icon\n * * Display Name: Icon\n * * SQL Data Type: nvarchar(500)\n * * Description: Optional, specify an icon (CSS Class) for each entity for display in the UI"),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ScopeDefault:stringType().nullable().describe("\n * * Field Name: ScopeDefault\n * * Display Name: Default Scope\n * * SQL Data Type: nvarchar(100)\n * * Description: Optional, comma-delimited string indicating the default scope for entity visibility. Options include Users, Admins, AI, and All. Defaults to All when NULL. This is used for simple defaults for filtering entity visibility, not security enforcement."),RowsToPackWithSchema:unionType([literalType('All'),literalType('None'),literalType('Sample')]).describe("\n * * Field Name: RowsToPackWithSchema\n * * Display Name: Rows To Pack With Schema\n * * SQL Data Type: nvarchar(20)\n * * Default Value: None\n * * Value List Type: List\n * * Possible Values \n * * All\n * * None\n * * Sample\n * * Description: Determines how entity rows should be packaged for external use. Options include None, Sample, and All. Defaults to None."),RowsToPackSampleMethod:unionType([literalType('bottom n'),literalType('random'),literalType('top n')]).describe("\n * * Field Name: RowsToPackSampleMethod\n * * Display Name: Rows To Pack Sample Method\n * * SQL Data Type: nvarchar(20)\n * * Default Value: random\n * * Value List Type: List\n * * Possible Values \n * * bottom n\n * * random\n * * top n\n * * Description: Defines the sampling method for row packing when RowsToPackWithSchema is set to Sample. Options include random, top n, and bottom n. Defaults to random."),RowsToPackSampleCount:numberType().describe("\n * * Field Name: RowsToPackSampleCount\n * * Display Name: Rows To Pack Sample Count\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: The number of rows to pack when RowsToPackWithSchema is set to Sample, based on the designated sampling method. Defaults to 0."),RowsToPackSampleOrder:stringType().nullable().describe("\n * * Field Name: RowsToPackSampleOrder\n * * Display Name: Rows To Pack Sample Order\n * * SQL Data Type: nvarchar(MAX)\n * * Description: An optional ORDER BY clause for row packing when RowsToPackWithSchema is set to Sample. Allows custom ordering for selected entity data when using top n and bottom n."),AutoRowCountFrequency:numberType().nullable().describe("\n * * Field Name: AutoRowCountFrequency\n * * Display Name: Auto Row Count Frequency\n * * SQL Data Type: int\n * * Description: Frequency in hours for automatically performing row counts on this entity. If NULL, automatic row counting is disabled. If greater than 0, schedules recurring SELECT COUNT(*) queries at the specified interval."),RowCount:numberType().nullable().describe("\n * * Field Name: RowCount\n * * Display Name: Row Count\n * * SQL Data Type: bigint\n * * Description: Cached row count for this entity, populated by automatic row count processes when AutoRowCountFrequency is configured."),RowCountRunAt:dateType().nullable().describe("\n * * Field Name: RowCountRunAt\n * * Display Name: Row Count Run At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp indicating when the last automatic row count was performed for this entity."),Status:unionType([literalType('Active'),literalType('Deprecated'),literalType('Disabled')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(25)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Deprecated\n * * Disabled\n * * Description: Status of the entity. Active: fully functional; Deprecated: functional but generates console warnings when used; Disabled: not available for use even though metadata and physical table remain."),DisplayName:stringType().nullable().describe("\n * * Field Name: DisplayName\n * * Display Name: Display Name\n * * SQL Data Type: nvarchar(255)\n * * Description: User-friendly display name shown in the Explorer UI and other interfaces. When set, this is used instead of the entity Name for display purposes. Typically contains the entity name without the schema prefix \u2014 e.g., \"AI Models\" when Name is \"MJ: AI Models\". If NULL, the UI falls back to using the full Name."),AllowMultipleSubtypes:booleanType().describe("\n * * Field Name: AllowMultipleSubtypes\n * * Display Name: Allow Multiple Subtypes\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When false (default), child types are disjoint - a record can only be one child type at a time. When true, a record can simultaneously exist as multiple child types (e.g., a Person can be both a Member and a Volunteer)."),AutoUpdateFullTextSearch:booleanType().describe("\n * * Field Name: AutoUpdateFullTextSearch\n * * Display Name: Auto-Update Full-Text Search\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true, CodeGen LLM can auto-configure full-text search settings (FullTextSearchEnabled, catalog, index, function) during code generation runs."),AutoUpdateAllowUserSearchAPI:booleanType().describe("\n * * Field Name: AutoUpdateAllowUserSearchAPI\n * * Display Name: Auto-Update Search API\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true, CodeGen LLM can auto-set AllowUserSearchAPI during code generation runs."),TrustServerCacheCompletely:booleanType().describe("\n * * Field Name: TrustServerCacheCompletely\n * * Display Name: Trust Server Cache Completely\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true (default), the server-side RunView cache will store and return cached results for this entity, trusting that all mutations flow through BaseEntity.Save() which fires cache invalidation events. Set to false for entities whose rows are created as side-effects of other operations via raw SQL (e.g., Record Changes created by spCreateRecordChange_Internal), since those inserts bypass BaseEntity and never trigger cache invalidation."),SupportsGeoCoding:booleanType().describe("\n * * Field Name: SupportsGeoCoding\n * * Display Name: Supports Geo-Coding\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When true, CodeGen generates geo-aware subclass code, adds __mj_Latitude/__mj_Longitude virtual fields to the base view, and the UI shows a map view toggle. Auto-set by CodeGen when LLM detects geo-capable fields (address, lat/lng, etc.)."),AutoUpdateSupportsGeoCoding:booleanType().describe("\n * * Field Name: AutoUpdateSupportsGeoCoding\n * * Display Name: Auto-Update Geo-Coding\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true (default), CodeGen can automatically set SupportsGeoCoding based on LLM analysis of entity fields. Set to 0 to lock the value and prevent CodeGen from changing it."),AllowCaching:booleanType().describe("\n * * Field Name: AllowCaching\n * * Display Name: Allow Caching\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Controls whether this entity participates in server-side and client-side caching. When false, all cache operations (PreRunView checks, auto-cache storage, BaseEntity event fingerprint scans, client-side IndexedDB cache) are skipped entirely. This column is the single source of truth at runtime; schema-level defaults are applied at CodeGen time via newEntityDefaults.AllowCachingBySchema."),DetectExternalChanges:booleanType().describe("\n * * Field Name: DetectExternalChanges\n * * Display Name: Detect External Changes\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When set to 1 AND TrackRecordChanges is also 1, the external change detection system will scan this entity for changes made outside the MJ framework (direct SQL, third-party tools, etc.) and replay them through Save() to create proper RecordChange audit entries. Default is 0 (opt-out) because most entities, especially __mj schema metadata tables, are managed by migrations/CodeGen and should not be scanned."),ExternalDataSourceID:stringType().nullable().describe("\n * * Field Name: ExternalDataSourceID\n * * Display Name: External Data Source ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: External Data Sources (vwExternalDataSources.ID)"),ExternalObjectName:stringType().nullable().describe("\n * * Field Name: ExternalObjectName\n * * Display Name: External Object Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Remote object name (table / view / collection) on the external system that backs this entity. Resolved against the data source DefaultSchema/DefaultDatabase when unqualified. Only meaningful when ExternalDataSourceID is set."),CodeName:stringType().nullable().describe("\n * * Field Name: CodeName\n * * Display Name: Code Name\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Schema-based programmatic code name derived from the entity Name. Uses GetClassNameSchemaPrefix(SchemaName) as the prefix, then strips EntityNamePrefix from the Name and removes spaces. For \"__mj\" schema with entity \"MJ: AI Models\", this produces \"MJAIModels\". For entities in other schemas, the sanitized schema name is prepended. Used in GraphQL type generation and internal code references."),ClassName:stringType().nullable().describe("\n * * Field Name: ClassName\n * * Display Name: Class Name\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Schema-based programmatic class name used for TypeScript entity classes, Zod schemas, and Angular form components. Computed as GetProgrammaticName(GetClassNameSchemaPrefix(SchemaName) + BaseTable + NameSuffix). The prefix is derived from SchemaName (guaranteed unique by SQL Server), not from EntityNamePrefix. For the core __mj schema, the prefix is \"MJ\"; for all other schemas it is the alphanumeric-sanitized schema name. This prevents cross-schema collisions and aligns with GraphQL type naming in getGraphQLTypeNameBase()."),BaseTableCodeName:stringType().nullable().describe("\n * * Field Name: BaseTableCodeName\n * * Display Name: Base Table Code Name\n * * SQL Data Type: nvarchar(MAX)"),ParentEntity:stringType().nullable().describe("\n * * Field Name: ParentEntity\n * * Display Name: Parent Entity\n * * SQL Data Type: nvarchar(255)"),ParentBaseTable:stringType().nullable().describe("\n * * Field Name: ParentBaseTable\n * * Display Name: Parent Base Table\n * * SQL Data Type: nvarchar(255)"),ParentBaseView:stringType().nullable().describe("\n * * Field Name: ParentBaseView\n * * Display Name: Parent Base View\n * * SQL Data Type: nvarchar(255)"),CanonicalSchemaName:stringType().nullable().describe("\n * * Field Name: CanonicalSchemaName\n * * Display Name: Canonical Schema Name\n * * SQL Data Type: nvarchar(50)")});/**
64021
+ */var MJEntitySchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),ParentID:stringType().nullable().describe("\n * * Field Name: ParentID\n * * Display Name: Parent\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(255)\n * * Description: The canonical, unique name for this entity. For entities in schemas with an EntityNamePrefix configured (e.g., \"MJ: \" for the core schema), the Name includes the prefix: \"MJ: AI Models\", \"MJ: Users\", etc. This is the value used in GetEntityObject(), RunView({ EntityName }), and @RegisterClass decorators. The DisplayName column provides the shorter, UI-friendly alternative without the prefix."),NameSuffix:stringType().nullable().describe("\n * * Field Name: NameSuffix\n * * Display Name: Name Suffix\n * * SQL Data Type: nvarchar(255)\n * * Description: Optional suffix appended to entity names for display purposes."),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)"),AutoUpdateDescription:booleanType().describe("\n * * Field Name: AutoUpdateDescription\n * * Display Name: Auto-Update Description\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1 (default), whenever a description is modified in the underlying view (first choice) or table (second choice), the Description column in the entity definition will be automatically updated. If you never set metadata in the database directly, you can leave this alone. However, if you have metadata set in the database level for description, and you want to provide a DIFFERENT description in this entity definition, turn this bit off and then set the Description field and future CodeGen runs will NOT override the Description field here."),BaseTable:stringType().describe("\n * * Field Name: BaseTable\n * * Display Name: Base Table\n * * SQL Data Type: nvarchar(255)\n * * Description: The underlying database table name for this entity."),BaseView:stringType().describe("\n * * Field Name: BaseView\n * * Display Name: Base View\n * * SQL Data Type: nvarchar(255)\n * * Description: The \"wrapper\" database view used for querying this entity with joins and computed fields."),BaseViewGenerated:booleanType().describe("\n * * Field Name: BaseViewGenerated\n * * Display Name: Base View Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 0, CodeGen no longer generates a base view for the entity."),SchemaName:stringType().describe("\n * * Field Name: SchemaName\n * * Display Name: Schema Name\n * * SQL Data Type: nvarchar(255)\n * * Default Value: dbo\n * * Description: Database schema containing this entity's table and view."),VirtualEntity:booleanType().describe("\n * * Field Name: VirtualEntity\n * * Display Name: Is Virtual Entity\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Indicates if this is a virtual entity without a physical database table."),TrackRecordChanges:booleanType().describe("\n * * Field Name: TrackRecordChanges\n * * Display Name: Track Record Changes\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1, changes made via the MemberJunction architecture will result in tracking records being created in the RecordChange table. In addition, when turned on CodeGen will ensure that your table has two fields: __mj_CreatedAt and __mj_UpdatedAt which are special fields used in conjunction with the RecordChange table to track changes to rows in your entity."),AuditRecordAccess:booleanType().describe("\n * * Field Name: AuditRecordAccess\n * * Display Name: Audit Record Access\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1, accessing a record by an end-user will result in an Audit Log record being created"),AuditViewRuns:booleanType().describe("\n * * Field Name: AuditViewRuns\n * * Display Name: Audit View Runs\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When set to 1, users running a view against this entity will result in an Audit Log record being created."),IncludeInAPI:booleanType().describe("\n * * Field Name: IncludeInAPI\n * * Display Name: Include In API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If set to 0, the entity will not be available at all in the GraphQL API or the object model."),AllowAllRowsAPI:booleanType().describe("\n * * Field Name: AllowAllRowsAPI\n * * Display Name: Allow All Rows API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: If set to 1, a GraphQL query will be enabled that allows access to all rows in the entity."),AllowUpdateAPI:booleanType().describe("\n * * Field Name: AllowUpdateAPI\n * * Display Name: Allow Update API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Global flag controlling if updates are allowed for any user, or not. If set to 1, a GraqhQL mutation and stored procedure are created. Permissions are still required to perform the action but if this flag is set to 0, no user will be able to perform the action."),AllowCreateAPI:booleanType().describe("\n * * Field Name: AllowCreateAPI\n * * Display Name: Allow Create API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Global flag controlling if creates are allowed for any user, or not. If set to 1, a GraqhQL mutation and stored procedure are created. Permissions are still required to perform the action but if this flag is set to 0, no user will be able to perform the action."),AllowDeleteAPI:booleanType().describe("\n * * Field Name: AllowDeleteAPI\n * * Display Name: Allow Delete API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Global flag controlling if deletes are allowed for any user, or not. If set to 1, a GraqhQL mutation and stored procedure are created. Permissions are still required to perform the action but if this flag is set to 0, no user will be able to perform the action."),CustomResolverAPI:booleanType().describe("\n * * Field Name: CustomResolverAPI\n * * Display Name: Custom Resolver API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Set to 1 if a custom resolver has been created for the entity."),AllowUserSearchAPI:booleanType().describe("\n * * Field Name: AllowUserSearchAPI\n * * Display Name: Allow User Search API\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Enabling this bit will result in search being possible at the API and UI layers"),FullTextSearchEnabled:booleanType().describe("\n * * Field Name: FullTextSearchEnabled\n * * Display Name: Full-Text Search Enabled\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether full-text search indexing is enabled for this entity."),FullTextCatalog:stringType().nullable().describe("\n * * Field Name: FullTextCatalog\n * * Display Name: Full-Text Catalog\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the SQL Server full-text catalog if search is enabled."),FullTextCatalogGenerated:booleanType().describe("\n * * Field Name: FullTextCatalogGenerated\n * * Display Name: Full-Text Catalog Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the full-text catalog was auto-generated by CodeGen."),FullTextIndex:stringType().nullable().describe("\n * * Field Name: FullTextIndex\n * * Display Name: Full-Text Index\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the full-text index on this entity's table."),FullTextIndexGenerated:booleanType().describe("\n * * Field Name: FullTextIndexGenerated\n * * Display Name: Full-Text Index Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the full-text index was auto-generated by CodeGen."),FullTextSearchFunction:stringType().nullable().describe("\n * * Field Name: FullTextSearchFunction\n * * Display Name: Full-Text Search Function\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the function used for full-text searching this entity."),FullTextSearchFunctionGenerated:booleanType().describe("\n * * Field Name: FullTextSearchFunctionGenerated\n * * Display Name: Full-Text Search Function Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the search function was auto-generated by CodeGen."),UserViewMaxRows:numberType().nullable().describe("\n * * Field Name: UserViewMaxRows\n * * Display Name: User View Max Rows\n * * SQL Data Type: int\n * * Default Value: 1000\n * * Description: Maximum number of rows to return in user-created views for this entity."),spCreate:stringType().nullable().describe("\n * * Field Name: spCreate\n * * Display Name: Create Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the stored procedure for creating records in this entity."),spUpdate:stringType().nullable().describe("\n * * Field Name: spUpdate\n * * Display Name: Update Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the stored procedure for updating records in this entity."),spDelete:stringType().nullable().describe("\n * * Field Name: spDelete\n * * Display Name: Delete Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: Name of the stored procedure for deleting records in this entity."),spCreateGenerated:booleanType().describe("\n * * Field Name: spCreateGenerated\n * * Display Name: Create Procedure Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the create procedure was auto-generated by CodeGen."),spUpdateGenerated:booleanType().describe("\n * * Field Name: spUpdateGenerated\n * * Display Name: Update Procedure Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the update procedure was auto-generated by CodeGen."),spDeleteGenerated:booleanType().describe("\n * * Field Name: spDeleteGenerated\n * * Display Name: Delete Procedure Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the delete procedure was auto-generated by CodeGen."),CascadeDeletes:booleanType().describe("\n * * Field Name: CascadeDeletes\n * * Display Name: Cascade Deletes\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When set to 1, the deleted spDelete will pre-process deletion to related entities that have 1:M cardinality with this entity. This does not have effect if spDeleteGenerated = 0"),DeleteType:unionType([literalType('Hard'),literalType('Soft')]).describe("\n * * Field Name: DeleteType\n * * Display Name: Delete Type\n * * SQL Data Type: nvarchar(10)\n * * Default Value: Hard\n * * Value List Type: List\n * * Possible Values \n * * Hard\n * * Soft\n * * Description: Hard deletes physically remove rows from the underlying BaseTable. Soft deletes do not remove rows but instead mark the row as deleted by using the special field __mj_DeletedAt which will automatically be added to the entity's basetable by the CodeGen tool."),AllowRecordMerge:booleanType().describe("\n * * Field Name: AllowRecordMerge\n * * Display Name: Allow Record Merge\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: This field must be turned on in order to enable merging of records for the entity. For AllowRecordMerge to be turned on, AllowDeleteAPI must be set to 1, and DeleteType must be set to Soft"),spMatch:stringType().nullable().describe("\n * * Field Name: spMatch\n * * Display Name: Match Procedure\n * * SQL Data Type: nvarchar(255)\n * * Description: When specified, this stored procedure is used to find matching records in this particular entity. The convention is to pass in the primary key(s) columns for the given entity to the procedure and the return will be zero to many rows where there is a column for each primary key field(s) and a ProbabilityScore (numeric(1,12)) column that has a 0 to 1 value of the probability of a match."),RelationshipDefaultDisplayType:unionType([literalType('Dropdown'),literalType('Search')]).describe("\n * * Field Name: RelationshipDefaultDisplayType\n * * Display Name: Default Display Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Search\n * * Value List Type: List\n * * Possible Values \n * * Dropdown\n * * Search\n * * Description: When another entity links to this entity with a foreign key, this is the default component type that will be used in the UI. CodeGen will populate the RelatedEntityDisplayType column in the Entity Fields entity with whatever is provided here whenever a new foreign key is detected by CodeGen. The selection can be overridden on a per-foreign-key basis in each row of the Entity Fields entity."),UserFormGenerated:booleanType().describe("\n * * Field Name: UserFormGenerated\n * * Display Name: User Form Generated\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Indicates if the default user form was auto-generated for this entity."),EntityObjectSubclassName:stringType().nullable().describe("\n * * Field Name: EntityObjectSubclassName\n * * Display Name: Subclass Name\n * * SQL Data Type: nvarchar(255)\n * * Description: TypeScript class name for the entity subclass in the codebase."),EntityObjectSubclassImport:stringType().nullable().describe("\n * * Field Name: EntityObjectSubclassImport\n * * Display Name: Subclass Import\n * * SQL Data Type: nvarchar(255)\n * * Description: Import path for the entity subclass in the TypeScript codebase."),PreferredCommunicationField:stringType().nullable().describe("\n * * Field Name: PreferredCommunicationField\n * * Display Name: Preferred Communication Field\n * * SQL Data Type: nvarchar(255)\n * * Description: Used to specify a field within the entity that in turn contains the field name that will be used for record-level communication preferences. For example in a hypothetical entity called Contacts, say there is a field called PreferredComm and that field had possible values of Email1, SMS, and Phone, and those value in turn corresponded to field names in the entity. Each record in the Contacts entity could have a specific preference for which field would be used for communication. The MJ Communication Framework will use this information when available, as a priority ahead of the data in the Entity Communication Fields entity which is entity-level and not record-level."),Icon:stringType().nullable().describe("\n * * Field Name: Icon\n * * Display Name: Icon\n * * SQL Data Type: nvarchar(500)\n * * Description: Optional, specify an icon (CSS Class) for each entity for display in the UI"),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ScopeDefault:stringType().nullable().describe("\n * * Field Name: ScopeDefault\n * * Display Name: Default Scope\n * * SQL Data Type: nvarchar(100)\n * * Description: Optional, comma-delimited string indicating the default scope for entity visibility. Options include Users, Admins, AI, and All. Defaults to All when NULL. This is used for simple defaults for filtering entity visibility, not security enforcement."),RowsToPackWithSchema:unionType([literalType('All'),literalType('None'),literalType('Sample')]).describe("\n * * Field Name: RowsToPackWithSchema\n * * Display Name: Rows To Pack With Schema\n * * SQL Data Type: nvarchar(20)\n * * Default Value: None\n * * Value List Type: List\n * * Possible Values \n * * All\n * * None\n * * Sample\n * * Description: Determines how entity rows should be packaged for external use. Options include None, Sample, and All. Defaults to None."),RowsToPackSampleMethod:unionType([literalType('bottom n'),literalType('random'),literalType('top n')]).describe("\n * * Field Name: RowsToPackSampleMethod\n * * Display Name: Rows To Pack Sample Method\n * * SQL Data Type: nvarchar(20)\n * * Default Value: random\n * * Value List Type: List\n * * Possible Values \n * * bottom n\n * * random\n * * top n\n * * Description: Defines the sampling method for row packing when RowsToPackWithSchema is set to Sample. Options include random, top n, and bottom n. Defaults to random."),RowsToPackSampleCount:numberType().describe("\n * * Field Name: RowsToPackSampleCount\n * * Display Name: Rows To Pack Sample Count\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: The number of rows to pack when RowsToPackWithSchema is set to Sample, based on the designated sampling method. Defaults to 0."),RowsToPackSampleOrder:stringType().nullable().describe("\n * * Field Name: RowsToPackSampleOrder\n * * Display Name: Rows To Pack Sample Order\n * * SQL Data Type: nvarchar(MAX)\n * * Description: An optional ORDER BY clause for row packing when RowsToPackWithSchema is set to Sample. Allows custom ordering for selected entity data when using top n and bottom n."),AutoRowCountFrequency:numberType().nullable().describe("\n * * Field Name: AutoRowCountFrequency\n * * Display Name: Auto Row Count Frequency\n * * SQL Data Type: int\n * * Description: Frequency in hours for automatically performing row counts on this entity. If NULL, automatic row counting is disabled. If greater than 0, schedules recurring SELECT COUNT(*) queries at the specified interval."),RowCount:numberType().nullable().describe("\n * * Field Name: RowCount\n * * Display Name: Row Count\n * * SQL Data Type: bigint\n * * Description: Cached row count for this entity, populated by automatic row count processes when AutoRowCountFrequency is configured."),RowCountRunAt:dateType().nullable().describe("\n * * Field Name: RowCountRunAt\n * * Display Name: Row Count Run At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp indicating when the last automatic row count was performed for this entity."),Status:unionType([literalType('Active'),literalType('Deprecated'),literalType('Disabled')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(25)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Deprecated\n * * Disabled\n * * Description: Status of the entity. Active: fully functional; Deprecated: functional but generates console warnings when used; Disabled: not available for use even though metadata and physical table remain."),DisplayName:stringType().nullable().describe("\n * * Field Name: DisplayName\n * * Display Name: Display Name\n * * SQL Data Type: nvarchar(255)\n * * Description: User-friendly display name shown in the Explorer UI and other interfaces. When set, this is used instead of the entity Name for display purposes. Typically contains the entity name without the schema prefix \u2014 e.g., \"AI Models\" when Name is \"MJ: AI Models\". If NULL, the UI falls back to using the full Name."),AllowMultipleSubtypes:booleanType().describe("\n * * Field Name: AllowMultipleSubtypes\n * * Display Name: Allow Multiple Subtypes\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When false (default), child types are disjoint - a record can only be one child type at a time. When true, a record can simultaneously exist as multiple child types (e.g., a Person can be both a Member and a Volunteer)."),AutoUpdateFullTextSearch:booleanType().describe("\n * * Field Name: AutoUpdateFullTextSearch\n * * Display Name: Auto-Update Full-Text Search\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true, CodeGen LLM can auto-configure full-text search settings (FullTextSearchEnabled, catalog, index, function) during code generation runs."),AutoUpdateAllowUserSearchAPI:booleanType().describe("\n * * Field Name: AutoUpdateAllowUserSearchAPI\n * * Display Name: Auto-Update Search API\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true, CodeGen LLM can auto-set AllowUserSearchAPI during code generation runs."),TrustServerCacheCompletely:booleanType().describe("\n * * Field Name: TrustServerCacheCompletely\n * * Display Name: Trust Server Cache Completely\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true (default), the server-side RunView cache will store and return cached results for this entity, trusting that all mutations flow through BaseEntity.Save() which fires cache invalidation events. Set to false for entities whose rows are created as side-effects of other operations via raw SQL (e.g., Record Changes created by spCreateRecordChange_Internal), since those inserts bypass BaseEntity and never trigger cache invalidation."),SupportsGeoCoding:booleanType().describe("\n * * Field Name: SupportsGeoCoding\n * * Display Name: Supports Geo-Coding\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When true, CodeGen generates geo-aware subclass code, adds __mj_Latitude/__mj_Longitude virtual fields to the base view, and the UI shows a map view toggle. Auto-set by CodeGen when LLM detects geo-capable fields (address, lat/lng, etc.)."),AutoUpdateSupportsGeoCoding:booleanType().describe("\n * * Field Name: AutoUpdateSupportsGeoCoding\n * * Display Name: Auto-Update Geo-Coding\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: When true (default), CodeGen can automatically set SupportsGeoCoding based on LLM analysis of entity fields. Set to 0 to lock the value and prevent CodeGen from changing it."),AllowCaching:booleanType().describe("\n * * Field Name: AllowCaching\n * * Display Name: Allow Caching\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Controls whether this entity participates in server-side and client-side caching. When false, all cache operations (PreRunView checks, auto-cache storage, BaseEntity event fingerprint scans, client-side IndexedDB cache) are skipped entirely. This column is the single source of truth at runtime; schema-level defaults are applied at CodeGen time via newEntityDefaults.AllowCachingBySchema."),DetectExternalChanges:booleanType().describe("\n * * Field Name: DetectExternalChanges\n * * Display Name: Detect External Changes\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When set to 1 AND TrackRecordChanges is also 1, the external change detection system will scan this entity for changes made outside the MJ framework (direct SQL, third-party tools, etc.) and replay them through Save() to create proper RecordChange audit entries. Default is 0 (opt-out) because most entities, especially __mj schema metadata tables, are managed by migrations/CodeGen and should not be scanned."),ExternalDataSourceID:stringType().nullable().describe("\n * * Field Name: ExternalDataSourceID\n * * Display Name: External Data Source\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: External Data Sources (vwExternalDataSources.ID)"),ExternalObjectName:stringType().nullable().describe("\n * * Field Name: ExternalObjectName\n * * Display Name: External Object Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Remote object name (table / view / collection) on the external system that backs this entity. Resolved against the data source DefaultSchema/DefaultDatabase when unqualified. Only meaningful when ExternalDataSourceID is set."),GeneratedBaseViewName:stringType().nullable().describe("\n * * Field Name: GeneratedBaseViewName\n * * Display Name: Generated Base View Name\n * * SQL Data Type: nvarchar(255)\n * * Description: When set, CodeGen generates the entity's full base view under THIS name instead of BaseView, and the application owns BaseView \u2014 which is expected to wrap it (SELECT g.*, <extras> FROM <GeneratedBaseViewName> g). This gives an entity a custom base view WITHOUT inheriting the generated SQL: related-entity display joins, geo columns and recursive root-ID columns keep regenerating underneath, so a foreign key added later still appears. NULL (the default, and every pre-existing row) means the previous all-or-nothing behaviour: BaseViewGenerated alone decides whether CodeGen writes BaseView, and there is no second view. BaseView remains the public surface \u2014 entity field discovery, permissions and the generated CRUD procedures all target it. SQL SERVER ONLY: layering relies on sp_refreshview to re-resolve the application-owned outer view's SELECT * against a regenerated inner view. PostgreSQL freezes a view's column list at creation and has no refresh equivalent, so CodeGen rejects this column on PostgreSQL rather than let the outer view go silently stale."),AllowDirectSQLInsert:booleanType().describe("\n * * Field Name: AllowDirectSQLInsert\n * * Display Name: Allow Direct SQL Insert\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When 1, this entity may be populated by INSERT statements that do not go through BaseEntity.Save() \u2014 bulk loads, ETL/integration sync, or rows created as a side effect of a stored procedure. Default 0, meaning every insert is expected to flow through BaseEntity so that record-change tracking, entity actions, validation and cache invalidation all run. This column DECLARES intent for the code paths and tooling that consult it; it does not and cannot prevent anyone from executing SQL. Requires TrackRecordChanges = 0 and TrustServerCacheCompletely = 0, because a direct insert produces neither an audit row nor a cache-invalidation event."),AllowDirectSQLUpdate:booleanType().describe("\n * * Field Name: AllowDirectSQLUpdate\n * * Display Name: Allow Direct SQL Update\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When 1, this entity may be modified by UPDATE statements that do not go through BaseEntity.Save() \u2014 bulk backfills, integration sync, or maintenance routines. Default 0, meaning every update is expected to flow through BaseEntity so that record-change tracking, entity actions, validation and cache invalidation all run. This column DECLARES intent for the code paths and tooling that consult it; it does not and cannot prevent anyone from executing SQL. Requires TrackRecordChanges = 0 and TrustServerCacheCompletely = 0, because a direct update produces neither an audit row nor a cache-invalidation event."),AllowDirectSQLDelete:booleanType().describe("\n * * Field Name: AllowDirectSQLDelete\n * * Display Name: Allow Direct SQL Delete\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When 1, this entity may have rows removed by DELETE statements that do not go through BaseEntity.Delete() \u2014 purge and retention routines, or integration sync reconciling a remote source. Default 0, meaning every delete is expected to flow through BaseEntity so that record-change tracking, entity actions, cascade handling and cache invalidation all run. This column DECLARES intent for the code paths and tooling that consult it; it does not and cannot prevent anyone from executing SQL. Requires TrackRecordChanges = 0 and TrustServerCacheCompletely = 0, and additionally requires DeleteType = 'Hard' \u2014 a direct DELETE removes the row outright rather than setting DeletedAt, which would defeat soft delete."),CodeName:stringType().nullable().describe("\n * * Field Name: CodeName\n * * Display Name: Code Name\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Schema-based programmatic code name derived from the entity Name. Uses GetClassNameSchemaPrefix(SchemaName) as the prefix, then strips EntityNamePrefix from the Name and removes spaces. For \"__mj\" schema with entity \"MJ: AI Models\", this produces \"MJAIModels\". For entities in other schemas, the sanitized schema name is prepended. Used in GraphQL type generation and internal code references."),ClassName:stringType().nullable().describe("\n * * Field Name: ClassName\n * * Display Name: Class Name\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Schema-based programmatic class name used for TypeScript entity classes, Zod schemas, and Angular form components. Computed as GetProgrammaticName(GetClassNameSchemaPrefix(SchemaName) + BaseTable + NameSuffix). The prefix is derived from SchemaName (guaranteed unique by SQL Server), not from EntityNamePrefix. For the core __mj schema, the prefix is \"MJ\"; for all other schemas it is the alphanumeric-sanitized schema name. This prevents cross-schema collisions and aligns with GraphQL type naming in getGraphQLTypeNameBase()."),BaseTableCodeName:stringType().nullable().describe("\n * * Field Name: BaseTableCodeName\n * * Display Name: Base Table Code Name\n * * SQL Data Type: nvarchar(MAX)"),ParentEntity:stringType().nullable().describe("\n * * Field Name: ParentEntity\n * * Display Name: Parent Entity\n * * SQL Data Type: nvarchar(255)"),ParentBaseTable:stringType().nullable().describe("\n * * Field Name: ParentBaseTable\n * * Display Name: Parent Base Table\n * * SQL Data Type: nvarchar(255)"),ParentBaseView:stringType().nullable().describe("\n * * Field Name: ParentBaseView\n * * Display Name: Parent Base View\n * * SQL Data Type: nvarchar(255)"),CanonicalSchemaName:stringType().nullable().describe("\n * * Field Name: CanonicalSchemaName\n * * Display Name: Canonical Schema Name\n * * SQL Data Type: nvarchar(50)")});/**
63676
64022
  * zod schema definition for the entity MJ: Entity Action Filters
63677
64023
  */var MJEntityActionFilterSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityActionID:stringType().describe("\n * * Field Name: EntityActionID\n * * Display Name: Entity Action\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entity Actions (vwEntityActions.ID)"),ActionFilterID:stringType().describe("\n * * Field Name: ActionFilterID\n * * Display Name: Action Filter\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Action Filters (vwActionFilters.ID)"),Sequence:numberType().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Description: Order of filter execution."),Status:unionType([literalType('Active'),literalType('Disabled'),literalType('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Disabled\n * * Pending\n * * Description: Status of the entity action filter (Pending, Active, Disabled)."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),EntityAction:stringType().describe("\n * * Field Name: EntityAction\n * * Display Name: Entity Action Name\n * * SQL Data Type: nvarchar(425)"),ActionFilter:stringType().describe("\n * * Field Name: ActionFilter\n * * Display Name: Action Filter Name\n * * SQL Data Type: nvarchar(MAX)")});/**
63678
64024
  * zod schema definition for the entity MJ: Entity Action Invocation Types
@@ -63680,9 +64026,9 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
63680
64026
  * zod schema definition for the entity MJ: Entity Action Invocations
63681
64027
  */var MJEntityActionInvocationSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityActionID:stringType().describe("\n * * Field Name: EntityActionID\n * * Display Name: Entity Action\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entity Actions (vwEntityActions.ID)"),InvocationTypeID:stringType().describe("\n * * Field Name: InvocationTypeID\n * * Display Name: Invocation Type\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entity Action Invocation Types (vwEntityActionInvocationTypes.ID)"),Status:unionType([literalType('Active'),literalType('Disabled'),literalType('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Disabled\n * * Pending\n * * Description: Status of the entity action invocation (Pending, Active, Disabled)."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),RuntimeUXDriverClass:stringType().nullable().describe("\n * * Field Name: RuntimeUXDriverClass\n * * Display Name: Runtime UX Driver Class\n * * SQL Data Type: nvarchar(255)\n * * Description: Optional class name of a registered runtime-UX driver component (a BaseEntityActionRuntimeUX subclass resolved via MJGlobal.ClassFactory) that owns this invocation's interaction \u2014 parameter collection, dry-run preview, confirmation, and progress. NULL invokes the action directly with no custom UX. This lets any action opt into a richer, reusable runtime experience while the grid/toolbar stays operation-agnostic."),EntityAction:stringType().describe("\n * * Field Name: EntityAction\n * * Display Name: Entity Action Name\n * * SQL Data Type: nvarchar(425)"),InvocationType:stringType().describe("\n * * Field Name: InvocationType\n * * Display Name: Invocation Type Name\n * * SQL Data Type: nvarchar(255)")});/**
63682
64028
  * zod schema definition for the entity MJ: Entity Action Params
63683
- */var MJEntityActionParamSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityActionID:stringType().describe("\n * * Field Name: EntityActionID\n * * Display Name: Entity Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entity Actions (vwEntityActions.ID)"),ActionParamID:stringType().describe("\n * * Field Name: ActionParamID\n * * Display Name: Action Parameter ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Action Params (vwActionParams.ID)"),ValueType:unionType([literalType('Entity Field'),literalType('Entity Object'),literalType('Script'),literalType('Static')]).describe("\n * * Field Name: ValueType\n * * Display Name: Value Type\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * Entity Field\n * * Entity Object\n * * Script\n * * Static\n * * Description: Type of the value, which can be Static, Entity Object, or Script."),Value:stringType().nullable().describe("\n * * Field Name: Value\n * * Display Name: Value\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Value of the parameter, used only when ValueType is Static or Script. When value is Script, any valid JavaScript code can be provided. The script will have access to an object called EntityActionContext. This object will have a property called EntityObject on it that will contain the BaseEntity derived sub-class with the current data for the entity object this action is operating against. The script must provide the parameter value to the EntityActionContext.result property. This scripting capabilty is designed for very small and simple code, for anything of meaningful complexity, create a sub-class instead."),Comments:stringType().nullable().describe("\n * * Field Name: Comments\n * * Display Name: Comments\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Additional comments regarding the parameter."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),EntityAction:stringType().describe("\n * * Field Name: EntityAction\n * * Display Name: Entity Action\n * * SQL Data Type: nvarchar(425)"),ActionParam:stringType().describe("\n * * Field Name: ActionParam\n * * Display Name: Action Parameter\n * * SQL Data Type: nvarchar(255)")});/**
64029
+ */var MJEntityActionParamSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityActionID:stringType().describe("\n * * Field Name: EntityActionID\n * * Display Name: Entity Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entity Actions (vwEntityActions.ID)"),ActionParamID:stringType().describe("\n * * Field Name: ActionParamID\n * * Display Name: Action Parameter ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Action Params (vwActionParams.ID)"),ValueType:unionType([literalType('Entity Field'),literalType('Entity Object'),literalType('Entity Object Data'),literalType('Script'),literalType('Static')]).describe("\n * * Field Name: ValueType\n * * Display Name: Value Type\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * Entity Field\n * * Entity Object\n * * Entity Object Data\n * * Script\n * * Static\n * * Description: How the parameter value is produced at invocation time. Static = the literal Value (parsed as JSON when it parses). Entity Object = the live BaseEntity instance, for actions that call entity methods. Entity Object Data = entity.GetAll(), a plain object - use this for any action that SERIALIZES the value, such as the Data payload of Execute Agent, because a BaseEntity serializes to {} (its fields are getters, not enumerable own properties). Entity Field = the named field's value. Script = evaluated expression with the entity in scope."),Value:stringType().nullable().describe("\n * * Field Name: Value\n * * Display Name: Value\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Value of the parameter, used only when ValueType is Static or Script. When value is Script, any valid JavaScript code can be provided. The script will have access to an object called EntityActionContext. This object will have a property called EntityObject on it that will contain the BaseEntity derived sub-class with the current data for the entity object this action is operating against. The script must provide the parameter value to the EntityActionContext.result property. This scripting capabilty is designed for very small and simple code, for anything of meaningful complexity, create a sub-class instead."),Comments:stringType().nullable().describe("\n * * Field Name: Comments\n * * Display Name: Comments\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Additional comments regarding the parameter."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),LogValue:booleanType().nullable().describe("\n * * Field Name: LogValue\n * * Display Name: Log Value\n * * SQL Data Type: bit\n * * Description: Optional per-binding override of ActionParam.LogValue. NULL (the default) inherits the parameter definition. Set to 0 when this particular binding passes something sensitive through a parameter that is ordinarily safe to log - a message body through a generic Text parameter, for instance. Cannot re-enable logging for a value type the hard rule suppresses."),EntityAction:stringType().describe("\n * * Field Name: EntityAction\n * * Display Name: Entity Action\n * * SQL Data Type: nvarchar(425)"),ActionParam:stringType().describe("\n * * Field Name: ActionParam\n * * Display Name: Action Parameter\n * * SQL Data Type: nvarchar(255)")});/**
63684
64030
  * zod schema definition for the entity MJ: Entity Actions
63685
- */var MJEntityActionSchema=objectType({EntityID:stringType().describe("\n * * Field Name: EntityID\n * * Display Name: Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),Status:unionType([literalType('Active'),literalType('Disabled'),literalType('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Disabled\n * * Pending\n * * Description: Status of the entity action (Pending, Active, Disabled)."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: __mj _Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: __mj _Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),Entity:stringType().describe("\n * * Field Name: Entity\n * * Display Name: Entity\n * * SQL Data Type: nvarchar(255)"),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)")});/**
64031
+ */var MJEntityActionSchema=objectType({EntityID:stringType().describe("\n * * Field Name: EntityID\n * * Display Name: Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),ActionID:stringType().describe("\n * * Field Name: ActionID\n * * Display Name: Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)"),Status:unionType([literalType('Active'),literalType('Disabled'),literalType('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Disabled\n * * Pending\n * * Description: Status of the entity action (Pending, Active, Disabled)."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: __mj _Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: __mj _Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),Sequence:numberType().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Execution order when multiple Entity Actions are bound to the same entity and invocation type. Lower runs first; ties fall back to creation order. Defaults to 0 so existing rows are unaffected."),ScopeEntityID:stringType().nullable().describe("\n * * Field Name: ScopeEntityID\n * * Display Name: Scope Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)\n * * Description: Optional. Together with ScopeRecordID, narrows this Entity Action to records related to ONE specific record - for example a single Deal Type, Contract Type, Pipeline or Company - rather than every record of EntityID. NULL (the default) means the action applies to all records, which is the pre-existing behaviour. How a scope record relates to the subject record is resolved by the app that owns the scope entity; the framework only stores and filters on the pair."),ScopeRecordID:stringType().nullable().describe("\n * * Field Name: ScopeRecordID\n * * Display Name: Scope Record ID\n * * SQL Data Type: nvarchar(450)\n * * Description: Optional. The primary key of the scope record, as text, paired with ScopeEntityID. Both columns are NULL or both are set (CK_EntityAction_Scope). Lets a configuration record such as a Deal Type surface \"the workflows bound to me\" as a real relationship rather than something buried in filter code."),LoggingMode:unionType([literalType('All'),literalType('FailuresOnly'),literalType('None')]).describe("\n * * Field Name: LoggingMode\n * * Display Name: Logging Mode\n * * SQL Data Type: nvarchar(20)\n * * Default Value: All\n * * Value List Type: List\n * * Possible Values \n * * All\n * * FailuresOnly\n * * None\n * * Description: How much of this binding's activity reaches ActionExecutionLog. All (default) writes a row per invocation. FailuresOnly writes only runs that did not succeed - the right setting for a high-frequency binding on a busy entity, where the successful runs are noise. None disables logging for the binding entirely and should be rare, because it also removes the failure record."),Entity:stringType().describe("\n * * Field Name: Entity\n * * Display Name: Entity\n * * SQL Data Type: nvarchar(255)"),Action:stringType().describe("\n * * Field Name: Action\n * * Display Name: Action\n * * SQL Data Type: nvarchar(425)"),ScopeEntity:stringType().nullable().describe("\n * * Field Name: ScopeEntity\n * * Display Name: Scope Entity\n * * SQL Data Type: nvarchar(255)")});/**
63686
64032
  * zod schema definition for the entity MJ: Entity AI Actions
63687
64033
  */var MJEntityAIActionSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityID:stringType().describe("\n * * Field Name: EntityID\n * * Display Name: Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),AIModelID:stringType().describe("\n * * Field Name: AIModelID\n * * Display Name: AI Model ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)"),AIActionID:stringType().describe("\n * * Field Name: AIActionID\n * * Display Name: AI Action ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: AI Actions (vwAIActions.ID)"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(255)"),Prompt:stringType().nullable().describe("\n * * Field Name: Prompt\n * * Display Name: Prompt\n * * SQL Data Type: nvarchar(MAX)\n * * Description: The AI prompt template used when this action is triggered by entity changes."),TriggerEvent:unionType([literalType('after save'),literalType('before save')]).describe("\n * * Field Name: TriggerEvent\n * * Display Name: Trigger Event\n * * SQL Data Type: nchar(15)\n * * Default Value: After Save\n * * Value List Type: List\n * * Possible Values \n * * after save\n * * before save\n * * Description: The entity event that triggers this AI action (After Save, Before Delete, etc.)."),UserMessage:stringType().describe("\n * * Field Name: UserMessage\n * * Display Name: User Message\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Message shown to users when this AI action is executed."),OutputType:unionType([literalType('entity'),literalType('field')]).describe("\n * * Field Name: OutputType\n * * Display Name: Output Type\n * * SQL Data Type: nchar(10)\n * * Default Value: FIeld\n * * Value List Type: List\n * * Possible Values \n * * entity\n * * field\n * * Description: Where the AI output should be stored (Field, Message, File)."),OutputField:stringType().nullable().describe("\n * * Field Name: OutputField\n * * Display Name: Output Field\n * * SQL Data Type: nvarchar(50)\n * * Description: The field name where AI output should be stored if OutputType is Field."),SkipIfOutputFieldNotEmpty:booleanType().describe("\n * * Field Name: SkipIfOutputFieldNotEmpty\n * * Display Name: Skip If Output Field Not Empty\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether to skip AI processing if the output field already contains data."),OutputEntityID:stringType().nullable().describe("\n * * Field Name: OutputEntityID\n * * Display Name: Output Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),Comments:stringType().nullable().describe("\n * * Field Name: Comments\n * * Display Name: Comments\n * * SQL Data Type: nvarchar(MAX)"),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: __mj _Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: __mj _Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Entity:stringType().describe("\n * * Field Name: Entity\n * * Display Name: Entity\n * * SQL Data Type: nvarchar(255)"),AIModel:stringType().describe("\n * * Field Name: AIModel\n * * Display Name: AIModel\n * * SQL Data Type: nvarchar(50)"),AIAction:stringType().describe("\n * * Field Name: AIAction\n * * Display Name: AIAction\n * * SQL Data Type: nvarchar(50)"),OutputEntity:stringType().nullable().describe("\n * * Field Name: OutputEntity\n * * Display Name: Output Entity\n * * SQL Data Type: nvarchar(255)")});/**
63688
64034
  * zod schema definition for the entity MJ: Entity Communication Fields
@@ -64050,7 +64396,7 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
64050
64396
  * zod schema definition for the entity MJ: User View Categories
64051
64397
  */var MJUserViewCategorySchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),Name:stringType().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(100)"),Description:stringType().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)"),ParentID:stringType().nullable().describe("\n * * Field Name: ParentID\n * * Display Name: Parent ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: User View Categories (vwUserViewCategories.ID)"),EntityID:stringType().describe("\n * * Field Name: EntityID\n * * Display Name: Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),UserID:stringType().describe("\n * * Field Name: UserID\n * * Display Name: User ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Parent:stringType().nullable().describe("\n * * Field Name: Parent\n * * Display Name: Parent\n * * SQL Data Type: nvarchar(100)"),Entity:stringType().describe("\n * * Field Name: Entity\n * * Display Name: Entity\n * * SQL Data Type: nvarchar(255)"),User:stringType().describe("\n * * Field Name: User\n * * Display Name: User\n * * SQL Data Type: nvarchar(100)"),RootParentID:stringType().nullable().describe("\n * * Field Name: RootParentID\n * * Display Name: Root Parent ID\n * * SQL Data Type: uniqueidentifier")});/**
64052
64398
  * zod schema definition for the entity MJ: User View Run Details
64053
- */var MJUserViewRunDetailSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),UserViewRunID:stringType().describe("\n * * Field Name: UserViewRunID\n * * Display Name: User View Run ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: User View Runs (vwUserViewRuns.ID)"),RecordID:stringType().describe("\n * * Field Name: RecordID\n * * Display Name: Record\n * * SQL Data Type: nvarchar(450)\n * * Description: Field RecordID for entity User View Run Details."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),UserViewID:stringType().describe("\n * * Field Name: UserViewID\n * * Display Name: User View\n * * SQL Data Type: uniqueidentifier"),EntityID:stringType().describe("\n * * Field Name: EntityID\n * * Display Name: Entity\n * * SQL Data Type: uniqueidentifier")});/**
64399
+ */var MJUserViewRunDetailSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),UserViewRunID:stringType().describe("\n * * Field Name: UserViewRunID\n * * Display Name: User View Run\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: User View Runs (vwUserViewRuns.ID)"),RecordID:stringType().describe("\n * * Field Name: RecordID\n * * Display Name: Record\n * * SQL Data Type: nvarchar(450)\n * * Description: Field RecordID for entity User View Run Details."),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),UserViewRun:stringType().describe("\n * * Field Name: UserViewRun\n * * Display Name: User View Run Name\n * * SQL Data Type: nvarchar(100)"),UserViewID:stringType().describe("\n * * Field Name: UserViewID\n * * Display Name: User View\n * * SQL Data Type: uniqueidentifier"),EntityID:stringType().describe("\n * * Field Name: EntityID\n * * Display Name: Entity\n * * SQL Data Type: uniqueidentifier")});/**
64054
64400
  * zod schema definition for the entity MJ: User View Runs
64055
64401
  */var MJUserViewRunSchema=objectType({ID:stringType().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),UserViewID:stringType().describe("\n * * Field Name: UserViewID\n * * Display Name: User View\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: User Views (vwUserViews.ID)"),RunAt:dateType().describe("\n * * Field Name: RunAt\n * * Display Name: Run At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp when the view was executed."),RunByUserID:stringType().describe("\n * * Field Name: RunByUserID\n * * Display Name: Run By User\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),__mj_CreatedAt:dateType().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:dateType().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),UserView:stringType().describe("\n * * Field Name: UserView\n * * Display Name: User View\n * * SQL Data Type: nvarchar(100)"),RunByUser:stringType().describe("\n * * Field Name: RunByUser\n * * Display Name: Run By User\n * * SQL Data Type: nvarchar(100)")});/**
64056
64402
  * zod schema definition for the entity MJ: User Views
@@ -64468,7 +64814,7 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
64468
64814
  * * Field Name: Params
64469
64815
  * * Display Name: Params
64470
64816
  * * SQL Data Type: nvarchar(MAX)
64471
- * * Description: JSON-formatted input parameters passed to the action during execution, storing the exact values used for this specific run.
64817
+ * * Description: JSON-formatted input parameters AS THE ACTION WAS CALLED, captured once when execution starts and never overwritten. Custom and Generated actions mutate their parameter array in place, so this is the only durable record of the values actually passed in; the final state lives in ResultParams. Parameter values may be redacted per ActionParam.LogValue / EntityActionParam.LogValue, and whole-record value types are never written - see the parameter's own documentation.
64472
64818
  */},{key:"Params",get:function get(){return this.Get('Params');},set:function set(value){this.Set('Params',value);}/**
64473
64819
  * * Field Name: ResultCode
64474
64820
  * * Display Name: Result Code
@@ -64498,8 +64844,36 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
64498
64844
  * * Field Name: Message
64499
64845
  * * Display Name: Message
64500
64846
  * * SQL Data Type: nvarchar(MAX)
64501
- * * Description: JSON-formatted output data or response from the action execution
64847
+ * * Description: Human-readable summary message returned by the action - the reason for a refusal, or a short description of what was done. Not the action's output data: parameter values live in Params and ResultParams, and the outcome code in ResultCode.
64502
64848
  */},{key:"Message",get:function get(){return this.Get('Message');},set:function set(value){this.Set('Message',value);}/**
64849
+ * * Field Name: EntityActionID
64850
+ * * Display Name: Entity Action ID
64851
+ * * SQL Data Type: uniqueidentifier
64852
+ * * Related Entity/Foreign Key: MJ: Entity Actions (vwEntityActions.ID)
64853
+ * * Description: Optional. The Entity Action binding that caused this run. NULL when the action was invoked directly - from a resolver, a script, an agent step or a scheduled action.
64854
+ */},{key:"EntityActionID",get:function get(){return this.Get('EntityActionID');},set:function set(value){this.Set('EntityActionID',value);}/**
64855
+ * * Field Name: EntityActionInvocationTypeID
64856
+ * * Display Name: Entity Action Invocation Type ID
64857
+ * * SQL Data Type: uniqueidentifier
64858
+ * * Related Entity/Foreign Key: MJ: Entity Action Invocation Types (vwEntityActionInvocationTypes.ID)
64859
+ * * Description: Optional. Which lifecycle event fired the binding - AfterUpdate, Validate, List and so on. Recorded separately from EntityActionID because one binding may be attached to several invocation types, and telling a Validate refusal apart from an AfterUpdate side effect is the first question anyone asks of this log.
64860
+ */},{key:"EntityActionInvocationTypeID",get:function get(){return this.Get('EntityActionInvocationTypeID');},set:function set(value){this.Set('EntityActionInvocationTypeID',value);}/**
64861
+ * * Field Name: TargetEntityID
64862
+ * * Display Name: Target Entity ID
64863
+ * * SQL Data Type: uniqueidentifier
64864
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
64865
+ * * Description: Optional. The entity of the record this run operated on. Deliberately denormalized rather than joined through EntityActionID: it survives the binding being deleted or retargeted, and it lets the log be queried by record with no join. Kept generic because every invoker has a subject - not only Entity Actions.
64866
+ */},{key:"TargetEntityID",get:function get(){return this.Get('TargetEntityID');},set:function set(value){this.Set('TargetEntityID',value);}/**
64867
+ * * Field Name: TargetRecordID
64868
+ * * Display Name: Target Record ID
64869
+ * * SQL Data Type: nvarchar(450)
64870
+ * * Description: Optional. The primary key of the record this run operated on, as text, paired with TargetEntityID. For multi-record invocation types (List, View) one log row is written per record, so this is always a single record.
64871
+ */},{key:"TargetRecordID",get:function get(){return this.Get('TargetRecordID');},set:function set(value){this.Set('TargetRecordID',value);}/**
64872
+ * * Field Name: ResultParams
64873
+ * * Display Name: Result Params
64874
+ * * SQL Data Type: nvarchar(MAX)
64875
+ * * Description: JSON-formatted FINAL parameter set captured when the action finished - the inputs as the action left them, plus any output parameters it produced. Written on FAILURE exactly as on success, under the same redaction rules: a failed run's partially-mutated inputs are usually the most diagnostic thing available, and an audit trail that records only successes is not an audit trail. Distinct from Params, which holds the values the action was called with and is never overwritten. NULL means one thing only - the run never finished (process died, host killed) - so it is a signal rather than an absence, and must not be backfilled.
64876
+ */},{key:"ResultParams",get:function get(){return this.Get('ResultParams');},set:function set(value){this.Set('ResultParams',value);}/**
64503
64877
  * * Field Name: Action
64504
64878
  * * Display Name: Action
64505
64879
  * * SQL Data Type: nvarchar(425)
@@ -64507,7 +64881,19 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
64507
64881
  * * Field Name: User
64508
64882
  * * Display Name: User
64509
64883
  * * SQL Data Type: nvarchar(100)
64510
- */},{key:"User",get:function get(){return this.Get('User');}}]);}(dist/* BaseEntity */.HCJ);MJActionExecutionLogEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: Action Execution Logs')],MJActionExecutionLogEntity);/**
64884
+ */},{key:"User",get:function get(){return this.Get('User');}/**
64885
+ * * Field Name: EntityAction
64886
+ * * Display Name: Entity Action
64887
+ * * SQL Data Type: nvarchar(425)
64888
+ */},{key:"EntityAction",get:function get(){return this.Get('EntityAction');}/**
64889
+ * * Field Name: EntityActionInvocationType
64890
+ * * Display Name: Entity Action Invocation Type
64891
+ * * SQL Data Type: nvarchar(255)
64892
+ */},{key:"EntityActionInvocationType",get:function get(){return this.Get('EntityActionInvocationType');}/**
64893
+ * * Field Name: TargetEntity
64894
+ * * Display Name: Target Entity
64895
+ * * SQL Data Type: nvarchar(255)
64896
+ */},{key:"TargetEntity",get:function get(){return this.Get('TargetEntity');}}]);}(dist/* BaseEntity */.HCJ);MJActionExecutionLogEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: Action Execution Logs')],MJActionExecutionLogEntity);/**
64511
64897
  * MJ: Action Filters - strongly typed entity sub-class
64512
64898
  * * Schema: __mj
64513
64899
  * * Base Table: ActionFilter
@@ -64722,6 +65108,12 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
64722
65108
  * * Video
64723
65109
  * * Description: Specifies the type of media this parameter outputs when ValueType is MediaOutput. Used for action discovery and validation.
64724
65110
  */},{key:"MediaModality",get:function get(){return this.Get('MediaModality');},set:function set(value){this.Set('MediaModality',value);}/**
65111
+ * * Field Name: LogValue
65112
+ * * Display Name: Log Value
65113
+ * * SQL Data Type: bit
65114
+ * * Default Value: 1
65115
+ * * Description: Whether this parameter's VALUE may be written to ActionExecutionLog.Params. Default 1. Set to 0 for parameters that carry records, credentials or personal data - for example the Data payload of Execute Agent. Independent of the hard rule that Entity Action params of ValueType 'Entity Object' or 'Entity Object Data' are never logged regardless of this flag. When logging is suppressed the log records the parameter name, its type and a redaction marker, never the value.
65116
+ */},{key:"LogValue",get:function get(){return this.Get('LogValue');},set:function set(value){this.Set('LogValue',value);}/**
64725
65117
  * * Field Name: Action
64726
65118
  * * Display Name: Action
64727
65119
  * * SQL Data Type: nvarchar(425)
@@ -69015,7 +69407,7 @@ _context44.p=1;_context44.n=2;return provider.BeginTransaction();case 2:_context
69015
69407
  * @param result - the ValidationResult object to add any errors or warnings to
69016
69408
  * @public
69017
69409
  * @method
69018
- */},{key:"ValidateCompactionTriggerPercentRange",value:function ValidateCompactionTriggerPercentRange(result){if(this.CompactionTriggerPercent!=null&&(this.CompactionTriggerPercent<1||this.CompactionTriggerPercent>100)){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("CompactionTriggerPercent","Compaction trigger percentage must be between 1 and 100.",this.CompactionTriggerPercent,dist/* ValidationErrorType */.wX$.Failure));}}/**
69410
+ */},{key:"ValidateCompactionTriggerPercentRange",value:function ValidateCompactionTriggerPercentRange(result){if(this.CompactionTriggerPercent<1||this.CompactionTriggerPercent>100){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("CompactionTriggerPercent","Compaction trigger percentage must be between 1 and 100.",this.CompactionTriggerPercent,dist/* ValidationErrorType */.wX$.Failure));}}/**
69019
69411
  * The maximum tokens for the context window must be a positive number greater than 0.
69020
69412
  * @param result - the ValidationResult object to add any errors or warnings to
69021
69413
  * @public
@@ -73884,6 +74276,12 @@ _context74.p=1;_context74.n=2;return provider.BeginTransaction();case 2:_context
73884
74276
  * * SQL Data Type: datetimeoffset
73885
74277
  * * Default Value: getutcdate()
73886
74278
  */},{key:"__mj_UpdatedAt",get:function get(){return this.Get('__mj_UpdatedAt');}/**
74279
+ * * Field Name: RowFilterID
74280
+ * * Display Name: Row Filter ID
74281
+ * * SQL Data Type: uniqueidentifier
74282
+ * * Related Entity/Foreign Key: MJ: Row Level Security Filters (vwRowLevelSecurityFilters.ID)
74283
+ * * Description: Optional row-level filter acting as a CEILING for every API key operating under this application — a restriction keys inherit and cannot widen. Composes with the per-key filter (APIKeyScope.RowFilterID) and with role-based RLS using AND, never OR, so no layer can broaden another. References the same RowLevelSecurityFilter catalog used by role-based RLS. NULL (the default) means the application imposes no row ceiling. The same authoring constraints as APIKeyScope.RowFilterID apply: exact single-entity resource pattern, all referenced columns must exist on that entity, and all referrers of the filter record must resolve to the same entity.
74284
+ */},{key:"RowFilterID",get:function get(){return this.Get('RowFilterID');},set:function set(value){this.Set('RowFilterID',value);}/**
73887
74285
  * * Field Name: Application
73888
74286
  * * Display Name: Application Name
73889
74287
  * * SQL Data Type: nvarchar(100)
@@ -73891,7 +74289,11 @@ _context74.p=1;_context74.n=2;return provider.BeginTransaction();case 2:_context
73891
74289
  * * Field Name: Scope
73892
74290
  * * Display Name: Scope Name
73893
74291
  * * SQL Data Type: nvarchar(100)
73894
- */},{key:"Scope",get:function get(){return this.Get('Scope');}}]);}(dist/* BaseEntity */.HCJ);MJAPIApplicationScopeEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: API Application Scopes')],MJAPIApplicationScopeEntity);/**
74292
+ */},{key:"Scope",get:function get(){return this.Get('Scope');}/**
74293
+ * * Field Name: RowFilter
74294
+ * * Display Name: Row Filter
74295
+ * * SQL Data Type: nvarchar(100)
74296
+ */},{key:"RowFilter",get:function get(){return this.Get('RowFilter');}}]);}(dist/* BaseEntity */.HCJ);MJAPIApplicationScopeEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: API Application Scopes')],MJAPIApplicationScopeEntity);/**
73895
74297
  * MJ: API Applications - strongly typed entity sub-class
73896
74298
  * * Schema: __mj
73897
74299
  * * Base Table: APIApplication
@@ -74070,6 +74472,12 @@ _context74.p=1;_context74.n=2;return provider.BeginTransaction();case 2:_context
74070
74472
  * * Default Value: 0
74071
74473
  * * Description: Rule evaluation order. Higher priority rules are evaluated first. Within same priority, deny rules are evaluated before allow rules.
74072
74474
  */},{key:"Priority",get:function get(){return this.Get('Priority');},set:function set(value){this.Set('Priority',value);}/**
74475
+ * * Field Name: RowFilterID
74476
+ * * Display Name: Row Filter ID
74477
+ * * SQL Data Type: uniqueidentifier
74478
+ * * Related Entity/Foreign Key: MJ: Row Level Security Filters (vwRowLevelSecurityFilters.ID)
74479
+ * * Description: Optional row-level filter narrowing WHICH RECORDS this scope grant applies to, in addition to the resource pattern that governs which entities. References the same RowLevelSecurityFilter catalog used by role-based RLS, so the filter text flows through the standard {{Token}} substitution engine and every existing RLS enforcement point (RunView, Load by primary key, save, delete, search). NULL (the default) means no row restriction — behavior identical to before this column existed. When set, the rule's ResourcePattern must name a single exact entity (no wildcards, no comma-separated lists), every column the filter references must resolve to a real non-virtual field on that entity, and every other referrer of the same filter record must resolve to that same entity. Critically, this filter is evaluated INDEPENDENTLY of the role-RLS exemption: a user exempt from role RLS is still bound by their key's filter, because narrowing a principal below what their roles allow is the entire purpose of a key ceiling.
74480
+ */},{key:"RowFilterID",get:function get(){return this.Get('RowFilterID');},set:function set(value){this.Set('RowFilterID',value);}/**
74073
74481
  * * Field Name: APIKey
74074
74482
  * * Display Name: API Key
74075
74483
  * * SQL Data Type: nvarchar(255)
@@ -74077,7 +74485,11 @@ _context74.p=1;_context74.n=2;return provider.BeginTransaction();case 2:_context
74077
74485
  * * Field Name: Scope
74078
74486
  * * Display Name: Scope
74079
74487
  * * SQL Data Type: nvarchar(100)
74080
- */},{key:"Scope",get:function get(){return this.Get('Scope');}}]);}(dist/* BaseEntity */.HCJ);MJAPIKeyScopeEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: API Key Scopes')],MJAPIKeyScopeEntity);/**
74488
+ */},{key:"Scope",get:function get(){return this.Get('Scope');}/**
74489
+ * * Field Name: RowFilter
74490
+ * * Display Name: Row Filter
74491
+ * * SQL Data Type: nvarchar(100)
74492
+ */},{key:"RowFilter",get:function get(){return this.Get('RowFilter');}}]);}(dist/* BaseEntity */.HCJ);MJAPIKeyScopeEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: API Key Scopes')],MJAPIKeyScopeEntity);/**
74081
74493
  * MJ: API Key Usage Logs - strongly typed entity sub-class
74082
74494
  * * Schema: __mj
74083
74495
  * * Base Table: APIKeyUsageLog
@@ -78533,12 +78945,12 @@ _context96.p=1;_context96.n=2;return provider.BeginTransaction();case 2:_context
78533
78945
  * * Description: Exclusive character offset where this chunk ends within the parent Content Item's extracted text. See StartOffset. NULL for media segments.
78534
78946
  */},{key:"EndOffset",get:function get(){return this.Get('EndOffset');},set:function set(value){this.Set('EndOffset',value);}/**
78535
78947
  * * Field Name: StartMs
78536
- * * Display Name: Start (ms)
78948
+ * * Display Name: Start Milliseconds
78537
78949
  * * SQL Data Type: int
78538
78950
  * * Description: Start of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. Set by transcript- or window-based segmentation; enables time-windowed playback deep-links from a search result (for example 14:22-15:05 of a session recording). NULL for text segments.
78539
78951
  */},{key:"StartMs",get:function get(){return this.Get('StartMs');},set:function set(value){this.Set('StartMs',value);}/**
78540
78952
  * * Field Name: EndMs
78541
- * * Display Name: End (ms)
78953
+ * * Display Name: End Milliseconds
78542
78954
  * * SQL Data Type: int
78543
78955
  * * Description: End of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. See StartMs. NULL for text segments.
78544
78956
  */},{key:"EndMs",get:function get(){return this.Get('EndMs');},set:function set(value){this.Set('EndMs',value);}/**
@@ -78574,9 +78986,13 @@ _context96.p=1;_context96.n=2;return provider.BeginTransaction();case 2:_context
78574
78986
  * * Description: Optional self-reference to another chunk of the same Content Item that is the parent of this one, expressing a chapter to sub-chapter hierarchy — for example a five-minute chapter of a recording and the individual speaker turns within it, or a document section and its subsections. NULL for top-level segments.
78575
78987
  */},{key:"ParentChunkID",get:function get(){return this.Get('ParentChunkID');},set:function set(value){this.Set('ParentChunkID',value);}/**
78576
78988
  * * Field Name: ContentItem
78577
- * * Display Name: Content Item
78989
+ * * Display Name: Content Item Name
78578
78990
  * * SQL Data Type: nvarchar(250)
78579
78991
  */},{key:"ContentItem",get:function get(){return this.Get('ContentItem');}/**
78992
+ * * Field Name: ParentChunk
78993
+ * * Display Name: Parent Chunk Name
78994
+ * * SQL Data Type: nvarchar(500)
78995
+ */},{key:"ParentChunk",get:function get(){return this.Get('ParentChunk');}/**
78580
78996
  * * Field Name: RootParentChunkID
78581
78997
  * * Display Name: Root Parent Chunk
78582
78998
  * * SQL Data Type: uniqueidentifier
@@ -83210,15 +83626,39 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83210
83626
  */function(){var _Load177=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee191(ID,EntityRelationshipsToLoad){var compositeKey;return _regenerator().w(function(_context191){while(1)switch(_context191.n){case 0:compositeKey=new dist/* CompositeKey */.BT8();compositeKey.KeyValuePairs.push({FieldName:'ID',Value:ID});_context191.n=1;return _superPropGet(MJEntityEntity,"InnerLoad",this,3)([compositeKey,EntityRelationshipsToLoad]);case 1:return _context191.a(2,_context191.v);}},_callee191,this);}));function Load(_x369,_x370){return _Load177.apply(this,arguments);}return Load;}()/**
83211
83627
  * Validate() method override for MJ: Entities entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
83212
83628
  * * Table-Level: This rule ensures that if deleting via the API is allowed and the delete type is set to 'Soft', then record merging must also be allowed. In other words, you cannot allow API deletes with a soft delete type without also allowing record merging.
83629
+ * * Table-Level: If direct SQL deletion is allowed, the delete type must be set to 'Hard' to ensure data integrity.
83630
+ * * Table-Level: Direct SQL operations (Insert, Update, and Delete) must be disabled if Track Record Changes or Trust Server Cache Completely is enabled, ensuring that cache integrity and change tracking are not bypassed.
83631
+ * * Table-Level: If the base view is marked as generated, the generated base view name must be null. A generated base view name can only be set when the base view is not marked as generated.
83632
+ * * Table-Level: If a generated base view name is specified, a base view must also be defined, and the generated base view name cannot be the same as the base view name to prevent naming conflicts.
83213
83633
  * @public
83214
83634
  * @method
83215
83635
  * @override
83216
- */)},{key:"Validate",value:function Validate(){var result=_superPropGet(MJEntityEntity,"Validate",this,3)([]);this.ValidateAllowRecordMergeForSoftDeleteAPI(result);result.Success=result.Success&&result.Errors.length===0;return result;}/**
83636
+ */)},{key:"Validate",value:function Validate(){var result=_superPropGet(MJEntityEntity,"Validate",this,3)([]);this.ValidateAllowRecordMergeForSoftDeleteAPI(result);this.ValidateDeleteTypeForDirectSQLDelete(result);this.ValidateDirectSQLAndTrackingConstraints(result);this.ValidateGeneratedBaseViewNameAndBaseViewGenerated(result);this.ValidateGeneratedBaseViewNameDifferentFromBaseView(result);result.Success=result.Success&&result.Errors.length===0;return result;}/**
83217
83637
  * This rule ensures that if deleting via the API is allowed and the delete type is set to 'Soft', then record merging must also be allowed. In other words, you cannot allow API deletes with a soft delete type without also allowing record merging.
83218
83638
  * @param result - the ValidationResult object to add any errors or warnings to
83219
83639
  * @public
83220
83640
  * @method
83221
83641
  */},{key:"ValidateAllowRecordMergeForSoftDeleteAPI",value:function ValidateAllowRecordMergeForSoftDeleteAPI(result){if(this.AllowDeleteAPI&&this.DeleteType==="Soft"&&!this.AllowRecordMerge){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("AllowRecordMerge","When API deletes are allowed and delete type is 'Soft', record merging must be allowed.",this.AllowRecordMerge,dist/* ValidationErrorType */.wX$.Failure));}}/**
83642
+ * If direct SQL deletion is allowed, the delete type must be set to 'Hard' to ensure data integrity.
83643
+ * @param result - the ValidationResult object to add any errors or warnings to
83644
+ * @public
83645
+ * @method
83646
+ */},{key:"ValidateDeleteTypeForDirectSQLDelete",value:function ValidateDeleteTypeForDirectSQLDelete(result){if(this.AllowDirectSQLDelete&&this.DeleteType!=="Hard"){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("DeleteType","Delete Type must be 'Hard' if Allow Direct SQL Delete is enabled.",this.DeleteType,dist/* ValidationErrorType */.wX$.Failure));}}/**
83647
+ * Direct SQL operations (Insert, Update, and Delete) must be disabled if Track Record Changes or Trust Server Cache Completely is enabled, ensuring that cache integrity and change tracking are not bypassed.
83648
+ * @param result - the ValidationResult object to add any errors or warnings to
83649
+ * @public
83650
+ * @method
83651
+ */},{key:"ValidateDirectSQLAndTrackingConstraints",value:function ValidateDirectSQLAndTrackingConstraints(result){if((this.AllowDirectSQLInsert||this.AllowDirectSQLUpdate||this.AllowDirectSQLDelete)&&(this.TrackRecordChanges||this.TrustServerCacheCompletely)){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("AllowDirectSQLInsert","Direct SQL operations (Insert, Update, Delete) cannot be enabled when Track Record Changes or Trust Server Cache Completely is enabled.",this.AllowDirectSQLInsert,dist/* ValidationErrorType */.wX$.Failure));}}/**
83652
+ * If the base view is marked as generated, the generated base view name must be null. A generated base view name can only be set when the base view is not marked as generated.
83653
+ * @param result - the ValidationResult object to add any errors or warnings to
83654
+ * @public
83655
+ * @method
83656
+ */},{key:"ValidateGeneratedBaseViewNameAndBaseViewGenerated",value:function ValidateGeneratedBaseViewNameAndBaseViewGenerated(result){if(this.GeneratedBaseViewName!=null&&this.BaseViewGenerated){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("GeneratedBaseViewName","Generated Base View Name must be empty when Base View Generated is enabled.",this.GeneratedBaseViewName,dist/* ValidationErrorType */.wX$.Failure));}}/**
83657
+ * If a generated base view name is specified, a base view must also be defined, and the generated base view name cannot be the same as the base view name to prevent naming conflicts.
83658
+ * @param result - the ValidationResult object to add any errors or warnings to
83659
+ * @public
83660
+ * @method
83661
+ */},{key:"ValidateGeneratedBaseViewNameDifferentFromBaseView",value:function ValidateGeneratedBaseViewNameDifferentFromBaseView(result){if(this.GeneratedBaseViewName!=null&&this.GeneratedBaseViewName.trim()!==""){if(this.BaseView==null||this.BaseView.trim()===""){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("GeneratedBaseViewName","A Base View must be specified when a Generated Base View Name is provided.",this.GeneratedBaseViewName,dist/* ValidationErrorType */.wX$.Failure));}else if(this.GeneratedBaseViewName===this.BaseView){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("GeneratedBaseViewName","The Generated Base View Name cannot be the same as the Base View name.",this.GeneratedBaseViewName,dist/* ValidationErrorType */.wX$.Failure));}}}/**
83222
83662
  * * Field Name: ID
83223
83663
  * * Display Name: ID
83224
83664
  * * SQL Data Type: uniqueidentifier
@@ -83606,7 +84046,7 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83606
84046
  * * Description: When set to 1 AND TrackRecordChanges is also 1, the external change detection system will scan this entity for changes made outside the MJ framework (direct SQL, third-party tools, etc.) and replay them through Save() to create proper RecordChange audit entries. Default is 0 (opt-out) because most entities, especially __mj schema metadata tables, are managed by migrations/CodeGen and should not be scanned.
83607
84047
  */},{key:"DetectExternalChanges",get:function get(){return this.Get('DetectExternalChanges');},set:function set(value){this.Set('DetectExternalChanges',value);}/**
83608
84048
  * * Field Name: ExternalDataSourceID
83609
- * * Display Name: External Data Source ID
84049
+ * * Display Name: External Data Source
83610
84050
  * * SQL Data Type: uniqueidentifier
83611
84051
  * * Related Entity/Foreign Key: MJ: External Data Sources (vwExternalDataSources.ID)
83612
84052
  */},{key:"ExternalDataSourceID",get:function get(){return this.Get('ExternalDataSourceID');},set:function set(value){this.Set('ExternalDataSourceID',value);}/**
@@ -83615,6 +84055,29 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83615
84055
  * * SQL Data Type: nvarchar(255)
83616
84056
  * * Description: Remote object name (table / view / collection) on the external system that backs this entity. Resolved against the data source DefaultSchema/DefaultDatabase when unqualified. Only meaningful when ExternalDataSourceID is set.
83617
84057
  */},{key:"ExternalObjectName",get:function get(){return this.Get('ExternalObjectName');},set:function set(value){this.Set('ExternalObjectName',value);}/**
84058
+ * * Field Name: GeneratedBaseViewName
84059
+ * * Display Name: Generated Base View Name
84060
+ * * SQL Data Type: nvarchar(255)
84061
+ * * Description: When set, CodeGen generates the entity's full base view under THIS name instead of BaseView, and the application owns BaseView — which is expected to wrap it (SELECT g.*, <extras> FROM <GeneratedBaseViewName> g). This gives an entity a custom base view WITHOUT inheriting the generated SQL: related-entity display joins, geo columns and recursive root-ID columns keep regenerating underneath, so a foreign key added later still appears. NULL (the default, and every pre-existing row) means the previous all-or-nothing behaviour: BaseViewGenerated alone decides whether CodeGen writes BaseView, and there is no second view. BaseView remains the public surface — entity field discovery, permissions and the generated CRUD procedures all target it. SQL SERVER ONLY: layering relies on sp_refreshview to re-resolve the application-owned outer view's SELECT * against a regenerated inner view. PostgreSQL freezes a view's column list at creation and has no refresh equivalent, so CodeGen rejects this column on PostgreSQL rather than let the outer view go silently stale.
84062
+ */},{key:"GeneratedBaseViewName",get:function get(){return this.Get('GeneratedBaseViewName');},set:function set(value){this.Set('GeneratedBaseViewName',value);}/**
84063
+ * * Field Name: AllowDirectSQLInsert
84064
+ * * Display Name: Allow Direct SQL Insert
84065
+ * * SQL Data Type: bit
84066
+ * * Default Value: 0
84067
+ * * Description: When 1, this entity may be populated by INSERT statements that do not go through BaseEntity.Save() — bulk loads, ETL/integration sync, or rows created as a side effect of a stored procedure. Default 0, meaning every insert is expected to flow through BaseEntity so that record-change tracking, entity actions, validation and cache invalidation all run. This column DECLARES intent for the code paths and tooling that consult it; it does not and cannot prevent anyone from executing SQL. Requires TrackRecordChanges = 0 and TrustServerCacheCompletely = 0, because a direct insert produces neither an audit row nor a cache-invalidation event.
84068
+ */},{key:"AllowDirectSQLInsert",get:function get(){return this.Get('AllowDirectSQLInsert');},set:function set(value){this.Set('AllowDirectSQLInsert',value);}/**
84069
+ * * Field Name: AllowDirectSQLUpdate
84070
+ * * Display Name: Allow Direct SQL Update
84071
+ * * SQL Data Type: bit
84072
+ * * Default Value: 0
84073
+ * * Description: When 1, this entity may be modified by UPDATE statements that do not go through BaseEntity.Save() — bulk backfills, integration sync, or maintenance routines. Default 0, meaning every update is expected to flow through BaseEntity so that record-change tracking, entity actions, validation and cache invalidation all run. This column DECLARES intent for the code paths and tooling that consult it; it does not and cannot prevent anyone from executing SQL. Requires TrackRecordChanges = 0 and TrustServerCacheCompletely = 0, because a direct update produces neither an audit row nor a cache-invalidation event.
84074
+ */},{key:"AllowDirectSQLUpdate",get:function get(){return this.Get('AllowDirectSQLUpdate');},set:function set(value){this.Set('AllowDirectSQLUpdate',value);}/**
84075
+ * * Field Name: AllowDirectSQLDelete
84076
+ * * Display Name: Allow Direct SQL Delete
84077
+ * * SQL Data Type: bit
84078
+ * * Default Value: 0
84079
+ * * Description: When 1, this entity may have rows removed by DELETE statements that do not go through BaseEntity.Delete() — purge and retention routines, or integration sync reconciling a remote source. Default 0, meaning every delete is expected to flow through BaseEntity so that record-change tracking, entity actions, cascade handling and cache invalidation all run. This column DECLARES intent for the code paths and tooling that consult it; it does not and cannot prevent anyone from executing SQL. Requires TrackRecordChanges = 0 and TrustServerCacheCompletely = 0, and additionally requires DeleteType = 'Hard' — a direct DELETE removes the row outright rather than setting DeletedAt, which would defeat soft delete.
84080
+ */},{key:"AllowDirectSQLDelete",get:function get(){return this.Get('AllowDirectSQLDelete');},set:function set(value){this.Set('AllowDirectSQLDelete',value);}/**
83618
84081
  * * Field Name: CodeName
83619
84082
  * * Display Name: Code Name
83620
84083
  * * SQL Data Type: nvarchar(MAX)
@@ -83876,9 +84339,10 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83876
84339
  * * Possible Values
83877
84340
  * * Entity Field
83878
84341
  * * Entity Object
84342
+ * * Entity Object Data
83879
84343
  * * Script
83880
84344
  * * Static
83881
- * * Description: Type of the value, which can be Static, Entity Object, or Script.
84345
+ * * Description: How the parameter value is produced at invocation time. Static = the literal Value (parsed as JSON when it parses). Entity Object = the live BaseEntity instance, for actions that call entity methods. Entity Object Data = entity.GetAll(), a plain object - use this for any action that SERIALIZES the value, such as the Data payload of Execute Agent, because a BaseEntity serializes to {} (its fields are getters, not enumerable own properties). Entity Field = the named field's value. Script = evaluated expression with the entity in scope.
83882
84346
  */},{key:"ValueType",get:function get(){return this.Get('ValueType');},set:function set(value){this.Set('ValueType',value);}/**
83883
84347
  * * Field Name: Value
83884
84348
  * * Display Name: Value
@@ -83900,6 +84364,11 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83900
84364
  * * SQL Data Type: datetimeoffset
83901
84365
  * * Default Value: getutcdate()
83902
84366
  */},{key:"__mj_UpdatedAt",get:function get(){return this.Get('__mj_UpdatedAt');}/**
84367
+ * * Field Name: LogValue
84368
+ * * Display Name: Log Value
84369
+ * * SQL Data Type: bit
84370
+ * * Description: Optional per-binding override of ActionParam.LogValue. NULL (the default) inherits the parameter definition. Set to 0 when this particular binding passes something sensitive through a parameter that is ordinarily safe to log - a message body through a generic Text parameter, for instance. Cannot re-enable logging for a value type the hard rule suppresses.
84371
+ */},{key:"LogValue",get:function get(){return this.Get('LogValue');},set:function set(value){this.Set('LogValue',value);}/**
83903
84372
  * * Field Name: EntityAction
83904
84373
  * * Display Name: Entity Action
83905
84374
  * * SQL Data Type: nvarchar(425)
@@ -83928,11 +84397,22 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83928
84397
  * @method
83929
84398
  * @override
83930
84399
  */function(){var _Load182=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee196(ID,EntityRelationshipsToLoad){var compositeKey;return _regenerator().w(function(_context196){while(1)switch(_context196.n){case 0:compositeKey=new dist/* CompositeKey */.BT8();compositeKey.KeyValuePairs.push({FieldName:'ID',Value:ID});_context196.n=1;return _superPropGet(MJEntityActionEntity,"InnerLoad",this,3)([compositeKey,EntityRelationshipsToLoad]);case 1:return _context196.a(2,_context196.v);}},_callee196,this);}));function Load(_x379,_x380){return _Load182.apply(this,arguments);}return Load;}()/**
84400
+ * Validate() method override for MJ: Entity Actions entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
84401
+ * * Table-Level: Both Scope Entity and Scope Record must be provided together, or both must be left blank. You cannot specify one without the other.
84402
+ * @public
84403
+ * @method
84404
+ * @override
84405
+ */)},{key:"Validate",value:function Validate(){var result=_superPropGet(MJEntityActionEntity,"Validate",this,3)([]);this.ValidateScopeEntityAndRecordCoexistence(result);result.Success=result.Success&&result.Errors.length===0;return result;}/**
84406
+ * Both Scope Entity and Scope Record must be provided together, or both must be left blank. You cannot specify one without the other.
84407
+ * @param result - the ValidationResult object to add any errors or warnings to
84408
+ * @public
84409
+ * @method
84410
+ */},{key:"ValidateScopeEntityAndRecordCoexistence",value:function ValidateScopeEntityAndRecordCoexistence(result){if(this.ScopeEntityID==null&&this.ScopeRecordID!=null||this.ScopeEntityID!=null&&this.ScopeRecordID==null){result.Errors.push(new dist/* ValidationErrorInfo */.Omh("ScopeEntityID","Scope Entity and Scope Record must either both be specified or both be empty.",this.ScopeEntityID,dist/* ValidationErrorType */.wX$.Failure));}}/**
83931
84411
  * * Field Name: EntityID
83932
84412
  * * Display Name: Entity ID
83933
84413
  * * SQL Data Type: uniqueidentifier
83934
84414
  * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
83935
- */)},{key:"EntityID",get:function get(){return this.Get('EntityID');},set:function set(value){this.Set('EntityID',value);}/**
84415
+ */},{key:"EntityID",get:function get(){return this.Get('EntityID');},set:function set(value){this.Set('EntityID',value);}/**
83936
84416
  * * Field Name: ActionID
83937
84417
  * * Display Name: Action ID
83938
84418
  * * SQL Data Type: uniqueidentifier
@@ -83964,6 +84444,34 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83964
84444
  * * SQL Data Type: uniqueidentifier
83965
84445
  * * Default Value: newsequentialid()
83966
84446
  */},{key:"ID",get:function get(){return this.Get('ID');},set:function set(value){this.Set('ID',value);}/**
84447
+ * * Field Name: Sequence
84448
+ * * Display Name: Sequence
84449
+ * * SQL Data Type: int
84450
+ * * Default Value: 0
84451
+ * * Description: Execution order when multiple Entity Actions are bound to the same entity and invocation type. Lower runs first; ties fall back to creation order. Defaults to 0 so existing rows are unaffected.
84452
+ */},{key:"Sequence",get:function get(){return this.Get('Sequence');},set:function set(value){this.Set('Sequence',value);}/**
84453
+ * * Field Name: ScopeEntityID
84454
+ * * Display Name: Scope Entity ID
84455
+ * * SQL Data Type: uniqueidentifier
84456
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
84457
+ * * Description: Optional. Together with ScopeRecordID, narrows this Entity Action to records related to ONE specific record - for example a single Deal Type, Contract Type, Pipeline or Company - rather than every record of EntityID. NULL (the default) means the action applies to all records, which is the pre-existing behaviour. How a scope record relates to the subject record is resolved by the app that owns the scope entity; the framework only stores and filters on the pair.
84458
+ */},{key:"ScopeEntityID",get:function get(){return this.Get('ScopeEntityID');},set:function set(value){this.Set('ScopeEntityID',value);}/**
84459
+ * * Field Name: ScopeRecordID
84460
+ * * Display Name: Scope Record ID
84461
+ * * SQL Data Type: nvarchar(450)
84462
+ * * Description: Optional. The primary key of the scope record, as text, paired with ScopeEntityID. Both columns are NULL or both are set (CK_EntityAction_Scope). Lets a configuration record such as a Deal Type surface "the workflows bound to me" as a real relationship rather than something buried in filter code.
84463
+ */},{key:"ScopeRecordID",get:function get(){return this.Get('ScopeRecordID');},set:function set(value){this.Set('ScopeRecordID',value);}/**
84464
+ * * Field Name: LoggingMode
84465
+ * * Display Name: Logging Mode
84466
+ * * SQL Data Type: nvarchar(20)
84467
+ * * Default Value: All
84468
+ * * Value List Type: List
84469
+ * * Possible Values
84470
+ * * All
84471
+ * * FailuresOnly
84472
+ * * None
84473
+ * * Description: How much of this binding's activity reaches ActionExecutionLog. All (default) writes a row per invocation. FailuresOnly writes only runs that did not succeed - the right setting for a high-frequency binding on a busy entity, where the successful runs are noise. None disables logging for the binding entirely and should be rare, because it also removes the failure record.
84474
+ */},{key:"LoggingMode",get:function get(){return this.Get('LoggingMode');},set:function set(value){this.Set('LoggingMode',value);}/**
83967
84475
  * * Field Name: Entity
83968
84476
  * * Display Name: Entity
83969
84477
  * * SQL Data Type: nvarchar(255)
@@ -83971,7 +84479,11 @@ _context176.p=1;_context176.n=2;return provider.BeginTransaction();case 2:_conte
83971
84479
  * * Field Name: Action
83972
84480
  * * Display Name: Action
83973
84481
  * * SQL Data Type: nvarchar(425)
83974
- */},{key:"Action",get:function get(){return this.Get('Action');}}]);}(dist/* BaseEntity */.HCJ);MJEntityActionEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: Entity Actions')],MJEntityActionEntity);/**
84482
+ */},{key:"Action",get:function get(){return this.Get('Action');}/**
84483
+ * * Field Name: ScopeEntity
84484
+ * * Display Name: Scope Entity
84485
+ * * SQL Data Type: nvarchar(255)
84486
+ */},{key:"ScopeEntity",get:function get(){return this.Get('ScopeEntity');}}]);}(dist/* BaseEntity */.HCJ);MJEntityActionEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ,'MJ: Entity Actions')],MJEntityActionEntity);/**
83975
84487
  * MJ: Entity AI Actions - strongly typed entity sub-class
83976
84488
  * * Schema: __mj
83977
84489
  * * Base Table: EntityAIAction
@@ -101663,11 +102175,12 @@ _context372.p=1;_context372.n=2;return provider.BeginTransaction();case 2:_conte
101663
102175
  * @override
101664
102176
  */function(){var _Load366=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee384(ID,EntityRelationshipsToLoad){var compositeKey;return _regenerator().w(function(_context384){while(1)switch(_context384.n){case 0:compositeKey=new dist/* CompositeKey */.BT8();compositeKey.KeyValuePairs.push({FieldName:'ID',Value:ID});_context384.n=1;return _superPropGet(MJUserViewRunDetailEntity,"InnerLoad",this,3)([compositeKey,EntityRelationshipsToLoad]);case 1:return _context384.a(2,_context384.v);}},_callee384,this);}));function Load(_x751,_x752){return _Load366.apply(this,arguments);}return Load;}()/**
101665
102177
  * * Field Name: ID
102178
+ * * Display Name: ID
101666
102179
  * * SQL Data Type: uniqueidentifier
101667
102180
  * * Default Value: newsequentialid()
101668
102181
  */)},{key:"ID",get:function get(){return this.Get('ID');},set:function set(value){this.Set('ID',value);}/**
101669
102182
  * * Field Name: UserViewRunID
101670
- * * Display Name: User View Run ID
102183
+ * * Display Name: User View Run
101671
102184
  * * SQL Data Type: uniqueidentifier
101672
102185
  * * Related Entity/Foreign Key: MJ: User View Runs (vwUserViewRuns.ID)
101673
102186
  */},{key:"UserViewRunID",get:function get(){return this.Get('UserViewRunID');},set:function set(value){this.Set('UserViewRunID',value);}/**
@@ -101686,6 +102199,10 @@ _context372.p=1;_context372.n=2;return provider.BeginTransaction();case 2:_conte
101686
102199
  * * SQL Data Type: datetimeoffset
101687
102200
  * * Default Value: getutcdate()
101688
102201
  */},{key:"__mj_UpdatedAt",get:function get(){return this.Get('__mj_UpdatedAt');}/**
102202
+ * * Field Name: UserViewRun
102203
+ * * Display Name: User View Run Name
102204
+ * * SQL Data Type: nvarchar(100)
102205
+ */},{key:"UserViewRun",get:function get(){return this.Get('UserViewRun');}/**
101689
102206
  * * Field Name: UserViewID
101690
102207
  * * Display Name: User View
101691
102208
  * * SQL Data Type: uniqueidentifier
@@ -104741,7 +105258,7 @@ var ViewInfo = /*#__PURE__*/function () {
104741
105258
  while (1) switch (_context0.n) {
104742
105259
  case 0:
104743
105260
  _context0.n = 1;
104744
- return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 964));
105261
+ return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 791));
104745
105262
  case 1:
104746
105263
  _yield$import = _context0.v;
104747
105264
  UserViewEngine = _yield$import.UserViewEngine;
@@ -104786,7 +105303,7 @@ var ViewInfo = /*#__PURE__*/function () {
104786
105303
  while (1) switch (_context1.n) {
104787
105304
  case 0:
104788
105305
  _context1.n = 1;
104789
- return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 964));
105306
+ return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 791));
104790
105307
  case 1:
104791
105308
  _yield$import2 = _context1.v;
104792
105309
  UserViewEngine = _yield$import2.UserViewEngine;
@@ -107585,8 +108102,8 @@ var MJQueryEntityExtended = /*#__PURE__*/function (_MJQueryEntity) {
107585
108102
  }(MJQueryEntity);
107586
108103
  MJQueryEntityExtended = MJQueryEntityExtended_decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HCJ, 'MJ: Queries')], MJQueryEntityExtended);
107587
108104
 
107588
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js
107589
- var BehaviorSubject = __webpack_require__(156);
108105
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js
108106
+ var BehaviorSubject = __webpack_require__(562);
107590
108107
  ;// ../../MJCoreEntities/dist/engines/artifact-mime-resolver.js
107591
108108
  function artifact_mime_resolver_toConsumableArray(r) { return artifact_mime_resolver_arrayWithoutHoles(r) || artifact_mime_resolver_iterableToArray(r) || artifact_mime_resolver_unsupportedIterableToArray(r) || artifact_mime_resolver_nonIterableSpread(); }
107592
108109
  function artifact_mime_resolver_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -113651,7 +114168,8 @@ var UserInfoEngine = UserInfoEngine_1 = /*#__PURE__*/function (_BaseEngine) {
113651
114168
  return workspaces.length > 0 ? workspaces[0] : null;
113652
114169
  }
113653
114170
  /**
113654
- * Get all applications enabled for the current user, ordered by sequence then application name
114171
+ * Get all applications enabled for the current user, ordered by sequence, then the
114172
+ * application's DefaultSequence, then application name
113655
114173
  */
113656
114174
  }, {
113657
114175
  key: "UserApplications",
@@ -113661,13 +114179,39 @@ var UserInfoEngine = UserInfoEngine_1 = /*#__PURE__*/function (_BaseEngine) {
113661
114179
  return this.GetConfigData('_UserApplications').filter(function (ua) {
113662
114180
  return (0,MJGlobal_dist/* UUIDsEqual */.jd)(ua.UserID, _this6._loadedForUserId);
113663
114181
  }).sort(function (a, b) {
113664
- // Sort by Sequence first, then by Application name
113665
- if (a.Sequence !== b.Sequence) {
113666
- return a.Sequence - b.Sequence;
113667
- }
113668
- return (a.Application || '').localeCompare(b.Application || '');
114182
+ return _this6.compareUserApplications(a, b);
113669
114183
  });
113670
114184
  }
114185
+ /**
114186
+ * Canonical ordering for a user's UserApplication rows: user-owned `Sequence` first,
114187
+ * ties broken by the application's `DefaultSequence` (Home ships at -1, so it wins a
114188
+ * tie it didn't ask for), then application name as the final stable tie-break.
114189
+ * Duplicate Sequences are reachable without user action (new rows default to 0 and
114190
+ * `nextUserApplicationSequence` returns 0 for a user with no active rows), so the
114191
+ * tie-break must be deliberate rather than incidental.
114192
+ */
114193
+ }, {
114194
+ key: "compareUserApplications",
114195
+ value: function compareUserApplications(a, b) {
114196
+ if (a.Sequence !== b.Sequence) {
114197
+ return a.Sequence - b.Sequence;
114198
+ }
114199
+ var defaultSequenceDiff = this.applicationDefaultSequence(a.ApplicationID) - this.applicationDefaultSequence(b.ApplicationID);
114200
+ if (defaultSequenceDiff !== 0) {
114201
+ return defaultSequenceDiff;
114202
+ }
114203
+ return (a.Application || '').localeCompare(b.Application || '');
114204
+ }
114205
+ /**
114206
+ * The application's DefaultSequence from metadata, or the schema default (100) when
114207
+ * the application is not found.
114208
+ */
114209
+ }, {
114210
+ key: "applicationDefaultSequence",
114211
+ value: function applicationDefaultSequence(applicationId) {
114212
+ var _this$GetApplicationI, _this$GetApplicationI2;
114213
+ return (_this$GetApplicationI = (_this$GetApplicationI2 = this.GetApplicationInfo(applicationId)) === null || _this$GetApplicationI2 === void 0 ? void 0 : _this$GetApplicationI2.DefaultSequence) !== null && _this$GetApplicationI !== void 0 ? _this$GetApplicationI : 100;
114214
+ }
113671
114215
  /**
113672
114216
  * Get all favorites for the current user, ordered by creation date (newest first)
113673
114217
  */
@@ -113737,13 +114281,11 @@ var UserInfoEngine = UserInfoEngine_1 = /*#__PURE__*/function (_BaseEngine) {
113737
114281
  }, {
113738
114282
  key: "GetUserApplicationsForUser",
113739
114283
  value: function GetUserApplicationsForUser(userId) {
114284
+ var _this9 = this;
113740
114285
  return (this._UserApplications || []).filter(function (ua) {
113741
114286
  return (0,MJGlobal_dist/* UUIDsEqual */.jd)(ua.UserID, userId);
113742
114287
  }).sort(function (a, b) {
113743
- if (a.Sequence !== b.Sequence) {
113744
- return a.Sequence - b.Sequence;
113745
- }
113746
- return (a.Application || '').localeCompare(b.Application || '');
114288
+ return _this9.compareUserApplications(a, b);
113747
114289
  });
113748
114290
  }
113749
114291
  // ========================================================================
@@ -114635,10 +115177,10 @@ var UserInfoEngine = UserInfoEngine_1 = /*#__PURE__*/function (_BaseEngine) {
114635
115177
  }, {
114636
115178
  key: "NotificationPreferences",
114637
115179
  get: function get() {
114638
- var _this9 = this;
115180
+ var _this0 = this;
114639
115181
  if (!this._loadedForUserId) return [];
114640
115182
  return this.GetConfigData('_UserNotificationPreferences').filter(function (p) {
114641
- return (0,MJGlobal_dist/* UUIDsEqual */.jd)(p.UserID, _this9._loadedForUserId);
115183
+ return (0,MJGlobal_dist/* UUIDsEqual */.jd)(p.UserID, _this0._loadedForUserId);
114642
115184
  });
114643
115185
  }
114644
115186
  }, {
@@ -115578,7 +116120,7 @@ var ApplicationSettingEngine = /*#__PURE__*/function (_BaseEngine) {
115578
116120
  ApplicationSettingEngine = ApplicationSettingEngine_decorate([(0,dist/* RegisterForStartup */.imK)()], ApplicationSettingEngine);
115579
116121
 
115580
116122
  // EXTERNAL MODULE: ../../MJCoreEntities/dist/engines/UserViewEngine.js
115581
- var UserViewEngine = __webpack_require__(964);
116123
+ var UserViewEngine = __webpack_require__(791);
115582
116124
  ;// ../../MJCoreEntities/dist/engines/FileStorageEngine.js
115583
116125
  /* unused harmony import specifier */ var FileStorageEngine_BaseEngine;
115584
116126
  /* unused harmony import specifier */ var FileStorageEngine_UUIDsEqual;
@@ -124228,7 +124770,7 @@ LoadPermissionEntityExtensions();
124228
124770
 
124229
124771
  /***/ },
124230
124772
 
124231
- /***/ 198
124773
+ /***/ 899
124232
124774
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
124233
124775
 
124234
124776
  "use strict";
@@ -124256,7 +124798,7 @@ __webpack_require__.d(__webpack_exports__, {
124256
124798
  gZ: () => (/* reexport */ uuidv4)
124257
124799
  });
124258
124800
 
124259
- // UNUSED EXPORTS: ALLOWED_SQL_FUNCTIONS, BuildCronExpression, CRON_DAY_NAMES, ClassFactory, ClassIsOptionalKeyedSpecialization, ClassRegistration, ClassRequiresSubclass, CleanJSON, CleanJavaScript, ConvertMarkdownStringToHtmlList, CopyScalarsAndArrays, DANGEROUS_SQL_KEYWORDS, DEFAULT_RICH_TEXT_SCAN_LENGTH, DeepDiffer, DefaultCronSchedule, DeprecationWarningManager, DescribeCronExpression, DiffChangeType, ENCRYPTED_SENTINEL, EscapeHTML, FULL_QUERY_ALLOWED_KEYWORDS, FieldRulesEvaluator, FieldTransformEngine, FormatTimeOfDay, GetClassInheritance, GetClassName, GetFieldTransform, GetFullClassHierarchy, GetRootClass, GetSuperclass, HighlightSearchMatches, InvokeManualResize, IsClassConstructor, IsDescendantClassOf, IsEncryptedSentinel, IsOnlyTimezoneShift, IsPlausibleCronExpression, IsRootClass, IsSubclassOf, IsValidUUID, IsValueEncrypted, JSONValidator, KeyedSerialTaskQueue, MJEvent, MJGlobalProperty, OPTIONAL_KEYED_SPECIALIZATION_KEY, ObjectCache, ObjectCacheEntry, Ordinal, ParseCronExpression, ParseJSONRecursive, REQUIRES_SUBCLASS_KEY, RegisterClassEx, RegisterFieldTransform, SafeExpressionEvaluator, ShutdownRegistry, ToJSONSafe, adjustCasing, compareStringsByLine, convertCamelCaseToHaveSpaces, createDisplayName, defaultExpressionEvaluator, detectRichTextFormat, ensureRegExp, ensureRegExps, generatePluralName, getIrregularPlural, getValueAtPath, matchesAllPatterns, matchesAnyPattern, parsePattern, parsePatterns, replaceAllSpaces, resolveMappingRef, resolveValueMapping, stripTrailingChars, stripWhitespace
124801
+ // UNUSED EXPORTS: ALLOWED_SQL_FUNCTIONS, BLOCKED_SYSTEM_OBJECT_PATTERNS, BuildCronExpression, CRON_DAY_NAMES, ClassFactory, ClassIsOptionalKeyedSpecialization, ClassRegistration, ClassRequiresSubclass, CleanJSON, CleanJavaScript, ConvertMarkdownStringToHtmlList, CopyScalarsAndArrays, DANGEROUS_SQL_KEYWORDS, DEFAULT_RICH_TEXT_SCAN_LENGTH, DeepDiffer, DefaultCronSchedule, DeprecationWarningManager, DescribeCronExpression, DiffChangeType, ENCRYPTED_SENTINEL, EscapeHTML, FULL_QUERY_ALLOWED_KEYWORDS, FieldRulesEvaluator, FieldTransformEngine, FormatTimeOfDay, GetClassInheritance, GetClassName, GetFieldTransform, GetFullClassHierarchy, GetRootClass, GetSuperclass, HighlightSearchMatches, InvokeManualResize, IsClassConstructor, IsDescendantClassOf, IsEncryptedSentinel, IsOnlyTimezoneShift, IsPlausibleCronExpression, IsRootClass, IsSubclassOf, IsValidUUID, IsValueEncrypted, JSONValidator, KeyedSerialTaskQueue, MJEvent, MJGlobalProperty, OPTIONAL_KEYED_SPECIALIZATION_KEY, ObjectCache, ObjectCacheEntry, Ordinal, ParseCronExpression, ParseJSONRecursive, REQUIRES_SUBCLASS_KEY, RegisterClassEx, RegisterFieldTransform, SafeExpressionEvaluator, ShutdownRegistry, ToJSONSafe, adjustCasing, compareStringsByLine, convertCamelCaseToHaveSpaces, createDisplayName, defaultExpressionEvaluator, detectRichTextFormat, ensureRegExp, ensureRegExps, generatePluralName, getIrregularPlural, getValueAtPath, matchesAllPatterns, matchesAnyPattern, parsePattern, parsePatterns, replaceAllSpaces, resolveMappingRef, resolveValueMapping, stripTrailingChars, stripWhitespace
124260
124802
 
124261
124803
  ;// ../../MJGlobal/dist/ClassUtils.js
124262
124804
  /**
@@ -125297,10 +125839,10 @@ var MJEventType = {
125297
125839
  DisplaySimpleNotificationRequest: 'DisplaySimpleNotificationRequest',
125298
125840
  TenantChanged: 'TenantChanged'
125299
125841
  };
125300
- // EXTERNAL MODULE: ../../../node_modules/uuid/dist/v4.js + 3 modules
125301
- var v4 = __webpack_require__(718);
125302
- // EXTERNAL MODULE: ../../../node_modules/lodash/lodash.js
125303
- var lodash = __webpack_require__(637);
125842
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.js + 3 modules
125843
+ var v4 = __webpack_require__(289);
125844
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/lodash.js
125845
+ var lodash = __webpack_require__(923);
125304
125846
  ;// ../../MJGlobal/dist/util.js
125305
125847
  /* unused harmony import specifier */ var _;
125306
125848
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || util_unsupportedIterableToArray(r, e) || _nonIterableRest(); }
@@ -129117,6 +129659,25 @@ var FULL_QUERY_ALLOWED_KEYWORDS = [
129117
129659
  // standalone SELECT statement, so allowing FOR in full-query context is safe.
129118
129660
  // (FOR UPDATE remains blocked via the independent UPDATE keyword.)
129119
129661
  'FOR'];
129662
+ /**
129663
+ * System catalog / metadata objects that must never be referenced from a user-supplied
129664
+ * expression or ad-hoc query, in ANY context (including `full_query`). These sit outside
129665
+ * MemberJunction's entity-permission model, so allowing them turns a validated SELECT into
129666
+ * a schema-enumeration and credential-exfiltration primitive
129667
+ * (e.g. `SELECT name, password_hash FROM sys.sql_logins`,
129668
+ * `SELECT * FROM INFORMATION_SCHEMA.COLUMNS`, `SELECT * FROM pg_catalog.pg_authid`).
129669
+ * String literals are stripped before this check runs, so a literal value like `'sys.x'` is safe.
129670
+ */
129671
+ var BLOCKED_SYSTEM_OBJECT_PATTERNS = [/\bSYS\s*\.\s*\w/i,
129672
+ // SQL Server system catalog schema: sys.sql_logins, sys.objects, sys.fn_*, ...
129673
+ /\bINFORMATION_SCHEMA\b/i,
129674
+ // ANSI catalog views — schema/table/column enumeration
129675
+ /\bSYSLOGINS\b/i,
129676
+ // legacy SQL Server logins view
129677
+ /\bPG_CATALOG\s*\./i,
129678
+ // PostgreSQL system catalog schema
129679
+ /\bPG_(AUTHID|SHADOW|USER|ROLES)\b/i // PostgreSQL credential / role catalogs
129680
+ ];
129120
129681
  /**
129121
129682
  * Safe SQL functions allowed in expressions, organized by category
129122
129683
  */
@@ -129289,15 +129850,29 @@ var SQLExpressionValidator = /*#__PURE__*/function (_BaseSingleton) {
129289
129850
  };
129290
129851
  }
129291
129852
  }
129292
- // Check statement terminator (prevents multi-statement injection).
129293
- // For full_query context, strip comments first (a trailing semicolon may be followed by
129294
- // an inline comment like `ORDER BY x DESC; -- highest first`), then strip the trailing
129295
- // semicolon. Only reject if semicolons remain mid-statement, indicating injection.
129853
+ // Block references to database system catalogs / metadata objects in ALL contexts
129854
+ // (including full_query). These live outside MemberJunction's entity-permission model, so
129855
+ // permitting them turns a validated SELECT into a schema-enumeration / credential-exfiltration
129856
+ // primitive. String literals were already stripped upstream, so legitimate literal values are safe.
129296
129857
  } catch (err) {
129297
129858
  _iterator.e(err);
129298
129859
  } finally {
129299
129860
  _iterator.f();
129300
129861
  }
129862
+ for (var _i = 0, _BLOCKED_SYSTEM_OBJEC = BLOCKED_SYSTEM_OBJECT_PATTERNS; _i < _BLOCKED_SYSTEM_OBJEC.length; _i++) {
129863
+ var sysPattern = _BLOCKED_SYSTEM_OBJEC[_i];
129864
+ if (sysPattern.test(textToCheck)) {
129865
+ return {
129866
+ valid: false,
129867
+ error: 'Access to database system catalogs / metadata objects is not allowed',
129868
+ trigger: 'system-object'
129869
+ };
129870
+ }
129871
+ }
129872
+ // Check statement terminator (prevents multi-statement injection).
129873
+ // For full_query context, strip comments first (a trailing semicolon may be followed by
129874
+ // an inline comment like `ORDER BY x DESC; -- highest first`), then strip the trailing
129875
+ // semicolon. Only reject if semicolons remain mid-statement, indicating injection.
129301
129876
  var textForSemicolonCheck = isFullQuery ? this.stripSQLComments(expression).replace(/;\s*$/, '') // strip comments then trailing semicolon
129302
129877
  : expression;
129303
129878
  if (textForSemicolonCheck.includes(';')) {
@@ -130067,10 +130642,10 @@ function IsValueEncrypted(value, encryptionMarker) {
130067
130642
  function IsEncryptedSentinel(value) {
130068
130643
  return value === ENCRYPTED_SENTINEL;
130069
130644
  }
130070
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/Subject.js + 1 modules
130071
- var Subject = __webpack_require__(49);
130072
- // EXTERNAL MODULE: ../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js
130073
- var ReplaySubject = __webpack_require__(107);
130645
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js + 1 modules
130646
+ var Subject = __webpack_require__(291);
130647
+ // EXTERNAL MODULE: ../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js
130648
+ var ReplaySubject = __webpack_require__(205);
130074
130649
  ;// ../../MJGlobal/dist/ObjectCache.js
130075
130650
  function ObjectCache_typeof(o) { "@babel/helpers - typeof"; return ObjectCache_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, ObjectCache_typeof(o); }
130076
130651
  function ObjectCache_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, ObjectCache_toPropertyKey(o.key), o); } }
@@ -130438,7 +131013,7 @@ function RegisterClassEx(baseClass) {
130438
131013
 
130439
131014
  /***/ },
130440
131015
 
130441
- /***/ 823
131016
+ /***/ 198
130442
131017
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
130443
131018
 
130444
131019
  "use strict";
@@ -130859,7 +131434,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
130859
131434
 
130860
131435
  /***/ },
130861
131436
 
130862
- /***/ 718
131437
+ /***/ 289
130863
131438
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
130864
131439
 
130865
131440
  "use strict";
@@ -130869,11 +131444,11 @@ __webpack_require__.d(__webpack_exports__, {
130869
131444
  A: () => (/* binding */ dist_v4)
130870
131445
  });
130871
131446
 
130872
- ;// ../../../node_modules/uuid/dist/native.js
131447
+ ;// ../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/native.js
130873
131448
  const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
130874
131449
  /* harmony default export */ const dist_native = ({ randomUUID });
130875
131450
 
130876
- ;// ../../../node_modules/uuid/dist/rng.js
131451
+ ;// ../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/rng.js
130877
131452
  let getRandomValues;
130878
131453
  const rnds8 = new Uint8Array(16);
130879
131454
  function rng() {
@@ -130886,7 +131461,7 @@ function rng() {
130886
131461
  return getRandomValues(rnds8);
130887
131462
  }
130888
131463
 
130889
- ;// ../../../node_modules/uuid/dist/stringify.js
131464
+ ;// ../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/stringify.js
130890
131465
  /* unused harmony import specifier */ var validate;
130891
131466
 
130892
131467
  const byteToHex = [];
@@ -130924,7 +131499,7 @@ function stringify(arr, offset = 0) {
130924
131499
  }
130925
131500
  /* harmony default export */ const dist_stringify = ((/* unused pure expression or super */ null && (stringify)));
130926
131501
 
130927
- ;// ../../../node_modules/uuid/dist/v4.js
131502
+ ;// ../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.js
130928
131503
 
130929
131504
 
130930
131505
 
@@ -131231,6 +131806,7 @@ __webpack_require__.r(__webpack_exports__);
131231
131806
 
131232
131807
  // EXPORTS
131233
131808
  __webpack_require__.d(__webpack_exports__, {
131809
+ ApplyStyleOverrides: () => (/* reexport */ ApplyStyleOverrides),
131234
131810
  BuildStylesFromTheme: () => (/* reexport */ BuildStylesFromTheme),
131235
131811
  CacheManager: () => (/* reexport */ CacheManager),
131236
131812
  ComponentCompiler: () => (/* reexport */ ComponentCompiler),
@@ -132643,27 +133219,45 @@ var LibraryLoader = /*#__PURE__*/function () {
132643
133219
  value: function () {
132644
133220
  var _loadLibrariesFromConfig = library_loader_asyncToGenerator(/*#__PURE__*/library_loader_regenerator().m(function _callee2(options, debug) {
132645
133221
  var _this = this;
132646
- var coreLibraries, corePromises, coreResults, React, ReactDOM, Babel, config, enabledLibraries, pluginLibraries, pluginPromises, pluginResults, libraries;
133222
+ var coreLibraries, reactLib, reactDOMLib, babelLib, React, phase2Promises, phase2Labels, phase2Results, ReactDOM, Babel, config, enabledLibraries, pluginLibraries, pluginPromises, pluginResults, libraries;
132647
133223
  return library_loader_regenerator().w(function (_context2) {
132648
133224
  while (1) switch (_context2.n) {
132649
133225
  case 0:
132650
133226
  coreLibraries = getCoreRuntimeLibraries(debug);
132651
- corePromises = coreLibraries.map(function (lib) {
132652
- return _this.loadScript(lib.cdnUrl, lib.globalVariable, debug, lib.fallbackCdnUrls);
132653
- });
132654
- _context2.n = 1;
132655
- return Promise.all(corePromises);
132656
- case 1:
132657
- coreResults = _context2.v;
132658
- React = coreResults.find(function (_, i) {
132659
- return coreLibraries[i].globalVariable === 'React';
133227
+ reactLib = coreLibraries.find(function (lib) {
133228
+ return lib.globalVariable === 'React';
132660
133229
  });
132661
- ReactDOM = coreResults.find(function (_, i) {
132662
- return coreLibraries[i].globalVariable === 'ReactDOM';
133230
+ reactDOMLib = coreLibraries.find(function (lib) {
133231
+ return lib.globalVariable === 'ReactDOM';
132663
133232
  });
132664
- Babel = coreResults.find(function (_, i) {
132665
- return coreLibraries[i].globalVariable === 'Babel';
133233
+ babelLib = coreLibraries.find(function (lib) {
133234
+ return lib.globalVariable === 'Babel';
132666
133235
  });
133236
+ if (!reactLib) {
133237
+ _context2.n = 2;
133238
+ break;
133239
+ }
133240
+ _context2.n = 1;
133241
+ return this.loadScript(reactLib.cdnUrl, reactLib.globalVariable, debug, reactLib.fallbackCdnUrls);
133242
+ case 1:
133243
+ React = _context2.v;
133244
+ case 2:
133245
+ phase2Promises = [];
133246
+ phase2Labels = [];
133247
+ if (reactDOMLib) {
133248
+ phase2Promises.push(this.loadScript(reactDOMLib.cdnUrl, reactDOMLib.globalVariable, debug, reactDOMLib.fallbackCdnUrls));
133249
+ phase2Labels.push('ReactDOM');
133250
+ }
133251
+ if (babelLib) {
133252
+ phase2Promises.push(this.loadScript(babelLib.cdnUrl, babelLib.globalVariable, debug, babelLib.fallbackCdnUrls));
133253
+ phase2Labels.push('Babel');
133254
+ }
133255
+ _context2.n = 3;
133256
+ return Promise.all(phase2Promises);
133257
+ case 3:
133258
+ phase2Results = _context2.v;
133259
+ ReactDOM = phase2Labels.indexOf('ReactDOM') >= 0 ? phase2Results[phase2Labels.indexOf('ReactDOM')] : undefined;
133260
+ Babel = phase2Labels.indexOf('Babel') >= 0 ? phase2Results[phase2Labels.indexOf('Babel')] : undefined;
132667
133261
  if (typeof window !== 'undefined') {
132668
133262
  if (React && !window.React) {
132669
133263
  window.React = React;
@@ -132700,9 +133294,9 @@ var LibraryLoader = /*#__PURE__*/function () {
132700
133294
  pluginPromises = pluginLibraries.map(function (lib) {
132701
133295
  return _this.loadScript(lib.cdnUrl, lib.globalVariable, debug, lib.fallbackCdnUrls);
132702
133296
  });
132703
- _context2.n = 2;
133297
+ _context2.n = 4;
132704
133298
  return Promise.all(pluginPromises);
132705
- case 2:
133299
+ case 4:
132706
133300
  pluginResults = _context2.v;
132707
133301
  libraries = {};
132708
133302
  pluginLibraries.forEach(function (lib, index) {
@@ -132715,7 +133309,7 @@ var LibraryLoader = /*#__PURE__*/function () {
132715
133309
  libraries: libraries
132716
133310
  });
132717
133311
  }
132718
- }, _callee2);
133312
+ }, _callee2, this);
132719
133313
  }));
132720
133314
  function loadLibrariesFromConfig(_x4, _x5) {
132721
133315
  return _loadLibrariesFromConfig.apply(this, arguments);
@@ -135027,11 +135621,11 @@ var ComponentRegistry = /*#__PURE__*/function () {
135027
135621
  }]);
135028
135622
  }();
135029
135623
  // EXTERNAL MODULE: ../../MJCore/dist/index.js + 88 modules
135030
- var dist = __webpack_require__(752);
135624
+ var dist = __webpack_require__(63);
135031
135625
  // EXTERNAL MODULE: ../../MJGlobal/dist/index.js + 24 modules
135032
- var MJGlobal_dist = __webpack_require__(198);
135626
+ var MJGlobal_dist = __webpack_require__(899);
135033
135627
  // EXTERNAL MODULE: ../../MJCoreEntities/dist/index.js + 66 modules
135034
- var MJCoreEntities_dist = __webpack_require__(148);
135628
+ var MJCoreEntities_dist = __webpack_require__(835);
135035
135629
  ;// ./dist/registry/component-registry-service.js
135036
135630
  function component_registry_service_typeof(o) { "@babel/helpers - typeof"; return component_registry_service_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, component_registry_service_typeof(o); }
135037
135631
  var _ComponentRegistryService;
@@ -135117,7 +135711,7 @@ var ComponentRegistryService = /*#__PURE__*/function () {
135117
135711
  }
135118
135712
  _context.p = 3;
135119
135713
  _context.n = 4;
135120
- return Promise.all(/* import() */[__webpack_require__.e(490), __webpack_require__.e(324)]).then(__webpack_require__.bind(__webpack_require__, 324));
135714
+ return Promise.all(/* import() */[__webpack_require__.e(456), __webpack_require__.e(324)]).then(__webpack_require__.bind(__webpack_require__, 324));
135121
135715
  case 4:
135122
135716
  graphqlModule = _context.v;
135123
135717
  GraphQLComponentRegistryClient = graphqlModule.GraphQLComponentRegistryClient;
@@ -137836,7 +138430,7 @@ var ComponentManager = /*#__PURE__*/function () {
137836
138430
  break;
137837
138431
  }
137838
138432
  _context0.n = 1;
137839
- return Promise.all(/* import() */[__webpack_require__.e(490), __webpack_require__.e(324)]).then(__webpack_require__.bind(__webpack_require__, 324));
138433
+ return Promise.all(/* import() */[__webpack_require__.e(456), __webpack_require__.e(324)]).then(__webpack_require__.bind(__webpack_require__, 324));
137840
138434
  case 1:
137841
138435
  _yield$import = _context0.v;
137842
138436
  GraphQLComponentRegistryClient = _yield$import.GraphQLComponentRegistryClient;
@@ -138391,7 +138985,7 @@ var ComponentHierarchyRegistrar = /*#__PURE__*/function () {
138391
138985
  return _context.a(2, null);
138392
138986
  case 1:
138393
138987
  _context.n = 2;
138394
- return Promise.all(/* import() */[__webpack_require__.e(490), __webpack_require__.e(324)]).then(__webpack_require__.bind(__webpack_require__, 324));
138988
+ return Promise.all(/* import() */[__webpack_require__.e(456), __webpack_require__.e(324)]).then(__webpack_require__.bind(__webpack_require__, 324));
138395
138989
  case 2:
138396
138990
  _yield$import = _context.v;
138397
138991
  GraphQLComponentRegistryClient = _yield$import.GraphQLComponentRegistryClient;
@@ -139186,6 +139780,12 @@ var reactRootManager = new ReactRootManager();
139186
139780
 
139187
139781
 
139188
139782
  ;// ./dist/utilities/component-styles.js
139783
+ function component_styles_typeof(o) { "@babel/helpers - typeof"; return component_styles_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, component_styles_typeof(o); }
139784
+ function component_styles_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
139785
+ function component_styles_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? component_styles_ownKeys(Object(t), !0).forEach(function (r) { component_styles_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : component_styles_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
139786
+ function component_styles_defineProperty(e, r, t) { return (r = component_styles_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
139787
+ function component_styles_toPropertyKey(t) { var i = component_styles_toPrimitive(t, "string"); return "symbol" == component_styles_typeof(i) ? i : i + ""; }
139788
+ function component_styles_toPrimitive(t, r) { if ("object" != component_styles_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != component_styles_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
139189
139789
  function component_styles_slicedToArray(r, e) { return component_styles_arrayWithHoles(r) || component_styles_iterableToArrayLimit(r, e) || component_styles_unsupportedIterableToArray(r, e) || component_styles_nonIterableRest(); }
139190
139790
  function component_styles_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
139191
139791
  function component_styles_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return component_styles_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? component_styles_arrayLikeToArray(r, a) : void 0; } }
@@ -139203,15 +139803,24 @@ function SetupStyles() {
139203
139803
  secondaryHover: '#475569',
139204
139804
  success: '#10B981',
139205
139805
  successLight: '#D1FAE5',
139806
+ successText: '#047857',
139807
+ successBorder: '#b7eb8f',
139206
139808
  warning: '#F59E0B',
139207
139809
  warningLight: '#FEF3C7',
139810
+ warningText: '#8c6c00',
139811
+ warningBorder: '#ffe58f',
139208
139812
  error: '#EF4444',
139209
139813
  errorLight: '#FEE2E2',
139814
+ errorText: '#B91C1C',
139815
+ errorBorder: '#FECACA',
139210
139816
  info: '#3B82F6',
139211
139817
  infoLight: '#DBEAFE',
139818
+ infoText: '#1D4ED8',
139819
+ infoBorder: '#91d5ff',
139212
139820
  background: '#FFFFFF',
139213
139821
  surface: '#F8FAFC',
139214
139822
  surfaceHover: '#F1F5F9',
139823
+ overlay: 'rgba(0, 0, 0, 0.5)',
139215
139824
  text: '#1E293B',
139216
139825
  textSecondary: '#64748B',
139217
139826
  textTertiary: '#94A3B8',
@@ -139285,7 +139894,13 @@ function SetupStyles() {
139285
139894
  slow: '350ms ease-in-out'
139286
139895
  },
139287
139896
  overflow: 'auto',
139288
- chartPalette: ['#2196F3', '#4CAF50', '#FF9800', '#E91E63', '#9C27B0', '#00BCD4', '#F44336', '#8BC34A', '#FF5722', '#3F51B5']
139897
+ chartPalette: ['#2196F3', '#4CAF50', '#FF9800', '#E91E63', '#9C27B0', '#00BCD4', '#F44336', '#8BC34A', '#FF5722', '#3F51B5'],
139898
+ sequentialScale: ['#E3F2FD', '#BBDEFB', '#90CAF9', '#42A5F5', '#2196F3', '#1976D2', '#0D47A1'],
139899
+ divergingScale: {
139900
+ low: '#F44336',
139901
+ mid: '#EEEEEE',
139902
+ high: '#4CAF50'
139903
+ }
139289
139904
  };
139290
139905
  }
139291
139906
  var createDefaultComponentStyles = SetupStyles;
@@ -139294,17 +139909,28 @@ var THEME_COLOR_TOKEN_MAP = {
139294
139909
  primaryHover: '--mj-brand-primary-hover',
139295
139910
  primaryActive: '--mj-brand-primary-active',
139296
139911
  primaryLight: '--mj-brand-primary-light',
139912
+ secondary: '--mj-brand-secondary',
139913
+ secondaryHover: '--mj-brand-secondary-hover',
139297
139914
  success: '--mj-status-success',
139298
139915
  successLight: '--mj-status-success-bg',
139916
+ successText: '--mj-status-success-text',
139917
+ successBorder: '--mj-status-success-border',
139299
139918
  warning: '--mj-status-warning',
139300
139919
  warningLight: '--mj-status-warning-bg',
139920
+ warningText: '--mj-status-warning-text',
139921
+ warningBorder: '--mj-status-warning-border',
139301
139922
  error: '--mj-status-error',
139302
139923
  errorLight: '--mj-status-error-bg',
139924
+ errorText: '--mj-status-error-text',
139925
+ errorBorder: '--mj-status-error-border',
139303
139926
  info: '--mj-status-info',
139304
139927
  infoLight: '--mj-status-info-bg',
139928
+ infoText: '--mj-status-info-text',
139929
+ infoBorder: '--mj-status-info-border',
139305
139930
  background: '--mj-bg-page',
139306
139931
  surface: '--mj-bg-surface',
139307
139932
  surfaceHover: '--mj-bg-surface-hover',
139933
+ overlay: '--mj-bg-overlay',
139308
139934
  text: '--mj-text-primary',
139309
139935
  textSecondary: '--mj-text-secondary',
139310
139936
  textTertiary: '--mj-text-muted',
@@ -139316,6 +139942,7 @@ var THEME_COLOR_TOKEN_MAP = {
139316
139942
  borderFocus: '--mj-border-focus'
139317
139943
  };
139318
139944
  var VIZ_TOKEN_COUNT = 10;
139945
+ var VIZ_SEQ_TOKEN_COUNT = 7;
139319
139946
  function BuildStylesFromTheme(root) {
139320
139947
  var base = SetupStyles();
139321
139948
  var el = root !== null && root !== void 0 ? root : typeof document !== 'undefined' ? document.documentElement : undefined;
@@ -139345,8 +139972,72 @@ function BuildStylesFromTheme(root) {
139345
139972
  if (palette.length > 0) {
139346
139973
  base.chartPalette = palette;
139347
139974
  }
139975
+ var sequential = [];
139976
+ for (var _i2 = 1; _i2 <= VIZ_SEQ_TOKEN_COUNT; _i2++) {
139977
+ var _value2 = read("--mj-viz-seq-".concat(_i2));
139978
+ if (_value2) {
139979
+ sequential.push(_value2);
139980
+ }
139981
+ }
139982
+ if (sequential.length > 1) {
139983
+ base.sequentialScale = sequential;
139984
+ }
139985
+ var divLow = read('--mj-viz-div-low');
139986
+ var divHigh = read('--mj-viz-div-high');
139987
+ if (divLow && divHigh) {
139988
+ var divMid = read('--mj-viz-div-mid');
139989
+ base.divergingScale = divMid ? {
139990
+ low: divLow,
139991
+ mid: divMid,
139992
+ high: divHigh
139993
+ } : {
139994
+ low: divLow,
139995
+ high: divHigh
139996
+ };
139997
+ }
139348
139998
  return base;
139349
139999
  }
140000
+ var FONT_SCALE_FACTOR = {
140001
+ small: 0.875,
140002
+ large: 1.25
140003
+ };
140004
+ var MIN_FONT_SIZE_PX = 10;
140005
+ function scaleFontSizes(fontSize, factor) {
140006
+ var scaled = {};
140007
+ for (var _i3 = 0, _Object$entries2 = Object.entries(fontSize); _i3 < _Object$entries2.length; _i3++) {
140008
+ var _Object$entries2$_i = component_styles_slicedToArray(_Object$entries2[_i3], 2),
140009
+ key = _Object$entries2$_i[0],
140010
+ value = _Object$entries2$_i[1];
140011
+ var px = typeof value === 'string' ? /^\s*(\d+(?:\.\d+)?)px\s*$/.exec(value) : null;
140012
+ scaled[key] = px ? "".concat(Math.max(MIN_FONT_SIZE_PX, Math.round(parseFloat(px[1]) * factor)), "px") : value;
140013
+ }
140014
+ return scaled;
140015
+ }
140016
+ function ApplyStyleOverrides(base, overrides) {
140017
+ var _overrides$divergingS, _overrides$divergingS2, _base$typography;
140018
+ if (!overrides) {
140019
+ return base;
140020
+ }
140021
+ var hasChartPalette = Array.isArray(overrides.chartPalette) && overrides.chartPalette.length > 0;
140022
+ var hasSequential = Array.isArray(overrides.sequentialScale) && overrides.sequentialScale.length > 1;
140023
+ var hasDiverging = !!((_overrides$divergingS = overrides.divergingScale) !== null && _overrides$divergingS !== void 0 && _overrides$divergingS.low) && !!((_overrides$divergingS2 = overrides.divergingScale) !== null && _overrides$divergingS2 !== void 0 && _overrides$divergingS2.high);
140024
+ var fontFactor = overrides.fontScale ? FONT_SCALE_FACTOR[overrides.fontScale] : undefined;
140025
+ var hasFontScale = !!fontFactor && !!((_base$typography = base.typography) !== null && _base$typography !== void 0 && _base$typography.fontSize);
140026
+ if (!hasChartPalette && !hasSequential && !hasDiverging && !hasFontScale) {
140027
+ return base;
140028
+ }
140029
+ return component_styles_objectSpread(component_styles_objectSpread(component_styles_objectSpread(component_styles_objectSpread(component_styles_objectSpread({}, base), hasChartPalette ? {
140030
+ chartPalette: overrides.chartPalette
140031
+ } : {}), hasSequential ? {
140032
+ sequentialScale: overrides.sequentialScale
140033
+ } : {}), hasDiverging ? {
140034
+ divergingScale: overrides.divergingScale
140035
+ } : {}), hasFontScale ? {
140036
+ typography: component_styles_objectSpread(component_styles_objectSpread({}, base.typography), {}, {
140037
+ fontSize: scaleFontSizes(base.typography.fontSize, fontFactor)
140038
+ })
140039
+ } : {});
140040
+ }
139350
140041
  ;// ./dist/utilities/component-library-theming.js
139351
140042
 
139352
140043
  function colorLuminance(color) {