@stndrds/schema 1.0.0-alpha.280 → 1.0.0-alpha.281

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{all-Ig0ig9wp.d.ts → all-BVp3k9Hi.d.ts} +4 -15
  2. package/dist/{all-C0hXd79K.d.mts → all-CnIU2anT.d.mts} +4 -15
  3. package/dist/{chunk-MSIGO7JA.mjs → chunk-A5PPZ2FM.mjs} +1 -1
  4. package/dist/{chunk-3PGLMGTR.js → chunk-E47WAI5K.js} +4 -4
  5. package/dist/{chunk-M3WFXOA4.js → chunk-HWZRSXFB.js} +2 -0
  6. package/dist/{chunk-FAEOVIDJ.js → chunk-LRFLSFIA.js} +3 -3
  7. package/dist/{chunk-PUMM6SPY.mjs → chunk-MLTXSBOB.mjs} +1 -1
  8. package/dist/{chunk-TBAD2T7Q.mjs → chunk-ORPCS24B.mjs} +5 -11
  9. package/dist/{chunk-XTBGGJ3G.js → chunk-OYHBQMC7.js} +3 -3
  10. package/dist/{chunk-XDA5PZRT.mjs → chunk-SYQDFZ74.mjs} +2 -0
  11. package/dist/{chunk-MXYCCUNB.js → chunk-TU6ECJFZ.js} +37 -43
  12. package/dist/{chunk-NUEIGMYS.mjs → chunk-XCLVXM7F.mjs} +1 -1
  13. package/dist/exceptions.d.mts +2 -0
  14. package/dist/exceptions.d.ts +2 -0
  15. package/dist/exceptions.js +39 -39
  16. package/dist/exceptions.mjs +1 -1
  17. package/dist/{index-C3P5Dnwt.d.mts → index-DWoqObyG.d.mts} +13 -22
  18. package/dist/{index-SpFpkWVC.d.ts → index-TMlrIKAY.d.ts} +13 -22
  19. package/dist/index.d.mts +253 -73
  20. package/dist/index.d.ts +253 -73
  21. package/dist/index.js +1175 -286
  22. package/dist/index.mjs +970 -93
  23. package/dist/utils.js +8 -8
  24. package/dist/utils.mjs +2 -2
  25. package/dist/validation/all.d.mts +2 -2
  26. package/dist/validation/all.d.ts +2 -2
  27. package/dist/validation/all.js +29 -29
  28. package/dist/validation/all.mjs +4 -4
  29. package/dist/validation/config/index.d.mts +1 -1
  30. package/dist/validation/config/index.d.ts +1 -1
  31. package/dist/validation/config/index.js +11 -11
  32. package/dist/validation/config/index.mjs +2 -2
  33. package/dist/validation/object/index.js +14 -14
  34. package/dist/validation/object/index.mjs +2 -2
  35. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkXTBGGJ3G_js = require('./chunk-XTBGGJ3G.js');
4
- var chunkMXYCCUNB_js = require('./chunk-MXYCCUNB.js');
5
- var chunkFAEOVIDJ_js = require('./chunk-FAEOVIDJ.js');
6
- var chunk3PGLMGTR_js = require('./chunk-3PGLMGTR.js');
3
+ var chunkOYHBQMC7_js = require('./chunk-OYHBQMC7.js');
4
+ var chunkTU6ECJFZ_js = require('./chunk-TU6ECJFZ.js');
5
+ var chunkLRFLSFIA_js = require('./chunk-LRFLSFIA.js');
6
+ var chunkE47WAI5K_js = require('./chunk-E47WAI5K.js');
7
7
  require('./chunk-EW5XR2X3.js');
8
8
  require('./chunk-QWKLQRBX.js');
9
9
  require('./chunk-KNGWHQLR.js');
@@ -13,7 +13,7 @@ var chunk5WATIVCA_js = require('./chunk-5WATIVCA.js');
13
13
  var chunkSI34M4IC_js = require('./chunk-SI34M4IC.js');
14
14
  var chunkYIP5FJ5H_js = require('./chunk-YIP5FJ5H.js');
15
15
  var chunkZPFOKBIN_js = require('./chunk-ZPFOKBIN.js');
16
- var chunkM3WFXOA4_js = require('./chunk-M3WFXOA4.js');
16
+ var chunkHWZRSXFB_js = require('./chunk-HWZRSXFB.js');
17
17
  require('./chunk-ACKMC6FL.js');
18
18
  require('./chunk-E6JUYGJX.js');
19
19
  var chunkQ4SZAMJT_js = require('./chunk-Q4SZAMJT.js');
@@ -81,7 +81,7 @@ function inferInverseCardinality(cardinality) {
81
81
  return cardinality === "one" ? "many" : "many";
82
82
  }
83
83
  function isAttributeSortable2(attr) {
84
- return chunkMXYCCUNB_js.isAttributeSortable(attr);
84
+ return chunkTU6ECJFZ_js.isAttributeSortable(attr);
85
85
  }
86
86
 
87
87
  // src/types/audit.ts
@@ -148,14 +148,14 @@ function sessionStateToLegacyStatus(state) {
148
148
  return "idle";
149
149
  case "parked":
150
150
  if (state.parkedOn === void 0) {
151
- throw new chunkM3WFXOA4_js.SchemaError("parked state without parkedOn", chunkM3WFXOA4_js.SchemaErrorCode.INVARIANT_VIOLATION);
151
+ throw new chunkHWZRSXFB_js.SchemaError("parked state without parkedOn", chunkHWZRSXFB_js.SchemaErrorCode.INVARIANT_VIOLATION);
152
152
  }
153
153
  return state.parkedOn === "agents" ? "waiting_agents" : "waiting_human";
154
154
  case "terminal":
155
155
  if (state.outcome === void 0) {
156
- throw new chunkM3WFXOA4_js.SchemaError(
156
+ throw new chunkHWZRSXFB_js.SchemaError(
157
157
  "terminal state without outcome",
158
- chunkM3WFXOA4_js.SchemaErrorCode.INVARIANT_VIOLATION
158
+ chunkHWZRSXFB_js.SchemaErrorCode.INVARIANT_VIOLATION
159
159
  );
160
160
  }
161
161
  return state.outcome;
@@ -185,6 +185,18 @@ var SESSION_TERMINAL_STATUSES = [
185
185
  function isTerminalSessionStatus(status2) {
186
186
  return SESSION_TERMINAL_STATUSES.includes(status2);
187
187
  }
188
+ var CLAIMABLE_SESSION_STATUSES = [
189
+ "idle",
190
+ "completed",
191
+ "waiting_human",
192
+ "waiting_agents",
193
+ "cancelled",
194
+ "failed",
195
+ "timeout"
196
+ ];
197
+ function isClaimableSessionStatus(status2) {
198
+ return CLAIMABLE_SESSION_STATUSES.includes(status2);
199
+ }
188
200
  var DEFAULT_APPROVAL_POLICY = Object.freeze({
189
201
  mutation: "ask",
190
202
  destructive: "ask",
@@ -205,7 +217,7 @@ var NATIVE_AGENT_UI_PART_IDS_METADATA_KEY = "__stndrdsNativeUiPartIds";
205
217
  var NATIVE_AGENT_UI_PART_IDS_METADATA_SCHEMA_VERSION = 1;
206
218
  var INVALID_NATIVE_PART_IDS = "Native agent UI part IDs metadata is invalid";
207
219
  function invalidNativePartIds() {
208
- throw new chunkM3WFXOA4_js.ValidationError(INVALID_NATIVE_PART_IDS, []);
220
+ throw new chunkHWZRSXFB_js.ValidationError(INVALID_NATIVE_PART_IDS, []);
209
221
  }
210
222
  function isPlainRecord(value) {
211
223
  if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
@@ -376,9 +388,6 @@ function isListView(view) {
376
388
  function isFieldGroup(group2) {
377
389
  return group2.type === "fields";
378
390
  }
379
- function isRelationGroup(group2) {
380
- return group2.type === "relation";
381
- }
382
391
 
383
392
  // src/types/pagination.ts
384
393
  var COUNT_MODES = ["none", "estimated", "exact"];
@@ -386,7 +395,7 @@ function parseCountMode(value) {
386
395
  if (typeof value === "string" && COUNT_MODES.includes(value)) {
387
396
  return value;
388
397
  }
389
- throw new chunkM3WFXOA4_js.ValidationError(
398
+ throw new chunkHWZRSXFB_js.ValidationError(
390
399
  // biome-ignore lint/style/useTemplate: see the comment above.
391
400
  "countMode must be one of: " + COUNT_MODES.join(", ") + " (received: " + String(value) + ")",
392
401
  []
@@ -493,7 +502,7 @@ function isDateRangeValue(value) {
493
502
  return typeof value === "object" && value !== null && typeof value.start === "string";
494
503
  }
495
504
  function normalizeDateValue(value, attr) {
496
- if (chunk3PGLMGTR_js.isNullishOrEmptyString(value)) return null;
505
+ if (chunkE47WAI5K_js.isNullishOrEmptyString(value)) return null;
497
506
  if (isDateRangeValue(value)) {
498
507
  return attr.endDate ? { start: value.start, end: value.end ?? null } : value.start;
499
508
  }
@@ -631,7 +640,7 @@ function formatMultiselect(value, attribute) {
631
640
  return value.join(", ");
632
641
  }
633
642
  function formatAttributeValue(value, attribute) {
634
- if (chunk3PGLMGTR_js.isNullishOrEmptyString(value)) {
643
+ if (chunkE47WAI5K_js.isNullishOrEmptyString(value)) {
635
644
  return EMPTY_VALUE_PLACEHOLDER;
636
645
  }
637
646
  switch (attribute.type) {
@@ -784,7 +793,7 @@ function renderLabelExpression(template, values, fallback = DEFAULT_LABEL_FALLBA
784
793
  break;
785
794
  }
786
795
  }
787
- const isEmpty2 = chunk3PGLMGTR_js.isNullishOrEmptyString(value);
796
+ const isEmpty2 = chunkE47WAI5K_js.isNullishOrEmptyString(value);
788
797
  if (isEmpty2 && pipes.length === 0) return "";
789
798
  for (const pipeExpr of pipes) {
790
799
  const { name: pipeName, args } = parsePipeExpression(pipeExpr);
@@ -861,7 +870,7 @@ function relationPropertyDefs(attribute) {
861
870
  return attribute.properties?.definitions;
862
871
  }
863
872
  function extractValueRefs(value) {
864
- if (chunk3PGLMGTR_js.isNullishOrEmptyString(value)) return [];
873
+ if (chunkE47WAI5K_js.isNullishOrEmptyString(value)) return [];
865
874
  if (typeof value === "string") return [{ id: value }];
866
875
  if (Array.isArray(value)) return value.flatMap((item) => extractValueRefs(item));
867
876
  if (typeof value === "object" && "id" in value) {
@@ -1065,24 +1074,24 @@ function validateObjectName(name) {
1065
1074
  OBJECT_NAME_SCHEMA.parse(name);
1066
1075
  } catch (error) {
1067
1076
  if (error instanceof z2__default.default.ZodError) {
1068
- throw new chunkM3WFXOA4_js.SchemaError(error.issues[0].message, chunkM3WFXOA4_js.SchemaErrorCode.INVALID_OBJECT_NAME);
1077
+ throw new chunkHWZRSXFB_js.SchemaError(error.issues[0].message, chunkHWZRSXFB_js.SchemaErrorCode.INVALID_OBJECT_NAME);
1069
1078
  }
1070
1079
  throw error;
1071
1080
  }
1072
1081
  }
1073
1082
  function validateViewName(name) {
1074
1083
  if (!name || name.length === 0) {
1075
- throw new chunkM3WFXOA4_js.ValidationError("View name cannot be empty", [
1084
+ throw new chunkHWZRSXFB_js.ValidationError("View name cannot be empty", [
1076
1085
  { path: ["name"], message: "View name cannot be empty" }
1077
1086
  ]);
1078
1087
  }
1079
1088
  if (name.length > MAX_NAME_LENGTH) {
1080
- throw new chunkM3WFXOA4_js.ValidationError("View name is too long", [
1089
+ throw new chunkHWZRSXFB_js.ValidationError("View name is too long", [
1081
1090
  { path: ["name"], message: `View name is too long (max ${MAX_NAME_LENGTH} characters)` }
1082
1091
  ]);
1083
1092
  }
1084
1093
  if (!VIEW_NAME_REGEX.test(name)) {
1085
- throw new chunkM3WFXOA4_js.ValidationError("Invalid view name format", [
1094
+ throw new chunkHWZRSXFB_js.ValidationError("Invalid view name format", [
1086
1095
  {
1087
1096
  path: ["name"],
1088
1097
  message: "View name must be in kebab-case (e.g., 'detail', 'list-view')"
@@ -1114,10 +1123,10 @@ function validateAttributeName(name) {
1114
1123
  "[AttributeBuilder] Invalid attribute name format.\nName must be a valid variable identifier:\n \u2705 Valid: 'firstName', 'first_name', 'FirstName', 'FIRST_NAME'\n \u274C Invalid: 'first-name', 'first name', '123name', 'first.name'"
1115
1124
  );
1116
1125
  }
1117
- if (chunkMXYCCUNB_js.RESERVED_ATTRIBUTE_NAMES.includes(name)) {
1126
+ if (chunkTU6ECJFZ_js.RESERVED_ATTRIBUTE_NAMES.includes(name)) {
1118
1127
  throw new Error(
1119
1128
  `[AttributeBuilder] "${name}" is a reserved name and cannot be used as an attribute name.
1120
- Reserved names: ${chunkMXYCCUNB_js.RESERVED_ATTRIBUTE_NAMES.join(", ")}`
1129
+ Reserved names: ${chunkTU6ECJFZ_js.RESERVED_ATTRIBUTE_NAMES.join(", ")}`
1121
1130
  );
1122
1131
  }
1123
1132
  }
@@ -1184,7 +1193,7 @@ var DEFAULT_AGENT_EXECUTION_CONFIG = {
1184
1193
  var AgentBuilder = class {
1185
1194
  constructor(config) {
1186
1195
  if (!config.name || config.name.trim().length === 0) {
1187
- throw new chunkM3WFXOA4_js.ValidationError("Agent name is required", []);
1196
+ throw new chunkHWZRSXFB_js.ValidationError("Agent name is required", []);
1188
1197
  }
1189
1198
  this.bp = { name: config.name, system: true, visibility: "workspace", triggers: [] };
1190
1199
  }
@@ -1318,13 +1327,13 @@ var AgentBuilder = class {
1318
1327
  }
1319
1328
  build() {
1320
1329
  if (!this.bp.systemPrompt) {
1321
- throw new chunkM3WFXOA4_js.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`, []);
1330
+ throw new chunkHWZRSXFB_js.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`, []);
1322
1331
  }
1323
1332
  if (!this.bp.model) {
1324
- throw new chunkM3WFXOA4_js.ValidationError(`Agent "${this.bp.name}": model is required`, []);
1333
+ throw new chunkHWZRSXFB_js.ValidationError(`Agent "${this.bp.name}": model is required`, []);
1325
1334
  }
1326
1335
  if (this.bp.system && this.bp.visibility === "private") {
1327
- throw new chunkM3WFXOA4_js.ValidationError(
1336
+ throw new chunkHWZRSXFB_js.ValidationError(
1328
1337
  `Agent "${this.bp.name}": system agents must use workspace visibility`,
1329
1338
  []
1330
1339
  );
@@ -1332,7 +1341,7 @@ var AgentBuilder = class {
1332
1341
  assertUniqueBy(
1333
1342
  this.bp.triggers,
1334
1343
  (t) => t.name,
1335
- (name) => new chunkM3WFXOA4_js.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${name}"`, [])
1344
+ (name) => new chunkHWZRSXFB_js.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${name}"`, [])
1336
1345
  );
1337
1346
  return {
1338
1347
  ...this.bp,
@@ -1387,7 +1396,7 @@ var BaseAttributeBuilder = class {
1387
1396
  * @see https://standardschema.dev/
1388
1397
  */
1389
1398
  get "~standard"() {
1390
- const zodSchema = chunk3PGLMGTR_js.createAttributeValidator(this.build());
1399
+ const zodSchema = chunkE47WAI5K_js.createAttributeValidator(this.build());
1391
1400
  return createStandardSchemaProps(zodSchema);
1392
1401
  }
1393
1402
  constructor(type, name, label) {
@@ -2134,9 +2143,9 @@ var RollupAttributeBuilder = class extends BaseAttributeBuilder {
2134
2143
  if (fn === "original" && targetType !== void 0 && targetType !== "select" && targetType !== "status" && targetType !== "multiselect") {
2135
2144
  const relation2 = this.attr.relationAttribute ?? "relation";
2136
2145
  const target = this.attr.targetAttribute ?? "field";
2137
- throw new chunkM3WFXOA4_js.SchemaError(
2146
+ throw new chunkHWZRSXFB_js.SchemaError(
2138
2147
  `Rollup "${this.attr.name}": .using("original") only supports a "select", "status", or "multiselect" target, but .targetType("${targetType}") was given. To surface a plain ${targetType} value from a related record, use a formula instead \u2014 e.g. formula({ name: "${this.attr.name}", label: "\u2026" }).expression("${relation2}.${target}").`,
2139
- chunkM3WFXOA4_js.SchemaErrorCode.VALIDATION_FAILED
2148
+ chunkHWZRSXFB_js.SchemaErrorCode.VALIDATION_FAILED
2140
2149
  );
2141
2150
  }
2142
2151
  return super.build();
@@ -2646,7 +2655,7 @@ var ObjectBuilder = class {
2646
2655
  * @see https://standardschema.dev/
2647
2656
  */
2648
2657
  get "~standard"() {
2649
- const zodSchema = chunk3PGLMGTR_js.createObjectValidator(this.build());
2658
+ const zodSchema = chunkE47WAI5K_js.createObjectValidator(this.build());
2650
2659
  return createStandardSchemaProps(zodSchema);
2651
2660
  }
2652
2661
  /**
@@ -2774,7 +2783,7 @@ var ObjectBuilder = class {
2774
2783
  assertUniqueBy(
2775
2784
  [...this.obj.attributes, ...finalAttrs],
2776
2785
  (attribute) => attribute.name,
2777
- (name) => new chunkM3WFXOA4_js.DuplicateError(
2786
+ (name) => new chunkHWZRSXFB_js.DuplicateError(
2778
2787
  "attribute",
2779
2788
  name,
2780
2789
  `Object "${this.obj.name}": duplicate attribute name "${name}"`
@@ -2799,6 +2808,21 @@ var ObjectBuilder = class {
2799
2808
  this.obj.metadata = { ...this.obj.metadata, order: value };
2800
2809
  return this;
2801
2810
  }
2811
+ /**
2812
+ * Hide this object from navigation surfaces — the sidebar data section and
2813
+ * the command palette, which already honour `metadata.hidden`. For objects
2814
+ * that own a dedicated surface: `drives` has the Drive page, so listing it
2815
+ * beside business objects would offer the same thing twice under two
2816
+ * different affordances.
2817
+ *
2818
+ * The object stays whole everywhere else: API, search, permissions, agent
2819
+ * tools, filters and record pages all continue to see it. This hides a
2820
+ * navigation entry; it never restricts access.
2821
+ */
2822
+ hidden() {
2823
+ this.obj.metadata = { ...this.obj.metadata, hidden: true };
2824
+ return this;
2825
+ }
2802
2826
  /**
2803
2827
  * Set the label expression template for displaying records
2804
2828
  * This is REQUIRED for every object.
@@ -2888,26 +2912,26 @@ var ObjectBuilder = class {
2888
2912
  throw new Error("[ObjectBuilder] Missing required field: label");
2889
2913
  }
2890
2914
  if (!this._labelExpression) {
2891
- throw new chunkM3WFXOA4_js.SchemaError(
2915
+ throw new chunkHWZRSXFB_js.SchemaError(
2892
2916
  `Object "${this.obj.name}" must have a labelExpression. The labelExpression defines how records are displayed in lists and relations (e.g. "{{ name }}").`,
2893
- chunkM3WFXOA4_js.SchemaErrorCode.VALIDATION_FAILED
2917
+ chunkHWZRSXFB_js.SchemaErrorCode.VALIDATION_FAILED
2894
2918
  );
2895
2919
  }
2896
2920
  const labelResult = labelExpressionSchema.safeParse(this._labelExpression);
2897
2921
  if (!labelResult.success) {
2898
2922
  const errorMsg = labelResult.error.issues[0]?.message ?? "Invalid labelExpression";
2899
- throw new chunkM3WFXOA4_js.SchemaError(
2923
+ throw new chunkHWZRSXFB_js.SchemaError(
2900
2924
  `Invalid labelExpression for "${this.obj.name}": ${errorMsg}`,
2901
- chunkM3WFXOA4_js.SchemaErrorCode.VALIDATION_FAILED
2925
+ chunkHWZRSXFB_js.SchemaErrorCode.VALIDATION_FAILED
2902
2926
  );
2903
2927
  }
2904
2928
  if (this._embeddingExpression !== void 0) {
2905
2929
  const embeddingResult = labelExpressionSchema.safeParse(this._embeddingExpression);
2906
2930
  if (!embeddingResult.success) {
2907
2931
  const errorMsg = embeddingResult.error.issues[0]?.message ?? "Invalid embeddingExpression";
2908
- throw new chunkM3WFXOA4_js.SchemaError(
2932
+ throw new chunkHWZRSXFB_js.SchemaError(
2909
2933
  `Invalid embeddingExpression for "${this.obj.name}": ${errorMsg}`,
2910
- chunkM3WFXOA4_js.SchemaErrorCode.VALIDATION_FAILED
2934
+ chunkHWZRSXFB_js.SchemaErrorCode.VALIDATION_FAILED
2911
2935
  );
2912
2936
  }
2913
2937
  }
@@ -2949,7 +2973,7 @@ function object(config) {
2949
2973
  }
2950
2974
  function validatePresetStructure(presetId, nodes, depth) {
2951
2975
  const fail = (message, detail) => {
2952
- throw new chunkM3WFXOA4_js.ValidationError(message, [
2976
+ throw new chunkHWZRSXFB_js.ValidationError(message, [
2953
2977
  { path: ["documentLayout", "presets", presetId], message: detail }
2954
2978
  ]);
2955
2979
  };
@@ -3048,74 +3072,6 @@ var GroupBuilder = class {
3048
3072
  return this.data;
3049
3073
  }
3050
3074
  };
3051
- var RelationGroupBuilder = class {
3052
- constructor(id, label, attribute) {
3053
- this.data = { type: "relation" };
3054
- this.data.id = id;
3055
- this.data.label = label;
3056
- this.data.attribute = attribute;
3057
- }
3058
- /**
3059
- * Set group description
3060
- */
3061
- description(value) {
3062
- this.data.description = value;
3063
- return this;
3064
- }
3065
- /**
3066
- * Make group collapsible
3067
- * @param collapsed - Initial collapsed state (default: false)
3068
- */
3069
- collapsible(collapsed = false) {
3070
- this.data.collapsible = true;
3071
- this.data.collapsed = collapsed;
3072
- return this;
3073
- }
3074
- /**
3075
- * Set display order
3076
- */
3077
- order(value) {
3078
- this.data.order = value;
3079
- return this;
3080
- }
3081
- /**
3082
- * Set columns to display in the relations table
3083
- * @example .columns("name", "email", "phone")
3084
- */
3085
- columns(...names) {
3086
- this.data.columns = names;
3087
- return this;
3088
- }
3089
- /**
3090
- * Set the group as read-only (no add/remove/edit)
3091
- */
3092
- readOnly(value = true) {
3093
- this.data.readOnly = value;
3094
- return this;
3095
- }
3096
- /**
3097
- * Allow creating new related records inline
3098
- */
3099
- allowCreate(value = true) {
3100
- this.data.allowCreate = value;
3101
- return this;
3102
- }
3103
- /**
3104
- * Build the relation group definition
3105
- */
3106
- build() {
3107
- if (!this.data.id) {
3108
- throw new Error("[RelationGroupBuilder] id is required");
3109
- }
3110
- if (!this.data.label) {
3111
- throw new Error("[RelationGroupBuilder] label is required");
3112
- }
3113
- if (!this.data.attribute) {
3114
- throw new Error("[RelationGroupBuilder] attribute is required");
3115
- }
3116
- return this.data;
3117
- }
3118
- };
3119
3075
  var TableTabConfig = class {
3120
3076
  /** @internal */
3121
3077
  constructor(view, tabData) {
@@ -3466,7 +3422,7 @@ var TabBuilder = class {
3466
3422
  // ─────────────────────────────────────────────────────────────────────────
3467
3423
  /**
3468
3424
  * Create a form tab with groups
3469
- * @example .form(group("info", "Info").fields("name", "email"), relationGroup("contacts", "Contacts", "contacts"))
3425
+ * @example .form(group("info", "Info").fields("name", "email"))
3470
3426
  */
3471
3427
  form(...groups) {
3472
3428
  if (groups.length === 0) {
@@ -3477,9 +3433,7 @@ var TabBuilder = class {
3477
3433
  const tab = {
3478
3434
  ...this.base,
3479
3435
  type: "form",
3480
- groups: groups.map(
3481
- (g) => g instanceof GroupBuilder || g instanceof RelationGroupBuilder ? g.build() : g
3482
- )
3436
+ groups: groups.map((g) => g instanceof GroupBuilder ? g.build() : g)
3483
3437
  };
3484
3438
  return this.view._addTab(tab);
3485
3439
  }
@@ -3790,7 +3744,7 @@ var ListViewBuilder = class {
3790
3744
  }
3791
3745
  const config = {
3792
3746
  defaultFilters: this.data.defaultFilters ? {
3793
- id: chunkXTBGGJ3G_js.generateId(),
3747
+ id: chunkOYHBQMC7_js.generateId(),
3794
3748
  combinator: this.data.defaultFilters.combinator,
3795
3749
  rules: this.data.defaultFilters.rules
3796
3750
  } : void 0,
@@ -3805,7 +3759,7 @@ var ListViewBuilder = class {
3805
3759
  visibility: tab.visibility,
3806
3760
  columns: tab.columns,
3807
3761
  filters: tab.filters ? {
3808
- id: chunkXTBGGJ3G_js.generateId(),
3762
+ id: chunkOYHBQMC7_js.generateId(),
3809
3763
  combinator: tab.filters.combinator,
3810
3764
  rules: tab.filters.rules
3811
3765
  } : void 0,
@@ -3971,7 +3925,7 @@ var ListViewTabConfigBuilder = class _ListViewTabConfigBuilder {
3971
3925
  const protectedAttribute = findProtectedTabFilterAttribute(filters);
3972
3926
  if (protectedAttribute) {
3973
3927
  const message = `Tab filters cannot target "${protectedAttribute}". Use .visibility("private")`;
3974
- throw new chunkM3WFXOA4_js.ValidationError(message, [{ path: ["filters"], message }]);
3928
+ throw new chunkHWZRSXFB_js.ValidationError(message, [{ path: ["filters"], message }]);
3975
3929
  }
3976
3930
  this.tabData.filters = filters;
3977
3931
  return this;
@@ -4023,9 +3977,6 @@ function listView(name, label) {
4023
3977
  function group(id, label) {
4024
3978
  return new GroupBuilder(id, label);
4025
3979
  }
4026
- function relationGroup(id, label, attribute) {
4027
- return new RelationGroupBuilder(id, label, attribute);
4028
- }
4029
3980
 
4030
3981
  // src/feature-flags/flag-builder.ts
4031
3982
  function validateFlagName(name) {
@@ -4185,7 +4136,7 @@ function jsonFlag(name, defaultValue) {
4185
4136
 
4186
4137
  // src/feature-flags/flag-registry.ts
4187
4138
  function duplicateFlagError(name) {
4188
- return new chunkM3WFXOA4_js.DuplicateError(
4139
+ return new chunkHWZRSXFB_js.DuplicateError(
4189
4140
  "feature flag",
4190
4141
  name,
4191
4142
  `Flag "${name}" is already registered. Each flag name must be unique.`
@@ -4263,7 +4214,7 @@ var FlagRegistry = class {
4263
4214
  getOrThrow(name) {
4264
4215
  const flag = this.get(name);
4265
4216
  if (!flag) {
4266
- throw new chunkM3WFXOA4_js.NotFoundError(
4217
+ throw new chunkHWZRSXFB_js.NotFoundError(
4267
4218
  "Feature flag",
4268
4219
  name,
4269
4220
  void 0,
@@ -4362,7 +4313,25 @@ var FlagService = class {
4362
4313
  * @returns Map of flag names to resolved values
4363
4314
  */
4364
4315
  async resolveAll(context = {}) {
4365
- const resolved = /* @__PURE__ */ new Map();
4316
+ const flagNames = this.collectFlagNames();
4317
+ const overrides = this.repository && flagNames.size > 0 ? await this.getAllOverrides(context, [...flagNames]) : emptyOverrides();
4318
+ return this.resolveNames(flagNames, overrides, context);
4319
+ }
4320
+ /**
4321
+ * Resolve every flag from static defaults only, never touching the
4322
+ * overrides repository.
4323
+ *
4324
+ * For callers running outside any tenant context (e.g. tenant-less public
4325
+ * HTTP routes such as the connectors OAuth callback): overrides are
4326
+ * tenant-scoped in storage, so without a tenant there is nothing to fetch —
4327
+ * and asking the repository anyway would require the very context that is
4328
+ * absent.
4329
+ */
4330
+ resolveAllStatic() {
4331
+ return this.resolveNames(this.collectFlagNames(), emptyOverrides(), {});
4332
+ }
4333
+ /** Flag names known to this service: registry entries plus static defaults. */
4334
+ collectFlagNames() {
4366
4335
  const flagNames = /* @__PURE__ */ new Set();
4367
4336
  for (const name of this.registry.listNames()) {
4368
4337
  flagNames.add(name);
@@ -4370,10 +4339,12 @@ var FlagService = class {
4370
4339
  for (const name of this.staticDefaults.keys()) {
4371
4340
  flagNames.add(name);
4372
4341
  }
4373
- const overrides = this.repository && flagNames.size > 0 ? await this.getAllOverrides(context, [...flagNames]) : emptyOverrides();
4342
+ return flagNames;
4343
+ }
4344
+ resolveNames(flagNames, overrides, context) {
4345
+ const resolved = /* @__PURE__ */ new Map();
4374
4346
  for (const name of flagNames) {
4375
- const value = this.resolveValue(name, overrides, context);
4376
- resolved.set(name, value);
4347
+ resolved.set(name, this.resolveValue(name, overrides, context));
4377
4348
  }
4378
4349
  return resolved;
4379
4350
  }
@@ -4420,19 +4391,19 @@ var FlagService = class {
4420
4391
  */
4421
4392
  async setOverride(flagName, level, value, options = {}) {
4422
4393
  if (!this.repository) {
4423
- throw new chunkM3WFXOA4_js.SchemaError(
4394
+ throw new chunkHWZRSXFB_js.SchemaError(
4424
4395
  "Cannot set override: no FeatureFlagsRepository configured. Add featureFlags to your DatabaseAdapter to enable runtime overrides.",
4425
- chunkM3WFXOA4_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4396
+ chunkHWZRSXFB_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4426
4397
  );
4427
4398
  }
4428
4399
  const flag = this.registry.get(flagName);
4429
4400
  if (flag && !flag.allowedLevels.includes(level)) {
4430
4401
  const message = `Flag "${flagName}" does not allow ${level}-level overrides. Allowed levels: ${flag.allowedLevels.join(", ")}`;
4431
- throw new chunkM3WFXOA4_js.ValidationError(message, [{ path: ["level"], message }]);
4402
+ throw new chunkHWZRSXFB_js.ValidationError(message, [{ path: ["level"], message }]);
4432
4403
  }
4433
4404
  if (flag?.system) {
4434
4405
  const message = `Flag "${flagName}" is a system flag and cannot be overridden via API.`;
4435
- throw new chunkM3WFXOA4_js.ValidationError(message, [{ path: ["flagName"], message }]);
4406
+ throw new chunkHWZRSXFB_js.ValidationError(message, [{ path: ["flagName"], message }]);
4436
4407
  }
4437
4408
  await this.repository.setOverride({
4438
4409
  flagName,
@@ -4452,9 +4423,9 @@ var FlagService = class {
4452
4423
  */
4453
4424
  async deleteOverride(flagName, level, targetId) {
4454
4425
  if (!this.repository) {
4455
- throw new chunkM3WFXOA4_js.SchemaError(
4426
+ throw new chunkHWZRSXFB_js.SchemaError(
4456
4427
  "Cannot delete override: no FeatureFlagsRepository configured.",
4457
- chunkM3WFXOA4_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4428
+ chunkHWZRSXFB_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4458
4429
  );
4459
4430
  }
4460
4431
  await this.repository.deleteOverride(flagName, level, targetId);
@@ -4591,7 +4562,7 @@ var NativeObjectRegistryClass = class {
4591
4562
  if (!object2.system) {
4592
4563
  const message = `[NativeObjectRegistry] Cannot register object "${object2.name}" (id: ${object2.id}): missing system flag.
4593
4564
  Native objects must have system=true. Did you call .runtime() on the builder? Remove that call \u2014 objects are system:true by default.`;
4594
- throw new chunkM3WFXOA4_js.ValidationError(message, []);
4565
+ throw new chunkHWZRSXFB_js.ValidationError(message, []);
4595
4566
  }
4596
4567
  if (this.objects.has(object2.name)) {
4597
4568
  const existing = this.objects.get(object2.name);
@@ -4599,7 +4570,7 @@ Native objects must have system=true. Did you call .runtime() on the builder? Re
4599
4570
  - Existing: "${existing?.label}" (id: ${existing?.id})
4600
4571
  - New: "${object2.label}" (id: ${object2.id})
4601
4572
  Please use unique names for each native object.`;
4602
- throw new chunkM3WFXOA4_js.DuplicateError("object", object2.name, message);
4573
+ throw new chunkHWZRSXFB_js.DuplicateError("object", object2.name, message);
4603
4574
  }
4604
4575
  this.objects.set(object2.name, cloneObjectDefinition(object2));
4605
4576
  }
@@ -4631,7 +4602,7 @@ Please use unique names for each native object.`;
4631
4602
  if (!object2) {
4632
4603
  const message = `[NativeObjectRegistry] Native object "${name}" not found.
4633
4604
  Available objects: ${this.listNames().join(", ")}`;
4634
- throw new chunkM3WFXOA4_js.NotFoundError("Native object", name, chunkM3WFXOA4_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4605
+ throw new chunkHWZRSXFB_js.NotFoundError("Native object", name, chunkHWZRSXFB_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4635
4606
  }
4636
4607
  return object2;
4637
4608
  }
@@ -4761,6 +4732,12 @@ var MEMORY_VIEW = detailView("memory-detail", "Memory").for("memory").default().
4761
4732
  }).tab("content", "Content").richtext("content").titleAttribute("name").build();
4762
4733
  var MEMORY_LIST_VIEW = listView("memory-list", "Memories").for("memory").default().tab("workspace", "Memories").default().icon("table").visibility("workspace").table().columns("name", "kind", "description", "createdAt").sort("name", "asc").tab("mine", "My memories").icon("lock").visibility("private").table().columns("name", "kind", "description", "createdAt").sort("name", "asc").build();
4763
4734
 
4735
+ // src/native/drive.object.ts
4736
+ var DRIVE_OBJECT_NAME = "drives";
4737
+ var DRIVE_OBJECT = object({ name: DRIVE_OBJECT_NAME, label: "Drive" }).sealed().icon("folder").hidden().pluralLabel("Drives").labelExpression("{{ name }}").embeddingExpression("{{ name }}\n{{ description }}").attribute(text({ name: "name", label: "Name" }).required()).attribute(text({ name: "description", label: "Description" }).multiline()).build();
4738
+ var DRIVE_VIEW = detailView("drive-detail", "Drive").for(DRIVE_OBJECT_NAME).default().sidePanel({ attributes: ["description"] }).tab("documents", "Documents").documents().build();
4739
+ var DRIVE_LIST_VIEW = listView("drive-list", "Drives").for(DRIVE_OBJECT_NAME).default().tab("workspace", "Shared").default().icon("users").visibility("workspace").table().columns("name", "description", "updatedAt").sort("name", "asc").tab("mine", "My drives").icon("lock").visibility("private").table().columns("name", "description", "updatedAt").sort("name", "asc").build();
4740
+
4764
4741
  // src/views/registry.ts
4765
4742
  function cloneViewDefinition(view) {
4766
4743
  return structuredClone(view);
@@ -4787,7 +4764,7 @@ var ViewRegistry = class {
4787
4764
  const key = this.makeKey(view.object, view.name, view.type);
4788
4765
  if (this.views.has(key)) {
4789
4766
  const message = `[ViewRegistry] Duplicate view: "${view.name}" (${view.type}) for object "${view.object}"`;
4790
- throw new chunkM3WFXOA4_js.DuplicateError("view", key, message);
4767
+ throw new chunkHWZRSXFB_js.DuplicateError("view", key, message);
4791
4768
  }
4792
4769
  const storedView = cloneViewDefinition(view);
4793
4770
  this.views.set(key, storedView);
@@ -4832,7 +4809,7 @@ var ViewRegistry = class {
4832
4809
  const availableNames = available.map((v) => `${v.name} (${v.type})`).join(", ") || "(none)";
4833
4810
  const message = `[ViewRegistry] View "${viewName}" not found for object "${objectName}".
4834
4811
  Available views: ${availableNames}`;
4835
- throw new chunkM3WFXOA4_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4812
+ throw new chunkHWZRSXFB_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4836
4813
  }
4837
4814
  return view;
4838
4815
  }
@@ -4920,7 +4897,7 @@ var viewRegistry = new ViewRegistry();
4920
4897
  // src/views/auto-generator.ts
4921
4898
  function getRuntimeAttributes(attributes, excludeNames = []) {
4922
4899
  return attributes.filter(
4923
- (attr) => !(!chunkMXYCCUNB_js.getAttributeCapabilities(attr).lifecycle.visibleInRuntime || attr.system || excludeNames.includes(attr.name))
4900
+ (attr) => !(!chunkTU6ECJFZ_js.getAttributeCapabilities(attr).lifecycle.visibleInRuntime || attr.system || excludeNames.includes(attr.name))
4924
4901
  );
4925
4902
  }
4926
4903
  function sortAttributes(attributes) {
@@ -4953,7 +4930,7 @@ function generateDefaultDetailView(object2, options = {}) {
4953
4930
  const { includeActivityTab = true, includeDocumentsTab = true, excludeAttributes = [] } = options;
4954
4931
  const runtimeAttrs = getRuntimeAttributes(object2.attributes, excludeAttributes);
4955
4932
  const sortedAttrs = sortAttributes(
4956
- runtimeAttrs.filter((attr) => chunkMXYCCUNB_js.getAttributeCapabilities(attr).presentation.formField)
4933
+ runtimeAttrs.filter((attr) => chunkTU6ECJFZ_js.getAttributeCapabilities(attr).presentation.formField)
4957
4934
  );
4958
4935
  const formTab = {
4959
4936
  id: "form",
@@ -5010,7 +4987,7 @@ function generateDefaultListView(object2, options = {}) {
5010
4987
  const { excludeAttributes = [], maxListColumns = 5 } = options;
5011
4988
  const runtimeAttrs = getRuntimeAttributes(object2.attributes, excludeAttributes);
5012
4989
  const sortedAttrs = sortAttributes(
5013
- runtimeAttrs.filter((attr) => chunkMXYCCUNB_js.getAttributeCapabilities(attr).presentation.defaultColumn)
4990
+ runtimeAttrs.filter((attr) => chunkTU6ECJFZ_js.getAttributeCapabilities(attr).presentation.defaultColumn)
5014
4991
  );
5015
4992
  const columns = sortedAttrs.slice(0, maxListColumns).map((attr) => attr.name);
5016
4993
  const config = {
@@ -5140,7 +5117,7 @@ var FormRegistry = class {
5140
5117
  const forms = Array.isArray(formOrForms) ? formOrForms : [formOrForms];
5141
5118
  for (const f of forms) {
5142
5119
  if (this.forms.has(f.name)) {
5143
- throw new chunkM3WFXOA4_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
5120
+ throw new chunkHWZRSXFB_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
5144
5121
  }
5145
5122
  this.forms.set(f.name, cloneFormDefinition(f));
5146
5123
  }
@@ -5701,7 +5678,7 @@ function assertAcyclicComputedDependencies(nodes) {
5701
5678
  }
5702
5679
  function parseCompileFormula(expression) {
5703
5680
  try {
5704
- return chunkFAEOVIDJ_js.parseComputedFormula(expression);
5681
+ return chunkLRFLSFIA_js.parseComputedFormula(expression);
5705
5682
  } catch (error) {
5706
5683
  if (error instanceof Error) {
5707
5684
  throw new ComputedFormulaCompileError(error.message);
@@ -6452,9 +6429,9 @@ function evaluateCall(functionName, args) {
6452
6429
  case "percent_not_empty":
6453
6430
  return percentByEmptyState(args[0], false);
6454
6431
  case "count_empty":
6455
- return collectionItems(args[0]).filter(chunk3PGLMGTR_js.isNullishOrEmptyString).length;
6432
+ return collectionItems(args[0]).filter(chunkE47WAI5K_js.isNullishOrEmptyString).length;
6456
6433
  case "count_not_empty":
6457
- return collectionItems(args[0]).filter((item) => !chunk3PGLMGTR_js.isNullishOrEmptyString(item)).length;
6434
+ return collectionItems(args[0]).filter((item) => !chunkE47WAI5K_js.isNullishOrEmptyString(item)).length;
6458
6435
  case "count_unique":
6459
6436
  return uniqueNonEmpty(collectionItems(args[0])).length;
6460
6437
  default:
@@ -6497,14 +6474,14 @@ function percentByEmptyState(value, countEmpty) {
6497
6474
  if (items.length === 0) {
6498
6475
  return 0;
6499
6476
  }
6500
- const count = items.filter((item) => chunk3PGLMGTR_js.isNullishOrEmptyString(item) === countEmpty).length;
6477
+ const count = items.filter((item) => chunkE47WAI5K_js.isNullishOrEmptyString(item) === countEmpty).length;
6501
6478
  return count / items.length;
6502
6479
  }
6503
6480
  function uniqueNonEmpty(values) {
6504
6481
  const seen = /* @__PURE__ */ new Set();
6505
6482
  const result = [];
6506
6483
  for (const value of values) {
6507
- if (chunk3PGLMGTR_js.isNullishOrEmptyString(value)) {
6484
+ if (chunkE47WAI5K_js.isNullishOrEmptyString(value)) {
6508
6485
  continue;
6509
6486
  }
6510
6487
  const key = uniqueKey(value);
@@ -6618,11 +6595,11 @@ function evaluateComputedAst(node, input) {
6618
6595
  return evaluateAst(node, input);
6619
6596
  }
6620
6597
  function evaluateComputedFormula(expression, input) {
6621
- return evaluateAst(chunkFAEOVIDJ_js.parseComputedFormula(expression), input);
6598
+ return evaluateAst(chunkLRFLSFIA_js.parseComputedFormula(expression), input);
6622
6599
  }
6623
6600
  function evaluateComputedFormulaWithResult(expression, input, returnType, decimals) {
6624
6601
  try {
6625
- const raw = evaluateAst(chunkFAEOVIDJ_js.parseComputedFormula(expression), input);
6602
+ const raw = evaluateAst(chunkLRFLSFIA_js.parseComputedFormula(expression), input);
6626
6603
  const value = returnType ? formatComputedResult(raw, returnType, decimals) : raw;
6627
6604
  return { value };
6628
6605
  } catch (error) {
@@ -6747,10 +6724,10 @@ var COMPUTED_FUNCTION_METADATA = [
6747
6724
  ];
6748
6725
 
6749
6726
  // src/filters/operators.ts
6750
- var isEmpty = (v) => chunk3PGLMGTR_js.isNullishOrEmptyString(v) || Array.isArray(v) && v.length === 0;
6727
+ var isEmpty = (v) => chunkE47WAI5K_js.isNullishOrEmptyString(v) || Array.isArray(v) && v.length === 0;
6751
6728
  var toStr = (v) => v == null ? "" : String(v);
6752
6729
  var toNum = (v) => {
6753
- if (chunk3PGLMGTR_js.isNullishOrEmptyString(v)) return null;
6730
+ if (chunkE47WAI5K_js.isNullishOrEmptyString(v)) return null;
6754
6731
  const n = typeof v === "number" ? v : Number(v);
6755
6732
  return Number.isFinite(n) ? n : null;
6756
6733
  };
@@ -6883,7 +6860,7 @@ var OPERATOR_SPECS = {
6883
6860
  appliesTo: ["date"],
6884
6861
  evaluateInMemory: (v, rv) => {
6885
6862
  const d = toDate2(v);
6886
- const bounds = chunkMXYCCUNB_js.resolveIsWithinBounds(rv);
6863
+ const bounds = chunkTU6ECJFZ_js.resolveIsWithinBounds(rv);
6887
6864
  if (!(d && bounds)) return false;
6888
6865
  return d.getTime() >= bounds.startMs && d.getTime() < bounds.endMs;
6889
6866
  }
@@ -6919,7 +6896,7 @@ var OPERATOR_SPECS = {
6919
6896
  // src/filters/evaluate.ts
6920
6897
  var systemAttribute = (name, type) => ({ id: `system:${name}`, name, label: name, type, system: true });
6921
6898
  var RECORD_SYSTEM_ATTRIBUTES = [
6922
- ...Object.entries(chunkMXYCCUNB_js.SYSTEM_FILTER_ATTRIBUTE_TYPES).map(
6899
+ ...Object.entries(chunkTU6ECJFZ_js.SYSTEM_FILTER_ATTRIBUTE_TYPES).map(
6923
6900
  ([name, type]) => systemAttribute(name, type)
6924
6901
  )
6925
6902
  ];
@@ -6960,7 +6937,7 @@ function evaluateRule(rule, values, attrByName) {
6960
6937
  (definition) => definition.name === rule.property
6961
6938
  );
6962
6939
  if (!property) return false;
6963
- const positiveOperator = chunkMXYCCUNB_js.normalizeForEdgeRpc(rule.operator);
6940
+ const positiveOperator = chunkTU6ECJFZ_js.normalizeForEdgeRpc(rule.operator);
6964
6941
  const propertySpec = OPERATOR_SPECS[positiveOperator];
6965
6942
  if (!propertySpec?.appliesTo.includes(property.type)) return false;
6966
6943
  const rootValue = values[rule.attribute];
@@ -6978,7 +6955,7 @@ function evaluateRule(rule, values, attrByName) {
6978
6955
  property
6979
6956
  );
6980
6957
  });
6981
- return (rule.quantifier ?? chunkMXYCCUNB_js.getOperatorPolarity(rule.operator)) === "none" ? !matches : matches;
6958
+ return (rule.quantifier ?? chunkTU6ECJFZ_js.getOperatorPolarity(rule.operator)) === "none" ? !matches : matches;
6982
6959
  }
6983
6960
  const spec = OPERATOR_SPECS[rule.operator];
6984
6961
  if (!spec) return false;
@@ -7027,7 +7004,7 @@ function normalizePhoneComparands(stored, rule) {
7027
7004
  return [normalizeOne(stored), normalizeOne(rule)];
7028
7005
  }
7029
7006
  function normalizeComparableValue(type, value) {
7030
- if (type === "currency") return chunkMXYCCUNB_js.extractCurrencyFilterValue(value);
7007
+ if (type === "currency") return chunkTU6ECJFZ_js.extractCurrencyFilterValue(value);
7031
7008
  if (type === "date") {
7032
7009
  if (isDateRangeValue(value)) return dateValueStart(value);
7033
7010
  if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value.toISOString();
@@ -7136,10 +7113,10 @@ var attributeNameSchema = z2.z.string().min(1).superRefine((name, ctx) => {
7136
7113
  'The attribute\'s machine name \u2014 the record\'s field key, and what `{{ name }}` refers to in a labelExpression. Must be a valid identifier: starts with a letter or underscore, then only letters/digits/underscores ("montantHt", "first_name", "FIRST_NAME" are valid; "first-name", "first name", "123name" are not). Max 63 characters. Cannot be a name reserved by the record shape itself (id, createdAt, updatedAt, createdBy, lastUpdatedBy, objectId, label, embeddingText, values, metadata, deletedAt, deletedBy, schemaVersion).'
7137
7114
  );
7138
7115
  var objectNameSchema = z2.z.string().min(1).superRefine((name, ctx) => {
7139
- if (chunkMXYCCUNB_js.RESERVED_OBJECT_NAMES.includes(name)) {
7116
+ if (chunkTU6ECJFZ_js.RESERVED_OBJECT_NAMES.includes(name)) {
7140
7117
  ctx.addIssue({
7141
7118
  code: z2.z.ZodIssueCode.custom,
7142
- message: `"${name}" is a reserved object name (${chunkMXYCCUNB_js.RESERVED_OBJECT_NAMES.join(", ")}) and cannot be used for a new object.`
7119
+ message: `"${name}" is a reserved object name (${chunkTU6ECJFZ_js.RESERVED_OBJECT_NAMES.join(", ")}) and cannot be used for a new object.`
7143
7120
  });
7144
7121
  }
7145
7122
  try {
@@ -7153,7 +7130,7 @@ var objectNameSchema = z2.z.string().min(1).superRefine((name, ctx) => {
7153
7130
  function withConfigCheck(schema) {
7154
7131
  return schema.superRefine((attribute, ctx) => {
7155
7132
  try {
7156
- const parsedConfig = chunkFAEOVIDJ_js.parseAttributeConfigForCreate(attribute.type, {
7133
+ const parsedConfig = chunkLRFLSFIA_js.parseAttributeConfigForCreate(attribute.type, {
7157
7134
  ...attribute.config ?? {},
7158
7135
  description: attribute.description
7159
7136
  });
@@ -7169,7 +7146,7 @@ function withConfigCheck(schema) {
7169
7146
  });
7170
7147
  }
7171
7148
  } catch (error) {
7172
- if (error instanceof chunkM3WFXOA4_js.ValidationError) {
7149
+ if (error instanceof chunkHWZRSXFB_js.ValidationError) {
7173
7150
  for (const issue of error.errors) {
7174
7151
  ctx.addIssue({
7175
7152
  code: z2.z.ZodIssueCode.custom,
@@ -7216,7 +7193,7 @@ var plannedObjectSchema = z2.z.object({
7216
7193
  'Human-readable plural display label (e.g. "Devis"/"Invoices"). Defaults from `label` if omitted.'
7217
7194
  ),
7218
7195
  description: z2.z.string().optional().describe("Help text describing what this object represents."),
7219
- icon: chunkFAEOVIDJ_js.iconNameSchema.describe(
7196
+ icon: chunkLRFLSFIA_js.iconNameSchema.describe(
7220
7197
  "Required icon name for the object. Must be a catalogue value \u2014 call `search_icons` and use a name it returns verbatim. A name that is not in the catalogue is rejected without any hint as to what would have worked, so never guess one."
7221
7198
  ),
7222
7199
  labelExpression: labelExpressionSchema.describe(
@@ -7274,13 +7251,13 @@ var proposedDefaultViewTargetSchema = z2.z.discriminatedUnion("viewType", [
7274
7251
  z2.z.object({
7275
7252
  objectName: viewTargetObjectNameSchema,
7276
7253
  viewType: z2.z.literal("list").describe("Targets the object's default list view (the grid)."),
7277
- canonicalConfig: chunkMXYCCUNB_js.listViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7254
+ canonicalConfig: chunkTU6ECJFZ_js.listViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7278
7255
  baselineToken: z2.z.string().min(1).optional().describe(BASELINE_TOKEN_DESCRIPTION)
7279
7256
  }).strict(),
7280
7257
  z2.z.object({
7281
7258
  objectName: viewTargetObjectNameSchema,
7282
7259
  viewType: z2.z.literal("detail").describe("Targets the object's default detail view (the single-record view)."),
7283
- canonicalConfig: chunkMXYCCUNB_js.detailViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7260
+ canonicalConfig: chunkTU6ECJFZ_js.detailViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7284
7261
  baselineToken: z2.z.string().min(1).optional().describe(BASELINE_TOKEN_DESCRIPTION)
7285
7262
  }).strict()
7286
7263
  ]);
@@ -7294,13 +7271,13 @@ var persistedDefaultViewTargetSchema = z2.z.discriminatedUnion("viewType", [
7294
7271
  z2.z.object({
7295
7272
  objectName: z2.z.string().min(1),
7296
7273
  viewType: z2.z.literal("list"),
7297
- canonicalConfig: chunkMXYCCUNB_js.listViewConfigSchema,
7274
+ canonicalConfig: chunkTU6ECJFZ_js.listViewConfigSchema,
7298
7275
  ...persistedBaselineFields
7299
7276
  }).strict(),
7300
7277
  z2.z.object({
7301
7278
  objectName: z2.z.string().min(1),
7302
7279
  viewType: z2.z.literal("detail"),
7303
- canonicalConfig: chunkMXYCCUNB_js.detailViewConfigSchema,
7280
+ canonicalConfig: chunkTU6ECJFZ_js.detailViewConfigSchema,
7304
7281
  ...persistedBaselineFields
7305
7282
  }).strict()
7306
7283
  ]).superRefine((target, ctx) => {
@@ -7447,7 +7424,7 @@ function boundSerializedPlanInput(input, ctx) {
7447
7424
  });
7448
7425
  return z2.z.NEVER;
7449
7426
  }
7450
- const serializedBytes = new TextEncoder().encode(chunkXTBGGJ3G_js.canonicalStringify(input)).byteLength;
7427
+ const serializedBytes = new TextEncoder().encode(chunkOYHBQMC7_js.canonicalStringify(input)).byteLength;
7451
7428
  if (serializedBytes > SCHEMA_PLAN_LIMITS.serializedBytes) {
7452
7429
  ctx.addIssue({
7453
7430
  code: "too_big",
@@ -7507,329 +7484,1229 @@ var persistedSchemaPlanSchema = z2.z.preprocess(
7507
7484
  structuralPersistedSchemaPlanSchema
7508
7485
  );
7509
7486
 
7487
+ // src/architect/define-operation.ts
7488
+ function defineOperation(def) {
7489
+ return def;
7490
+ }
7491
+ var operationBase = { id: z2.z.string().min(1) };
7492
+ var viewOperationBase = { ...operationBase, viewId: z2.z.string().min(1) };
7493
+ function mapView(state, viewId, fn) {
7494
+ if (!state.views.some((v) => v.id === viewId)) {
7495
+ throw new chunkHWZRSXFB_js.ValidationError(`View "${viewId}" is not in the draftable state`, []);
7496
+ }
7497
+ return { ...state, views: state.views.map((v) => v.id === viewId ? fn(v) : v) };
7498
+ }
7499
+ function moveWithin(items, from, toIndex) {
7500
+ const next = [...items];
7501
+ const [item] = next.splice(from, 1);
7502
+ next.splice(toIndex, 0, item);
7503
+ return next;
7504
+ }
7505
+ function reorderById(items, order, what) {
7506
+ if (order.length !== items.length) {
7507
+ throw new chunkHWZRSXFB_js.ValidationError(
7508
+ `${what} order lists ${order.length} ids for ${items.length} items`,
7509
+ []
7510
+ );
7511
+ }
7512
+ return order.map((id) => {
7513
+ const found = items.find((item) => item.id === id);
7514
+ if (!found) throw new chunkHWZRSXFB_js.ValidationError(`${what} "${id}" is not in this collection`, []);
7515
+ return found;
7516
+ });
7517
+ }
7518
+
7519
+ // src/architect/operations/detail-view.ts
7520
+ function mapFormTab(view, tabId, fn) {
7521
+ const found = view.tabs.find((t) => t.id === tabId);
7522
+ if (!found) throw new chunkHWZRSXFB_js.ValidationError(`Tab "${tabId}" is not in view "${view.id}"`, []);
7523
+ if (found.type !== "form") {
7524
+ throw new chunkHWZRSXFB_js.ValidationError(`Tab "${tabId}" is not a form tab`, []);
7525
+ }
7526
+ return { ...view, tabs: view.tabs.map((t) => t.id === tabId ? fn(found) : t) };
7527
+ }
7528
+ function requireGroup(tab, groupId) {
7529
+ const found = tab.groups.find((g) => g.id === groupId);
7530
+ if (!found) throw new chunkHWZRSXFB_js.ValidationError(`Group "${groupId}" is not in tab "${tab.id}"`, []);
7531
+ return found;
7532
+ }
7533
+ function locateField(tab, fieldId) {
7534
+ for (const group2 of tab.groups) {
7535
+ const field = group2.fields.find((f) => f.id === fieldId);
7536
+ if (field) return { group: group2, field };
7537
+ }
7538
+ throw new chunkHWZRSXFB_js.ValidationError(`Field slot "${fieldId}" is not in tab "${tab.id}"`, []);
7539
+ }
7540
+ var tabPayload = z2.z.custom(
7541
+ (value) => typeof value === "object" && value !== null && "id" in value && "type" in value,
7542
+ { message: "A tab must be an object carrying id and type" }
7543
+ );
7544
+ var groupPayload = z2.z.custom(
7545
+ (value) => typeof value === "object" && value !== null && "id" in value && "fields" in value,
7546
+ { message: "A group must be an object carrying id and fields" }
7547
+ );
7548
+ var fieldPayload = z2.z.custom(
7549
+ (value) => typeof value === "object" && value !== null && "id" in value,
7550
+ { message: "A field slot must be an object carrying an id" }
7551
+ );
7552
+ var addTabSchema = z2.z.object({
7553
+ ...viewOperationBase,
7554
+ type: z2.z.literal("add_tab"),
7555
+ tab: tabPayload
7556
+ });
7557
+ var addTab = defineOperation({
7558
+ type: "add_tab",
7559
+ schema: addTabSchema,
7560
+ apply: (state, op) => mapView(state, op.viewId, (view) => {
7561
+ if (view.tabs.some((t) => t.id === op.tab.id)) {
7562
+ throw new chunkHWZRSXFB_js.ValidationError(`Tab "${op.tab.id}" already exists in view "${op.viewId}"`, []);
7563
+ }
7564
+ return { ...view, tabs: [...view.tabs, op.tab] };
7565
+ }),
7566
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tab.id }),
7567
+ describe: (op) => `Ajoute l'onglet \xAB ${op.tab.label} \xBB`
7568
+ });
7569
+ var removeTabSchema = z2.z.object({
7570
+ ...viewOperationBase,
7571
+ type: z2.z.literal("remove_tab"),
7572
+ tabId: z2.z.string().min(1)
7573
+ });
7574
+ var removeTab = defineOperation({
7575
+ type: "remove_tab",
7576
+ schema: removeTabSchema,
7577
+ apply: (state, op) => mapView(state, op.viewId, (view) => {
7578
+ if (!view.tabs.some((t) => t.id === op.tabId)) {
7579
+ throw new chunkHWZRSXFB_js.ValidationError(`Tab "${op.tabId}" is not in view "${op.viewId}"`, []);
7580
+ }
7581
+ return { ...view, tabs: view.tabs.filter((t) => t.id !== op.tabId) };
7582
+ }),
7583
+ focus: (op) => ({ viewId: op.viewId }),
7584
+ describe: (op) => `Supprime l'onglet ${op.tabId}`
7585
+ });
7586
+ var updateTabSchema = z2.z.object({
7587
+ ...viewOperationBase,
7588
+ type: z2.z.literal("update_tab"),
7589
+ tabId: z2.z.string().min(1),
7590
+ changes: z2.z.object({
7591
+ label: z2.z.string().min(1).optional(),
7592
+ icon: z2.z.custom((v) => typeof v === "string" && v.length > 0).optional(),
7593
+ order: z2.z.number().int().optional()
7594
+ }).refine((c) => Object.keys(c).length > 0, "update_tab needs at least one change")
7595
+ });
7596
+ var updateTab = defineOperation({
7597
+ type: "update_tab",
7598
+ schema: updateTabSchema,
7599
+ apply: (state, op) => mapView(state, op.viewId, (view) => {
7600
+ if (!view.tabs.some((t) => t.id === op.tabId)) {
7601
+ throw new chunkHWZRSXFB_js.ValidationError(`Tab "${op.tabId}" is not in view "${op.viewId}"`, []);
7602
+ }
7603
+ return {
7604
+ ...view,
7605
+ tabs: view.tabs.map((t) => t.id === op.tabId ? { ...t, ...op.changes } : t)
7606
+ };
7607
+ }),
7608
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId }),
7609
+ describe: (op) => op.changes.label ? `Renomme l'onglet en \xAB ${op.changes.label} \xBB` : `Modifie l'onglet ${op.tabId}`
7610
+ });
7611
+ var reorderTabsSchema = z2.z.object({
7612
+ ...viewOperationBase,
7613
+ type: z2.z.literal("reorder_tabs"),
7614
+ tabOrder: z2.z.array(z2.z.string().min(1))
7615
+ });
7616
+ var reorderTabs = defineOperation({
7617
+ type: "reorder_tabs",
7618
+ schema: reorderTabsSchema,
7619
+ apply: (state, op) => mapView(state, op.viewId, (view) => ({
7620
+ ...view,
7621
+ tabs: reorderById(view.tabs, op.tabOrder, "Tab")
7622
+ })),
7623
+ focus: (op) => ({ viewId: op.viewId }),
7624
+ describe: () => "R\xE9ordonne les onglets"
7625
+ });
7626
+ var addGroupSchema = z2.z.object({
7627
+ ...viewOperationBase,
7628
+ type: z2.z.literal("add_group"),
7629
+ tabId: z2.z.string().min(1),
7630
+ group: groupPayload
7631
+ });
7632
+ var addGroup = defineOperation({
7633
+ type: "add_group",
7634
+ schema: addGroupSchema,
7635
+ apply: (state, op) => mapView(
7636
+ state,
7637
+ op.viewId,
7638
+ (view) => mapFormTab(view, op.tabId, (tab) => {
7639
+ if (tab.groups.some((g) => g.id === op.group.id)) {
7640
+ throw new chunkHWZRSXFB_js.ValidationError(
7641
+ `Group "${op.group.id}" already exists in tab "${op.tabId}"`,
7642
+ []
7643
+ );
7644
+ }
7645
+ return { ...tab, groups: [...tab.groups, op.group] };
7646
+ })
7647
+ ),
7648
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId, groupId: op.group.id }),
7649
+ describe: (op) => `Ajoute le groupe \xAB ${op.group.label} \xBB`
7650
+ });
7651
+ var removeGroupSchema = z2.z.object({
7652
+ ...viewOperationBase,
7653
+ type: z2.z.literal("remove_group"),
7654
+ tabId: z2.z.string().min(1),
7655
+ groupId: z2.z.string().min(1)
7656
+ });
7657
+ var removeGroup = defineOperation({
7658
+ type: "remove_group",
7659
+ schema: removeGroupSchema,
7660
+ apply: (state, op) => mapView(
7661
+ state,
7662
+ op.viewId,
7663
+ (view) => mapFormTab(view, op.tabId, (tab) => {
7664
+ requireGroup(tab, op.groupId);
7665
+ return { ...tab, groups: tab.groups.filter((g) => g.id !== op.groupId) };
7666
+ })
7667
+ ),
7668
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId }),
7669
+ describe: (op) => `Supprime le groupe ${op.groupId}`
7670
+ });
7671
+ var setGroupLabelSchema = z2.z.object({
7672
+ ...viewOperationBase,
7673
+ type: z2.z.literal("set_group_label"),
7674
+ tabId: z2.z.string().min(1),
7675
+ groupId: z2.z.string().min(1),
7676
+ label: z2.z.string().min(1)
7677
+ });
7678
+ var setGroupLabel = defineOperation({
7679
+ type: "set_group_label",
7680
+ schema: setGroupLabelSchema,
7681
+ apply: (state, op) => mapView(
7682
+ state,
7683
+ op.viewId,
7684
+ (view) => mapFormTab(view, op.tabId, (tab) => {
7685
+ requireGroup(tab, op.groupId);
7686
+ return {
7687
+ ...tab,
7688
+ groups: tab.groups.map((g) => g.id === op.groupId ? { ...g, label: op.label } : g)
7689
+ };
7690
+ })
7691
+ ),
7692
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId, groupId: op.groupId }),
7693
+ describe: (op) => `Renomme le groupe en \xAB ${op.label} \xBB`
7694
+ });
7695
+ var reorderGroupsSchema = z2.z.object({
7696
+ ...viewOperationBase,
7697
+ type: z2.z.literal("reorder_groups"),
7698
+ tabId: z2.z.string().min(1),
7699
+ groupOrder: z2.z.array(z2.z.string().min(1))
7700
+ });
7701
+ var reorderGroups = defineOperation({
7702
+ type: "reorder_groups",
7703
+ schema: reorderGroupsSchema,
7704
+ apply: (state, op) => mapView(
7705
+ state,
7706
+ op.viewId,
7707
+ (view) => mapFormTab(view, op.tabId, (tab) => ({
7708
+ ...tab,
7709
+ groups: reorderById(tab.groups, op.groupOrder, "Group")
7710
+ }))
7711
+ ),
7712
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId }),
7713
+ describe: () => "R\xE9ordonne les groupes"
7714
+ });
7715
+ var addFieldSchema = z2.z.object({
7716
+ ...viewOperationBase,
7717
+ type: z2.z.literal("add_field"),
7718
+ tabId: z2.z.string().min(1),
7719
+ groupId: z2.z.string().min(1),
7720
+ field: fieldPayload,
7721
+ index: z2.z.number().int().min(0).optional()
7722
+ });
7723
+ var addField = defineOperation({
7724
+ type: "add_field",
7725
+ schema: addFieldSchema,
7726
+ apply: (state, op) => mapView(
7727
+ state,
7728
+ op.viewId,
7729
+ (view) => mapFormTab(view, op.tabId, (tab) => {
7730
+ requireGroup(tab, op.groupId);
7731
+ if (tab.groups.some((g) => g.fields.some((f) => f.id === op.field.id))) {
7732
+ throw new chunkHWZRSXFB_js.ValidationError(
7733
+ `Field slot "${op.field.id}" already exists in tab "${op.tabId}"`,
7734
+ []
7735
+ );
7736
+ }
7737
+ return {
7738
+ ...tab,
7739
+ groups: tab.groups.map((group2) => {
7740
+ if (group2.id !== op.groupId) return group2;
7741
+ const at = op.index ?? group2.fields.length;
7742
+ return {
7743
+ ...group2,
7744
+ fields: [...group2.fields.slice(0, at), op.field, ...group2.fields.slice(at)]
7745
+ };
7746
+ })
7747
+ };
7748
+ })
7749
+ ),
7750
+ focus: (op) => ({
7751
+ viewId: op.viewId,
7752
+ tabId: op.tabId,
7753
+ groupId: op.groupId,
7754
+ fieldId: op.field.id
7755
+ }),
7756
+ describe: (op) => `Ajoute le champ ${op.field.attribute ?? op.field.id}`
7757
+ });
7758
+ var removeFieldSchema = z2.z.object({
7759
+ ...viewOperationBase,
7760
+ type: z2.z.literal("remove_field"),
7761
+ tabId: z2.z.string().min(1),
7762
+ fieldId: z2.z.string().min(1)
7763
+ });
7764
+ var removeField = defineOperation({
7765
+ type: "remove_field",
7766
+ schema: removeFieldSchema,
7767
+ apply: (state, op) => mapView(
7768
+ state,
7769
+ op.viewId,
7770
+ (view) => mapFormTab(view, op.tabId, (tab) => {
7771
+ const { group: group2 } = locateField(tab, op.fieldId);
7772
+ return {
7773
+ ...tab,
7774
+ groups: tab.groups.map(
7775
+ (g) => g.id === group2.id ? { ...g, fields: g.fields.filter((f) => f.id !== op.fieldId) } : g
7776
+ )
7777
+ };
7778
+ })
7779
+ ),
7780
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId }),
7781
+ describe: (op) => `Retire le champ ${op.fieldId}`
7782
+ });
7783
+ var moveFieldSchema = z2.z.object({
7784
+ ...viewOperationBase,
7785
+ type: z2.z.literal("move_field"),
7786
+ tabId: z2.z.string().min(1),
7787
+ fieldId: z2.z.string().min(1),
7788
+ toGroupId: z2.z.string().min(1),
7789
+ toIndex: z2.z.number().int().min(0)
7790
+ });
7791
+ var moveField = defineOperation({
7792
+ type: "move_field",
7793
+ schema: moveFieldSchema,
7794
+ apply: (state, op) => mapView(
7795
+ state,
7796
+ op.viewId,
7797
+ (view) => mapFormTab(view, op.tabId, (tab) => {
7798
+ const { group: source, field } = locateField(tab, op.fieldId);
7799
+ const target = requireGroup(tab, op.toGroupId);
7800
+ if (source.id === target.id) {
7801
+ const from = source.fields.findIndex((f) => f.id === op.fieldId);
7802
+ return {
7803
+ ...tab,
7804
+ groups: tab.groups.map(
7805
+ (g) => g.id === source.id ? { ...g, fields: moveWithin(g.fields, from, op.toIndex) } : g
7806
+ )
7807
+ };
7808
+ }
7809
+ return {
7810
+ ...tab,
7811
+ groups: tab.groups.map((group2) => {
7812
+ if (group2.id === source.id) {
7813
+ return { ...group2, fields: group2.fields.filter((f) => f.id !== op.fieldId) };
7814
+ }
7815
+ if (group2.id === target.id) {
7816
+ return {
7817
+ ...group2,
7818
+ fields: [
7819
+ ...group2.fields.slice(0, op.toIndex),
7820
+ field,
7821
+ ...group2.fields.slice(op.toIndex)
7822
+ ]
7823
+ };
7824
+ }
7825
+ return group2;
7826
+ })
7827
+ };
7828
+ })
7829
+ ),
7830
+ focus: (op) => ({
7831
+ viewId: op.viewId,
7832
+ tabId: op.tabId,
7833
+ groupId: op.toGroupId,
7834
+ fieldId: op.fieldId
7835
+ }),
7836
+ describe: (op) => `D\xE9place le champ ${op.fieldId} vers le groupe ${op.toGroupId}`
7837
+ });
7838
+ var updateFieldSchema = z2.z.object({
7839
+ ...viewOperationBase,
7840
+ type: z2.z.literal("update_field"),
7841
+ tabId: z2.z.string().min(1),
7842
+ fieldId: z2.z.string().min(1),
7843
+ changes: z2.z.object({
7844
+ label: z2.z.string().optional(),
7845
+ readOnly: z2.z.boolean().optional(),
7846
+ span: z2.z.number().int().min(1).max(12).optional()
7847
+ }).refine((c) => Object.keys(c).length > 0, "update_field needs at least one change")
7848
+ });
7849
+ var updateField = defineOperation({
7850
+ type: "update_field",
7851
+ schema: updateFieldSchema,
7852
+ apply: (state, op) => mapView(
7853
+ state,
7854
+ op.viewId,
7855
+ (view) => mapFormTab(view, op.tabId, (tab) => {
7856
+ locateField(tab, op.fieldId);
7857
+ return {
7858
+ ...tab,
7859
+ groups: tab.groups.map((group2) => ({
7860
+ ...group2,
7861
+ fields: group2.fields.map(
7862
+ (f) => f.id === op.fieldId ? { ...f, ...op.changes } : f
7863
+ )
7864
+ }))
7865
+ };
7866
+ })
7867
+ ),
7868
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId, fieldId: op.fieldId }),
7869
+ describe: (op) => `Modifie le champ ${op.fieldId}`
7870
+ });
7871
+ var setSidePanelSchema = z2.z.object({
7872
+ ...viewOperationBase,
7873
+ type: z2.z.literal("set_side_panel"),
7874
+ sidePanel: z2.z.object({ attributes: z2.z.array(z2.z.string().min(1)), width: z2.z.number().int().min(1).optional() }).nullable()
7875
+ });
7876
+ var setSidePanel = defineOperation({
7877
+ type: "set_side_panel",
7878
+ schema: setSidePanelSchema,
7879
+ apply: (state, op) => mapView(state, op.viewId, (view) => ({
7880
+ ...view,
7881
+ config: {
7882
+ ...view.config,
7883
+ sidePanel: op.sidePanel ?? void 0
7884
+ }
7885
+ })),
7886
+ focus: (op) => ({ viewId: op.viewId }),
7887
+ describe: (op) => op.sidePanel ? "Active le panneau lat\xE9ral" : "Retire le panneau lat\xE9ral"
7888
+ });
7889
+ var DETAIL_VIEW_OPERATIONS = [
7890
+ addTab,
7891
+ removeTab,
7892
+ updateTab,
7893
+ reorderTabs,
7894
+ addGroup,
7895
+ removeGroup,
7896
+ setGroupLabel,
7897
+ reorderGroups,
7898
+ addField,
7899
+ removeField,
7900
+ moveField,
7901
+ updateField,
7902
+ setSidePanel
7903
+ ];
7904
+ var listTabBase = { ...viewOperationBase, tabId: z2.z.string().min(1) };
7905
+ function mapListTab(state, viewId, tabId, fn) {
7906
+ return mapView(state, viewId, (view) => {
7907
+ const tabs = view.config.tabs ?? [];
7908
+ if (!tabs.some((t) => t.id === tabId)) {
7909
+ throw new chunkHWZRSXFB_js.ValidationError(`List tab "${tabId}" is not in view "${viewId}"`, []);
7910
+ }
7911
+ return {
7912
+ ...view,
7913
+ config: { ...view.config, tabs: tabs.map((t) => t.id === tabId ? fn(t) : t) }
7914
+ };
7915
+ });
7916
+ }
7917
+ var listTabPayload = z2.z.custom(
7918
+ (value) => typeof value === "object" && value !== null && "id" in value,
7919
+ { message: "A list tab must be an object carrying an id" }
7920
+ );
7921
+ var filterGroupPayload = z2.z.custom(
7922
+ (value) => value === null || typeof value === "object"
7923
+ );
7924
+ var sortRulesPayload = z2.z.custom((value) => Array.isArray(value));
7925
+ function setOnTab(type, key, valueSchema, describe) {
7926
+ const schema = z2.z.object({ ...listTabBase, type: z2.z.literal(type), value: valueSchema });
7927
+ return defineOperation({
7928
+ type,
7929
+ schema,
7930
+ apply: (state, op) => mapListTab(state, op.viewId, op.tabId, (tab) => {
7931
+ if (op.value === null) {
7932
+ const { [key]: _dropped, ...rest } = tab;
7933
+ return rest;
7934
+ }
7935
+ return { ...tab, [key]: op.value };
7936
+ }),
7937
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId }),
7938
+ describe: (op) => describe(op.value)
7939
+ });
7940
+ }
7941
+ var addListTabSchema = z2.z.object({
7942
+ ...viewOperationBase,
7943
+ type: z2.z.literal("add_list_tab"),
7944
+ tab: listTabPayload
7945
+ });
7946
+ var addListTab = defineOperation({
7947
+ type: "add_list_tab",
7948
+ schema: addListTabSchema,
7949
+ apply: (state, op) => mapView(state, op.viewId, (view) => {
7950
+ const tabs = view.config.tabs ?? [];
7951
+ if (tabs.some((t) => t.id === op.tab.id)) {
7952
+ throw new chunkHWZRSXFB_js.ValidationError(
7953
+ `List tab "${op.tab.id}" already exists in view "${op.viewId}"`,
7954
+ []
7955
+ );
7956
+ }
7957
+ return { ...view, config: { ...view.config, tabs: [...tabs, op.tab] } };
7958
+ }),
7959
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tab.id }),
7960
+ describe: (op) => `Ajoute l'onglet \xAB ${op.tab.label} \xBB`
7961
+ });
7962
+ var removeListTabSchema = z2.z.object({
7963
+ ...listTabBase,
7964
+ type: z2.z.literal("remove_list_tab")
7965
+ });
7966
+ var removeListTab = defineOperation({
7967
+ type: "remove_list_tab",
7968
+ schema: removeListTabSchema,
7969
+ apply: (state, op) => mapView(state, op.viewId, (view) => {
7970
+ const tabs = view.config.tabs ?? [];
7971
+ if (!tabs.some((t) => t.id === op.tabId)) {
7972
+ throw new chunkHWZRSXFB_js.ValidationError(`List tab "${op.tabId}" is not in view "${op.viewId}"`, []);
7973
+ }
7974
+ return {
7975
+ ...view,
7976
+ config: { ...view.config, tabs: tabs.filter((t) => t.id !== op.tabId) }
7977
+ };
7978
+ }),
7979
+ focus: (op) => ({ viewId: op.viewId }),
7980
+ describe: (op) => `Supprime l'onglet ${op.tabId}`
7981
+ });
7982
+ var updateListTabSchema = z2.z.object({
7983
+ ...listTabBase,
7984
+ type: z2.z.literal("update_list_tab"),
7985
+ changes: z2.z.object({
7986
+ label: z2.z.string().min(1).optional(),
7987
+ icon: z2.z.custom((v) => typeof v === "string" && v.length > 0).optional(),
7988
+ default: z2.z.boolean().optional(),
7989
+ visibility: z2.z.enum(chunkTU6ECJFZ_js.LIST_VIEW_TAB_VISIBILITIES).optional()
7990
+ }).refine((c) => Object.keys(c).length > 0, "update_list_tab needs at least one change")
7991
+ });
7992
+ var updateListTab = defineOperation({
7993
+ type: "update_list_tab",
7994
+ schema: updateListTabSchema,
7995
+ apply: (state, op) => mapListTab(state, op.viewId, op.tabId, (tab) => ({ ...tab, ...op.changes })),
7996
+ focus: (op) => ({ viewId: op.viewId, tabId: op.tabId }),
7997
+ describe: (op) => op.changes.label ? `Renomme l'onglet en \xAB ${op.changes.label} \xBB` : `Modifie l'onglet ${op.tabId}`
7998
+ });
7999
+ var reorderListTabsSchema = z2.z.object({
8000
+ ...viewOperationBase,
8001
+ type: z2.z.literal("reorder_list_tabs"),
8002
+ tabOrder: z2.z.array(z2.z.string().min(1))
8003
+ });
8004
+ var reorderListTabs = defineOperation({
8005
+ type: "reorder_list_tabs",
8006
+ schema: reorderListTabsSchema,
8007
+ apply: (state, op) => mapView(state, op.viewId, (view) => ({
8008
+ ...view,
8009
+ config: {
8010
+ ...view.config,
8011
+ tabs: reorderById(view.config.tabs ?? [], op.tabOrder, "List tab")
8012
+ }
8013
+ })),
8014
+ focus: (op) => ({ viewId: op.viewId }),
8015
+ describe: () => "R\xE9ordonne les onglets"
8016
+ });
8017
+ var setColumns = setOnTab(
8018
+ "set_columns",
8019
+ "columns",
8020
+ z2.z.array(z2.z.string().min(1)),
8021
+ // Defensive on shape: a summary is rendered in a list beside other summaries,
8022
+ // and one malformed payload must not take the page down with it.
8023
+ (value) => `Affiche ${Array.isArray(value) ? value.length : 0} colonne(s)`
8024
+ );
8025
+ var setColumnSizing = setOnTab(
8026
+ "set_column_sizing",
8027
+ "columnSizing",
8028
+ z2.z.record(z2.z.string(), z2.z.number().int().positive()),
8029
+ () => "Ajuste la largeur des colonnes"
8030
+ );
8031
+ var setLayout = setOnTab(
8032
+ "set_layout",
8033
+ "layout",
8034
+ z2.z.enum(["table", "kanban"]),
8035
+ (value) => `Passe en affichage ${value}`
8036
+ );
8037
+ var setGroupBy = setOnTab(
8038
+ "set_group_by",
8039
+ "groupByAttribute",
8040
+ z2.z.string().min(1).nullable(),
8041
+ (value) => value ? `Regroupe par ${value}` : "Retire le regroupement"
8042
+ );
8043
+ var setFilters = setOnTab(
8044
+ "set_filters",
8045
+ "filters",
8046
+ filterGroupPayload.nullable(),
8047
+ (value) => value ? "Modifie les filtres" : "Retire les filtres"
8048
+ );
8049
+ var setSorts = setOnTab(
8050
+ "set_sorts",
8051
+ "sorts",
8052
+ sortRulesPayload.nullable(),
8053
+ (value) => value ? "Modifie le tri" : "Retire le tri"
8054
+ );
8055
+ var setCreateMode = setOnTab(
8056
+ "set_create_mode",
8057
+ "createMode",
8058
+ z2.z.enum(["redirect", "inline", "peek"]),
8059
+ (value) => `Cr\xE9ation en mode ${value}`
8060
+ );
8061
+ var setReadOnly = setOnTab(
8062
+ "set_read_only",
8063
+ "readOnly",
8064
+ z2.z.boolean(),
8065
+ (value) => value ? "Passe l'onglet en lecture seule" : "Rend l'onglet modifiable"
8066
+ );
8067
+ var setCardUserAttribute = setOnTab(
8068
+ "set_card_user_attribute",
8069
+ "cardUserAttribute",
8070
+ z2.z.string().min(1).nullable(),
8071
+ (value) => value ? `Affiche ${value} sur les cartes` : "Retire l'utilisateur des cartes"
8072
+ );
8073
+ var setCardDateAttribute = setOnTab(
8074
+ "set_card_date_attribute",
8075
+ "cardDateAttribute",
8076
+ z2.z.string().min(1).nullable(),
8077
+ (value) => value ? `Affiche ${value} sur les cartes` : "Retire la date des cartes"
8078
+ );
8079
+ var LIST_VIEW_OPERATIONS = [
8080
+ addListTab,
8081
+ removeListTab,
8082
+ updateListTab,
8083
+ reorderListTabs,
8084
+ setColumns,
8085
+ setColumnSizing,
8086
+ setLayout,
8087
+ setGroupBy,
8088
+ setFilters,
8089
+ setSorts,
8090
+ setCreateMode,
8091
+ setReadOnly,
8092
+ setCardUserAttribute,
8093
+ setCardDateAttribute
8094
+ ];
8095
+ function requireObject(state, objectId) {
8096
+ if (!state.objects.some((o) => o.id === objectId)) {
8097
+ throw new chunkHWZRSXFB_js.ValidationError(`Object "${objectId}" is not in the draftable state`, []);
8098
+ }
8099
+ }
8100
+ var objectOperationBase = { ...operationBase, objectId: z2.z.string().min(1) };
8101
+ var addObjectSchema = z2.z.object({
8102
+ ...objectOperationBase,
8103
+ type: z2.z.literal("add_object"),
8104
+ name: z2.z.string().min(1),
8105
+ label: z2.z.string().min(1),
8106
+ icon: z2.z.string().min(1).optional()
8107
+ });
8108
+ var addObject = defineOperation({
8109
+ type: "add_object",
8110
+ schema: addObjectSchema,
8111
+ apply: (state, op) => {
8112
+ if (state.objects.some((o) => o.name === op.name)) {
8113
+ throw new chunkHWZRSXFB_js.ValidationError(`Object "${op.name}" already exists`, []);
8114
+ }
8115
+ if (state.objects.some((o) => o.id === op.objectId)) {
8116
+ throw new chunkHWZRSXFB_js.ValidationError(`Object id "${op.objectId}" is already taken`, []);
8117
+ }
8118
+ const created = {
8119
+ id: op.objectId,
8120
+ name: op.name,
8121
+ label: op.label,
8122
+ ...op.icon === void 0 ? {} : { icon: op.icon }
8123
+ };
8124
+ return { ...state, objects: [...state.objects, created] };
8125
+ },
8126
+ // The caller generates objectId, so a draft object is addressable by route
8127
+ // before it exists — that is what lets the app navigate to it live.
8128
+ focus: (op) => ({ objectId: op.objectId }),
8129
+ describe: (op) => `Cr\xE9e l'objet \xAB ${op.label} \xBB`
8130
+ });
8131
+ var updateObjectSchema = z2.z.object({
8132
+ ...objectOperationBase,
8133
+ type: z2.z.literal("update_object"),
8134
+ changes: z2.z.object({ label: z2.z.string().min(1).optional(), icon: z2.z.string().min(1).optional() }).refine((c) => Object.keys(c).length > 0, "update_object needs at least one change")
8135
+ });
8136
+ var updateObject = defineOperation({
8137
+ type: "update_object",
8138
+ schema: updateObjectSchema,
8139
+ apply: (state, op) => {
8140
+ requireObject(state, op.objectId);
8141
+ return {
8142
+ ...state,
8143
+ objects: state.objects.map((o) => o.id === op.objectId ? { ...o, ...op.changes } : o)
8144
+ };
8145
+ },
8146
+ focus: (op) => ({ objectId: op.objectId }),
8147
+ describe: (op) => op.changes.label ? `Renomme l'objet en \xAB ${op.changes.label} \xBB` : "Modifie l'objet"
8148
+ });
8149
+ var removeObjectSchema = z2.z.object({ ...objectOperationBase, type: z2.z.literal("remove_object") });
8150
+ var removeObject = defineOperation({
8151
+ type: "remove_object",
8152
+ schema: removeObjectSchema,
8153
+ apply: (state, op) => {
8154
+ requireObject(state, op.objectId);
8155
+ return {
8156
+ ...state,
8157
+ objects: state.objects.filter((o) => o.id !== op.objectId),
8158
+ attributes: state.attributes.filter((a) => a.objectId !== op.objectId),
8159
+ sampleRecords: state.sampleRecords.filter((r) => r.objectId !== op.objectId),
8160
+ views: state.views.filter((v) => v.objectId !== op.objectId)
8161
+ };
8162
+ },
8163
+ focus: () => ({}),
8164
+ describe: (op) => `Supprime l'objet ${op.objectId}`
8165
+ });
8166
+ var addAttributeSchema = z2.z.object({
8167
+ ...objectOperationBase,
8168
+ type: z2.z.literal("add_attribute"),
8169
+ attributeId: z2.z.string().min(1),
8170
+ name: z2.z.string().min(1),
8171
+ label: z2.z.string().min(1),
8172
+ attributeType: z2.z.string().min(1)
8173
+ });
8174
+ var addAttribute = defineOperation({
8175
+ type: "add_attribute",
8176
+ schema: addAttributeSchema,
8177
+ apply: (state, op) => {
8178
+ requireObject(state, op.objectId);
8179
+ if (state.attributes.some((a) => a.objectId === op.objectId && a.name === op.name)) {
8180
+ throw new chunkHWZRSXFB_js.ValidationError(
8181
+ `Attribute "${op.name}" already exists on object "${op.objectId}"`,
8182
+ []
8183
+ );
8184
+ }
8185
+ return {
8186
+ ...state,
8187
+ attributes: [
8188
+ ...state.attributes,
8189
+ {
8190
+ id: op.attributeId,
8191
+ objectId: op.objectId,
8192
+ name: op.name,
8193
+ label: op.label,
8194
+ attributeType: op.attributeType
8195
+ }
8196
+ ]
8197
+ };
8198
+ },
8199
+ focus: (op) => ({ objectId: op.objectId }),
8200
+ describe: (op) => `Ajoute l'attribut \xAB ${op.label} \xBB`
8201
+ });
8202
+ var updateAttributeSchema = z2.z.object({
8203
+ ...operationBase,
8204
+ type: z2.z.literal("update_attribute"),
8205
+ attributeId: z2.z.string().min(1),
8206
+ changes: z2.z.object({ label: z2.z.string().min(1).optional() }).refine((c) => Object.keys(c).length > 0, "update_attribute needs at least one change")
8207
+ });
8208
+ var updateAttribute = defineOperation({
8209
+ type: "update_attribute",
8210
+ schema: updateAttributeSchema,
8211
+ apply: (state, op) => {
8212
+ if (!state.attributes.some((a) => a.id === op.attributeId)) {
8213
+ throw new chunkHWZRSXFB_js.ValidationError(`Attribute "${op.attributeId}" is not in the draftable state`, []);
8214
+ }
8215
+ return {
8216
+ ...state,
8217
+ attributes: state.attributes.map(
8218
+ (a) => a.id === op.attributeId ? { ...a, ...op.changes } : a
8219
+ )
8220
+ };
8221
+ },
8222
+ focus: () => ({}),
8223
+ describe: (op) => op.changes.label ? `Renomme l'attribut en \xAB ${op.changes.label} \xBB` : "Modifie l'attribut"
8224
+ });
8225
+ var removeAttributeSchema = z2.z.object({
8226
+ ...operationBase,
8227
+ type: z2.z.literal("remove_attribute"),
8228
+ attributeId: z2.z.string().min(1)
8229
+ });
8230
+ var removeAttribute = defineOperation({
8231
+ type: "remove_attribute",
8232
+ schema: removeAttributeSchema,
8233
+ apply: (state, op) => {
8234
+ if (!state.attributes.some((a) => a.id === op.attributeId)) {
8235
+ throw new chunkHWZRSXFB_js.ValidationError(`Attribute "${op.attributeId}" is not in the draftable state`, []);
8236
+ }
8237
+ return { ...state, attributes: state.attributes.filter((a) => a.id !== op.attributeId) };
8238
+ },
8239
+ focus: () => ({}),
8240
+ describe: (op) => `Supprime l'attribut ${op.attributeId}`
8241
+ });
8242
+ var addSampleRecordSchema = z2.z.object({
8243
+ ...objectOperationBase,
8244
+ type: z2.z.literal("add_sample_record"),
8245
+ recordId: z2.z.string().min(1),
8246
+ values: z2.z.record(z2.z.string(), z2.z.unknown())
8247
+ });
8248
+ var addSampleRecord = defineOperation({
8249
+ type: "add_sample_record",
8250
+ schema: addSampleRecordSchema,
8251
+ apply: (state, op) => {
8252
+ requireObject(state, op.objectId);
8253
+ if (state.sampleRecords.some((r) => r.id === op.recordId)) {
8254
+ throw new chunkHWZRSXFB_js.ValidationError(`Sample record "${op.recordId}" already exists`, []);
8255
+ }
8256
+ return {
8257
+ ...state,
8258
+ sampleRecords: [
8259
+ ...state.sampleRecords,
8260
+ { id: op.recordId, objectId: op.objectId, values: op.values }
8261
+ ]
8262
+ };
8263
+ },
8264
+ // A sample is a draft record, not a render-time fiction: publishing
8265
+ // materialises it, discarding the draft discards it.
8266
+ focus: (op) => ({ objectId: op.objectId, recordId: op.recordId }),
8267
+ describe: () => "Ajoute un exemple"
8268
+ });
8269
+ var removeSampleRecordSchema = z2.z.object({
8270
+ ...operationBase,
8271
+ type: z2.z.literal("remove_sample_record"),
8272
+ recordId: z2.z.string().min(1)
8273
+ });
8274
+ var removeSampleRecord = defineOperation({
8275
+ type: "remove_sample_record",
8276
+ schema: removeSampleRecordSchema,
8277
+ apply: (state, op) => {
8278
+ if (!state.sampleRecords.some((r) => r.id === op.recordId)) {
8279
+ throw new chunkHWZRSXFB_js.ValidationError(`Sample record "${op.recordId}" is not in the draft`, []);
8280
+ }
8281
+ return { ...state, sampleRecords: state.sampleRecords.filter((r) => r.id !== op.recordId) };
8282
+ },
8283
+ focus: () => ({}),
8284
+ describe: () => "Retire un exemple"
8285
+ });
8286
+ var SCHEMA_OPERATIONS = [
8287
+ addObject,
8288
+ updateObject,
8289
+ removeObject,
8290
+ addAttribute,
8291
+ updateAttribute,
8292
+ removeAttribute,
8293
+ addSampleRecord,
8294
+ removeSampleRecord
8295
+ ];
8296
+
8297
+ // src/architect/registry.ts
8298
+ function build() {
8299
+ const map = /* @__PURE__ */ new Map();
8300
+ for (const definition of [
8301
+ ...SCHEMA_OPERATIONS,
8302
+ ...DETAIL_VIEW_OPERATIONS,
8303
+ ...LIST_VIEW_OPERATIONS
8304
+ ]) {
8305
+ if (map.has(definition.type)) {
8306
+ throw new chunkHWZRSXFB_js.DuplicateError("architect operation", definition.type);
8307
+ }
8308
+ map.set(definition.type, definition);
8309
+ }
8310
+ return map;
8311
+ }
8312
+ var OPERATION_REGISTRY = build();
8313
+ var ALL_OPERATION_TYPES = [...OPERATION_REGISTRY.keys()];
8314
+
8315
+ // src/architect/apply.ts
8316
+ function defOf(operation) {
8317
+ const definition = OPERATION_REGISTRY.get(operation.type);
8318
+ if (!definition) {
8319
+ throw new chunkHWZRSXFB_js.ValidationError(
8320
+ `Operation "${operation.id}" has unknown type "${operation.type}"`,
8321
+ []
8322
+ );
8323
+ }
8324
+ return definition;
8325
+ }
8326
+ function applyOperations(state, operations) {
8327
+ return operations.reduce(
8328
+ (acc, operation) => defOf(operation).apply(acc, operation),
8329
+ state
8330
+ );
8331
+ }
8332
+ function focusOf(operation) {
8333
+ return defOf(operation).focus(operation);
8334
+ }
8335
+ function describeOperations(operations, ctx) {
8336
+ return operations.map((operation) => defOf(operation).describe(operation, ctx));
8337
+ }
8338
+ function parseOperation(candidate) {
8339
+ if (typeof candidate !== "object" || candidate === null || !("type" in candidate)) {
8340
+ throw new chunkHWZRSXFB_js.ValidationError("An operation must be an object carrying a type", []);
8341
+ }
8342
+ const type = candidate.type;
8343
+ if (typeof type !== "string") {
8344
+ throw new chunkHWZRSXFB_js.ValidationError("An operation's type must be a string", []);
8345
+ }
8346
+ const definition = OPERATION_REGISTRY.get(type);
8347
+ if (!definition) {
8348
+ throw new chunkHWZRSXFB_js.ValidationError(`Unknown operation type "${type}"`, []);
8349
+ }
8350
+ const parsed = definition.schema.safeParse(candidate);
8351
+ if (!parsed.success) {
8352
+ throw new chunkHWZRSXFB_js.ValidationError(
8353
+ `Operation "${type}" is invalid: ${parsed.error.issues.map((i) => `${i.path.join(".")} ${i.message}`).join("; ")}`,
8354
+ []
8355
+ );
8356
+ }
8357
+ return parsed.data;
8358
+ }
8359
+
8360
+ // src/architect/field-ids.ts
8361
+ function makeFieldId(groupId, seed, collisionIndex) {
8362
+ const base = `fld_${groupId}_${seed}`;
8363
+ return collisionIndex === 0 ? base : `${base}_${collisionIndex}`;
8364
+ }
8365
+ function seedOf(field, index) {
8366
+ if (field.attributeGroup) return field.attributeGroup.id;
8367
+ if (field.attribute) return field.attribute;
8368
+ return `slot${index}`;
8369
+ }
8370
+ function withIds(group2) {
8371
+ const seen = /* @__PURE__ */ new Map();
8372
+ const fields = group2.fields.map((field, index) => {
8373
+ if (field.id) return field;
8374
+ const seed = seedOf(field, index);
8375
+ const collisionIndex = seen.get(seed) ?? 0;
8376
+ seen.set(seed, collisionIndex + 1);
8377
+ return { ...field, id: makeFieldId(group2.id, seed, collisionIndex) };
8378
+ });
8379
+ return { ...group2, fields };
8380
+ }
8381
+ function ensureFieldIds(tabs) {
8382
+ return tabs.map(
8383
+ (tab) => tab.type === "form" ? { ...tab, groups: tab.groups.map(withIds) } : tab
8384
+ );
8385
+ }
8386
+
7510
8387
  Object.defineProperty(exports, "asTenantId", {
7511
8388
  enumerable: true,
7512
- get: function () { return chunkXTBGGJ3G_js.asTenantId; }
8389
+ get: function () { return chunkOYHBQMC7_js.asTenantId; }
7513
8390
  });
7514
8391
  Object.defineProperty(exports, "asUserId", {
7515
8392
  enumerable: true,
7516
- get: function () { return chunkXTBGGJ3G_js.asUserId; }
8393
+ get: function () { return chunkOYHBQMC7_js.asUserId; }
7517
8394
  });
7518
8395
  Object.defineProperty(exports, "canonicalStringify", {
7519
8396
  enumerable: true,
7520
- get: function () { return chunkXTBGGJ3G_js.canonicalStringify; }
8397
+ get: function () { return chunkOYHBQMC7_js.canonicalStringify; }
7521
8398
  });
7522
8399
  Object.defineProperty(exports, "deepEqual", {
7523
8400
  enumerable: true,
7524
- get: function () { return chunkXTBGGJ3G_js.deepEqual; }
8401
+ get: function () { return chunkOYHBQMC7_js.deepEqual; }
7525
8402
  });
7526
8403
  Object.defineProperty(exports, "generateId", {
7527
8404
  enumerable: true,
7528
- get: function () { return chunkXTBGGJ3G_js.generateId; }
8405
+ get: function () { return chunkOYHBQMC7_js.generateId; }
7529
8406
  });
7530
8407
  Object.defineProperty(exports, "indexBy", {
7531
8408
  enumerable: true,
7532
- get: function () { return chunkXTBGGJ3G_js.indexBy; }
8409
+ get: function () { return chunkOYHBQMC7_js.indexBy; }
7533
8410
  });
7534
8411
  Object.defineProperty(exports, "ATTRIBUTE_FILTER_OPERATORS", {
7535
8412
  enumerable: true,
7536
- get: function () { return chunkMXYCCUNB_js.ATTRIBUTE_FILTER_OPERATORS; }
8413
+ get: function () { return chunkTU6ECJFZ_js.ATTRIBUTE_FILTER_OPERATORS; }
7537
8414
  });
7538
8415
  Object.defineProperty(exports, "LIST_VIEW_TAB_VISIBILITIES", {
7539
8416
  enumerable: true,
7540
- get: function () { return chunkMXYCCUNB_js.LIST_VIEW_TAB_VISIBILITIES; }
8417
+ get: function () { return chunkTU6ECJFZ_js.LIST_VIEW_TAB_VISIBILITIES; }
7541
8418
  });
7542
8419
  Object.defineProperty(exports, "NO_VALUE_OPERATORS", {
7543
8420
  enumerable: true,
7544
- get: function () { return chunkMXYCCUNB_js.NO_VALUE_OPERATORS; }
8421
+ get: function () { return chunkTU6ECJFZ_js.NO_VALUE_OPERATORS; }
7545
8422
  });
7546
8423
  Object.defineProperty(exports, "OPERATORS_BY_TYPE", {
7547
8424
  enumerable: true,
7548
- get: function () { return chunkMXYCCUNB_js.OPERATORS_BY_TYPE; }
8425
+ get: function () { return chunkTU6ECJFZ_js.OPERATORS_BY_TYPE; }
7549
8426
  });
7550
8427
  Object.defineProperty(exports, "REMOVED_OPERATOR_REPLACEMENTS", {
7551
8428
  enumerable: true,
7552
- get: function () { return chunkMXYCCUNB_js.REMOVED_OPERATOR_REPLACEMENTS; }
8429
+ get: function () { return chunkTU6ECJFZ_js.REMOVED_OPERATOR_REPLACEMENTS; }
7553
8430
  });
7554
8431
  Object.defineProperty(exports, "RESERVED_ATTRIBUTE_NAMES", {
7555
8432
  enumerable: true,
7556
- get: function () { return chunkMXYCCUNB_js.RESERVED_ATTRIBUTE_NAMES; }
8433
+ get: function () { return chunkTU6ECJFZ_js.RESERVED_ATTRIBUTE_NAMES; }
7557
8434
  });
7558
8435
  Object.defineProperty(exports, "RESERVED_OBJECT_NAMES", {
7559
8436
  enumerable: true,
7560
- get: function () { return chunkMXYCCUNB_js.RESERVED_OBJECT_NAMES; }
8437
+ get: function () { return chunkTU6ECJFZ_js.RESERVED_OBJECT_NAMES; }
7561
8438
  });
7562
8439
  Object.defineProperty(exports, "RESOURCE_VISIBILITIES", {
7563
8440
  enumerable: true,
7564
- get: function () { return chunkMXYCCUNB_js.RESOURCE_VISIBILITIES; }
8441
+ get: function () { return chunkTU6ECJFZ_js.RESOURCE_VISIBILITIES; }
7565
8442
  });
7566
8443
  Object.defineProperty(exports, "SYNONYM_ALIASES", {
7567
8444
  enumerable: true,
7568
- get: function () { return chunkMXYCCUNB_js.SYNONYM_ALIASES; }
8445
+ get: function () { return chunkTU6ECJFZ_js.SYNONYM_ALIASES; }
7569
8446
  });
7570
8447
  Object.defineProperty(exports, "SYSTEM_ATTRIBUTES", {
7571
8448
  enumerable: true,
7572
- get: function () { return chunkMXYCCUNB_js.SYSTEM_ATTRIBUTES; }
8449
+ get: function () { return chunkTU6ECJFZ_js.SYSTEM_ATTRIBUTES; }
7573
8450
  });
7574
8451
  Object.defineProperty(exports, "SYSTEM_ATTRIBUTE_I18N_KEYS", {
7575
8452
  enumerable: true,
7576
- get: function () { return chunkMXYCCUNB_js.SYSTEM_ATTRIBUTE_I18N_KEYS; }
8453
+ get: function () { return chunkTU6ECJFZ_js.SYSTEM_ATTRIBUTE_I18N_KEYS; }
7577
8454
  });
7578
8455
  Object.defineProperty(exports, "SYSTEM_FIELD_NAMES", {
7579
8456
  enumerable: true,
7580
- get: function () { return chunkMXYCCUNB_js.SYSTEM_FIELD_NAMES; }
8457
+ get: function () { return chunkTU6ECJFZ_js.SYSTEM_FIELD_NAMES; }
7581
8458
  });
7582
8459
  Object.defineProperty(exports, "SYSTEM_FILTER_ATTRIBUTE_TYPES", {
7583
8460
  enumerable: true,
7584
- get: function () { return chunkMXYCCUNB_js.SYSTEM_FILTER_ATTRIBUTE_TYPES; }
8461
+ get: function () { return chunkTU6ECJFZ_js.SYSTEM_FILTER_ATTRIBUTE_TYPES; }
7585
8462
  });
7586
8463
  Object.defineProperty(exports, "canonicalizeFilterValue", {
7587
8464
  enumerable: true,
7588
- get: function () { return chunkMXYCCUNB_js.canonicalizeFilterValue; }
8465
+ get: function () { return chunkTU6ECJFZ_js.canonicalizeFilterValue; }
7589
8466
  });
7590
8467
  Object.defineProperty(exports, "collectQualifiedRuleIssues", {
7591
8468
  enumerable: true,
7592
- get: function () { return chunkMXYCCUNB_js.collectQualifiedRuleIssues; }
8469
+ get: function () { return chunkTU6ECJFZ_js.collectQualifiedRuleIssues; }
7593
8470
  });
7594
8471
  Object.defineProperty(exports, "currentActor", {
7595
8472
  enumerable: true,
7596
- get: function () { return chunkMXYCCUNB_js.currentActor; }
8473
+ get: function () { return chunkTU6ECJFZ_js.currentActor; }
7597
8474
  });
7598
8475
  Object.defineProperty(exports, "detailTabSchema", {
7599
8476
  enumerable: true,
7600
- get: function () { return chunkMXYCCUNB_js.detailTabSchema; }
8477
+ get: function () { return chunkTU6ECJFZ_js.detailTabSchema; }
7601
8478
  });
7602
8479
  Object.defineProperty(exports, "detailViewConfigSchema", {
7603
8480
  enumerable: true,
7604
- get: function () { return chunkMXYCCUNB_js.detailViewConfigSchema; }
8481
+ get: function () { return chunkTU6ECJFZ_js.detailViewConfigSchema; }
7605
8482
  });
7606
8483
  Object.defineProperty(exports, "extractCurrencyFilterValue", {
7607
8484
  enumerable: true,
7608
- get: function () { return chunkMXYCCUNB_js.extractCurrencyFilterValue; }
8485
+ get: function () { return chunkTU6ECJFZ_js.extractCurrencyFilterValue; }
7609
8486
  });
7610
8487
  Object.defineProperty(exports, "extractFilterValue", {
7611
8488
  enumerable: true,
7612
- get: function () { return chunkMXYCCUNB_js.extractFilterValue; }
8489
+ get: function () { return chunkTU6ECJFZ_js.extractFilterValue; }
7613
8490
  });
7614
8491
  Object.defineProperty(exports, "getAttributeCapabilities", {
7615
8492
  enumerable: true,
7616
- get: function () { return chunkMXYCCUNB_js.getAttributeCapabilities; }
8493
+ get: function () { return chunkTU6ECJFZ_js.getAttributeCapabilities; }
7617
8494
  });
7618
8495
  Object.defineProperty(exports, "getAttributeFilterOperators", {
7619
8496
  enumerable: true,
7620
- get: function () { return chunkMXYCCUNB_js.getAttributeFilterOperators; }
8497
+ get: function () { return chunkTU6ECJFZ_js.getAttributeFilterOperators; }
7621
8498
  });
7622
8499
  Object.defineProperty(exports, "getOperatorPolarity", {
7623
8500
  enumerable: true,
7624
- get: function () { return chunkMXYCCUNB_js.getOperatorPolarity; }
8501
+ get: function () { return chunkTU6ECJFZ_js.getOperatorPolarity; }
7625
8502
  });
7626
8503
  Object.defineProperty(exports, "getRollupFilterOperators", {
7627
8504
  enumerable: true,
7628
- get: function () { return chunkMXYCCUNB_js.getRollupFilterOperators; }
8505
+ get: function () { return chunkTU6ECJFZ_js.getRollupFilterOperators; }
7629
8506
  });
7630
8507
  Object.defineProperty(exports, "getSystemAttributeI18nKey", {
7631
8508
  enumerable: true,
7632
- get: function () { return chunkMXYCCUNB_js.getSystemAttributeI18nKey; }
8509
+ get: function () { return chunkTU6ECJFZ_js.getSystemAttributeI18nKey; }
7633
8510
  });
7634
8511
  Object.defineProperty(exports, "getSystemAttributeList", {
7635
8512
  enumerable: true,
7636
- get: function () { return chunkMXYCCUNB_js.getSystemAttributeList; }
8513
+ get: function () { return chunkTU6ECJFZ_js.getSystemAttributeList; }
7637
8514
  });
7638
8515
  Object.defineProperty(exports, "inverseSourceSchema", {
7639
8516
  enumerable: true,
7640
- get: function () { return chunkMXYCCUNB_js.inverseSourceSchema; }
8517
+ get: function () { return chunkTU6ECJFZ_js.inverseSourceSchema; }
7641
8518
  });
7642
8519
  Object.defineProperty(exports, "isAttributeFilterable", {
7643
8520
  enumerable: true,
7644
- get: function () { return chunkMXYCCUNB_js.isAttributeFilterable; }
8521
+ get: function () { return chunkTU6ECJFZ_js.isAttributeFilterable; }
7645
8522
  });
7646
8523
  Object.defineProperty(exports, "isAttributeGroupable", {
7647
8524
  enumerable: true,
7648
- get: function () { return chunkMXYCCUNB_js.isAttributeGroupable; }
8525
+ get: function () { return chunkTU6ECJFZ_js.isAttributeGroupable; }
7649
8526
  });
7650
8527
  Object.defineProperty(exports, "isAttributeKanbanGroupable", {
7651
8528
  enumerable: true,
7652
- get: function () { return chunkMXYCCUNB_js.isAttributeKanbanGroupable; }
8529
+ get: function () { return chunkTU6ECJFZ_js.isAttributeKanbanGroupable; }
7653
8530
  });
7654
8531
  Object.defineProperty(exports, "isAttributeSearchable", {
7655
8532
  enumerable: true,
7656
- get: function () { return chunkMXYCCUNB_js.isAttributeSearchable; }
8533
+ get: function () { return chunkTU6ECJFZ_js.isAttributeSearchable; }
7657
8534
  });
7658
8535
  Object.defineProperty(exports, "isDynamicValue", {
7659
8536
  enumerable: true,
7660
- get: function () { return chunkMXYCCUNB_js.isDynamicValue; }
8537
+ get: function () { return chunkTU6ECJFZ_js.isDynamicValue; }
7661
8538
  });
7662
8539
  Object.defineProperty(exports, "isManagedSystemAttribute", {
7663
8540
  enumerable: true,
7664
- get: function () { return chunkMXYCCUNB_js.isManagedSystemAttribute; }
8541
+ get: function () { return chunkTU6ECJFZ_js.isManagedSystemAttribute; }
7665
8542
  });
7666
8543
  Object.defineProperty(exports, "isNoValueOperator", {
7667
8544
  enumerable: true,
7668
- get: function () { return chunkMXYCCUNB_js.isNoValueOperator; }
8545
+ get: function () { return chunkTU6ECJFZ_js.isNoValueOperator; }
7669
8546
  });
7670
8547
  Object.defineProperty(exports, "isRelativeDateValue", {
7671
8548
  enumerable: true,
7672
- get: function () { return chunkMXYCCUNB_js.isRelativeDateValue; }
8549
+ get: function () { return chunkTU6ECJFZ_js.isRelativeDateValue; }
7673
8550
  });
7674
8551
  Object.defineProperty(exports, "isSetMembershipOperator", {
7675
8552
  enumerable: true,
7676
- get: function () { return chunkMXYCCUNB_js.isSetMembershipOperator; }
8553
+ get: function () { return chunkTU6ECJFZ_js.isSetMembershipOperator; }
7677
8554
  });
7678
8555
  Object.defineProperty(exports, "listViewConfigSchema", {
7679
8556
  enumerable: true,
7680
- get: function () { return chunkMXYCCUNB_js.listViewConfigSchema; }
8557
+ get: function () { return chunkTU6ECJFZ_js.listViewConfigSchema; }
7681
8558
  });
7682
8559
  Object.defineProperty(exports, "listViewTabSchema", {
7683
8560
  enumerable: true,
7684
- get: function () { return chunkMXYCCUNB_js.listViewTabSchema; }
8561
+ get: function () { return chunkTU6ECJFZ_js.listViewTabSchema; }
7685
8562
  });
7686
8563
  Object.defineProperty(exports, "normalizeFilterRule", {
7687
8564
  enumerable: true,
7688
- get: function () { return chunkMXYCCUNB_js.normalizeFilterRule; }
8565
+ get: function () { return chunkTU6ECJFZ_js.normalizeFilterRule; }
7689
8566
  });
7690
8567
  Object.defineProperty(exports, "normalizeForEdgeRpc", {
7691
8568
  enumerable: true,
7692
- get: function () { return chunkMXYCCUNB_js.normalizeForEdgeRpc; }
8569
+ get: function () { return chunkTU6ECJFZ_js.normalizeForEdgeRpc; }
7693
8570
  });
7694
8571
  Object.defineProperty(exports, "normalizeOperator", {
7695
8572
  enumerable: true,
7696
- get: function () { return chunkMXYCCUNB_js.normalizeOperator; }
8573
+ get: function () { return chunkTU6ECJFZ_js.normalizeOperator; }
7697
8574
  });
7698
8575
  Object.defineProperty(exports, "now", {
7699
8576
  enumerable: true,
7700
- get: function () { return chunkMXYCCUNB_js.now; }
8577
+ get: function () { return chunkTU6ECJFZ_js.now; }
7701
8578
  });
7702
8579
  Object.defineProperty(exports, "parseResourceVisibility", {
7703
8580
  enumerable: true,
7704
- get: function () { return chunkMXYCCUNB_js.parseResourceVisibility; }
8581
+ get: function () { return chunkTU6ECJFZ_js.parseResourceVisibility; }
7705
8582
  });
7706
8583
  Object.defineProperty(exports, "parseViewConfig", {
7707
8584
  enumerable: true,
7708
- get: function () { return chunkMXYCCUNB_js.parseViewConfig; }
8585
+ get: function () { return chunkTU6ECJFZ_js.parseViewConfig; }
7709
8586
  });
7710
8587
  Object.defineProperty(exports, "relationSourceSchema", {
7711
8588
  enumerable: true,
7712
- get: function () { return chunkMXYCCUNB_js.relationSourceSchema; }
8589
+ get: function () { return chunkTU6ECJFZ_js.relationSourceSchema; }
7713
8590
  });
7714
8591
  Object.defineProperty(exports, "resolveEffectiveFilterType", {
7715
8592
  enumerable: true,
7716
- get: function () { return chunkMXYCCUNB_js.resolveEffectiveFilterType; }
8593
+ get: function () { return chunkTU6ECJFZ_js.resolveEffectiveFilterType; }
7717
8594
  });
7718
8595
  Object.defineProperty(exports, "resolveIsWithinBounds", {
7719
8596
  enumerable: true,
7720
- get: function () { return chunkMXYCCUNB_js.resolveIsWithinBounds; }
8597
+ get: function () { return chunkTU6ECJFZ_js.resolveIsWithinBounds; }
7721
8598
  });
7722
8599
  Object.defineProperty(exports, "resolveUtcDayBounds", {
7723
8600
  enumerable: true,
7724
- get: function () { return chunkMXYCCUNB_js.resolveUtcDayBounds; }
8601
+ get: function () { return chunkTU6ECJFZ_js.resolveUtcDayBounds; }
7725
8602
  });
7726
8603
  Object.defineProperty(exports, "tableSourceSchema", {
7727
8604
  enumerable: true,
7728
- get: function () { return chunkMXYCCUNB_js.tableSourceSchema; }
8605
+ get: function () { return chunkTU6ECJFZ_js.tableSourceSchema; }
7729
8606
  });
7730
8607
  Object.defineProperty(exports, "toMultiValueOperator", {
7731
8608
  enumerable: true,
7732
- get: function () { return chunkMXYCCUNB_js.toMultiValueOperator; }
8609
+ get: function () { return chunkTU6ECJFZ_js.toMultiValueOperator; }
7733
8610
  });
7734
8611
  Object.defineProperty(exports, "toUtcDayString", {
7735
8612
  enumerable: true,
7736
- get: function () { return chunkMXYCCUNB_js.toUtcDayString; }
8613
+ get: function () { return chunkTU6ECJFZ_js.toUtcDayString; }
7737
8614
  });
7738
8615
  Object.defineProperty(exports, "today", {
7739
8616
  enumerable: true,
7740
- get: function () { return chunkMXYCCUNB_js.today; }
8617
+ get: function () { return chunkTU6ECJFZ_js.today; }
7741
8618
  });
7742
8619
  Object.defineProperty(exports, "validateQualifiedRule", {
7743
8620
  enumerable: true,
7744
- get: function () { return chunkMXYCCUNB_js.validateQualifiedRule; }
8621
+ get: function () { return chunkTU6ECJFZ_js.validateQualifiedRule; }
7745
8622
  });
7746
8623
  Object.defineProperty(exports, "viewConfigByTypeSchema", {
7747
8624
  enumerable: true,
7748
- get: function () { return chunkMXYCCUNB_js.viewConfigByTypeSchema; }
8625
+ get: function () { return chunkTU6ECJFZ_js.viewConfigByTypeSchema; }
7749
8626
  });
7750
8627
  Object.defineProperty(exports, "viewTypeSchema", {
7751
8628
  enumerable: true,
7752
- get: function () { return chunkMXYCCUNB_js.viewTypeSchema; }
8629
+ get: function () { return chunkTU6ECJFZ_js.viewTypeSchema; }
7753
8630
  });
7754
8631
  Object.defineProperty(exports, "ComputedFormulaParseError", {
7755
8632
  enumerable: true,
7756
- get: function () { return chunkFAEOVIDJ_js.ComputedFormulaParseError; }
8633
+ get: function () { return chunkLRFLSFIA_js.ComputedFormulaParseError; }
7757
8634
  });
7758
8635
  Object.defineProperty(exports, "SCHEMA_LIMITS", {
7759
8636
  enumerable: true,
7760
- get: function () { return chunkFAEOVIDJ_js.SCHEMA_LIMITS; }
8637
+ get: function () { return chunkLRFLSFIA_js.SCHEMA_LIMITS; }
7761
8638
  });
7762
8639
  Object.defineProperty(exports, "colorIdSchema", {
7763
8640
  enumerable: true,
7764
- get: function () { return chunkFAEOVIDJ_js.colorIdSchema; }
8641
+ get: function () { return chunkLRFLSFIA_js.colorIdSchema; }
7765
8642
  });
7766
8643
  Object.defineProperty(exports, "iconNameSchema", {
7767
8644
  enumerable: true,
7768
- get: function () { return chunkFAEOVIDJ_js.iconNameSchema; }
8645
+ get: function () { return chunkLRFLSFIA_js.iconNameSchema; }
7769
8646
  });
7770
8647
  Object.defineProperty(exports, "multiselectOptionWriteSchema", {
7771
8648
  enumerable: true,
7772
- get: function () { return chunkFAEOVIDJ_js.multiselectOptionWriteSchema; }
8649
+ get: function () { return chunkLRFLSFIA_js.multiselectOptionWriteSchema; }
7773
8650
  });
7774
8651
  Object.defineProperty(exports, "parseAttributeConfig", {
7775
8652
  enumerable: true,
7776
- get: function () { return chunkFAEOVIDJ_js.parseAttributeConfig; }
8653
+ get: function () { return chunkLRFLSFIA_js.parseAttributeConfig; }
7777
8654
  });
7778
8655
  Object.defineProperty(exports, "parseAttributeConfigForCreate", {
7779
8656
  enumerable: true,
7780
- get: function () { return chunkFAEOVIDJ_js.parseAttributeConfigForCreate; }
8657
+ get: function () { return chunkLRFLSFIA_js.parseAttributeConfigForCreate; }
7781
8658
  });
7782
8659
  Object.defineProperty(exports, "parseAttributeConfigForUpdate", {
7783
8660
  enumerable: true,
7784
- get: function () { return chunkFAEOVIDJ_js.parseAttributeConfigForUpdate; }
8661
+ get: function () { return chunkLRFLSFIA_js.parseAttributeConfigForUpdate; }
7785
8662
  });
7786
8663
  Object.defineProperty(exports, "parseComputedFormula", {
7787
8664
  enumerable: true,
7788
- get: function () { return chunkFAEOVIDJ_js.parseComputedFormula; }
8665
+ get: function () { return chunkLRFLSFIA_js.parseComputedFormula; }
7789
8666
  });
7790
8667
  Object.defineProperty(exports, "selectOptionWriteSchema", {
7791
8668
  enumerable: true,
7792
- get: function () { return chunkFAEOVIDJ_js.selectOptionWriteSchema; }
8669
+ get: function () { return chunkLRFLSFIA_js.selectOptionWriteSchema; }
7793
8670
  });
7794
8671
  Object.defineProperty(exports, "statusGroupSchema", {
7795
8672
  enumerable: true,
7796
- get: function () { return chunkFAEOVIDJ_js.statusGroupSchema; }
8673
+ get: function () { return chunkLRFLSFIA_js.statusGroupSchema; }
7797
8674
  });
7798
8675
  Object.defineProperty(exports, "statusOptionWriteSchema", {
7799
8676
  enumerable: true,
7800
- get: function () { return chunkFAEOVIDJ_js.statusOptionWriteSchema; }
8677
+ get: function () { return chunkLRFLSFIA_js.statusOptionWriteSchema; }
7801
8678
  });
7802
8679
  Object.defineProperty(exports, "createFormAttributeValidator", {
7803
8680
  enumerable: true,
7804
- get: function () { return chunk3PGLMGTR_js.createFormAttributeValidator; }
8681
+ get: function () { return chunkE47WAI5K_js.createFormAttributeValidator; }
7805
8682
  });
7806
8683
  Object.defineProperty(exports, "isNullishOrEmptyString", {
7807
8684
  enumerable: true,
7808
- get: function () { return chunk3PGLMGTR_js.isNullishOrEmptyString; }
8685
+ get: function () { return chunkE47WAI5K_js.isNullishOrEmptyString; }
7809
8686
  });
7810
8687
  Object.defineProperty(exports, "isValuePresent", {
7811
8688
  enumerable: true,
7812
- get: function () { return chunk3PGLMGTR_js.isValuePresent; }
8689
+ get: function () { return chunkE47WAI5K_js.isValuePresent; }
7813
8690
  });
7814
8691
  Object.defineProperty(exports, "rejectUnknownAttributesOrThrow", {
7815
8692
  enumerable: true,
7816
- get: function () { return chunk3PGLMGTR_js.rejectUnknownAttributesOrThrow; }
8693
+ get: function () { return chunkE47WAI5K_js.rejectUnknownAttributesOrThrow; }
7817
8694
  });
7818
8695
  Object.defineProperty(exports, "validateDraft", {
7819
8696
  enumerable: true,
7820
- get: function () { return chunk3PGLMGTR_js.validateDraft; }
8697
+ get: function () { return chunkE47WAI5K_js.validateDraft; }
7821
8698
  });
7822
8699
  Object.defineProperty(exports, "validateDraftOrThrow", {
7823
8700
  enumerable: true,
7824
- get: function () { return chunk3PGLMGTR_js.validateDraftOrThrow; }
8701
+ get: function () { return chunkE47WAI5K_js.validateDraftOrThrow; }
7825
8702
  });
7826
8703
  Object.defineProperty(exports, "validateObject", {
7827
8704
  enumerable: true,
7828
- get: function () { return chunk3PGLMGTR_js.validateObject; }
8705
+ get: function () { return chunkE47WAI5K_js.validateObject; }
7829
8706
  });
7830
8707
  Object.defineProperty(exports, "validateObjectOrThrow", {
7831
8708
  enumerable: true,
7832
- get: function () { return chunk3PGLMGTR_js.validateObjectOrThrow; }
8709
+ get: function () { return chunkE47WAI5K_js.validateObjectOrThrow; }
7833
8710
  });
7834
8711
  Object.defineProperty(exports, "createCheckboxValidator", {
7835
8712
  enumerable: true,
@@ -7857,155 +8734,155 @@ Object.defineProperty(exports, "resolveTextPattern", {
7857
8734
  });
7858
8735
  Object.defineProperty(exports, "AccessDeniedError", {
7859
8736
  enumerable: true,
7860
- get: function () { return chunkM3WFXOA4_js.AccessDeniedError; }
8737
+ get: function () { return chunkHWZRSXFB_js.AccessDeniedError; }
7861
8738
  });
7862
8739
  Object.defineProperty(exports, "AttributeInUseError", {
7863
8740
  enumerable: true,
7864
- get: function () { return chunkM3WFXOA4_js.AttributeInUseError; }
8741
+ get: function () { return chunkHWZRSXFB_js.AttributeInUseError; }
7865
8742
  });
7866
8743
  Object.defineProperty(exports, "AttributeNotFoundError", {
7867
8744
  enumerable: true,
7868
- get: function () { return chunkM3WFXOA4_js.AttributeNotFoundError; }
8745
+ get: function () { return chunkHWZRSXFB_js.AttributeNotFoundError; }
7869
8746
  });
7870
8747
  Object.defineProperty(exports, "ChangeTypeNotSupportedError", {
7871
8748
  enumerable: true,
7872
- get: function () { return chunkM3WFXOA4_js.ChangeTypeNotSupportedError; }
8749
+ get: function () { return chunkHWZRSXFB_js.ChangeTypeNotSupportedError; }
7873
8750
  });
7874
8751
  Object.defineProperty(exports, "ConcurrentModificationError", {
7875
8752
  enumerable: true,
7876
- get: function () { return chunkM3WFXOA4_js.ConcurrentModificationError; }
8753
+ get: function () { return chunkHWZRSXFB_js.ConcurrentModificationError; }
7877
8754
  });
7878
8755
  Object.defineProperty(exports, "DestructiveSyncNotAllowedError", {
7879
8756
  enumerable: true,
7880
- get: function () { return chunkM3WFXOA4_js.DestructiveSyncNotAllowedError; }
8757
+ get: function () { return chunkHWZRSXFB_js.DestructiveSyncNotAllowedError; }
7881
8758
  });
7882
8759
  Object.defineProperty(exports, "DuplicateError", {
7883
8760
  enumerable: true,
7884
- get: function () { return chunkM3WFXOA4_js.DuplicateError; }
8761
+ get: function () { return chunkHWZRSXFB_js.DuplicateError; }
7885
8762
  });
7886
8763
  Object.defineProperty(exports, "ForbiddenError", {
7887
8764
  enumerable: true,
7888
- get: function () { return chunkM3WFXOA4_js.ForbiddenError; }
8765
+ get: function () { return chunkHWZRSXFB_js.ForbiddenError; }
7889
8766
  });
7890
8767
  Object.defineProperty(exports, "MemoryNotFoundError", {
7891
8768
  enumerable: true,
7892
- get: function () { return chunkM3WFXOA4_js.MemoryNotFoundError; }
8769
+ get: function () { return chunkHWZRSXFB_js.MemoryNotFoundError; }
7893
8770
  });
7894
8771
  Object.defineProperty(exports, "MigrationTimeoutError", {
7895
8772
  enumerable: true,
7896
- get: function () { return chunkM3WFXOA4_js.MigrationTimeoutError; }
8773
+ get: function () { return chunkHWZRSXFB_js.MigrationTimeoutError; }
7897
8774
  });
7898
8775
  Object.defineProperty(exports, "NotFoundError", {
7899
8776
  enumerable: true,
7900
- get: function () { return chunkM3WFXOA4_js.NotFoundError; }
8777
+ get: function () { return chunkHWZRSXFB_js.NotFoundError; }
7901
8778
  });
7902
8779
  Object.defineProperty(exports, "NotImplementedError", {
7903
8780
  enumerable: true,
7904
- get: function () { return chunkM3WFXOA4_js.NotImplementedError; }
8781
+ get: function () { return chunkHWZRSXFB_js.NotImplementedError; }
7905
8782
  });
7906
8783
  Object.defineProperty(exports, "ObjectNotFoundError", {
7907
8784
  enumerable: true,
7908
- get: function () { return chunkM3WFXOA4_js.ObjectNotFoundError; }
8785
+ get: function () { return chunkHWZRSXFB_js.ObjectNotFoundError; }
7909
8786
  });
7910
8787
  Object.defineProperty(exports, "ObjectReferencedError", {
7911
8788
  enumerable: true,
7912
- get: function () { return chunkM3WFXOA4_js.ObjectReferencedError; }
8789
+ get: function () { return chunkHWZRSXFB_js.ObjectReferencedError; }
7913
8790
  });
7914
8791
  Object.defineProperty(exports, "OrphanSystemAttributeError", {
7915
8792
  enumerable: true,
7916
- get: function () { return chunkM3WFXOA4_js.OrphanSystemAttributeError; }
8793
+ get: function () { return chunkHWZRSXFB_js.OrphanSystemAttributeError; }
7917
8794
  });
7918
8795
  Object.defineProperty(exports, "ProtectedResourceError", {
7919
8796
  enumerable: true,
7920
- get: function () { return chunkM3WFXOA4_js.ProtectedResourceError; }
8797
+ get: function () { return chunkHWZRSXFB_js.ProtectedResourceError; }
7921
8798
  });
7922
8799
  Object.defineProperty(exports, "ProtectedRoleError", {
7923
8800
  enumerable: true,
7924
- get: function () { return chunkM3WFXOA4_js.ProtectedRoleError; }
8801
+ get: function () { return chunkHWZRSXFB_js.ProtectedRoleError; }
7925
8802
  });
7926
8803
  Object.defineProperty(exports, "RecordNotFoundError", {
7927
8804
  enumerable: true,
7928
- get: function () { return chunkM3WFXOA4_js.RecordNotFoundError; }
8805
+ get: function () { return chunkHWZRSXFB_js.RecordNotFoundError; }
7929
8806
  });
7930
8807
  Object.defineProperty(exports, "RecordReferencedError", {
7931
8808
  enumerable: true,
7932
- get: function () { return chunkM3WFXOA4_js.RecordReferencedError; }
8809
+ get: function () { return chunkHWZRSXFB_js.RecordReferencedError; }
7933
8810
  });
7934
8811
  Object.defineProperty(exports, "RepositoryError", {
7935
8812
  enumerable: true,
7936
- get: function () { return chunkM3WFXOA4_js.RepositoryError; }
8813
+ get: function () { return chunkHWZRSXFB_js.RepositoryError; }
7937
8814
  });
7938
8815
  Object.defineProperty(exports, "RoleNotFoundError", {
7939
8816
  enumerable: true,
7940
- get: function () { return chunkM3WFXOA4_js.RoleNotFoundError; }
8817
+ get: function () { return chunkHWZRSXFB_js.RoleNotFoundError; }
7941
8818
  });
7942
8819
  Object.defineProperty(exports, "SchemaError", {
7943
8820
  enumerable: true,
7944
- get: function () { return chunkM3WFXOA4_js.SchemaError; }
8821
+ get: function () { return chunkHWZRSXFB_js.SchemaError; }
7945
8822
  });
7946
8823
  Object.defineProperty(exports, "SchemaErrorCode", {
7947
8824
  enumerable: true,
7948
- get: function () { return chunkM3WFXOA4_js.SchemaErrorCode; }
8825
+ get: function () { return chunkHWZRSXFB_js.SchemaErrorCode; }
7949
8826
  });
7950
8827
  Object.defineProperty(exports, "SchemaPlanNotFoundError", {
7951
8828
  enumerable: true,
7952
- get: function () { return chunkM3WFXOA4_js.SchemaPlanNotFoundError; }
8829
+ get: function () { return chunkHWZRSXFB_js.SchemaPlanNotFoundError; }
7953
8830
  });
7954
8831
  Object.defineProperty(exports, "SearchBackendError", {
7955
8832
  enumerable: true,
7956
- get: function () { return chunkM3WFXOA4_js.SearchBackendError; }
8833
+ get: function () { return chunkHWZRSXFB_js.SearchBackendError; }
7957
8834
  });
7958
8835
  Object.defineProperty(exports, "StorageError", {
7959
8836
  enumerable: true,
7960
- get: function () { return chunkM3WFXOA4_js.StorageError; }
8837
+ get: function () { return chunkHWZRSXFB_js.StorageError; }
7961
8838
  });
7962
8839
  Object.defineProperty(exports, "SyncCascadeError", {
7963
8840
  enumerable: true,
7964
- get: function () { return chunkM3WFXOA4_js.SyncCascadeError; }
8841
+ get: function () { return chunkHWZRSXFB_js.SyncCascadeError; }
7965
8842
  });
7966
8843
  Object.defineProperty(exports, "SyncConflictError", {
7967
8844
  enumerable: true,
7968
- get: function () { return chunkM3WFXOA4_js.SyncConflictError; }
8845
+ get: function () { return chunkHWZRSXFB_js.SyncConflictError; }
7969
8846
  });
7970
8847
  Object.defineProperty(exports, "SyncError", {
7971
8848
  enumerable: true,
7972
- get: function () { return chunkM3WFXOA4_js.SyncError; }
8849
+ get: function () { return chunkHWZRSXFB_js.SyncError; }
7973
8850
  });
7974
8851
  Object.defineProperty(exports, "SystemEntityImmutableError", {
7975
8852
  enumerable: true,
7976
- get: function () { return chunkM3WFXOA4_js.SystemEntityImmutableError; }
8853
+ get: function () { return chunkHWZRSXFB_js.SystemEntityImmutableError; }
7977
8854
  });
7978
8855
  Object.defineProperty(exports, "ValidationError", {
7979
8856
  enumerable: true,
7980
- get: function () { return chunkM3WFXOA4_js.ValidationError; }
8857
+ get: function () { return chunkHWZRSXFB_js.ValidationError; }
7981
8858
  });
7982
8859
  Object.defineProperty(exports, "isAttributeInUseError", {
7983
8860
  enumerable: true,
7984
- get: function () { return chunkM3WFXOA4_js.isAttributeInUseError; }
8861
+ get: function () { return chunkHWZRSXFB_js.isAttributeInUseError; }
7985
8862
  });
7986
8863
  Object.defineProperty(exports, "isNotFoundError", {
7987
8864
  enumerable: true,
7988
- get: function () { return chunkM3WFXOA4_js.isNotFoundError; }
8865
+ get: function () { return chunkHWZRSXFB_js.isNotFoundError; }
7989
8866
  });
7990
8867
  Object.defineProperty(exports, "isObjectReferencedError", {
7991
8868
  enumerable: true,
7992
- get: function () { return chunkM3WFXOA4_js.isObjectReferencedError; }
8869
+ get: function () { return chunkHWZRSXFB_js.isObjectReferencedError; }
7993
8870
  });
7994
8871
  Object.defineProperty(exports, "isProtectedResourceError", {
7995
8872
  enumerable: true,
7996
- get: function () { return chunkM3WFXOA4_js.isProtectedResourceError; }
8873
+ get: function () { return chunkHWZRSXFB_js.isProtectedResourceError; }
7997
8874
  });
7998
8875
  Object.defineProperty(exports, "isRecordReferencedError", {
7999
8876
  enumerable: true,
8000
- get: function () { return chunkM3WFXOA4_js.isRecordReferencedError; }
8877
+ get: function () { return chunkHWZRSXFB_js.isRecordReferencedError; }
8001
8878
  });
8002
8879
  Object.defineProperty(exports, "isSchemaError", {
8003
8880
  enumerable: true,
8004
- get: function () { return chunkM3WFXOA4_js.isSchemaError; }
8881
+ get: function () { return chunkHWZRSXFB_js.isSchemaError; }
8005
8882
  });
8006
8883
  Object.defineProperty(exports, "isValidationError", {
8007
8884
  enumerable: true,
8008
- get: function () { return chunkM3WFXOA4_js.isValidationError; }
8885
+ get: function () { return chunkHWZRSXFB_js.isValidationError; }
8009
8886
  });
8010
8887
  Object.defineProperty(exports, "DEFAULT_VALIDATION_MESSAGES", {
8011
8888
  enumerable: true,
@@ -8019,6 +8896,7 @@ exports.AGENT_UI_BATCH_MAX_BYTES = AGENT_UI_BATCH_MAX_BYTES;
8019
8896
  exports.AGENT_UI_BATCH_MAX_ITEMS = AGENT_UI_BATCH_MAX_ITEMS;
8020
8897
  exports.ALLOWED_PROPERTY_TYPES = ALLOWED_PROPERTY_TYPES;
8021
8898
  exports.ALL_ACTIONS = ALL_ACTIONS;
8899
+ exports.ALL_OPERATION_TYPES = ALL_OPERATION_TYPES;
8022
8900
  exports.ALL_SYSTEM_RESOURCES = ALL_SYSTEM_RESOURCES;
8023
8901
  exports.AUDIT_ACTIONS = AUDIT_ACTIONS;
8024
8902
  exports.AUDIT_RESOURCE_TYPES = AUDIT_RESOURCE_TYPES;
@@ -8027,6 +8905,7 @@ exports.AgentBuilder = AgentBuilder;
8027
8905
  exports.BEHAVIOR_PROPERTIES = BEHAVIOR_PROPERTIES;
8028
8906
  exports.BROWSER_PREVIEW_STATUSES = BROWSER_PREVIEW_STATUSES;
8029
8907
  exports.BYTE_UNIT_LABELS = BYTE_UNIT_LABELS;
8908
+ exports.CLAIMABLE_SESSION_STATUSES = CLAIMABLE_SESSION_STATUSES;
8030
8909
  exports.COMPUTED_FUNCTIONS = COMPUTED_FUNCTIONS;
8031
8910
  exports.COMPUTED_FUNCTION_METADATA = COMPUTED_FUNCTION_METADATA;
8032
8911
  exports.COMPUTED_FUNCTION_NAMES = COMPUTED_FUNCTION_NAMES;
@@ -8043,6 +8922,10 @@ exports.DEFAULT_ROLE_DESCRIPTIONS = DEFAULT_ROLE_DESCRIPTIONS;
8043
8922
  exports.DEFAULT_ROLE_LABELS = DEFAULT_ROLE_LABELS;
8044
8923
  exports.DEFAULT_ROLE_PERMISSIONS = DEFAULT_ROLE_PERMISSIONS;
8045
8924
  exports.DOCUMENT_SYSTEM_ATTRIBUTES = DOCUMENT_SYSTEM_ATTRIBUTES;
8925
+ exports.DRIVE_LIST_VIEW = DRIVE_LIST_VIEW;
8926
+ exports.DRIVE_OBJECT = DRIVE_OBJECT;
8927
+ exports.DRIVE_OBJECT_NAME = DRIVE_OBJECT_NAME;
8928
+ exports.DRIVE_VIEW = DRIVE_VIEW;
8046
8929
  exports.DetailViewBuilder = DetailViewBuilder;
8047
8930
  exports.DocumentsTabConfig = DocumentsTabConfig;
8048
8931
  exports.EMPTY_VALUE_PLACEHOLDER = EMPTY_VALUE_PLACEHOLDER;
@@ -8084,13 +8967,13 @@ exports.NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN = NOTIFICATION_TYPE_AGENT_
8084
8967
  exports.NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED = NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED;
8085
8968
  exports.NOTIFICATION_WORK_STATES = NOTIFICATION_WORK_STATES;
8086
8969
  exports.NoopGeocodingAdapter = NoopGeocodingAdapter;
8970
+ exports.OPERATION_REGISTRY = OPERATION_REGISTRY;
8087
8971
  exports.OPERATOR_SPECS = OPERATOR_SPECS;
8088
8972
  exports.ObjectBuilder = ObjectBuilder;
8089
8973
  exports.PRESENTATION_PROPERTIES = PRESENTATION_PROPERTIES;
8090
8974
  exports.QUALIFIED_SEPARATOR = QUALIFIED_SEPARATOR;
8091
8975
  exports.RECORD_CREATOR_ROOT_ACTOR_METADATA_KEY = RECORD_CREATOR_ROOT_ACTOR_METADATA_KEY;
8092
8976
  exports.RELATION_TARGET_ANY = RELATION_TARGET_ANY;
8093
- exports.RelationGroupBuilder = RelationGroupBuilder;
8094
8977
  exports.RichtextTabConfig = RichtextTabConfig;
8095
8978
  exports.SCHEMA_PLAN_LIMITS = SCHEMA_PLAN_LIMITS;
8096
8979
  exports.SESSION_TERMINAL_STATUSES = SESSION_TERMINAL_STATUSES;
@@ -8111,6 +8994,7 @@ exports.accessLevelToActions = accessLevelToActions;
8111
8994
  exports.actionsToAccessLevel = actionsToAccessLevel;
8112
8995
  exports.agent = agent;
8113
8996
  exports.agentDisplayName = agentDisplayName;
8997
+ exports.applyOperations = applyOperations;
8114
8998
  exports.applyPipes = applyPipes;
8115
8999
  exports.applyRelationProps = applyRelationProps;
8116
9000
  exports.assertAcyclicComputedDependencies = assertAcyclicComputedDependencies;
@@ -8131,10 +9015,13 @@ exports.currency = currency;
8131
9015
  exports.date = date;
8132
9016
  exports.dateInTimezone = dateInTimezone;
8133
9017
  exports.dateValueStart = dateValueStart;
9018
+ exports.defineOperation = defineOperation;
8134
9019
  exports.deriveInitials = deriveInitials;
9020
+ exports.describeOperations = describeOperations;
8135
9021
  exports.destructiveSchema = destructiveSchema;
8136
9022
  exports.detailView = detailView;
8137
9023
  exports.document = document;
9024
+ exports.ensureFieldIds = ensureFieldIds;
8138
9025
  exports.evaluateComputedAst = evaluateComputedAst;
8139
9026
  exports.evaluateComputedFormula = evaluateComputedFormula;
8140
9027
  exports.evaluateComputedFormulaWithResult = evaluateComputedFormulaWithResult;
@@ -8143,6 +9030,7 @@ exports.evaluateRecordFilterState = evaluateRecordFilterState;
8143
9030
  exports.extractAttributeNames = extractAttributeNames;
8144
9031
  exports.extractValueRefs = extractValueRefs;
8145
9032
  exports.flagRegistry = flagRegistry;
9033
+ exports.focusOf = focusOf;
8146
9034
  exports.form = form;
8147
9035
  exports.formRegistry = formRegistry;
8148
9036
  exports.formatAttributeValue = formatAttributeValue;
@@ -8168,6 +9056,7 @@ exports.isAgentUIMessageBatch = isAgentUIMessageBatch;
8168
9056
  exports.isAttributeSortable = isAttributeSortable2;
8169
9057
  exports.isBilateralRelation = isBilateralRelation;
8170
9058
  exports.isCheckboxEquality = isCheckboxEquality;
9059
+ exports.isClaimableSessionStatus = isClaimableSessionStatus;
8171
9060
  exports.isComputedFunctionName = isComputedFunctionName;
8172
9061
  exports.isDateRangeValue = isDateRangeValue;
8173
9062
  exports.isDefaultRole = isDefaultRole;
@@ -8190,7 +9079,6 @@ exports.isLiveEventPayloadForType = isLiveEventPayloadForType;
8190
9079
  exports.isLiveEventType = isLiveEventType;
8191
9080
  exports.isNotEmpty = isNotEmpty;
8192
9081
  exports.isPlainRecord = isPlainRecord2;
8193
- exports.isRelationGroup = isRelationGroup;
8194
9082
  exports.isStandardSchema = isStandardSchema;
8195
9083
  exports.isTerminalSessionStatus = isTerminalSessionStatus;
8196
9084
  exports.isTerminalState = isTerminalState;
@@ -8200,6 +9088,7 @@ exports.legacyStatusToSessionState = legacyStatusToSessionState;
8200
9088
  exports.listView = listView;
8201
9089
  exports.liveChannelKey = liveChannelKey;
8202
9090
  exports.location = location;
9091
+ exports.makeFieldId = makeFieldId;
8203
9092
  exports.matchesAccepts = matchesAccepts;
8204
9093
  exports.multiselect = multiselect;
8205
9094
  exports.nativeAgentUIPartIdMetadataKey = nativeAgentUIPartIdMetadataKey;
@@ -8210,6 +9099,7 @@ exports.object = object;
8210
9099
  exports.parseCountMode = parseCountMode;
8211
9100
  exports.parseLiveChannelKey = parseLiveChannelKey;
8212
9101
  exports.parseNativeAgentUIPartIdsMetadata = parseNativeAgentUIPartIdsMetadata;
9102
+ exports.parseOperation = parseOperation;
8213
9103
  exports.parseOptionalCountMode = parseOptionalCountMode;
8214
9104
  exports.parseQualifiedAttribute = parseQualifiedAttribute;
8215
9105
  exports.persistedDefaultViewTargetSchema = persistedDefaultViewTargetSchema;
@@ -8221,7 +9111,6 @@ exports.plannedObjectSchema = plannedObjectSchema;
8221
9111
  exports.proposedDefaultViewTargetSchema = proposedDefaultViewTargetSchema;
8222
9112
  exports.registry = registry;
8223
9113
  exports.relation = relation;
8224
- exports.relationGroup = relationGroup;
8225
9114
  exports.relationPropertyDefs = relationPropertyDefs;
8226
9115
  exports.renderLabelExpression = renderLabelExpression;
8227
9116
  exports.resetViewToDefault = resetViewToDefault;