@stndrds/schema 1.0.0-alpha.276 → 1.0.0-alpha.278

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 (73) hide show
  1. package/dist/{all-D5zeUllO.d.mts → all-BSeTO0fj.d.mts} +20 -3
  2. package/dist/{all--B2_3ksI.d.ts → all-DoYgTt64.d.ts} +20 -3
  3. package/dist/{attributes-_b3Db8vT.d.ts → attributes-Da15v-sw.d.ts} +1 -1
  4. package/dist/{attributes-lBLiOIY3.d.mts → attributes-VsYmgI0A.d.mts} +1 -1
  5. package/dist/{chunk-4USPA67J.mjs → chunk-5PLJHYSL.mjs} +139 -26
  6. package/dist/{chunk-T7BST4JS.js → chunk-DEHBEFGO.js} +3 -3
  7. package/dist/{chunk-RAF6K6VG.js → chunk-NELH4AXI.js} +30 -18
  8. package/dist/{chunk-U7QUIEFF.mjs → chunk-PQEOIDXD.mjs} +1 -1
  9. package/dist/{chunk-EDOEX3O7.js → chunk-QMAVKX3Y.js} +178 -55
  10. package/dist/{chunk-QLU5QR7M.mjs → chunk-V2WJFUZW.mjs} +16 -8
  11. package/dist/{chunk-RBG2YMF2.mjs → chunk-YCWGUPSI.mjs} +26 -16
  12. package/dist/{chunk-F3YPU2N6.js → chunk-ZBWTAKZO.js} +16 -8
  13. package/dist/exceptions.d.mts +15 -10
  14. package/dist/exceptions.d.ts +15 -10
  15. package/dist/exceptions.js +39 -39
  16. package/dist/exceptions.mjs +1 -1
  17. package/dist/{helpers-C1VVEAOO.d.mts → helpers-BYhVd4Gw.d.mts} +3 -3
  18. package/dist/{helpers-vQ6kp8ET.d.ts → helpers-D2cL7hI2.d.ts} +3 -3
  19. package/dist/index-CixTESyP.d.mts +790 -0
  20. package/dist/index-dJ6fAwcG.d.ts +790 -0
  21. package/dist/index.d.mts +2662 -433
  22. package/dist/index.d.ts +2662 -433
  23. package/dist/index.js +641 -391
  24. package/dist/index.mjs +416 -223
  25. package/dist/{migrations-BXd2ZGfM.d.mts → migrations-Dy9K8kJ0.d.mts} +1 -1
  26. package/dist/{migrations-DcuJZ8qO.d.ts → migrations-hbZHm8Tm.d.ts} +1 -1
  27. package/dist/{objects-BCaBw2ef.d.mts → objects-Cvt2T2Q5.d.mts} +19 -3
  28. package/dist/{objects-A1ED9af-.d.ts → objects-_6M6ngH3.d.ts} +19 -3
  29. package/dist/{types-DNz3ITS-.d.mts → types-CX7S3Fhh.d.mts} +1 -1
  30. package/dist/{types-DqLi1tx1.d.ts → types-DseDsbMu.d.ts} +1 -1
  31. package/dist/validation/all.d.mts +7 -7
  32. package/dist/validation/all.d.ts +7 -7
  33. package/dist/validation/all.js +33 -33
  34. package/dist/validation/all.mjs +8 -8
  35. package/dist/validation/complex/currency.d.mts +2 -2
  36. package/dist/validation/complex/currency.d.ts +2 -2
  37. package/dist/validation/complex/location.d.mts +2 -2
  38. package/dist/validation/complex/location.d.ts +2 -2
  39. package/dist/validation/complex/phone.d.mts +2 -2
  40. package/dist/validation/complex/phone.d.ts +2 -2
  41. package/dist/validation/complex/relation.d.mts +2 -2
  42. package/dist/validation/complex/relation.d.ts +2 -2
  43. package/dist/validation/complex/richtext.d.mts +2 -2
  44. package/dist/validation/complex/richtext.d.ts +2 -2
  45. package/dist/validation/complex/select.d.mts +2 -2
  46. package/dist/validation/complex/select.d.ts +2 -2
  47. package/dist/validation/complex/user.d.mts +2 -2
  48. package/dist/validation/complex/user.d.ts +2 -2
  49. package/dist/validation/computed/formula.d.mts +2 -2
  50. package/dist/validation/computed/formula.d.ts +2 -2
  51. package/dist/validation/computed/rollup.d.mts +2 -2
  52. package/dist/validation/computed/rollup.d.ts +2 -2
  53. package/dist/validation/config/index.d.mts +4 -4
  54. package/dist/validation/config/index.d.ts +4 -4
  55. package/dist/validation/config/index.js +11 -11
  56. package/dist/validation/config/index.mjs +2 -2
  57. package/dist/validation/core/index.d.mts +3 -3
  58. package/dist/validation/core/index.d.ts +3 -3
  59. package/dist/validation/object/index.d.mts +5 -5
  60. package/dist/validation/object/index.d.ts +5 -5
  61. package/dist/validation/object/index.js +18 -18
  62. package/dist/validation/object/index.mjs +6 -6
  63. package/dist/validation/primitives/checkbox.d.mts +2 -2
  64. package/dist/validation/primitives/checkbox.d.ts +2 -2
  65. package/dist/validation/primitives/date.d.mts +2 -2
  66. package/dist/validation/primitives/date.d.ts +2 -2
  67. package/dist/validation/primitives/number.d.mts +2 -2
  68. package/dist/validation/primitives/number.d.ts +2 -2
  69. package/dist/validation/primitives/text.d.mts +2 -2
  70. package/dist/validation/primitives/text.d.ts +2 -2
  71. package/package.json +2 -2
  72. package/dist/index-Bq1KrQkR.d.ts +0 -2413
  73. package/dist/index-DtxtOBYT.d.mts +0 -2413
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkFRCDMQER_js = require('./chunk-FRCDMQER.js');
4
- var chunkEDOEX3O7_js = require('./chunk-EDOEX3O7.js');
5
- var chunkT7BST4JS_js = require('./chunk-T7BST4JS.js');
6
- var chunkRAF6K6VG_js = require('./chunk-RAF6K6VG.js');
4
+ var chunkQMAVKX3Y_js = require('./chunk-QMAVKX3Y.js');
5
+ var chunkDEHBEFGO_js = require('./chunk-DEHBEFGO.js');
6
+ var chunkNELH4AXI_js = require('./chunk-NELH4AXI.js');
7
+ var chunkQ4SZAMJT_js = require('./chunk-Q4SZAMJT.js');
8
+ require('./chunk-EEH4XQ7W.js');
7
9
  require('./chunk-EW5XR2X3.js');
8
10
  require('./chunk-QWKLQRBX.js');
9
11
  require('./chunk-KNGWHQLR.js');
10
- require('./chunk-HTSTPTNZ.js');
11
- require('./chunk-V2UA2D4E.js');
12
12
  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 chunkF3YPU2N6_js = require('./chunk-F3YPU2N6.js');
16
+ var chunkZBWTAKZO_js = require('./chunk-ZBWTAKZO.js');
17
+ require('./chunk-HTSTPTNZ.js');
18
+ require('./chunk-V2UA2D4E.js');
17
19
  require('./chunk-ACKMC6FL.js');
18
20
  require('./chunk-E6JUYGJX.js');
19
- var chunkQ4SZAMJT_js = require('./chunk-Q4SZAMJT.js');
20
- require('./chunk-EEH4XQ7W.js');
21
21
  var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
22
22
  var constants = require('@stndrds/constants');
23
23
  var z2 = require('zod');
@@ -81,7 +81,7 @@ function inferInverseCardinality(cardinality) {
81
81
  return cardinality === "one" ? "many" : "many";
82
82
  }
83
83
  function isAttributeSortable2(attr) {
84
- return chunkEDOEX3O7_js.isAttributeSortable(attr);
84
+ return chunkQMAVKX3Y_js.isAttributeSortable(attr);
85
85
  }
86
86
 
87
87
  // src/types/audit.ts
@@ -137,6 +137,44 @@ var AUDIT_ACTIONS = [
137
137
  ];
138
138
 
139
139
  // src/types/agent.ts
140
+ function isTerminalState(state) {
141
+ return state.phase === "terminal";
142
+ }
143
+ function sessionStateToLegacyStatus(state) {
144
+ switch (state.phase) {
145
+ case "running":
146
+ return "active";
147
+ case "queued":
148
+ return "idle";
149
+ case "parked":
150
+ if (state.parkedOn === void 0) {
151
+ throw new chunkZBWTAKZO_js.SchemaError("parked state without parkedOn", chunkZBWTAKZO_js.SchemaErrorCode.INVARIANT_VIOLATION);
152
+ }
153
+ return state.parkedOn === "agents" ? "waiting_agents" : "waiting_human";
154
+ case "terminal":
155
+ if (state.outcome === void 0) {
156
+ throw new chunkZBWTAKZO_js.SchemaError(
157
+ "terminal state without outcome",
158
+ chunkZBWTAKZO_js.SchemaErrorCode.INVARIANT_VIOLATION
159
+ );
160
+ }
161
+ return state.outcome;
162
+ }
163
+ }
164
+ function legacyStatusToSessionState(status2) {
165
+ switch (status2) {
166
+ case "active":
167
+ return { phase: "running" };
168
+ case "idle":
169
+ return { phase: "queued" };
170
+ case "waiting_human":
171
+ return { phase: "parked", parkedOn: "human", humanRequestIds: [] };
172
+ case "waiting_agents":
173
+ return { phase: "parked", parkedOn: "agents" };
174
+ default:
175
+ return { phase: "terminal", outcome: status2 };
176
+ }
177
+ }
140
178
  var SESSION_TERMINAL_STATUSES = [
141
179
  "completed",
142
180
  "failed",
@@ -152,7 +190,7 @@ var DEFAULT_APPROVAL_POLICY = Object.freeze({
152
190
  destructive: "ask",
153
191
  outward: "ask"
154
192
  });
155
- var TODO_PLAN_STATUSES = ["active", "completed", "promoted", "abandoned"];
193
+ var TODO_PLAN_STATUSES = ["active", "completed", "abandoned"];
156
194
  function agentDisplayName(agent2) {
157
195
  return agent2.label?.trim() || agent2.name;
158
196
  }
@@ -162,6 +200,60 @@ var MAX_TODO_ID_CHARS = 80;
162
200
  var MAX_TODO_DESCRIPTION_CHARS = 500;
163
201
  var MAX_TODO_RESULT_CHARS = 2e3;
164
202
 
203
+ // src/types/agent-ui-data.ts
204
+ var NATIVE_AGENT_UI_PART_IDS_METADATA_KEY = "__stndrdsNativeUiPartIds";
205
+ var NATIVE_AGENT_UI_PART_IDS_METADATA_SCHEMA_VERSION = 1;
206
+ var INVALID_NATIVE_PART_IDS = "Native agent UI part IDs metadata is invalid";
207
+ function invalidNativePartIds() {
208
+ throw new chunkZBWTAKZO_js.ValidationError(INVALID_NATIVE_PART_IDS, []);
209
+ }
210
+ function isPlainRecord(value) {
211
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
212
+ const prototype = Object.getPrototypeOf(value);
213
+ return prototype === Object.prototype || prototype === null;
214
+ }
215
+ function nativeAgentUIPartIdMetadataKey(part, partIndex) {
216
+ if (part.type === "text" || part.type === "reasoning") return `${part.type}:${partIndex}`;
217
+ if (part.type === "tool") return `tool:${part.toolCallId}`;
218
+ return void 0;
219
+ }
220
+ function parseNativeAgentUIPartIdsMetadata(message) {
221
+ const stored = message.metadata?.[NATIVE_AGENT_UI_PART_IDS_METADATA_KEY];
222
+ if (!isPlainRecord(stored)) invalidNativePartIds();
223
+ if (Object.keys(stored).length !== 2 || stored.schemaVersion !== NATIVE_AGENT_UI_PART_IDS_METADATA_SCHEMA_VERSION || !isPlainRecord(stored.partIds)) {
224
+ invalidNativePartIds();
225
+ }
226
+ const expected = /* @__PURE__ */ new Map();
227
+ for (const [index, part] of message.parts.entries()) {
228
+ const key = nativeAgentUIPartIdMetadataKey(part, index);
229
+ if (!key || expected.has(key)) {
230
+ if (key) invalidNativePartIds();
231
+ continue;
232
+ }
233
+ expected.set(key, part);
234
+ }
235
+ const entries = Object.entries(stored.partIds);
236
+ if (entries.length !== expected.size) invalidNativePartIds();
237
+ const nativeIdTypes = /* @__PURE__ */ new Map();
238
+ const parsed = {};
239
+ for (const [key, value] of entries) {
240
+ const part = expected.get(key);
241
+ if (!(part && typeof value === "string" && value.length > 0)) {
242
+ invalidNativePartIds();
243
+ }
244
+ const existingType = nativeIdTypes.get(value);
245
+ if (existingType && (part.type === "tool" || existingType !== part.type)) {
246
+ invalidNativePartIds();
247
+ }
248
+ if (part.type === "tool" && value !== part.toolCallId) {
249
+ invalidNativePartIds();
250
+ }
251
+ nativeIdTypes.set(value, part.type);
252
+ parsed[key] = value;
253
+ }
254
+ return parsed;
255
+ }
256
+
165
257
  // src/types/document-layout.ts
166
258
  var MAX_PRESET_DEPTH = 5;
167
259
 
@@ -198,6 +290,10 @@ function isFormSlotFieldRef(f) {
198
290
  function isFormFreeFieldRef(f) {
199
291
  return f.type === "free";
200
292
  }
293
+ function resolveFieldRequired(input) {
294
+ if (input.fieldRequired !== void 0) return input.fieldRequired;
295
+ return input.slotMode === "create" && input.attributeRequired === true;
296
+ }
201
297
  function getSlotFieldTargets(field) {
202
298
  return field.additionalSlotIds?.length ? [field.slotId, ...field.additionalSlotIds] : [field.slotId];
203
299
  }
@@ -263,6 +359,7 @@ function hasOptions(attr) {
263
359
 
264
360
  // src/types/user-profiles.ts
265
361
  var USER_STATUSES = ["active", "suspended"];
362
+ var USER_WORK_POSTURES = ["plan", "manual", "auto"];
266
363
 
267
364
  // src/types/schema-state.ts
268
365
  function viewStateKey(view) {
@@ -284,6 +381,20 @@ function isRelationGroup(group2) {
284
381
  }
285
382
 
286
383
  // src/types/pagination.ts
384
+ var COUNT_MODES = ["none", "estimated", "exact"];
385
+ function parseCountMode(value) {
386
+ if (typeof value === "string" && COUNT_MODES.includes(value)) {
387
+ return value;
388
+ }
389
+ throw new chunkZBWTAKZO_js.ValidationError(
390
+ // biome-ignore lint/style/useTemplate: see the comment above.
391
+ "countMode must be one of: " + COUNT_MODES.join(", ") + " (received: " + String(value) + ")",
392
+ []
393
+ );
394
+ }
395
+ function parseOptionalCountMode(value) {
396
+ return value === void 0 ? void 0 : parseCountMode(value);
397
+ }
287
398
  var ESTIMATED_COUNT_CAP = 1e4;
288
399
 
289
400
  // src/lib/object-helpers.ts
@@ -382,7 +493,7 @@ function isDateRangeValue(value) {
382
493
  return typeof value === "object" && value !== null && typeof value.start === "string";
383
494
  }
384
495
  function normalizeDateValue(value, attr) {
385
- if (value == null || value === "") return null;
496
+ if (chunkNELH4AXI_js.isNullishOrEmptyString(value)) return null;
386
497
  if (isDateRangeValue(value)) {
387
498
  return attr.endDate ? { start: value.start, end: value.end ?? null } : value.start;
388
499
  }
@@ -520,7 +631,7 @@ function formatMultiselect(value, attribute) {
520
631
  return value.join(", ");
521
632
  }
522
633
  function formatAttributeValue(value, attribute) {
523
- if (value === null || value === void 0 || value === "") {
634
+ if (chunkNELH4AXI_js.isNullishOrEmptyString(value)) {
524
635
  return EMPTY_VALUE_PLACEHOLDER;
525
636
  }
526
637
  switch (attribute.type) {
@@ -667,32 +778,40 @@ function renderLabelExpression(template, values, fallback = DEFAULT_LABEL_FALLBA
667
778
  const alternatives = orParts.filter(Boolean);
668
779
  let value = "";
669
780
  for (const alt of alternatives) {
670
- const v = getValue(values, alt);
671
- if (v != null && v !== "") {
672
- value = v;
781
+ const text2 = toText(getValue(values, alt));
782
+ if (text2 !== "") {
783
+ value = text2;
673
784
  break;
674
785
  }
675
786
  }
676
- const isEmpty2 = value == null || value === "";
787
+ const isEmpty2 = chunkNELH4AXI_js.isNullishOrEmptyString(value);
677
788
  if (isEmpty2 && pipes.length === 0) return "";
678
789
  for (const pipeExpr of pipes) {
679
790
  const { name: pipeName, args } = parsePipeExpression(pipeExpr);
680
791
  const simpleFn = simplePipes[pipeName];
681
792
  if (simpleFn) {
682
- if (value != null && value !== "") {
683
- value = simpleFn(String(value));
793
+ if (value !== "") {
794
+ value = simpleFn(value);
684
795
  }
685
796
  } else {
686
797
  const argFn = pipesWithArgs[pipeName];
687
798
  if (argFn) {
688
- value = argFn(String(value ?? ""), ...args);
799
+ value = argFn(value, ...args);
689
800
  }
690
801
  }
691
802
  }
692
- return String(value ?? "");
803
+ return value;
693
804
  }).trim();
694
805
  return result || fallback;
695
806
  }
807
+ function toText(value) {
808
+ if (value == null) return "";
809
+ if (typeof value === "function") return "";
810
+ if (typeof value !== "object") return String(value);
811
+ if (Array.isArray(value)) return value.map(toText).filter(Boolean).join(",");
812
+ const ownToString = value.toString;
813
+ return typeof ownToString === "function" && ownToString !== Object.prototype.toString ? String(value) : "";
814
+ }
696
815
  function isLabelExpression(value) {
697
816
  return /\{\{\s*\S+.*\}\}/.test(value);
698
817
  }
@@ -742,7 +861,7 @@ function relationPropertyDefs(attribute) {
742
861
  return attribute.properties?.definitions;
743
862
  }
744
863
  function extractValueRefs(value) {
745
- if (value === null || value === void 0 || value === "") return [];
864
+ if (chunkNELH4AXI_js.isNullishOrEmptyString(value)) return [];
746
865
  if (typeof value === "string") return [{ id: value }];
747
866
  if (Array.isArray(value)) return value.flatMap((item) => extractValueRefs(item));
748
867
  if (typeof value === "object" && "id" in value) {
@@ -754,11 +873,26 @@ function extractValueRefs(value) {
754
873
 
755
874
  // src/lib/user-display.ts
756
875
  function getUserDisplayName(user2) {
757
- if (user2.firstName || user2.lastName) {
758
- return [user2.firstName, user2.lastName].filter(Boolean).join(" ");
876
+ const named = [user2.firstName, user2.lastName].map((part) => part?.trim()).filter(Boolean).join(" ");
877
+ if (named !== "") {
878
+ return named;
759
879
  }
760
880
  return user2.email?.split("@")[0] ?? "";
761
881
  }
882
+ var INITIAL_CHARACTER = /\p{L}|\p{N}/u;
883
+ function deriveInitials(label, fallback) {
884
+ const trimmed = label?.trim() ?? "";
885
+ if (trimmed === "") {
886
+ return fallback;
887
+ }
888
+ const words = trimmed.split(/\s+/);
889
+ const parts = words.length === 1 ? trimmed.split("@")[0].split(/[._-]/) : words;
890
+ const initials = parts.map((part) => {
891
+ const initial = part.match(INITIAL_CHARACTER)?.[0];
892
+ return initial === void 0 ? "" : [...initial.toUpperCase()][0] ?? "";
893
+ }).filter(Boolean).slice(0, 2).join("");
894
+ return initials === "" ? fallback : initials;
895
+ }
762
896
 
763
897
  // src/lib/record-creator.ts
764
898
  var RECORD_CREATOR_ROOT_ACTOR_METADATA_KEY = "__creatorRootActorId";
@@ -767,6 +901,20 @@ function getRecordCreatorPrincipalId(record) {
767
901
  return typeof creatorRootActorId === "string" && creatorRootActorId.length > 0 ? creatorRootActorId : record.createdBy;
768
902
  }
769
903
 
904
+ // src/lib/action-grant.ts
905
+ function includesAction(actions, action) {
906
+ return actions?.includes("*") === true || actions?.includes(action) === true;
907
+ }
908
+ function buildPermissionFlags(actions) {
909
+ return {
910
+ canRead: includesAction(actions, "read"),
911
+ canCreate: includesAction(actions, "create"),
912
+ canUpdate: includesAction(actions, "update"),
913
+ canDelete: includesAction(actions, "delete"),
914
+ canManage: includesAction(actions, "manage")
915
+ };
916
+ }
917
+
770
918
  // src/constants/attribute-columns.ts
771
919
  var DB_COLUMN_FIELDS = /* @__PURE__ */ new Set([
772
920
  "id",
@@ -906,6 +1054,7 @@ function isDefaultRole(roleName) {
906
1054
  }
907
1055
  var VALID_ICONS = new Set(constants.ICONS);
908
1056
  var ATTRIBUTE_NAME_REGEX = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
1057
+ var VIEW_NAME_REGEX = /^[a-z][a-z0-9-]*$/;
909
1058
  var MAX_NAME_LENGTH = 63;
910
1059
  var MAX_LABEL_LENGTH = 128;
911
1060
  var OBJECT_NAME_SCHEMA = z2__default.default.string().min(1, "Object name cannot be empty").max(63, "Object name is too long (max 63 characters)").regex(/^[a-z][a-z0-9-]*$/, {
@@ -916,11 +1065,31 @@ function validateObjectName(name) {
916
1065
  OBJECT_NAME_SCHEMA.parse(name);
917
1066
  } catch (error) {
918
1067
  if (error instanceof z2__default.default.ZodError) {
919
- throw new chunkF3YPU2N6_js.SchemaError(error.issues[0].message, chunkF3YPU2N6_js.SchemaErrorCode.INVALID_OBJECT_NAME);
1068
+ throw new chunkZBWTAKZO_js.SchemaError(error.issues[0].message, chunkZBWTAKZO_js.SchemaErrorCode.INVALID_OBJECT_NAME);
920
1069
  }
921
1070
  throw error;
922
1071
  }
923
1072
  }
1073
+ function validateViewName(name) {
1074
+ if (!name || name.length === 0) {
1075
+ throw new chunkZBWTAKZO_js.ValidationError("View name cannot be empty", [
1076
+ { path: ["name"], message: "View name cannot be empty" }
1077
+ ]);
1078
+ }
1079
+ if (name.length > MAX_NAME_LENGTH) {
1080
+ throw new chunkZBWTAKZO_js.ValidationError("View name is too long", [
1081
+ { path: ["name"], message: `View name is too long (max ${MAX_NAME_LENGTH} characters)` }
1082
+ ]);
1083
+ }
1084
+ if (!VIEW_NAME_REGEX.test(name)) {
1085
+ throw new chunkZBWTAKZO_js.ValidationError("Invalid view name format", [
1086
+ {
1087
+ path: ["name"],
1088
+ message: "View name must be in kebab-case (e.g., 'detail', 'list-view')"
1089
+ }
1090
+ ]);
1091
+ }
1092
+ }
924
1093
  function assertUniqueBy(items, getKey, buildError) {
925
1094
  const seen = /* @__PURE__ */ new Set();
926
1095
  for (const item of items) {
@@ -945,10 +1114,10 @@ function validateAttributeName(name) {
945
1114
  "[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'"
946
1115
  );
947
1116
  }
948
- if (chunkEDOEX3O7_js.RESERVED_ATTRIBUTE_NAMES.includes(name)) {
1117
+ if (chunkQMAVKX3Y_js.RESERVED_ATTRIBUTE_NAMES.includes(name)) {
949
1118
  throw new Error(
950
1119
  `[AttributeBuilder] "${name}" is a reserved name and cannot be used as an attribute name.
951
- Reserved names: ${chunkEDOEX3O7_js.RESERVED_ATTRIBUTE_NAMES.join(", ")}`
1120
+ Reserved names: ${chunkQMAVKX3Y_js.RESERVED_ATTRIBUTE_NAMES.join(", ")}`
952
1121
  );
953
1122
  }
954
1123
  }
@@ -1015,7 +1184,7 @@ var DEFAULT_AGENT_EXECUTION_CONFIG = {
1015
1184
  var AgentBuilder = class {
1016
1185
  constructor(config) {
1017
1186
  if (!config.name || config.name.trim().length === 0) {
1018
- throw new chunkF3YPU2N6_js.ValidationError("Agent name is required", []);
1187
+ throw new chunkZBWTAKZO_js.ValidationError("Agent name is required", []);
1019
1188
  }
1020
1189
  this.bp = { name: config.name, system: true, visibility: "workspace", triggers: [] };
1021
1190
  }
@@ -1077,6 +1246,25 @@ var AgentBuilder = class {
1077
1246
  Object.assign(this.bp, value);
1078
1247
  return this;
1079
1248
  }
1249
+ /**
1250
+ * Opt this agent into MCP servers: an array of server ids, or `"all"` to
1251
+ * mount every server the viewer can see. Absent by default — an agent that
1252
+ * never calls this stays tool-identical to one that predates the feature.
1253
+ * The opt-in only narrows; visibility is still enforced below it at
1254
+ * resolution time (`buildMcpToolset`), so naming an id the viewer cannot
1255
+ * see yields no tools from it, not an error.
1256
+ *
1257
+ * @example
1258
+ * ```typescript
1259
+ * agent({ name: "research-assistant" })
1260
+ * .mcpServers(["notion-workspace"])
1261
+ * // ...
1262
+ * ```
1263
+ */
1264
+ mcpServers(value) {
1265
+ this.bp.mcpServers = Array.isArray(value) ? [...value] : value;
1266
+ return this;
1267
+ }
1080
1268
  approval(value) {
1081
1269
  this.bp.approval = { ...DEFAULT_APPROVAL_POLICY, ...this.bp.approval, ...value };
1082
1270
  return this;
@@ -1130,13 +1318,13 @@ var AgentBuilder = class {
1130
1318
  }
1131
1319
  build() {
1132
1320
  if (!this.bp.systemPrompt) {
1133
- throw new chunkF3YPU2N6_js.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`, []);
1321
+ throw new chunkZBWTAKZO_js.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`, []);
1134
1322
  }
1135
1323
  if (!this.bp.model) {
1136
- throw new chunkF3YPU2N6_js.ValidationError(`Agent "${this.bp.name}": model is required`, []);
1324
+ throw new chunkZBWTAKZO_js.ValidationError(`Agent "${this.bp.name}": model is required`, []);
1137
1325
  }
1138
1326
  if (this.bp.system && this.bp.visibility === "private") {
1139
- throw new chunkF3YPU2N6_js.ValidationError(
1327
+ throw new chunkZBWTAKZO_js.ValidationError(
1140
1328
  `Agent "${this.bp.name}": system agents must use workspace visibility`,
1141
1329
  []
1142
1330
  );
@@ -1144,7 +1332,7 @@ var AgentBuilder = class {
1144
1332
  assertUniqueBy(
1145
1333
  this.bp.triggers,
1146
1334
  (t) => t.name,
1147
- (name) => new chunkF3YPU2N6_js.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${name}"`, [])
1335
+ (name) => new chunkZBWTAKZO_js.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${name}"`, [])
1148
1336
  );
1149
1337
  return {
1150
1338
  ...this.bp,
@@ -1199,7 +1387,7 @@ var BaseAttributeBuilder = class {
1199
1387
  * @see https://standardschema.dev/
1200
1388
  */
1201
1389
  get "~standard"() {
1202
- const zodSchema = chunkRAF6K6VG_js.createAttributeValidator(this.build());
1390
+ const zodSchema = chunkNELH4AXI_js.createAttributeValidator(this.build());
1203
1391
  return createStandardSchemaProps(zodSchema);
1204
1392
  }
1205
1393
  constructor(type, name, label) {
@@ -1946,9 +2134,9 @@ var RollupAttributeBuilder = class extends BaseAttributeBuilder {
1946
2134
  if (fn === "original" && targetType !== void 0 && targetType !== "select" && targetType !== "status" && targetType !== "multiselect") {
1947
2135
  const relation2 = this.attr.relationAttribute ?? "relation";
1948
2136
  const target = this.attr.targetAttribute ?? "field";
1949
- throw new chunkF3YPU2N6_js.SchemaError(
2137
+ throw new chunkZBWTAKZO_js.SchemaError(
1950
2138
  `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}").`,
1951
- chunkF3YPU2N6_js.SchemaErrorCode.VALIDATION_FAILED
2139
+ chunkZBWTAKZO_js.SchemaErrorCode.VALIDATION_FAILED
1952
2140
  );
1953
2141
  }
1954
2142
  return super.build();
@@ -2458,7 +2646,7 @@ var ObjectBuilder = class {
2458
2646
  * @see https://standardschema.dev/
2459
2647
  */
2460
2648
  get "~standard"() {
2461
- const zodSchema = chunkRAF6K6VG_js.createObjectValidator(this.build());
2649
+ const zodSchema = chunkNELH4AXI_js.createObjectValidator(this.build());
2462
2650
  return createStandardSchemaProps(zodSchema);
2463
2651
  }
2464
2652
  /**
@@ -2545,27 +2733,55 @@ var ObjectBuilder = class {
2545
2733
  * into the TRecord generic, enabling full inference.
2546
2734
  *
2547
2735
  * @param attr - Attribute definition or builder (auto-builds if builder)
2736
+ * @throws DuplicateError if the name is already declared on this object
2548
2737
  */
2549
2738
  attribute(attr) {
2550
- if (!this.obj.attributes) {
2551
- this.obj.attributes = [];
2552
- }
2553
- const finalAttr = "build" in attr && typeof attr.build === "function" ? attr.build() : attr;
2554
- this.obj.attributes.push(finalAttr);
2739
+ this.pushAttributes([attr]);
2555
2740
  return this;
2556
2741
  }
2557
2742
  /**
2558
2743
  * Add multiple attributes at once
2559
2744
  * Note: For full type inference, prefer chaining .attribute() calls
2745
+ *
2746
+ * @throws DuplicateError if a name is declared twice, inside this batch or
2747
+ * against an attribute already declared on this object
2560
2748
  */
2561
2749
  attributes(attrs) {
2562
- if (!this.obj.attributes) {
2563
- this.obj.attributes = [];
2564
- }
2565
- const finalAttrs = attrs.map((attr) => "build" in attr ? attr.build() : attr);
2566
- this.obj.attributes.push(...finalAttrs);
2750
+ this.pushAttributes(attrs);
2567
2751
  return this;
2568
2752
  }
2753
+ /**
2754
+ * Build any builders, reject duplicate names, then commit — the single push
2755
+ * path behind `attribute()` and `attributes()`, so both entry points share
2756
+ * one builder detection and one uniqueness guarantee.
2757
+ *
2758
+ * The check runs on the resulting array (already committed + incoming), so one
2759
+ * call catches both a collision inside a single `.attributes([...])` batch and
2760
+ * one spanning several calls.
2761
+ *
2762
+ * Names are compared with raw `===`. Postgres stores `attributes.name` as
2763
+ * plain `text` under a deterministic collation, so `x` and `X` are two
2764
+ * distinct attributes there; folding case here would reject a pair the
2765
+ * database accepts.
2766
+ *
2767
+ * @throws DuplicateError with `SchemaErrorCode.DUPLICATE_ATTRIBUTE`
2768
+ * @internal
2769
+ */
2770
+ pushAttributes(attrs) {
2771
+ const finalAttrs = attrs.map(
2772
+ (attr) => "build" in attr && typeof attr.build === "function" ? attr.build() : attr
2773
+ );
2774
+ assertUniqueBy(
2775
+ [...this.obj.attributes, ...finalAttrs],
2776
+ (attribute) => attribute.name,
2777
+ (name) => new chunkZBWTAKZO_js.DuplicateError(
2778
+ "attribute",
2779
+ name,
2780
+ `Object "${this.obj.name}": duplicate attribute name "${name}"`
2781
+ )
2782
+ );
2783
+ this.obj.attributes.push(...finalAttrs);
2784
+ }
2569
2785
  /**
2570
2786
  * Set metadata. Merges with any previously set metadata (preserves keys
2571
2787
  * written by other builder methods like `.order()`).
@@ -2672,26 +2888,26 @@ var ObjectBuilder = class {
2672
2888
  throw new Error("[ObjectBuilder] Missing required field: label");
2673
2889
  }
2674
2890
  if (!this._labelExpression) {
2675
- throw new chunkF3YPU2N6_js.SchemaError(
2891
+ throw new chunkZBWTAKZO_js.SchemaError(
2676
2892
  `Object "${this.obj.name}" must have a labelExpression. The labelExpression defines how records are displayed in lists and relations (e.g. "{{ name }}").`,
2677
- chunkF3YPU2N6_js.SchemaErrorCode.VALIDATION_FAILED
2893
+ chunkZBWTAKZO_js.SchemaErrorCode.VALIDATION_FAILED
2678
2894
  );
2679
2895
  }
2680
2896
  const labelResult = labelExpressionSchema.safeParse(this._labelExpression);
2681
2897
  if (!labelResult.success) {
2682
2898
  const errorMsg = labelResult.error.issues[0]?.message ?? "Invalid labelExpression";
2683
- throw new chunkF3YPU2N6_js.SchemaError(
2899
+ throw new chunkZBWTAKZO_js.SchemaError(
2684
2900
  `Invalid labelExpression for "${this.obj.name}": ${errorMsg}`,
2685
- chunkF3YPU2N6_js.SchemaErrorCode.VALIDATION_FAILED
2901
+ chunkZBWTAKZO_js.SchemaErrorCode.VALIDATION_FAILED
2686
2902
  );
2687
2903
  }
2688
2904
  if (this._embeddingExpression !== void 0) {
2689
2905
  const embeddingResult = labelExpressionSchema.safeParse(this._embeddingExpression);
2690
2906
  if (!embeddingResult.success) {
2691
2907
  const errorMsg = embeddingResult.error.issues[0]?.message ?? "Invalid embeddingExpression";
2692
- throw new chunkF3YPU2N6_js.SchemaError(
2908
+ throw new chunkZBWTAKZO_js.SchemaError(
2693
2909
  `Invalid embeddingExpression for "${this.obj.name}": ${errorMsg}`,
2694
- chunkF3YPU2N6_js.SchemaErrorCode.VALIDATION_FAILED
2910
+ chunkZBWTAKZO_js.SchemaErrorCode.VALIDATION_FAILED
2695
2911
  );
2696
2912
  }
2697
2913
  }
@@ -2733,7 +2949,7 @@ function object(config) {
2733
2949
  }
2734
2950
  function validatePresetStructure(presetId, nodes, depth) {
2735
2951
  const fail = (message, detail) => {
2736
- throw new chunkF3YPU2N6_js.ValidationError(message, [
2952
+ throw new chunkZBWTAKZO_js.ValidationError(message, [
2737
2953
  { path: ["documentLayout", "presets", presetId], message: detail }
2738
2954
  ]);
2739
2955
  };
@@ -2758,6 +2974,8 @@ function validatePresetStructure(presetId, nodes, depth) {
2758
2974
  }
2759
2975
  }
2760
2976
  }
2977
+
2978
+ // src/builders/view-builder.ts
2761
2979
  var GroupBuilder = class {
2762
2980
  constructor(id, label) {
2763
2981
  this.data = { type: "fields", fields: [] };
@@ -2898,22 +3116,6 @@ var RelationGroupBuilder = class {
2898
3116
  return this.data;
2899
3117
  }
2900
3118
  };
2901
- function validateViewName(name, builderName, examples) {
2902
- const viewNameSchema = z2.z.string().min(1, "View name cannot be empty").max(63, "View name is too long (max 63 characters)").regex(/^[a-z][a-z0-9-]*$/, {
2903
- message: `Invalid view name format.
2904
- Name must be in kebab-case:
2905
- \u2705 Valid: ${examples.valid}
2906
- \u274C Invalid: ${examples.invalid}`
2907
- });
2908
- try {
2909
- viewNameSchema.parse(name);
2910
- } catch (error) {
2911
- if (error instanceof z2.z.ZodError) {
2912
- throw new Error(`[${builderName}] ${error.issues[0].message}`);
2913
- }
2914
- throw error;
2915
- }
2916
- }
2917
3119
  var TableTabConfig = class {
2918
3120
  /** @internal */
2919
3121
  constructor(view, tabData) {
@@ -3135,13 +3337,13 @@ var ActivityTabConfig = class {
3135
3337
  return this.view.build();
3136
3338
  }
3137
3339
  };
3138
- var EmailsTabConfig = class {
3340
+ var AddressMatchedTabConfig = class {
3139
3341
  /** @internal */
3140
- constructor(view, base) {
3342
+ constructor(view, base, type) {
3141
3343
  this.view = view;
3142
- this.tabData = { ...base, type: "emails", emailAttributeIds: [] };
3344
+ this.tabData = { ...base, type, emailAttributeIds: [] };
3143
3345
  }
3144
- /** Set the text attributes whose values are matched against email participants. */
3346
+ /** Set the text attributes whose values are matched against participants. */
3145
3347
  emailAttributes(...attributeIds) {
3146
3348
  this.tabData.emailAttributeIds = attributeIds;
3147
3349
  return this;
@@ -3168,6 +3370,18 @@ var EmailsTabConfig = class {
3168
3370
  return this.view.build();
3169
3371
  }
3170
3372
  };
3373
+ var EmailsTabConfig = class extends AddressMatchedTabConfig {
3374
+ /** @internal */
3375
+ constructor(view, base) {
3376
+ super(view, base, "emails");
3377
+ }
3378
+ };
3379
+ var MeetingsTabConfig = class extends AddressMatchedTabConfig {
3380
+ /** @internal */
3381
+ constructor(view, base) {
3382
+ super(view, base, "meetings");
3383
+ }
3384
+ };
3171
3385
  var DocumentsTabConfig = class {
3172
3386
  /** @internal */
3173
3387
  constructor(view, base) {
@@ -3337,6 +3551,13 @@ var TabBuilder = class {
3337
3551
  emails() {
3338
3552
  return new EmailsTabConfig(this.view, this.base);
3339
3553
  }
3554
+ /**
3555
+ * Create a meetings tab (query-time association via email-bearing attributes)
3556
+ * @example .meetings().emailAttributes("email", "backup_email")
3557
+ */
3558
+ meetings() {
3559
+ return new MeetingsTabConfig(this.view, this.base);
3560
+ }
3340
3561
  /**
3341
3562
  * Create a forms tab to launch and track form instances linked to this record
3342
3563
  * @example .tab("forms", "Forms").forms()
@@ -3349,10 +3570,7 @@ var TabBuilder = class {
3349
3570
  };
3350
3571
  var DetailViewBuilder = class {
3351
3572
  constructor(name, label) {
3352
- validateViewName(name, "DetailViewBuilder", {
3353
- valid: "'detail', 'list-view', 'company-detail'",
3354
- invalid: "'Detail', 'listView', 'list_view'"
3355
- });
3573
+ validateViewName(name);
3356
3574
  this.data = {
3357
3575
  name,
3358
3576
  label,
@@ -3472,10 +3690,7 @@ function findProtectedTabFilterAttribute(node) {
3472
3690
  }
3473
3691
  var ListViewBuilder = class {
3474
3692
  constructor(name, label) {
3475
- validateViewName(name, "ListViewBuilder", {
3476
- valid: "'default', 'list-view', 'active-contacts'",
3477
- invalid: "'Default', 'listView', 'list_view'"
3478
- });
3693
+ validateViewName(name);
3479
3694
  this.data = {
3480
3695
  name,
3481
3696
  label,
@@ -3756,7 +3971,7 @@ var ListViewTabConfigBuilder = class _ListViewTabConfigBuilder {
3756
3971
  const protectedAttribute = findProtectedTabFilterAttribute(filters);
3757
3972
  if (protectedAttribute) {
3758
3973
  const message = `Tab filters cannot target "${protectedAttribute}". Use .visibility("private")`;
3759
- throw new chunkF3YPU2N6_js.ValidationError(message, [{ path: ["filters"], message }]);
3974
+ throw new chunkZBWTAKZO_js.ValidationError(message, [{ path: ["filters"], message }]);
3760
3975
  }
3761
3976
  this.tabData.filters = filters;
3762
3977
  return this;
@@ -3970,7 +4185,7 @@ function jsonFlag(name, defaultValue) {
3970
4185
 
3971
4186
  // src/feature-flags/flag-registry.ts
3972
4187
  function duplicateFlagError(name) {
3973
- return new chunkF3YPU2N6_js.DuplicateError(
4188
+ return new chunkZBWTAKZO_js.DuplicateError(
3974
4189
  "feature flag",
3975
4190
  name,
3976
4191
  `Flag "${name}" is already registered. Each flag name must be unique.`
@@ -4048,7 +4263,7 @@ var FlagRegistry = class {
4048
4263
  getOrThrow(name) {
4049
4264
  const flag = this.get(name);
4050
4265
  if (!flag) {
4051
- throw new chunkF3YPU2N6_js.NotFoundError(
4266
+ throw new chunkZBWTAKZO_js.NotFoundError(
4052
4267
  "Feature flag",
4053
4268
  name,
4054
4269
  void 0,
@@ -4205,19 +4420,19 @@ var FlagService = class {
4205
4420
  */
4206
4421
  async setOverride(flagName, level, value, options = {}) {
4207
4422
  if (!this.repository) {
4208
- throw new chunkF3YPU2N6_js.SchemaError(
4423
+ throw new chunkZBWTAKZO_js.SchemaError(
4209
4424
  "Cannot set override: no FeatureFlagsRepository configured. Add featureFlags to your DatabaseAdapter to enable runtime overrides.",
4210
- chunkF3YPU2N6_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4425
+ chunkZBWTAKZO_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4211
4426
  );
4212
4427
  }
4213
4428
  const flag = this.registry.get(flagName);
4214
4429
  if (flag && !flag.allowedLevels.includes(level)) {
4215
4430
  const message = `Flag "${flagName}" does not allow ${level}-level overrides. Allowed levels: ${flag.allowedLevels.join(", ")}`;
4216
- throw new chunkF3YPU2N6_js.ValidationError(message, [{ path: ["level"], message }]);
4431
+ throw new chunkZBWTAKZO_js.ValidationError(message, [{ path: ["level"], message }]);
4217
4432
  }
4218
4433
  if (flag?.system) {
4219
4434
  const message = `Flag "${flagName}" is a system flag and cannot be overridden via API.`;
4220
- throw new chunkF3YPU2N6_js.ValidationError(message, [{ path: ["flagName"], message }]);
4435
+ throw new chunkZBWTAKZO_js.ValidationError(message, [{ path: ["flagName"], message }]);
4221
4436
  }
4222
4437
  await this.repository.setOverride({
4223
4438
  flagName,
@@ -4237,9 +4452,9 @@ var FlagService = class {
4237
4452
  */
4238
4453
  async deleteOverride(flagName, level, targetId) {
4239
4454
  if (!this.repository) {
4240
- throw new chunkF3YPU2N6_js.SchemaError(
4455
+ throw new chunkZBWTAKZO_js.SchemaError(
4241
4456
  "Cannot delete override: no FeatureFlagsRepository configured.",
4242
- chunkF3YPU2N6_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4457
+ chunkZBWTAKZO_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4243
4458
  );
4244
4459
  }
4245
4460
  await this.repository.deleteOverride(flagName, level, targetId);
@@ -4376,7 +4591,7 @@ var NativeObjectRegistryClass = class {
4376
4591
  if (!object2.system) {
4377
4592
  const message = `[NativeObjectRegistry] Cannot register object "${object2.name}" (id: ${object2.id}): missing system flag.
4378
4593
  Native objects must have system=true. Did you call .runtime() on the builder? Remove that call \u2014 objects are system:true by default.`;
4379
- throw new chunkF3YPU2N6_js.ValidationError(message, []);
4594
+ throw new chunkZBWTAKZO_js.ValidationError(message, []);
4380
4595
  }
4381
4596
  if (this.objects.has(object2.name)) {
4382
4597
  const existing = this.objects.get(object2.name);
@@ -4384,7 +4599,7 @@ Native objects must have system=true. Did you call .runtime() on the builder? Re
4384
4599
  - Existing: "${existing?.label}" (id: ${existing?.id})
4385
4600
  - New: "${object2.label}" (id: ${object2.id})
4386
4601
  Please use unique names for each native object.`;
4387
- throw new chunkF3YPU2N6_js.DuplicateError("object", object2.name, message);
4602
+ throw new chunkZBWTAKZO_js.DuplicateError("object", object2.name, message);
4388
4603
  }
4389
4604
  this.objects.set(object2.name, cloneObjectDefinition(object2));
4390
4605
  }
@@ -4416,7 +4631,7 @@ Please use unique names for each native object.`;
4416
4631
  if (!object2) {
4417
4632
  const message = `[NativeObjectRegistry] Native object "${name}" not found.
4418
4633
  Available objects: ${this.listNames().join(", ")}`;
4419
- throw new chunkF3YPU2N6_js.NotFoundError("Native object", name, chunkF3YPU2N6_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4634
+ throw new chunkZBWTAKZO_js.NotFoundError("Native object", name, chunkZBWTAKZO_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4420
4635
  }
4421
4636
  return object2;
4422
4637
  }
@@ -4515,19 +4730,36 @@ var SKILL_OBJECT = object({ name: "skill", label: "Skill" }).sealed().icon("spar
4515
4730
  )
4516
4731
  ).attribute(richtext({ name: "content", label: "Content" }).defaultValue(SKILL_CONTENT_TEMPLATE)).build();
4517
4732
  var SKILL_VIEW = detailView("skill-detail", "Skill").for("skill").default().sidePanel({ attributes: ["name", "description"] }).tab("content", "Content").richtext("content").titleAttribute("name").done().tab("files", "Files").documents().done().build();
4518
- var SKILL_LIST_VIEW = listView("skill-list", "Skills").for("skill").default().tab("workspace", "Skills").default().icon("table").visibility("workspace").table().columns("name", "description").sort("name", "asc").tab("mine", "Mes skills").icon("lock").visibility("private").table().columns("name", "description").sort("name", "asc").build();
4519
- var MEMORY_OBJECT = object({ name: "memory", label: "Memory" }).sealed().icon("database").order(Number.MAX_SAFE_INTEGER).pluralLabel("Memories").labelExpression("{{ name }}").embeddingExpression("{{ name }}\n{{ description }}\n{{ content }}").attribute(text({ name: "name", label: "Name" }).maxLength(constants.MEMORY_NAME_MAX_LENGTH).required()).attribute(
4733
+ var SKILL_LIST_VIEW = listView("skill-list", "Skills").for("skill").default().tab("workspace", "Skills").default().icon("table").visibility("workspace").table().columns("name", "description").sort("name", "asc").tab("mine", "My skills").icon("lock").visibility("private").table().columns("name", "description").sort("name", "asc").build();
4734
+ var MEMORY_OBJECT = object({ name: "memory", label: "Memory" }).sealed().icon("database").order(Number.MAX_SAFE_INTEGER).pluralLabel("Memories").labelExpression("{{ name }}").embeddingExpression("{{ name }}\n{{ description }}\n{{ content }}").migration(2, (migration) => migration.changeType("content", "text", "richtext")).attribute(text({ name: "name", label: "Name" }).maxLength(constants.MEMORY_NAME_MAX_LENGTH).required()).attribute(
4520
4735
  text({ name: "description", label: "Description" }).multiline().maxLength(constants.MEMORY_DESCRIPTION_MAX_LENGTH).required()
4521
- ).attribute(text({ name: "content", label: "Content" }).multiline()).attribute(
4736
+ ).attribute(richtext({ name: "content", label: "Content" })).attribute(
4522
4737
  select({ name: "kind", label: "Kind" }).options([
4523
4738
  { value: "fact", label: "Fact" },
4524
4739
  { value: "preference", label: "Preference" },
4525
4740
  { value: "feedback", label: "Feedback" },
4526
4741
  { value: "reference", label: "Reference" }
4527
4742
  ])
4528
- ).attribute(relation({ name: "subjects", label: "Subjects" }).toAny().many()).attribute(relation({ name: "links", label: "Links" }).to("memory").many()).build();
4529
- var MEMORY_VIEW = detailView("memory-detail", "Memory").for("memory").default().sidePanel({ attributes: ["name", "description", "kind", "subjects", "links"] }).tab("content", "Content").form(group("content", "Content").field("content", { span: 12 })).build();
4530
- 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", "Mes m\xE9moires").icon("lock").visibility("private").table().columns("name", "kind", "description", "createdAt").sort("name", "asc").build();
4743
+ ).attribute(relation({ name: "subjects", label: "Subjects" }).toAny().many()).attribute(relation({ name: "links", label: "Links" }).to("memory").many()).attribute(
4744
+ select({ name: "source", label: "Source" }).options([
4745
+ { value: "explicit", label: "Saved by an agent" },
4746
+ { value: "extracted", label: "Extracted from a session" },
4747
+ { value: "corroborated", label: "Corroborated across users" }
4748
+ ])
4749
+ ).attribute(date({ name: "validFrom", label: "Valid from" }).includeTime()).attribute(date({ name: "invalidAt", label: "Invalid at" }).includeTime()).attribute(relation({ name: "supersededBy", label: "Superseded by" }).to("memory")).build();
4750
+ var MEMORY_VIEW = detailView("memory-detail", "Memory").for("memory").default().sidePanel({
4751
+ attributes: [
4752
+ "description",
4753
+ "kind",
4754
+ "source",
4755
+ "validFrom",
4756
+ "invalidAt",
4757
+ "supersededBy",
4758
+ "subjects",
4759
+ "links"
4760
+ ]
4761
+ }).tab("content", "Content").richtext("content").titleAttribute("name").build();
4762
+ 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();
4531
4763
 
4532
4764
  // src/views/registry.ts
4533
4765
  function cloneViewDefinition(view) {
@@ -4555,7 +4787,7 @@ var ViewRegistry = class {
4555
4787
  const key = this.makeKey(view.object, view.name, view.type);
4556
4788
  if (this.views.has(key)) {
4557
4789
  const message = `[ViewRegistry] Duplicate view: "${view.name}" (${view.type}) for object "${view.object}"`;
4558
- throw new chunkF3YPU2N6_js.DuplicateError("view", key, message);
4790
+ throw new chunkZBWTAKZO_js.DuplicateError("view", key, message);
4559
4791
  }
4560
4792
  const storedView = cloneViewDefinition(view);
4561
4793
  this.views.set(key, storedView);
@@ -4600,7 +4832,7 @@ var ViewRegistry = class {
4600
4832
  const availableNames = available.map((v) => `${v.name} (${v.type})`).join(", ") || "(none)";
4601
4833
  const message = `[ViewRegistry] View "${viewName}" not found for object "${objectName}".
4602
4834
  Available views: ${availableNames}`;
4603
- throw new chunkF3YPU2N6_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4835
+ throw new chunkZBWTAKZO_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4604
4836
  }
4605
4837
  return view;
4606
4838
  }
@@ -4688,7 +4920,7 @@ var viewRegistry = new ViewRegistry();
4688
4920
  // src/views/auto-generator.ts
4689
4921
  function getRuntimeAttributes(attributes, excludeNames = []) {
4690
4922
  return attributes.filter(
4691
- (attr) => !(!chunkEDOEX3O7_js.getAttributeCapabilities(attr).lifecycle.visibleInRuntime || attr.system || excludeNames.includes(attr.name))
4923
+ (attr) => !(!chunkQMAVKX3Y_js.getAttributeCapabilities(attr).lifecycle.visibleInRuntime || attr.system || excludeNames.includes(attr.name))
4692
4924
  );
4693
4925
  }
4694
4926
  function sortAttributes(attributes) {
@@ -4721,7 +4953,7 @@ function generateDefaultDetailView(object2, options = {}) {
4721
4953
  const { includeActivityTab = true, includeDocumentsTab = true, excludeAttributes = [] } = options;
4722
4954
  const runtimeAttrs = getRuntimeAttributes(object2.attributes, excludeAttributes);
4723
4955
  const sortedAttrs = sortAttributes(
4724
- runtimeAttrs.filter((attr) => chunkEDOEX3O7_js.getAttributeCapabilities(attr).presentation.formField)
4956
+ runtimeAttrs.filter((attr) => chunkQMAVKX3Y_js.getAttributeCapabilities(attr).presentation.formField)
4725
4957
  );
4726
4958
  const formTab = {
4727
4959
  id: "form",
@@ -4778,7 +5010,7 @@ function generateDefaultListView(object2, options = {}) {
4778
5010
  const { excludeAttributes = [], maxListColumns = 5 } = options;
4779
5011
  const runtimeAttrs = getRuntimeAttributes(object2.attributes, excludeAttributes);
4780
5012
  const sortedAttrs = sortAttributes(
4781
- runtimeAttrs.filter((attr) => chunkEDOEX3O7_js.getAttributeCapabilities(attr).presentation.defaultColumn)
5013
+ runtimeAttrs.filter((attr) => chunkQMAVKX3Y_js.getAttributeCapabilities(attr).presentation.defaultColumn)
4782
5014
  );
4783
5015
  const columns = sortedAttrs.slice(0, maxListColumns).map((attr) => attr.name);
4784
5016
  const config = {
@@ -4908,7 +5140,7 @@ var FormRegistry = class {
4908
5140
  const forms = Array.isArray(formOrForms) ? formOrForms : [formOrForms];
4909
5141
  for (const f of forms) {
4910
5142
  if (this.forms.has(f.name)) {
4911
- throw new chunkF3YPU2N6_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
5143
+ throw new chunkZBWTAKZO_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
4912
5144
  }
4913
5145
  this.forms.set(f.name, cloneFormDefinition(f));
4914
5146
  }
@@ -4936,6 +5168,65 @@ var FormRegistry = class {
4936
5168
  };
4937
5169
  var formRegistry = new FormRegistry();
4938
5170
 
5171
+ // src/realtime/agent-ui-message-batch.ts
5172
+ var AGENT_UI_BATCH_MAX_BYTES = 204800;
5173
+ var AGENT_UI_BATCH_MAX_ITEMS = 256;
5174
+ function isRecord(value) {
5175
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5176
+ }
5177
+ function hasExactKeys(value, allowed) {
5178
+ const keys = Object.keys(value);
5179
+ return keys.length === allowed.length && keys.every((key) => allowed.includes(key));
5180
+ }
5181
+ function isPositiveInteger(value) {
5182
+ return typeof value === "number" && Number.isInteger(value) && value > 0;
5183
+ }
5184
+ function isNonNegativeInteger(value) {
5185
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
5186
+ }
5187
+ function isContentRange(value) {
5188
+ if (!(isRecord(value) && hasExactKeys(value, ["kind", "startOffset", "endOffset"]))) {
5189
+ return false;
5190
+ }
5191
+ return (value.kind === "text" || value.kind === "reasoning") && isNonNegativeInteger(value.startOffset) && isNonNegativeInteger(value.endOffset) && value.endOffset >= value.startOffset;
5192
+ }
5193
+ function isBatchItem(value) {
5194
+ if (!isRecord(value)) return false;
5195
+ const expectedKeys = value.content === void 0 ? ["sequence", "chunk"] : ["sequence", "content", "chunk"];
5196
+ return hasExactKeys(value, expectedKeys) && isPositiveInteger(value.sequence) && value.chunk !== void 0 && (value.content === void 0 || isContentRange(value.content));
5197
+ }
5198
+ function encodedSize(value) {
5199
+ try {
5200
+ return new TextEncoder().encode(JSON.stringify(value)).byteLength;
5201
+ } catch {
5202
+ return void 0;
5203
+ }
5204
+ }
5205
+ function isAgentUIMessageBatch(value) {
5206
+ if (!(isRecord(value) && hasExactKeys(value, [
5207
+ "schemaVersion",
5208
+ "batchId",
5209
+ "tenantId",
5210
+ "sessionId",
5211
+ "streamId",
5212
+ "sequenceStart",
5213
+ "sequenceEnd",
5214
+ "items"
5215
+ ])) || value.schemaVersion !== 1 || typeof value.batchId !== "string" || value.batchId.trim() === "" || typeof value.tenantId !== "string" || value.tenantId.trim() === "" || typeof value.sessionId !== "string" || value.sessionId.trim() === "" || typeof value.streamId !== "string" || value.streamId.trim() === "" || !isPositiveInteger(value.sequenceStart) || !isPositiveInteger(value.sequenceEnd) || !Array.isArray(value.items) || value.items.length === 0 || value.items.length > AGENT_UI_BATCH_MAX_ITEMS || !value.items.every(isBatchItem)) {
5216
+ return false;
5217
+ }
5218
+ let previous = 0;
5219
+ for (const item of value.items) {
5220
+ if (item.sequence <= previous) return false;
5221
+ previous = item.sequence;
5222
+ }
5223
+ if (value.items[0]?.sequence !== value.sequenceStart || value.items.at(-1)?.sequence !== value.sequenceEnd) {
5224
+ return false;
5225
+ }
5226
+ const size = encodedSize(value);
5227
+ return size !== void 0 && size <= AGENT_UI_BATCH_MAX_BYTES;
5228
+ }
5229
+
4939
5230
  // src/realtime/channels.ts
4940
5231
  function liveChannelKey(channel) {
4941
5232
  switch (channel.kind) {
@@ -5001,47 +5292,6 @@ function parseLiveChannelKey(key) {
5001
5292
  return null;
5002
5293
  }
5003
5294
 
5004
- // src/realtime/cursors.ts
5005
- var LIVE_STREAM_START_CURSOR = "0-0";
5006
- var LIVE_STREAM_CURSOR_PATTERN = /^(0|[1-9]\d*)-(0|[1-9]\d*)$/;
5007
- function parseLiveStreamCursor(cursor) {
5008
- if (!LIVE_STREAM_CURSOR_PATTERN.test(cursor)) {
5009
- return null;
5010
- }
5011
- const [milliseconds = "0", sequence = "0"] = cursor.split("-");
5012
- return [BigInt(milliseconds), BigInt(sequence)];
5013
- }
5014
- function isLiveStreamCursor(value) {
5015
- return typeof value === "string" && parseLiveStreamCursor(value) !== null;
5016
- }
5017
- function assertLiveStreamCursor(cursor, label = "cursor") {
5018
- if (cursor === null) {
5019
- return;
5020
- }
5021
- if (!isLiveStreamCursor(cursor)) {
5022
- throw new Error(`Invalid live stream cursor for ${label}: ${cursor}`);
5023
- }
5024
- }
5025
- function compareLiveStreamCursors(left, right) {
5026
- const leftCursor = parseLiveStreamCursor(left);
5027
- if (!leftCursor) {
5028
- throw new Error(`Invalid live stream cursor for left: ${left}`);
5029
- }
5030
- const rightCursor = parseLiveStreamCursor(right);
5031
- if (!rightCursor) {
5032
- throw new Error(`Invalid live stream cursor for right: ${right}`);
5033
- }
5034
- const [leftMilliseconds, leftSequence] = leftCursor;
5035
- const [rightMilliseconds, rightSequence] = rightCursor;
5036
- if (leftMilliseconds !== rightMilliseconds) {
5037
- return leftMilliseconds < rightMilliseconds ? -1 : 1;
5038
- }
5039
- if (leftSequence !== rightSequence) {
5040
- return leftSequence < rightSequence ? -1 : 1;
5041
- }
5042
- return 0;
5043
- }
5044
-
5045
5295
  // src/realtime/events.ts
5046
5296
  var BROWSER_PREVIEW_STATUSES = ["live", "paused", "ended", "disconnected"];
5047
5297
  var LIVE_EVENT_TYPE_REGISTRY = {
@@ -5126,13 +5376,13 @@ function isLiveEventType(value) {
5126
5376
  return typeof value === "string" && LIVE_EVENT_TYPES.includes(value);
5127
5377
  }
5128
5378
  function isLiveEventPayload(payload) {
5129
- if (!(isRecord(payload) && isLiveEventType(payload.type))) {
5379
+ if (!(isRecord2(payload) && isLiveEventType(payload.type))) {
5130
5380
  return false;
5131
5381
  }
5132
5382
  return isLiveEventPayloadForType(payload.type, payload);
5133
5383
  }
5134
5384
  function isLiveEventPayloadForType(type, payload) {
5135
- if (!isRecord(payload)) {
5385
+ if (!isRecord2(payload)) {
5136
5386
  return false;
5137
5387
  }
5138
5388
  switch (type) {
@@ -5166,7 +5416,7 @@ function isLiveEventPayloadForType(type, payload) {
5166
5416
  return false;
5167
5417
  }
5168
5418
  }
5169
- function isRecord(value) {
5419
+ function isRecord2(value) {
5170
5420
  return typeof value === "object" && value !== null && !Array.isArray(value);
5171
5421
  }
5172
5422
  function isString(value) {
@@ -5228,13 +5478,13 @@ function isNotificationWorkState(value) {
5228
5478
  return isOneOf(value, NOTIFICATION_WORK_STATES);
5229
5479
  }
5230
5480
  function isNotificationSubject(value) {
5231
- return isRecord(value) && hasString(value, "type") && hasString(value, "id");
5481
+ return isRecord2(value) && hasString(value, "type") && hasString(value, "id");
5232
5482
  }
5233
5483
  function isRecordFieldPatch(value) {
5234
- return isRecord(value) && hasString(value, "fieldKey") && Object.hasOwn(value, "value") && hasVersion(value, "version");
5484
+ return isRecord2(value) && hasString(value, "fieldKey") && Object.hasOwn(value, "value") && hasVersion(value, "version");
5235
5485
  }
5236
5486
  function isRecordPatchPayload(payload) {
5237
- return payload.type === "record.patch" && hasString(payload, "objectId") && hasString(payload, "recordId") && hasVersion(payload, "recordVersion") && hasOptional(payload, "label", isString) && hasOptional(payload, "metadata", isRecord) && Array.isArray(payload.fieldPatches) && payload.fieldPatches.every(isRecordFieldPatch) && hasString(payload, "updatedAt");
5487
+ return payload.type === "record.patch" && hasString(payload, "objectId") && hasString(payload, "recordId") && hasVersion(payload, "recordVersion") && hasOptional(payload, "label", isString) && hasOptional(payload, "metadata", isRecord2) && Array.isArray(payload.fieldPatches) && payload.fieldPatches.every(isRecordFieldPatch) && hasString(payload, "updatedAt");
5238
5488
  }
5239
5489
  function isRecordDeletedPayload(payload) {
5240
5490
  return payload.type === "record.deleted" && hasString(payload, "objectId") && hasString(payload, "recordId") && hasVersion(payload, "recordVersion") && hasString(payload, "deletedAt");
@@ -5243,7 +5493,7 @@ function isRecordRemovedPayload(payload) {
5243
5493
  return payload.type === "record.removed" && hasOnlyKeys(payload, RECORD_REMOVED_PAYLOAD_KEYS) && hasString(payload, "objectId") && hasString(payload, "recordId") && hasVersion(payload, "recordVersion");
5244
5494
  }
5245
5495
  function isRecordLiveSnapshot(value) {
5246
- return isRecord(value) && hasOnlyKeys(value, RECORD_LIVE_SNAPSHOT_KEYS) && hasString(value, "id") && hasString(value, "objectId") && isOneOf(value.visibility, ["workspace", "private"]) && isNullableString(value.ownedBy) && (value.visibility === "workspace" && value.ownedBy === null || value.visibility === "private" && isNonEmptyString(value.ownedBy)) && hasString(value, "label") && isRecord(value.values) && hasOptional(value, "metadata", isRecord) && hasIsoDateString(value, "createdAt") && hasIsoDateString(value, "updatedAt") && hasOptional(value, "createdBy", isString) && hasOptional(value, "lastUpdatedBy", isString) && hasVersion(value, "schemaVersion");
5496
+ return isRecord2(value) && hasOnlyKeys(value, RECORD_LIVE_SNAPSHOT_KEYS) && hasString(value, "id") && hasString(value, "objectId") && isOneOf(value.visibility, ["workspace", "private"]) && isNullableString(value.ownedBy) && (value.visibility === "workspace" && value.ownedBy === null || value.visibility === "private" && isNonEmptyString(value.ownedBy)) && hasString(value, "label") && isRecord2(value.values) && hasOptional(value, "metadata", isRecord2) && hasIsoDateString(value, "createdAt") && hasIsoDateString(value, "updatedAt") && hasOptional(value, "createdBy", isString) && hasOptional(value, "lastUpdatedBy", isString) && hasVersion(value, "schemaVersion");
5247
5497
  }
5248
5498
  function isRecordCreatedPayload(payload) {
5249
5499
  return payload.type === "record.created" && hasOnlyKeys(payload, RECORD_CREATED_PAYLOAD_KEYS) && hasString(payload, "objectId") && hasString(payload, "recordId") && hasVersion(payload, "recordVersion") && isRecordLiveSnapshot(payload.record) && payload.record.id === payload.recordId && payload.record.objectId === payload.objectId;
@@ -5252,19 +5502,19 @@ function isViewProjectionStalePayload(payload) {
5252
5502
  return payload.type === "view.projection.stale" && hasString(payload, "viewId") && isOneOf(payload.reason, VIEW_PROJECTION_STALE_REASONS);
5253
5503
  }
5254
5504
  function isAgentSessionPatchPayload(payload) {
5255
- return payload.type === "agent.session.patch" && hasString(payload, "sessionId") && isRecord(payload.patch) && hasVersion(payload, "version") && hasString(payload, "updatedAt");
5505
+ return payload.type === "agent.session.patch" && hasString(payload, "sessionId") && isRecord2(payload.patch) && hasVersion(payload, "version") && hasString(payload, "updatedAt");
5256
5506
  }
5257
5507
  function isAgentUnreadPatchPayload(payload) {
5258
- return payload.type === "agent.unread.patch" && hasString(payload, "targetActorId") && hasString(payload, "sessionId") && hasVersion(payload, "unreadCount") && hasVersion(payload, "version") && hasString(payload, "updatedAt") && (!Object.hasOwn(payload, "session") || isRecord(payload.session) && payload.session.id === payload.sessionId);
5508
+ return payload.type === "agent.unread.patch" && hasString(payload, "targetActorId") && hasString(payload, "sessionId") && hasVersion(payload, "unreadCount") && hasVersion(payload, "version") && hasString(payload, "updatedAt") && (!Object.hasOwn(payload, "session") || isRecord2(payload.session) && payload.session.id === payload.sessionId);
5259
5509
  }
5260
5510
  function isLiveNotification(value) {
5261
- return isRecord(value) && hasString(value, "id") && hasString(value, "tenantId") && hasOptional(value, "senderActorId", isString) && hasOptional(value, "rootActorId", isString) && hasOptional(value, "triggeredByActorId", isString) && isNotificationKind(value.kind) && hasString(value, "type") && hasOptional(value, "subject", isNotificationSubject) && hasString(value, "title") && hasOptional(value, "summary", isString) && isRecord(value.payload) && isNotificationPriority(value.priority) && isNotificationSensitivity(value.sensitivity) && hasOptional(value, "threadKey", isString) && hasOptional(value, "idempotencyKey", isString) && hasOptional(value, "expiresAt", isIsoDateString) && hasIsoDateString(value, "createdAt") && hasIsoDateString(value, "updatedAt");
5511
+ return isRecord2(value) && hasString(value, "id") && hasString(value, "tenantId") && hasOptional(value, "senderActorId", isString) && hasOptional(value, "rootActorId", isString) && hasOptional(value, "triggeredByActorId", isString) && isNotificationKind(value.kind) && hasString(value, "type") && hasOptional(value, "subject", isNotificationSubject) && hasString(value, "title") && hasOptional(value, "summary", isString) && isRecord2(value.payload) && isNotificationPriority(value.priority) && isNotificationSensitivity(value.sensitivity) && hasOptional(value, "threadKey", isString) && hasOptional(value, "idempotencyKey", isString) && hasOptional(value, "expiresAt", isIsoDateString) && hasIsoDateString(value, "createdAt") && hasIsoDateString(value, "updatedAt");
5262
5512
  }
5263
5513
  function isLiveNotificationRecipient(value) {
5264
- return isRecord(value) && hasString(value, "id") && hasString(value, "tenantId") && hasString(value, "notificationId") && hasString(value, "recipientActorId") && isNotificationInboxState(value.inboxState) && isNotificationWorkState(value.workState) && hasOptional(value, "lockedAt", isIsoDateString) && hasOptional(value, "lockedByActorId", isString) && hasOptional(value, "readAt", isIsoDateString) && hasOptional(value, "archivedAt", isIsoDateString) && hasOptional(value, "snoozedUntil", isIsoDateString) && hasOptional(value, "completedAt", isIsoDateString) && hasOptional(value, "dismissedAt", isIsoDateString) && hasIsoDateString(value, "createdAt") && hasIsoDateString(value, "updatedAt");
5514
+ return isRecord2(value) && hasString(value, "id") && hasString(value, "tenantId") && hasString(value, "notificationId") && hasString(value, "recipientActorId") && isNotificationInboxState(value.inboxState) && isNotificationWorkState(value.workState) && hasOptional(value, "lockedAt", isIsoDateString) && hasOptional(value, "lockedByActorId", isString) && hasOptional(value, "readAt", isIsoDateString) && hasOptional(value, "archivedAt", isIsoDateString) && hasOptional(value, "snoozedUntil", isIsoDateString) && hasOptional(value, "completedAt", isIsoDateString) && hasOptional(value, "dismissedAt", isIsoDateString) && hasIsoDateString(value, "createdAt") && hasIsoDateString(value, "updatedAt");
5265
5515
  }
5266
5516
  function isNotificationRecipientPatch(value) {
5267
- if (!isRecord(value)) {
5517
+ if (!isRecord2(value)) {
5268
5518
  return false;
5269
5519
  }
5270
5520
  return Object.keys(value).every(
@@ -5288,14 +5538,14 @@ function isConversationRenamedPayload(payload) {
5288
5538
  }
5289
5539
  function isBrowserPreviewUpdatedPayload(payload) {
5290
5540
  const preview = payload.preview;
5291
- return payload.type === "browser.preview.updated" && hasOnlyKeys(payload, BROWSER_PREVIEW_UPDATED_PAYLOAD_KEYS) && isRecord(preview) && hasOnlyKeys(preview, BROWSER_PREVIEW_DESCRIPTOR_KEYS) && hasNonEmptyString(preview, "previewId") && hasNonEmptyString(preview, "rootSessionId") && hasNonEmptyString(preview, "agentSessionId") && hasNonEmptyString(preview, "browserSession") && isOneOf(preview.status, BROWSER_PREVIEW_STATUSES) && hasVersion(preview, "sequence") && hasIsoDateString(preview, "updatedAt") && preview.previewId === `browser:${preview.agentSessionId}:${preview.browserSession}`;
5541
+ return payload.type === "browser.preview.updated" && hasOnlyKeys(payload, BROWSER_PREVIEW_UPDATED_PAYLOAD_KEYS) && isRecord2(preview) && hasOnlyKeys(preview, BROWSER_PREVIEW_DESCRIPTOR_KEYS) && hasNonEmptyString(preview, "previewId") && hasNonEmptyString(preview, "rootSessionId") && hasNonEmptyString(preview, "agentSessionId") && hasNonEmptyString(preview, "browserSession") && isOneOf(preview.status, BROWSER_PREVIEW_STATUSES) && hasVersion(preview, "sequence") && hasIsoDateString(preview, "updatedAt") && preview.previewId === `browser:${preview.agentSessionId}:${preview.browserSession}`;
5292
5542
  }
5293
5543
  function isChannelRevokedPayload(payload) {
5294
5544
  return payload.type === "channel.revoked" && hasString(payload, "channel") && isOneOf(payload.reason, CHANNEL_REVOKED_REASONS);
5295
5545
  }
5296
5546
 
5297
5547
  // src/realtime/protocol.ts
5298
- function isRecord2(value) {
5548
+ function isRecord3(value) {
5299
5549
  return typeof value === "object" && value !== null && !Array.isArray(value);
5300
5550
  }
5301
5551
  function payloadChannel(payload) {
@@ -5303,46 +5553,11 @@ function payloadChannel(payload) {
5303
5553
  return typeof channel === "string" && parseLiveChannelKey(channel) ? channel : null;
5304
5554
  }
5305
5555
  function getLiveProtocolPayloadChannel(payload) {
5306
- return isRecord2(payload) ? payloadChannel(payload) : null;
5556
+ return isRecord3(payload) ? payloadChannel(payload) : null;
5307
5557
  }
5308
5558
  function isLiveEventEnvelope(payload) {
5309
- if (!isRecord2(payload)) return false;
5310
- return typeof payload.id === "string" && isLiveStreamCursor(payload.id) && typeof payload.channel === "string" && typeof payload.type === "string" && typeof payload.tenantId === "string" && payload.tenantId.length > 0 && typeof payload.occurredAt === "string" && isRecord2(payload.payload);
5311
- }
5312
- function parseLiveSubscribePayload(payload) {
5313
- if (!isRecord2(payload)) return null;
5314
- const channel = payloadChannel(payload);
5315
- if (!channel) return null;
5316
- const { cursor } = payload;
5317
- if (cursor !== void 0 && cursor !== null) {
5318
- if (typeof cursor !== "string" || !isLiveStreamCursor(cursor)) {
5319
- return null;
5320
- }
5321
- }
5322
- return { channel, cursor: cursor ?? null };
5323
- }
5324
- function parseLiveUnsubscribePayload(payload) {
5325
- if (payload === void 0 || payload === null) return {};
5326
- if (!isRecord2(payload)) return null;
5327
- if (!Object.hasOwn(payload, "channel")) {
5328
- return {};
5329
- }
5330
- const channel = payloadChannel(payload);
5331
- return channel ? { channel } : null;
5332
- }
5333
- function isLiveReplayCompletePayload(payload) {
5334
- if (!isRecord2(payload)) return false;
5335
- const channel = payloadChannel(payload);
5336
- if (!channel) return false;
5337
- return payload.cursor === null || typeof payload.cursor === "string" && isLiveStreamCursor(payload.cursor);
5338
- }
5339
- function isLiveGapPayload(payload) {
5340
- if (!isRecord2(payload)) return false;
5341
- return payloadChannel(payload) !== null;
5342
- }
5343
- function isLiveErrorPayload(payload) {
5344
- if (!isRecord2(payload)) return false;
5345
- return payloadChannel(payload) !== null;
5559
+ if (!isRecord3(payload)) return false;
5560
+ return typeof payload.id === "string" && payload.id.length > 0 && typeof payload.channel === "string" && typeof payload.type === "string" && typeof payload.tenantId === "string" && payload.tenantId.length > 0 && typeof payload.occurredAt === "string" && isRecord3(payload.payload);
5346
5561
  }
5347
5562
 
5348
5563
  // src/computed/functions.ts
@@ -5486,7 +5701,7 @@ function assertAcyclicComputedDependencies(nodes) {
5486
5701
  }
5487
5702
  function parseCompileFormula(expression) {
5488
5703
  try {
5489
- return chunkT7BST4JS_js.parseComputedFormula(expression);
5704
+ return chunkDEHBEFGO_js.parseComputedFormula(expression);
5490
5705
  } catch (error) {
5491
5706
  if (error instanceof Error) {
5492
5707
  throw new ComputedFormulaCompileError(error.message);
@@ -6128,14 +6343,14 @@ function resolvePathPart(value, part) {
6128
6343
  if (Array.isArray(value)) {
6129
6344
  return value.map((item) => resolvePathPart(item, part));
6130
6345
  }
6131
- if (!isPlainRecord(value)) {
6346
+ if (!isPlainRecord2(value)) {
6132
6347
  return null;
6133
6348
  }
6134
6349
  if (Object.hasOwn(value, part)) {
6135
6350
  return value[part] ?? null;
6136
6351
  }
6137
6352
  const nestedValues = value.values;
6138
- if (isPlainRecord(nestedValues) && Object.hasOwn(nestedValues, part)) {
6353
+ if (isPlainRecord2(nestedValues) && Object.hasOwn(nestedValues, part)) {
6139
6354
  return nestedValues[part] ?? null;
6140
6355
  }
6141
6356
  return null;
@@ -6237,9 +6452,9 @@ function evaluateCall(functionName, args) {
6237
6452
  case "percent_not_empty":
6238
6453
  return percentByEmptyState(args[0], false);
6239
6454
  case "count_empty":
6240
- return collectionItems(args[0]).filter(isEmptyValue).length;
6455
+ return collectionItems(args[0]).filter(chunkNELH4AXI_js.isNullishOrEmptyString).length;
6241
6456
  case "count_not_empty":
6242
- return collectionItems(args[0]).filter((item) => !isEmptyValue(item)).length;
6457
+ return collectionItems(args[0]).filter((item) => !chunkNELH4AXI_js.isNullishOrEmptyString(item)).length;
6243
6458
  case "count_unique":
6244
6459
  return uniqueNonEmpty(collectionItems(args[0])).length;
6245
6460
  default:
@@ -6282,14 +6497,14 @@ function percentByEmptyState(value, countEmpty) {
6282
6497
  if (items.length === 0) {
6283
6498
  return 0;
6284
6499
  }
6285
- const count = items.filter((item) => isEmptyValue(item) === countEmpty).length;
6500
+ const count = items.filter((item) => chunkNELH4AXI_js.isNullishOrEmptyString(item) === countEmpty).length;
6286
6501
  return count / items.length;
6287
6502
  }
6288
6503
  function uniqueNonEmpty(values) {
6289
6504
  const seen = /* @__PURE__ */ new Set();
6290
6505
  const result = [];
6291
6506
  for (const value of values) {
6292
- if (isEmptyValue(value)) {
6507
+ if (chunkNELH4AXI_js.isNullishOrEmptyString(value)) {
6293
6508
  continue;
6294
6509
  }
6295
6510
  const key = uniqueKey(value);
@@ -6310,9 +6525,6 @@ function collectionItems(value) {
6310
6525
  function flatten(values) {
6311
6526
  return values.flat(Number.POSITIVE_INFINITY);
6312
6527
  }
6313
- function isEmptyValue(value) {
6314
- return value === null || value === void 0 || value === "";
6315
- }
6316
6528
  function toFiniteNumber(value) {
6317
6529
  if (typeof value === "number") {
6318
6530
  return Number.isFinite(value) ? value : null;
@@ -6321,14 +6533,23 @@ function toFiniteNumber(value) {
6321
6533
  const parsed = Number(value);
6322
6534
  return Number.isFinite(parsed) ? parsed : null;
6323
6535
  }
6536
+ if (isCurrencyValue(value)) {
6537
+ return Number.isFinite(value.value) ? value.value : null;
6538
+ }
6324
6539
  return null;
6325
6540
  }
6541
+ function isCurrencyValue(value) {
6542
+ return typeof value === "object" && value !== null && typeof value.value === "number" && typeof value.code === "string";
6543
+ }
6326
6544
  function toDate(value) {
6327
6545
  if (value instanceof Date) {
6328
6546
  return Number.isNaN(value.getTime()) ? null : value;
6329
6547
  }
6330
6548
  if (typeof value !== "string") {
6331
- return null;
6549
+ const start = dateValueStart(value);
6550
+ if (start === null) return null;
6551
+ const ranged = new Date(start);
6552
+ return Number.isNaN(ranged.getTime()) ? null : ranged;
6332
6553
  }
6333
6554
  const date2 = new Date(value);
6334
6555
  return Number.isNaN(date2.getTime()) ? null : date2;
@@ -6343,7 +6564,7 @@ function uniqueKey(value) {
6343
6564
  }
6344
6565
  return `${typeof value}:${JSON.stringify(value)}`;
6345
6566
  }
6346
- function isPlainRecord(value) {
6567
+ function isPlainRecord2(value) {
6347
6568
  return typeof value === "object" && value !== null && !Array.isArray(value);
6348
6569
  }
6349
6570
  function formatComputedResult(value, returnType, decimals) {
@@ -6397,11 +6618,11 @@ function evaluateComputedAst(node, input) {
6397
6618
  return evaluateAst(node, input);
6398
6619
  }
6399
6620
  function evaluateComputedFormula(expression, input) {
6400
- return evaluateAst(chunkT7BST4JS_js.parseComputedFormula(expression), input);
6621
+ return evaluateAst(chunkDEHBEFGO_js.parseComputedFormula(expression), input);
6401
6622
  }
6402
6623
  function evaluateComputedFormulaWithResult(expression, input, returnType, decimals) {
6403
6624
  try {
6404
- const raw = evaluateAst(chunkT7BST4JS_js.parseComputedFormula(expression), input);
6625
+ const raw = evaluateAst(chunkDEHBEFGO_js.parseComputedFormula(expression), input);
6405
6626
  const value = returnType ? formatComputedResult(raw, returnType, decimals) : raw;
6406
6627
  return { value };
6407
6628
  } catch (error) {
@@ -6526,10 +6747,10 @@ var COMPUTED_FUNCTION_METADATA = [
6526
6747
  ];
6527
6748
 
6528
6749
  // src/filters/operators.ts
6529
- var isEmpty = (v) => v === null || v === void 0 || v === "" || Array.isArray(v) && v.length === 0;
6750
+ var isEmpty = (v) => chunkNELH4AXI_js.isNullishOrEmptyString(v) || Array.isArray(v) && v.length === 0;
6530
6751
  var toStr = (v) => v == null ? "" : String(v);
6531
6752
  var toNum = (v) => {
6532
- if (v == null || v === "") return null;
6753
+ if (chunkNELH4AXI_js.isNullishOrEmptyString(v)) return null;
6533
6754
  const n = typeof v === "number" ? v : Number(v);
6534
6755
  return Number.isFinite(n) ? n : null;
6535
6756
  };
@@ -6662,7 +6883,7 @@ var OPERATOR_SPECS = {
6662
6883
  appliesTo: ["date"],
6663
6884
  evaluateInMemory: (v, rv) => {
6664
6885
  const d = toDate2(v);
6665
- const bounds = chunkEDOEX3O7_js.resolveIsWithinBounds(rv);
6886
+ const bounds = chunkQMAVKX3Y_js.resolveIsWithinBounds(rv);
6666
6887
  if (!(d && bounds)) return false;
6667
6888
  return d.getTime() >= bounds.startMs && d.getTime() < bounds.endMs;
6668
6889
  }
@@ -6695,54 +6916,10 @@ var OPERATOR_SPECS = {
6695
6916
  }
6696
6917
  };
6697
6918
 
6698
- // src/filters/extract-filter-value.ts
6699
- function extractCurrencyFilterValue(value) {
6700
- if (typeof value === "number") return value;
6701
- if (value !== null && typeof value === "object" && "value" in value) {
6702
- const inner = value.value;
6703
- return typeof inner === "number" ? inner : null;
6704
- }
6705
- return null;
6706
- }
6707
- function extractFilterValue(value) {
6708
- if (value === null || value === void 0) return null;
6709
- if (typeof value === "object" && "value" in value) {
6710
- return value.value ?? null;
6711
- }
6712
- return value;
6713
- }
6714
-
6715
- // src/filters/polarity.ts
6716
- var NEGATIVE_OPERATORS = /* @__PURE__ */ new Set([
6717
- "is_not",
6718
- "not_contains",
6719
- "none_of",
6720
- "is_empty"
6721
- ]);
6722
- var NEGATIVE_TO_POSITIVE = {
6723
- is_not: "is",
6724
- not_contains: "contains",
6725
- none_of: "any_of",
6726
- is_empty: "is_not_empty"
6727
- };
6728
- function getOperatorPolarity(op) {
6729
- return NEGATIVE_OPERATORS.has(op) ? "none" : "any";
6730
- }
6731
- function normalizeForEdgeRpc(op) {
6732
- return NEGATIVE_TO_POSITIVE[op] ?? op;
6733
- }
6734
- var SINGLE_TO_MULTI = {
6735
- is: "any_of",
6736
- is_not: "none_of"
6737
- };
6738
- function toMultiValueOperator(op) {
6739
- return SINGLE_TO_MULTI[op] ?? op;
6740
- }
6741
-
6742
6919
  // src/filters/evaluate.ts
6743
6920
  var systemAttribute = (name, type) => ({ id: `system:${name}`, name, label: name, type, system: true });
6744
6921
  var RECORD_SYSTEM_ATTRIBUTES = [
6745
- ...Object.entries(chunkEDOEX3O7_js.SYSTEM_FILTER_ATTRIBUTE_TYPES).map(
6922
+ ...Object.entries(chunkQMAVKX3Y_js.SYSTEM_FILTER_ATTRIBUTE_TYPES).map(
6746
6923
  ([name, type]) => systemAttribute(name, type)
6747
6924
  )
6748
6925
  ];
@@ -6783,7 +6960,7 @@ function evaluateRule(rule, values, attrByName) {
6783
6960
  (definition) => definition.name === rule.property
6784
6961
  );
6785
6962
  if (!property) return false;
6786
- const positiveOperator = normalizeForEdgeRpc(rule.operator);
6963
+ const positiveOperator = chunkQMAVKX3Y_js.normalizeForEdgeRpc(rule.operator);
6787
6964
  const propertySpec = OPERATOR_SPECS[positiveOperator];
6788
6965
  if (!propertySpec?.appliesTo.includes(property.type)) return false;
6789
6966
  const rootValue = values[rule.attribute];
@@ -6801,7 +6978,7 @@ function evaluateRule(rule, values, attrByName) {
6801
6978
  property
6802
6979
  );
6803
6980
  });
6804
- return (rule.quantifier ?? getOperatorPolarity(rule.operator)) === "none" ? !matches : matches;
6981
+ return (rule.quantifier ?? chunkQMAVKX3Y_js.getOperatorPolarity(rule.operator)) === "none" ? !matches : matches;
6805
6982
  }
6806
6983
  const spec = OPERATOR_SPECS[rule.operator];
6807
6984
  if (!spec) return false;
@@ -6828,7 +7005,8 @@ function normalizeOperatorComparands(type, operator, storedValue, ruleValue) {
6828
7005
  if (type === "phone") return normalizePhoneComparands(storedValue, ruleValue);
6829
7006
  return [normalizeComparableValue(type, storedValue), normalizeComparableValue(type, ruleValue)];
6830
7007
  }
6831
- function normalizeUtcCalendarDay(value) {
7008
+ function normalizeUtcCalendarDay(raw) {
7009
+ const value = isDateRangeValue(raw) ? dateValueStart(raw) : raw;
6832
7010
  if (value instanceof Date)
6833
7011
  return Number.isNaN(value.getTime()) ? null : value.toISOString().slice(0, 10);
6834
7012
  if (typeof value !== "string" || value === "") return null;
@@ -6849,8 +7027,9 @@ function normalizePhoneComparands(stored, rule) {
6849
7027
  return [normalizeOne(stored), normalizeOne(rule)];
6850
7028
  }
6851
7029
  function normalizeComparableValue(type, value) {
6852
- if (type === "currency") return extractCurrencyFilterValue(value);
7030
+ if (type === "currency") return chunkQMAVKX3Y_js.extractCurrencyFilterValue(value);
6853
7031
  if (type === "date") {
7032
+ if (isDateRangeValue(value)) return dateValueStart(value);
6854
7033
  if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value.toISOString();
6855
7034
  return value;
6856
7035
  }
@@ -6886,10 +7065,10 @@ function canonicalStringify(value) {
6886
7065
  case "object":
6887
7066
  break;
6888
7067
  default:
6889
- throw new chunkF3YPU2N6_js.ValidationError(`Cannot canonicalize value of type ${typeof v}`, []);
7068
+ throw new chunkZBWTAKZO_js.ValidationError(`Cannot canonicalize value of type ${typeof v}`, []);
6890
7069
  }
6891
7070
  const obj = v;
6892
- if (seen.has(obj)) throw new chunkF3YPU2N6_js.ValidationError("Cannot canonicalize circular structure", []);
7071
+ if (seen.has(obj)) throw new chunkZBWTAKZO_js.ValidationError("Cannot canonicalize circular structure", []);
6893
7072
  seen.add(obj);
6894
7073
  try {
6895
7074
  if (Array.isArray(obj)) return `[${obj.map((e) => encode(e) ?? "null").join(",")}]`;
@@ -6919,6 +7098,20 @@ function resolveAttributeDefaultValue(attribute, ctx) {
6919
7098
  return attribute.includeTime ? ctx.now.toISOString() : dateInTimezone(ctx.now, ctx.timezone);
6920
7099
  }
6921
7100
 
7101
+ // src/utils/agent-title.ts
7102
+ var AGENT_FALLBACK_TITLE_MAX_LENGTH = 60;
7103
+ var STORAGE_PLACEHOLDER_TITLE = /^Session \d+$/;
7104
+ function buildAgentFallbackTitle(message) {
7105
+ const normalized = message.replace(/\s+/g, " ").trim().replace(/[.!?]+$/, "");
7106
+ if (!normalized) return "New conversation";
7107
+ return normalized.length > AGENT_FALLBACK_TITLE_MAX_LENGTH ? `${normalized.slice(0, AGENT_FALLBACK_TITLE_MAX_LENGTH - 1).trimEnd()}...` : normalized;
7108
+ }
7109
+ function conversationDisplayTitle(input) {
7110
+ const generated = input.generated?.trim();
7111
+ if (generated && !STORAGE_PLACEHOLDER_TITLE.test(generated)) return generated;
7112
+ return input.firstUserText ? buildAgentFallbackTitle(input.firstUserText) : input.emptyLabel;
7113
+ }
7114
+
6922
7115
  // src/utils/view-sync-payload.ts
6923
7116
  function viewSyncPayload(view) {
6924
7117
  return {
@@ -6974,10 +7167,10 @@ var attributeNameSchema = z2.z.string().min(1).superRefine((name, ctx) => {
6974
7167
  '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).'
6975
7168
  );
6976
7169
  var objectNameSchema = z2.z.string().min(1).superRefine((name, ctx) => {
6977
- if (chunkEDOEX3O7_js.RESERVED_OBJECT_NAMES.includes(name)) {
7170
+ if (chunkQMAVKX3Y_js.RESERVED_OBJECT_NAMES.includes(name)) {
6978
7171
  ctx.addIssue({
6979
7172
  code: z2.z.ZodIssueCode.custom,
6980
- message: `"${name}" is a reserved object name (${chunkEDOEX3O7_js.RESERVED_OBJECT_NAMES.join(", ")}) and cannot be used for a new object.`
7173
+ message: `"${name}" is a reserved object name (${chunkQMAVKX3Y_js.RESERVED_OBJECT_NAMES.join(", ")}) and cannot be used for a new object.`
6981
7174
  });
6982
7175
  }
6983
7176
  try {
@@ -6991,7 +7184,7 @@ var objectNameSchema = z2.z.string().min(1).superRefine((name, ctx) => {
6991
7184
  function withConfigCheck(schema) {
6992
7185
  return schema.superRefine((attribute, ctx) => {
6993
7186
  try {
6994
- const parsedConfig = chunkT7BST4JS_js.parseAttributeConfigForCreate(attribute.type, {
7187
+ const parsedConfig = chunkDEHBEFGO_js.parseAttributeConfigForCreate(attribute.type, {
6995
7188
  ...attribute.config ?? {},
6996
7189
  description: attribute.description
6997
7190
  });
@@ -7007,7 +7200,7 @@ function withConfigCheck(schema) {
7007
7200
  });
7008
7201
  }
7009
7202
  } catch (error) {
7010
- if (error instanceof chunkF3YPU2N6_js.ValidationError) {
7203
+ if (error instanceof chunkZBWTAKZO_js.ValidationError) {
7011
7204
  for (const issue of error.errors) {
7012
7205
  ctx.addIssue({
7013
7206
  code: z2.z.ZodIssueCode.custom,
@@ -7054,7 +7247,7 @@ var plannedObjectSchema = z2.z.object({
7054
7247
  'Human-readable plural display label (e.g. "Devis"/"Invoices"). Defaults from `label` if omitted.'
7055
7248
  ),
7056
7249
  description: z2.z.string().optional().describe("Help text describing what this object represents."),
7057
- icon: chunkT7BST4JS_js.iconNameSchema.describe(
7250
+ icon: chunkDEHBEFGO_js.iconNameSchema.describe(
7058
7251
  "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."
7059
7252
  ),
7060
7253
  labelExpression: labelExpressionSchema.describe(
@@ -7101,7 +7294,7 @@ var destructiveSchema = z2.z.object({
7101
7294
  )
7102
7295
  }).strict().default({ attributeRemovals: [], objectRemovals: [], renames: [] });
7103
7296
  var planSummarySchema = z2.z.string().min(1).describe(
7104
- "One or two plain-language sentences describing the change and why, shown to the human who approves or rejects the plan \u2014 this is the only free-text context they see before deciding. If `destructive` is non-empty, say plainly what will be lost (e.g. 'deletes the \"ancienMontant\" column and its data on every devis'). Do not restate the raw plan \u2014 explain intent."
7297
+ "ONE sentence naming the intent of the change \u2014 what it is for, not what it contains. The human approving it has already watched every entry land in the preview window and can read every row of the plan itself, so a recap tells them nothing they do not have. A second sentence is warranted only when `destructive` is non-empty: say plainly what will be lost (e.g. 'deletes the \"ancienMontant\" column and its data on every devis'). Never restate the plan \u2014 explain intent."
7105
7298
  );
7106
7299
  var CANONICAL_CONFIG_DESCRIPTION = "The COMPLETE config this view should end up with \u2014 not a patch. Copy the baseline returned by get_default_view and edit it, preserving every tab and setting you are not changing: anything you omit is dropped. To change the columns shown, set `tabs[].columns` (an array of attribute names) \u2014 there is no top-level `columns` on either view type. For a detail view's side panel, set `sidePanel.attributes`. Every attribute name listed must already exist on the object, or be created earlier in this same plan. ONE EXCEPTION to omit-is-dropped: a tab with `type: \"custom\"` renders a component belonging to the application, which you cannot describe or recreate. Copy every such tab through from the baseline exactly as it came, `name`, `component` and `props` untouched \u2014 dropping one, inventing one, or altering any of those three is rejected rather than applied (`name` is the tab's address in links, not its wording). Its `label` and `icon` you may change.";
7107
7300
  var BASELINE_TOKEN_DESCRIPTION = "Opaque token returned by get_default_view alongside the baseline you edited. REQUIRED when the object already exists \u2014 it proves you authored against the baseline that is still current. Must be OMITTED when this plan creates the object, which has no baseline yet.";
@@ -7112,13 +7305,13 @@ var proposedDefaultViewTargetSchema = z2.z.discriminatedUnion("viewType", [
7112
7305
  z2.z.object({
7113
7306
  objectName: viewTargetObjectNameSchema,
7114
7307
  viewType: z2.z.literal("list").describe("Targets the object's default list view (the grid)."),
7115
- canonicalConfig: chunkEDOEX3O7_js.listViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7308
+ canonicalConfig: chunkQMAVKX3Y_js.listViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7116
7309
  baselineToken: z2.z.string().min(1).optional().describe(BASELINE_TOKEN_DESCRIPTION)
7117
7310
  }).strict(),
7118
7311
  z2.z.object({
7119
7312
  objectName: viewTargetObjectNameSchema,
7120
7313
  viewType: z2.z.literal("detail").describe("Targets the object's default detail view (the single-record view)."),
7121
- canonicalConfig: chunkEDOEX3O7_js.detailViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7314
+ canonicalConfig: chunkQMAVKX3Y_js.detailViewConfigSchema.describe(CANONICAL_CONFIG_DESCRIPTION),
7122
7315
  baselineToken: z2.z.string().min(1).optional().describe(BASELINE_TOKEN_DESCRIPTION)
7123
7316
  }).strict()
7124
7317
  ]);
@@ -7132,13 +7325,13 @@ var persistedDefaultViewTargetSchema = z2.z.discriminatedUnion("viewType", [
7132
7325
  z2.z.object({
7133
7326
  objectName: z2.z.string().min(1),
7134
7327
  viewType: z2.z.literal("list"),
7135
- canonicalConfig: chunkEDOEX3O7_js.listViewConfigSchema,
7328
+ canonicalConfig: chunkQMAVKX3Y_js.listViewConfigSchema,
7136
7329
  ...persistedBaselineFields
7137
7330
  }).strict(),
7138
7331
  z2.z.object({
7139
7332
  objectName: z2.z.string().min(1),
7140
7333
  viewType: z2.z.literal("detail"),
7141
- canonicalConfig: chunkEDOEX3O7_js.detailViewConfigSchema,
7334
+ canonicalConfig: chunkQMAVKX3Y_js.detailViewConfigSchema,
7142
7335
  ...persistedBaselineFields
7143
7336
  }).strict()
7144
7337
  ]).superRefine((target, ctx) => {
@@ -7367,255 +7560,303 @@ Object.defineProperty(exports, "indexBy", {
7367
7560
  });
7368
7561
  Object.defineProperty(exports, "ATTRIBUTE_FILTER_OPERATORS", {
7369
7562
  enumerable: true,
7370
- get: function () { return chunkEDOEX3O7_js.ATTRIBUTE_FILTER_OPERATORS; }
7563
+ get: function () { return chunkQMAVKX3Y_js.ATTRIBUTE_FILTER_OPERATORS; }
7371
7564
  });
7372
7565
  Object.defineProperty(exports, "LIST_VIEW_TAB_VISIBILITIES", {
7373
7566
  enumerable: true,
7374
- get: function () { return chunkEDOEX3O7_js.LIST_VIEW_TAB_VISIBILITIES; }
7567
+ get: function () { return chunkQMAVKX3Y_js.LIST_VIEW_TAB_VISIBILITIES; }
7375
7568
  });
7376
7569
  Object.defineProperty(exports, "NO_VALUE_OPERATORS", {
7377
7570
  enumerable: true,
7378
- get: function () { return chunkEDOEX3O7_js.NO_VALUE_OPERATORS; }
7571
+ get: function () { return chunkQMAVKX3Y_js.NO_VALUE_OPERATORS; }
7379
7572
  });
7380
7573
  Object.defineProperty(exports, "OPERATORS_BY_TYPE", {
7381
7574
  enumerable: true,
7382
- get: function () { return chunkEDOEX3O7_js.OPERATORS_BY_TYPE; }
7575
+ get: function () { return chunkQMAVKX3Y_js.OPERATORS_BY_TYPE; }
7383
7576
  });
7384
7577
  Object.defineProperty(exports, "REMOVED_OPERATOR_REPLACEMENTS", {
7385
7578
  enumerable: true,
7386
- get: function () { return chunkEDOEX3O7_js.REMOVED_OPERATOR_REPLACEMENTS; }
7579
+ get: function () { return chunkQMAVKX3Y_js.REMOVED_OPERATOR_REPLACEMENTS; }
7387
7580
  });
7388
7581
  Object.defineProperty(exports, "RESERVED_ATTRIBUTE_NAMES", {
7389
7582
  enumerable: true,
7390
- get: function () { return chunkEDOEX3O7_js.RESERVED_ATTRIBUTE_NAMES; }
7583
+ get: function () { return chunkQMAVKX3Y_js.RESERVED_ATTRIBUTE_NAMES; }
7391
7584
  });
7392
7585
  Object.defineProperty(exports, "RESERVED_OBJECT_NAMES", {
7393
7586
  enumerable: true,
7394
- get: function () { return chunkEDOEX3O7_js.RESERVED_OBJECT_NAMES; }
7587
+ get: function () { return chunkQMAVKX3Y_js.RESERVED_OBJECT_NAMES; }
7395
7588
  });
7396
7589
  Object.defineProperty(exports, "RESOURCE_VISIBILITIES", {
7397
7590
  enumerable: true,
7398
- get: function () { return chunkEDOEX3O7_js.RESOURCE_VISIBILITIES; }
7591
+ get: function () { return chunkQMAVKX3Y_js.RESOURCE_VISIBILITIES; }
7399
7592
  });
7400
7593
  Object.defineProperty(exports, "SYNONYM_ALIASES", {
7401
7594
  enumerable: true,
7402
- get: function () { return chunkEDOEX3O7_js.SYNONYM_ALIASES; }
7595
+ get: function () { return chunkQMAVKX3Y_js.SYNONYM_ALIASES; }
7403
7596
  });
7404
7597
  Object.defineProperty(exports, "SYSTEM_ATTRIBUTES", {
7405
7598
  enumerable: true,
7406
- get: function () { return chunkEDOEX3O7_js.SYSTEM_ATTRIBUTES; }
7599
+ get: function () { return chunkQMAVKX3Y_js.SYSTEM_ATTRIBUTES; }
7407
7600
  });
7408
7601
  Object.defineProperty(exports, "SYSTEM_ATTRIBUTE_I18N_KEYS", {
7409
7602
  enumerable: true,
7410
- get: function () { return chunkEDOEX3O7_js.SYSTEM_ATTRIBUTE_I18N_KEYS; }
7603
+ get: function () { return chunkQMAVKX3Y_js.SYSTEM_ATTRIBUTE_I18N_KEYS; }
7411
7604
  });
7412
7605
  Object.defineProperty(exports, "SYSTEM_FIELD_NAMES", {
7413
7606
  enumerable: true,
7414
- get: function () { return chunkEDOEX3O7_js.SYSTEM_FIELD_NAMES; }
7607
+ get: function () { return chunkQMAVKX3Y_js.SYSTEM_FIELD_NAMES; }
7415
7608
  });
7416
7609
  Object.defineProperty(exports, "SYSTEM_FILTER_ATTRIBUTE_TYPES", {
7417
7610
  enumerable: true,
7418
- get: function () { return chunkEDOEX3O7_js.SYSTEM_FILTER_ATTRIBUTE_TYPES; }
7611
+ get: function () { return chunkQMAVKX3Y_js.SYSTEM_FILTER_ATTRIBUTE_TYPES; }
7612
+ });
7613
+ Object.defineProperty(exports, "canonicalizeFilterValue", {
7614
+ enumerable: true,
7615
+ get: function () { return chunkQMAVKX3Y_js.canonicalizeFilterValue; }
7419
7616
  });
7420
7617
  Object.defineProperty(exports, "collectQualifiedRuleIssues", {
7421
7618
  enumerable: true,
7422
- get: function () { return chunkEDOEX3O7_js.collectQualifiedRuleIssues; }
7619
+ get: function () { return chunkQMAVKX3Y_js.collectQualifiedRuleIssues; }
7423
7620
  });
7424
7621
  Object.defineProperty(exports, "currentActor", {
7425
7622
  enumerable: true,
7426
- get: function () { return chunkEDOEX3O7_js.currentActor; }
7623
+ get: function () { return chunkQMAVKX3Y_js.currentActor; }
7427
7624
  });
7428
7625
  Object.defineProperty(exports, "detailTabSchema", {
7429
7626
  enumerable: true,
7430
- get: function () { return chunkEDOEX3O7_js.detailTabSchema; }
7627
+ get: function () { return chunkQMAVKX3Y_js.detailTabSchema; }
7431
7628
  });
7432
7629
  Object.defineProperty(exports, "detailViewConfigSchema", {
7433
7630
  enumerable: true,
7434
- get: function () { return chunkEDOEX3O7_js.detailViewConfigSchema; }
7631
+ get: function () { return chunkQMAVKX3Y_js.detailViewConfigSchema; }
7632
+ });
7633
+ Object.defineProperty(exports, "extractCurrencyFilterValue", {
7634
+ enumerable: true,
7635
+ get: function () { return chunkQMAVKX3Y_js.extractCurrencyFilterValue; }
7636
+ });
7637
+ Object.defineProperty(exports, "extractFilterValue", {
7638
+ enumerable: true,
7639
+ get: function () { return chunkQMAVKX3Y_js.extractFilterValue; }
7435
7640
  });
7436
7641
  Object.defineProperty(exports, "getAttributeCapabilities", {
7437
7642
  enumerable: true,
7438
- get: function () { return chunkEDOEX3O7_js.getAttributeCapabilities; }
7643
+ get: function () { return chunkQMAVKX3Y_js.getAttributeCapabilities; }
7439
7644
  });
7440
7645
  Object.defineProperty(exports, "getAttributeFilterOperators", {
7441
7646
  enumerable: true,
7442
- get: function () { return chunkEDOEX3O7_js.getAttributeFilterOperators; }
7647
+ get: function () { return chunkQMAVKX3Y_js.getAttributeFilterOperators; }
7648
+ });
7649
+ Object.defineProperty(exports, "getOperatorPolarity", {
7650
+ enumerable: true,
7651
+ get: function () { return chunkQMAVKX3Y_js.getOperatorPolarity; }
7443
7652
  });
7444
7653
  Object.defineProperty(exports, "getRollupFilterOperators", {
7445
7654
  enumerable: true,
7446
- get: function () { return chunkEDOEX3O7_js.getRollupFilterOperators; }
7655
+ get: function () { return chunkQMAVKX3Y_js.getRollupFilterOperators; }
7447
7656
  });
7448
7657
  Object.defineProperty(exports, "getSystemAttributeI18nKey", {
7449
7658
  enumerable: true,
7450
- get: function () { return chunkEDOEX3O7_js.getSystemAttributeI18nKey; }
7659
+ get: function () { return chunkQMAVKX3Y_js.getSystemAttributeI18nKey; }
7451
7660
  });
7452
7661
  Object.defineProperty(exports, "getSystemAttributeList", {
7453
7662
  enumerable: true,
7454
- get: function () { return chunkEDOEX3O7_js.getSystemAttributeList; }
7663
+ get: function () { return chunkQMAVKX3Y_js.getSystemAttributeList; }
7455
7664
  });
7456
7665
  Object.defineProperty(exports, "inverseSourceSchema", {
7457
7666
  enumerable: true,
7458
- get: function () { return chunkEDOEX3O7_js.inverseSourceSchema; }
7667
+ get: function () { return chunkQMAVKX3Y_js.inverseSourceSchema; }
7459
7668
  });
7460
7669
  Object.defineProperty(exports, "isAttributeFilterable", {
7461
7670
  enumerable: true,
7462
- get: function () { return chunkEDOEX3O7_js.isAttributeFilterable; }
7671
+ get: function () { return chunkQMAVKX3Y_js.isAttributeFilterable; }
7463
7672
  });
7464
7673
  Object.defineProperty(exports, "isAttributeGroupable", {
7465
7674
  enumerable: true,
7466
- get: function () { return chunkEDOEX3O7_js.isAttributeGroupable; }
7675
+ get: function () { return chunkQMAVKX3Y_js.isAttributeGroupable; }
7467
7676
  });
7468
7677
  Object.defineProperty(exports, "isAttributeKanbanGroupable", {
7469
7678
  enumerable: true,
7470
- get: function () { return chunkEDOEX3O7_js.isAttributeKanbanGroupable; }
7679
+ get: function () { return chunkQMAVKX3Y_js.isAttributeKanbanGroupable; }
7471
7680
  });
7472
7681
  Object.defineProperty(exports, "isAttributeSearchable", {
7473
7682
  enumerable: true,
7474
- get: function () { return chunkEDOEX3O7_js.isAttributeSearchable; }
7683
+ get: function () { return chunkQMAVKX3Y_js.isAttributeSearchable; }
7475
7684
  });
7476
7685
  Object.defineProperty(exports, "isDynamicValue", {
7477
7686
  enumerable: true,
7478
- get: function () { return chunkEDOEX3O7_js.isDynamicValue; }
7687
+ get: function () { return chunkQMAVKX3Y_js.isDynamicValue; }
7479
7688
  });
7480
7689
  Object.defineProperty(exports, "isManagedSystemAttribute", {
7481
7690
  enumerable: true,
7482
- get: function () { return chunkEDOEX3O7_js.isManagedSystemAttribute; }
7691
+ get: function () { return chunkQMAVKX3Y_js.isManagedSystemAttribute; }
7483
7692
  });
7484
7693
  Object.defineProperty(exports, "isNoValueOperator", {
7485
7694
  enumerable: true,
7486
- get: function () { return chunkEDOEX3O7_js.isNoValueOperator; }
7695
+ get: function () { return chunkQMAVKX3Y_js.isNoValueOperator; }
7487
7696
  });
7488
7697
  Object.defineProperty(exports, "isRelativeDateValue", {
7489
7698
  enumerable: true,
7490
- get: function () { return chunkEDOEX3O7_js.isRelativeDateValue; }
7699
+ get: function () { return chunkQMAVKX3Y_js.isRelativeDateValue; }
7700
+ });
7701
+ Object.defineProperty(exports, "isSetMembershipOperator", {
7702
+ enumerable: true,
7703
+ get: function () { return chunkQMAVKX3Y_js.isSetMembershipOperator; }
7491
7704
  });
7492
7705
  Object.defineProperty(exports, "listViewConfigSchema", {
7493
7706
  enumerable: true,
7494
- get: function () { return chunkEDOEX3O7_js.listViewConfigSchema; }
7707
+ get: function () { return chunkQMAVKX3Y_js.listViewConfigSchema; }
7495
7708
  });
7496
7709
  Object.defineProperty(exports, "listViewTabSchema", {
7497
7710
  enumerable: true,
7498
- get: function () { return chunkEDOEX3O7_js.listViewTabSchema; }
7711
+ get: function () { return chunkQMAVKX3Y_js.listViewTabSchema; }
7499
7712
  });
7500
7713
  Object.defineProperty(exports, "normalizeFilterRule", {
7501
7714
  enumerable: true,
7502
- get: function () { return chunkEDOEX3O7_js.normalizeFilterRule; }
7715
+ get: function () { return chunkQMAVKX3Y_js.normalizeFilterRule; }
7716
+ });
7717
+ Object.defineProperty(exports, "normalizeForEdgeRpc", {
7718
+ enumerable: true,
7719
+ get: function () { return chunkQMAVKX3Y_js.normalizeForEdgeRpc; }
7503
7720
  });
7504
7721
  Object.defineProperty(exports, "normalizeOperator", {
7505
7722
  enumerable: true,
7506
- get: function () { return chunkEDOEX3O7_js.normalizeOperator; }
7723
+ get: function () { return chunkQMAVKX3Y_js.normalizeOperator; }
7507
7724
  });
7508
7725
  Object.defineProperty(exports, "now", {
7509
7726
  enumerable: true,
7510
- get: function () { return chunkEDOEX3O7_js.now; }
7727
+ get: function () { return chunkQMAVKX3Y_js.now; }
7728
+ });
7729
+ Object.defineProperty(exports, "parseResourceVisibility", {
7730
+ enumerable: true,
7731
+ get: function () { return chunkQMAVKX3Y_js.parseResourceVisibility; }
7511
7732
  });
7512
7733
  Object.defineProperty(exports, "parseViewConfig", {
7513
7734
  enumerable: true,
7514
- get: function () { return chunkEDOEX3O7_js.parseViewConfig; }
7735
+ get: function () { return chunkQMAVKX3Y_js.parseViewConfig; }
7515
7736
  });
7516
7737
  Object.defineProperty(exports, "relationSourceSchema", {
7517
7738
  enumerable: true,
7518
- get: function () { return chunkEDOEX3O7_js.relationSourceSchema; }
7739
+ get: function () { return chunkQMAVKX3Y_js.relationSourceSchema; }
7740
+ });
7741
+ Object.defineProperty(exports, "resolveEffectiveFilterType", {
7742
+ enumerable: true,
7743
+ get: function () { return chunkQMAVKX3Y_js.resolveEffectiveFilterType; }
7519
7744
  });
7520
7745
  Object.defineProperty(exports, "resolveIsWithinBounds", {
7521
7746
  enumerable: true,
7522
- get: function () { return chunkEDOEX3O7_js.resolveIsWithinBounds; }
7747
+ get: function () { return chunkQMAVKX3Y_js.resolveIsWithinBounds; }
7748
+ });
7749
+ Object.defineProperty(exports, "resolveUtcDayBounds", {
7750
+ enumerable: true,
7751
+ get: function () { return chunkQMAVKX3Y_js.resolveUtcDayBounds; }
7523
7752
  });
7524
7753
  Object.defineProperty(exports, "tableSourceSchema", {
7525
7754
  enumerable: true,
7526
- get: function () { return chunkEDOEX3O7_js.tableSourceSchema; }
7755
+ get: function () { return chunkQMAVKX3Y_js.tableSourceSchema; }
7756
+ });
7757
+ Object.defineProperty(exports, "toMultiValueOperator", {
7758
+ enumerable: true,
7759
+ get: function () { return chunkQMAVKX3Y_js.toMultiValueOperator; }
7527
7760
  });
7528
7761
  Object.defineProperty(exports, "toUtcDayString", {
7529
7762
  enumerable: true,
7530
- get: function () { return chunkEDOEX3O7_js.toUtcDayString; }
7763
+ get: function () { return chunkQMAVKX3Y_js.toUtcDayString; }
7531
7764
  });
7532
7765
  Object.defineProperty(exports, "today", {
7533
7766
  enumerable: true,
7534
- get: function () { return chunkEDOEX3O7_js.today; }
7767
+ get: function () { return chunkQMAVKX3Y_js.today; }
7535
7768
  });
7536
7769
  Object.defineProperty(exports, "validateQualifiedRule", {
7537
7770
  enumerable: true,
7538
- get: function () { return chunkEDOEX3O7_js.validateQualifiedRule; }
7771
+ get: function () { return chunkQMAVKX3Y_js.validateQualifiedRule; }
7539
7772
  });
7540
7773
  Object.defineProperty(exports, "viewConfigByTypeSchema", {
7541
7774
  enumerable: true,
7542
- get: function () { return chunkEDOEX3O7_js.viewConfigByTypeSchema; }
7775
+ get: function () { return chunkQMAVKX3Y_js.viewConfigByTypeSchema; }
7543
7776
  });
7544
7777
  Object.defineProperty(exports, "viewTypeSchema", {
7545
7778
  enumerable: true,
7546
- get: function () { return chunkEDOEX3O7_js.viewTypeSchema; }
7779
+ get: function () { return chunkQMAVKX3Y_js.viewTypeSchema; }
7547
7780
  });
7548
7781
  Object.defineProperty(exports, "ComputedFormulaParseError", {
7549
7782
  enumerable: true,
7550
- get: function () { return chunkT7BST4JS_js.ComputedFormulaParseError; }
7783
+ get: function () { return chunkDEHBEFGO_js.ComputedFormulaParseError; }
7551
7784
  });
7552
7785
  Object.defineProperty(exports, "SCHEMA_LIMITS", {
7553
7786
  enumerable: true,
7554
- get: function () { return chunkT7BST4JS_js.SCHEMA_LIMITS; }
7787
+ get: function () { return chunkDEHBEFGO_js.SCHEMA_LIMITS; }
7555
7788
  });
7556
7789
  Object.defineProperty(exports, "colorIdSchema", {
7557
7790
  enumerable: true,
7558
- get: function () { return chunkT7BST4JS_js.colorIdSchema; }
7791
+ get: function () { return chunkDEHBEFGO_js.colorIdSchema; }
7559
7792
  });
7560
7793
  Object.defineProperty(exports, "iconNameSchema", {
7561
7794
  enumerable: true,
7562
- get: function () { return chunkT7BST4JS_js.iconNameSchema; }
7795
+ get: function () { return chunkDEHBEFGO_js.iconNameSchema; }
7563
7796
  });
7564
7797
  Object.defineProperty(exports, "multiselectOptionWriteSchema", {
7565
7798
  enumerable: true,
7566
- get: function () { return chunkT7BST4JS_js.multiselectOptionWriteSchema; }
7799
+ get: function () { return chunkDEHBEFGO_js.multiselectOptionWriteSchema; }
7567
7800
  });
7568
7801
  Object.defineProperty(exports, "parseAttributeConfig", {
7569
7802
  enumerable: true,
7570
- get: function () { return chunkT7BST4JS_js.parseAttributeConfig; }
7803
+ get: function () { return chunkDEHBEFGO_js.parseAttributeConfig; }
7571
7804
  });
7572
7805
  Object.defineProperty(exports, "parseAttributeConfigForCreate", {
7573
7806
  enumerable: true,
7574
- get: function () { return chunkT7BST4JS_js.parseAttributeConfigForCreate; }
7807
+ get: function () { return chunkDEHBEFGO_js.parseAttributeConfigForCreate; }
7575
7808
  });
7576
7809
  Object.defineProperty(exports, "parseAttributeConfigForUpdate", {
7577
7810
  enumerable: true,
7578
- get: function () { return chunkT7BST4JS_js.parseAttributeConfigForUpdate; }
7811
+ get: function () { return chunkDEHBEFGO_js.parseAttributeConfigForUpdate; }
7579
7812
  });
7580
7813
  Object.defineProperty(exports, "parseComputedFormula", {
7581
7814
  enumerable: true,
7582
- get: function () { return chunkT7BST4JS_js.parseComputedFormula; }
7815
+ get: function () { return chunkDEHBEFGO_js.parseComputedFormula; }
7583
7816
  });
7584
7817
  Object.defineProperty(exports, "selectOptionWriteSchema", {
7585
7818
  enumerable: true,
7586
- get: function () { return chunkT7BST4JS_js.selectOptionWriteSchema; }
7819
+ get: function () { return chunkDEHBEFGO_js.selectOptionWriteSchema; }
7587
7820
  });
7588
7821
  Object.defineProperty(exports, "statusGroupSchema", {
7589
7822
  enumerable: true,
7590
- get: function () { return chunkT7BST4JS_js.statusGroupSchema; }
7823
+ get: function () { return chunkDEHBEFGO_js.statusGroupSchema; }
7591
7824
  });
7592
7825
  Object.defineProperty(exports, "statusOptionWriteSchema", {
7593
7826
  enumerable: true,
7594
- get: function () { return chunkT7BST4JS_js.statusOptionWriteSchema; }
7827
+ get: function () { return chunkDEHBEFGO_js.statusOptionWriteSchema; }
7595
7828
  });
7596
7829
  Object.defineProperty(exports, "createFormAttributeValidator", {
7597
7830
  enumerable: true,
7598
- get: function () { return chunkRAF6K6VG_js.createFormAttributeValidator; }
7831
+ get: function () { return chunkNELH4AXI_js.createFormAttributeValidator; }
7832
+ });
7833
+ Object.defineProperty(exports, "isNullishOrEmptyString", {
7834
+ enumerable: true,
7835
+ get: function () { return chunkNELH4AXI_js.isNullishOrEmptyString; }
7836
+ });
7837
+ Object.defineProperty(exports, "isValuePresent", {
7838
+ enumerable: true,
7839
+ get: function () { return chunkNELH4AXI_js.isValuePresent; }
7599
7840
  });
7600
7841
  Object.defineProperty(exports, "rejectUnknownAttributesOrThrow", {
7601
7842
  enumerable: true,
7602
- get: function () { return chunkRAF6K6VG_js.rejectUnknownAttributesOrThrow; }
7843
+ get: function () { return chunkNELH4AXI_js.rejectUnknownAttributesOrThrow; }
7603
7844
  });
7604
7845
  Object.defineProperty(exports, "validateDraft", {
7605
7846
  enumerable: true,
7606
- get: function () { return chunkRAF6K6VG_js.validateDraft; }
7847
+ get: function () { return chunkNELH4AXI_js.validateDraft; }
7607
7848
  });
7608
7849
  Object.defineProperty(exports, "validateDraftOrThrow", {
7609
7850
  enumerable: true,
7610
- get: function () { return chunkRAF6K6VG_js.validateDraftOrThrow; }
7851
+ get: function () { return chunkNELH4AXI_js.validateDraftOrThrow; }
7611
7852
  });
7612
7853
  Object.defineProperty(exports, "validateObject", {
7613
7854
  enumerable: true,
7614
- get: function () { return chunkRAF6K6VG_js.validateObject; }
7855
+ get: function () { return chunkNELH4AXI_js.validateObject; }
7615
7856
  });
7616
7857
  Object.defineProperty(exports, "validateObjectOrThrow", {
7617
7858
  enumerable: true,
7618
- get: function () { return chunkRAF6K6VG_js.validateObjectOrThrow; }
7859
+ get: function () { return chunkNELH4AXI_js.validateObjectOrThrow; }
7619
7860
  });
7620
7861
  Object.defineProperty(exports, "createCheckboxValidator", {
7621
7862
  enumerable: true,
@@ -7643,155 +7884,155 @@ Object.defineProperty(exports, "resolveTextPattern", {
7643
7884
  });
7644
7885
  Object.defineProperty(exports, "AccessDeniedError", {
7645
7886
  enumerable: true,
7646
- get: function () { return chunkF3YPU2N6_js.AccessDeniedError; }
7887
+ get: function () { return chunkZBWTAKZO_js.AccessDeniedError; }
7647
7888
  });
7648
7889
  Object.defineProperty(exports, "AttributeInUseError", {
7649
7890
  enumerable: true,
7650
- get: function () { return chunkF3YPU2N6_js.AttributeInUseError; }
7891
+ get: function () { return chunkZBWTAKZO_js.AttributeInUseError; }
7651
7892
  });
7652
7893
  Object.defineProperty(exports, "AttributeNotFoundError", {
7653
7894
  enumerable: true,
7654
- get: function () { return chunkF3YPU2N6_js.AttributeNotFoundError; }
7895
+ get: function () { return chunkZBWTAKZO_js.AttributeNotFoundError; }
7655
7896
  });
7656
7897
  Object.defineProperty(exports, "ChangeTypeNotSupportedError", {
7657
7898
  enumerable: true,
7658
- get: function () { return chunkF3YPU2N6_js.ChangeTypeNotSupportedError; }
7899
+ get: function () { return chunkZBWTAKZO_js.ChangeTypeNotSupportedError; }
7659
7900
  });
7660
7901
  Object.defineProperty(exports, "ConcurrentModificationError", {
7661
7902
  enumerable: true,
7662
- get: function () { return chunkF3YPU2N6_js.ConcurrentModificationError; }
7903
+ get: function () { return chunkZBWTAKZO_js.ConcurrentModificationError; }
7663
7904
  });
7664
7905
  Object.defineProperty(exports, "DestructiveSyncNotAllowedError", {
7665
7906
  enumerable: true,
7666
- get: function () { return chunkF3YPU2N6_js.DestructiveSyncNotAllowedError; }
7907
+ get: function () { return chunkZBWTAKZO_js.DestructiveSyncNotAllowedError; }
7667
7908
  });
7668
7909
  Object.defineProperty(exports, "DuplicateError", {
7669
7910
  enumerable: true,
7670
- get: function () { return chunkF3YPU2N6_js.DuplicateError; }
7911
+ get: function () { return chunkZBWTAKZO_js.DuplicateError; }
7671
7912
  });
7672
7913
  Object.defineProperty(exports, "ForbiddenError", {
7673
7914
  enumerable: true,
7674
- get: function () { return chunkF3YPU2N6_js.ForbiddenError; }
7915
+ get: function () { return chunkZBWTAKZO_js.ForbiddenError; }
7675
7916
  });
7676
7917
  Object.defineProperty(exports, "MemoryNotFoundError", {
7677
7918
  enumerable: true,
7678
- get: function () { return chunkF3YPU2N6_js.MemoryNotFoundError; }
7919
+ get: function () { return chunkZBWTAKZO_js.MemoryNotFoundError; }
7679
7920
  });
7680
7921
  Object.defineProperty(exports, "MigrationTimeoutError", {
7681
7922
  enumerable: true,
7682
- get: function () { return chunkF3YPU2N6_js.MigrationTimeoutError; }
7923
+ get: function () { return chunkZBWTAKZO_js.MigrationTimeoutError; }
7683
7924
  });
7684
7925
  Object.defineProperty(exports, "NotFoundError", {
7685
7926
  enumerable: true,
7686
- get: function () { return chunkF3YPU2N6_js.NotFoundError; }
7927
+ get: function () { return chunkZBWTAKZO_js.NotFoundError; }
7687
7928
  });
7688
7929
  Object.defineProperty(exports, "NotImplementedError", {
7689
7930
  enumerable: true,
7690
- get: function () { return chunkF3YPU2N6_js.NotImplementedError; }
7931
+ get: function () { return chunkZBWTAKZO_js.NotImplementedError; }
7691
7932
  });
7692
7933
  Object.defineProperty(exports, "ObjectNotFoundError", {
7693
7934
  enumerable: true,
7694
- get: function () { return chunkF3YPU2N6_js.ObjectNotFoundError; }
7935
+ get: function () { return chunkZBWTAKZO_js.ObjectNotFoundError; }
7695
7936
  });
7696
7937
  Object.defineProperty(exports, "ObjectReferencedError", {
7697
7938
  enumerable: true,
7698
- get: function () { return chunkF3YPU2N6_js.ObjectReferencedError; }
7939
+ get: function () { return chunkZBWTAKZO_js.ObjectReferencedError; }
7699
7940
  });
7700
7941
  Object.defineProperty(exports, "OrphanSystemAttributeError", {
7701
7942
  enumerable: true,
7702
- get: function () { return chunkF3YPU2N6_js.OrphanSystemAttributeError; }
7943
+ get: function () { return chunkZBWTAKZO_js.OrphanSystemAttributeError; }
7703
7944
  });
7704
7945
  Object.defineProperty(exports, "ProtectedResourceError", {
7705
7946
  enumerable: true,
7706
- get: function () { return chunkF3YPU2N6_js.ProtectedResourceError; }
7947
+ get: function () { return chunkZBWTAKZO_js.ProtectedResourceError; }
7707
7948
  });
7708
7949
  Object.defineProperty(exports, "ProtectedRoleError", {
7709
7950
  enumerable: true,
7710
- get: function () { return chunkF3YPU2N6_js.ProtectedRoleError; }
7951
+ get: function () { return chunkZBWTAKZO_js.ProtectedRoleError; }
7711
7952
  });
7712
7953
  Object.defineProperty(exports, "RecordNotFoundError", {
7713
7954
  enumerable: true,
7714
- get: function () { return chunkF3YPU2N6_js.RecordNotFoundError; }
7955
+ get: function () { return chunkZBWTAKZO_js.RecordNotFoundError; }
7715
7956
  });
7716
7957
  Object.defineProperty(exports, "RecordReferencedError", {
7717
7958
  enumerable: true,
7718
- get: function () { return chunkF3YPU2N6_js.RecordReferencedError; }
7959
+ get: function () { return chunkZBWTAKZO_js.RecordReferencedError; }
7719
7960
  });
7720
7961
  Object.defineProperty(exports, "RepositoryError", {
7721
7962
  enumerable: true,
7722
- get: function () { return chunkF3YPU2N6_js.RepositoryError; }
7963
+ get: function () { return chunkZBWTAKZO_js.RepositoryError; }
7723
7964
  });
7724
7965
  Object.defineProperty(exports, "RoleNotFoundError", {
7725
7966
  enumerable: true,
7726
- get: function () { return chunkF3YPU2N6_js.RoleNotFoundError; }
7967
+ get: function () { return chunkZBWTAKZO_js.RoleNotFoundError; }
7727
7968
  });
7728
7969
  Object.defineProperty(exports, "SchemaError", {
7729
7970
  enumerable: true,
7730
- get: function () { return chunkF3YPU2N6_js.SchemaError; }
7971
+ get: function () { return chunkZBWTAKZO_js.SchemaError; }
7731
7972
  });
7732
7973
  Object.defineProperty(exports, "SchemaErrorCode", {
7733
7974
  enumerable: true,
7734
- get: function () { return chunkF3YPU2N6_js.SchemaErrorCode; }
7975
+ get: function () { return chunkZBWTAKZO_js.SchemaErrorCode; }
7735
7976
  });
7736
7977
  Object.defineProperty(exports, "SchemaPlanNotFoundError", {
7737
7978
  enumerable: true,
7738
- get: function () { return chunkF3YPU2N6_js.SchemaPlanNotFoundError; }
7979
+ get: function () { return chunkZBWTAKZO_js.SchemaPlanNotFoundError; }
7739
7980
  });
7740
7981
  Object.defineProperty(exports, "SearchBackendError", {
7741
7982
  enumerable: true,
7742
- get: function () { return chunkF3YPU2N6_js.SearchBackendError; }
7983
+ get: function () { return chunkZBWTAKZO_js.SearchBackendError; }
7743
7984
  });
7744
7985
  Object.defineProperty(exports, "StorageError", {
7745
7986
  enumerable: true,
7746
- get: function () { return chunkF3YPU2N6_js.StorageError; }
7987
+ get: function () { return chunkZBWTAKZO_js.StorageError; }
7747
7988
  });
7748
7989
  Object.defineProperty(exports, "SyncCascadeError", {
7749
7990
  enumerable: true,
7750
- get: function () { return chunkF3YPU2N6_js.SyncCascadeError; }
7991
+ get: function () { return chunkZBWTAKZO_js.SyncCascadeError; }
7751
7992
  });
7752
7993
  Object.defineProperty(exports, "SyncConflictError", {
7753
7994
  enumerable: true,
7754
- get: function () { return chunkF3YPU2N6_js.SyncConflictError; }
7995
+ get: function () { return chunkZBWTAKZO_js.SyncConflictError; }
7755
7996
  });
7756
7997
  Object.defineProperty(exports, "SyncError", {
7757
7998
  enumerable: true,
7758
- get: function () { return chunkF3YPU2N6_js.SyncError; }
7999
+ get: function () { return chunkZBWTAKZO_js.SyncError; }
7759
8000
  });
7760
8001
  Object.defineProperty(exports, "SystemEntityImmutableError", {
7761
8002
  enumerable: true,
7762
- get: function () { return chunkF3YPU2N6_js.SystemEntityImmutableError; }
8003
+ get: function () { return chunkZBWTAKZO_js.SystemEntityImmutableError; }
7763
8004
  });
7764
8005
  Object.defineProperty(exports, "ValidationError", {
7765
8006
  enumerable: true,
7766
- get: function () { return chunkF3YPU2N6_js.ValidationError; }
8007
+ get: function () { return chunkZBWTAKZO_js.ValidationError; }
7767
8008
  });
7768
8009
  Object.defineProperty(exports, "isAttributeInUseError", {
7769
8010
  enumerable: true,
7770
- get: function () { return chunkF3YPU2N6_js.isAttributeInUseError; }
8011
+ get: function () { return chunkZBWTAKZO_js.isAttributeInUseError; }
7771
8012
  });
7772
8013
  Object.defineProperty(exports, "isNotFoundError", {
7773
8014
  enumerable: true,
7774
- get: function () { return chunkF3YPU2N6_js.isNotFoundError; }
8015
+ get: function () { return chunkZBWTAKZO_js.isNotFoundError; }
7775
8016
  });
7776
8017
  Object.defineProperty(exports, "isObjectReferencedError", {
7777
8018
  enumerable: true,
7778
- get: function () { return chunkF3YPU2N6_js.isObjectReferencedError; }
8019
+ get: function () { return chunkZBWTAKZO_js.isObjectReferencedError; }
7779
8020
  });
7780
8021
  Object.defineProperty(exports, "isProtectedResourceError", {
7781
8022
  enumerable: true,
7782
- get: function () { return chunkF3YPU2N6_js.isProtectedResourceError; }
8023
+ get: function () { return chunkZBWTAKZO_js.isProtectedResourceError; }
7783
8024
  });
7784
8025
  Object.defineProperty(exports, "isRecordReferencedError", {
7785
8026
  enumerable: true,
7786
- get: function () { return chunkF3YPU2N6_js.isRecordReferencedError; }
8027
+ get: function () { return chunkZBWTAKZO_js.isRecordReferencedError; }
7787
8028
  });
7788
8029
  Object.defineProperty(exports, "isSchemaError", {
7789
8030
  enumerable: true,
7790
- get: function () { return chunkF3YPU2N6_js.isSchemaError; }
8031
+ get: function () { return chunkZBWTAKZO_js.isSchemaError; }
7791
8032
  });
7792
8033
  Object.defineProperty(exports, "isValidationError", {
7793
8034
  enumerable: true,
7794
- get: function () { return chunkF3YPU2N6_js.isValidationError; }
8035
+ get: function () { return chunkZBWTAKZO_js.isValidationError; }
7795
8036
  });
7796
8037
  Object.defineProperty(exports, "DEFAULT_VALIDATION_MESSAGES", {
7797
8038
  enumerable: true,
@@ -7801,6 +8042,8 @@ Object.defineProperty(exports, "formatZodErrors", {
7801
8042
  enumerable: true,
7802
8043
  get: function () { return chunkYKWSHBT5_js.formatZodErrors; }
7803
8044
  });
8045
+ exports.AGENT_UI_BATCH_MAX_BYTES = AGENT_UI_BATCH_MAX_BYTES;
8046
+ exports.AGENT_UI_BATCH_MAX_ITEMS = AGENT_UI_BATCH_MAX_ITEMS;
7804
8047
  exports.ALLOWED_PROPERTY_TYPES = ALLOWED_PROPERTY_TYPES;
7805
8048
  exports.ALL_ACTIONS = ALL_ACTIONS;
7806
8049
  exports.ALL_SYSTEM_RESOURCES = ALL_SYSTEM_RESOURCES;
@@ -7815,11 +8058,13 @@ exports.COMPUTED_FUNCTIONS = COMPUTED_FUNCTIONS;
7815
8058
  exports.COMPUTED_FUNCTION_METADATA = COMPUTED_FUNCTION_METADATA;
7816
8059
  exports.COMPUTED_FUNCTION_NAMES = COMPUTED_FUNCTION_NAMES;
7817
8060
  exports.CONNECTOR_CALLBACK_PARAM = CONNECTOR_CALLBACK_PARAM;
8061
+ exports.COUNT_MODES = COUNT_MODES;
7818
8062
  exports.ComputedFormulaCompileError = ComputedFormulaCompileError;
7819
8063
  exports.CustomTabConfig = CustomTabConfig;
7820
8064
  exports.DB_COLUMN_FIELDS = DB_COLUMN_FIELDS;
7821
8065
  exports.DEFAULT_AGENT_EXECUTION_CONFIG = DEFAULT_AGENT_EXECUTION_CONFIG;
7822
8066
  exports.DEFAULT_APPROVAL_POLICY = DEFAULT_APPROVAL_POLICY;
8067
+ exports.DEFAULT_LABEL_FALLBACK = DEFAULT_LABEL_FALLBACK;
7823
8068
  exports.DEFAULT_ROLES = DEFAULT_ROLES;
7824
8069
  exports.DEFAULT_ROLE_DESCRIPTIONS = DEFAULT_ROLE_DESCRIPTIONS;
7825
8070
  exports.DEFAULT_ROLE_LABELS = DEFAULT_ROLE_LABELS;
@@ -7840,7 +8085,6 @@ exports.FormStepBuilder = FormStepBuilder;
7840
8085
  exports.GroupBuilder = GroupBuilder;
7841
8086
  exports.IDENTITY_PROPERTIES = IDENTITY_PROPERTIES;
7842
8087
  exports.LIVE_EVENT_TYPES = LIVE_EVENT_TYPES;
7843
- exports.LIVE_STREAM_START_CURSOR = LIVE_STREAM_START_CURSOR;
7844
8088
  exports.ListViewBuilder = ListViewBuilder;
7845
8089
  exports.ListViewTabConfigBuilder = ListViewTabConfigBuilder;
7846
8090
  exports.MAX_PRESET_DEPTH = MAX_PRESET_DEPTH;
@@ -7851,6 +8095,9 @@ exports.MAX_TODO_RESULT_CHARS = MAX_TODO_RESULT_CHARS;
7851
8095
  exports.MEMORY_LIST_VIEW = MEMORY_LIST_VIEW;
7852
8096
  exports.MEMORY_OBJECT = MEMORY_OBJECT;
7853
8097
  exports.MEMORY_VIEW = MEMORY_VIEW;
8098
+ exports.MeetingsTabConfig = MeetingsTabConfig;
8099
+ exports.NATIVE_AGENT_UI_PART_IDS_METADATA_KEY = NATIVE_AGENT_UI_PART_IDS_METADATA_KEY;
8100
+ exports.NATIVE_AGENT_UI_PART_IDS_METADATA_SCHEMA_VERSION = NATIVE_AGENT_UI_PART_IDS_METADATA_SCHEMA_VERSION;
7854
8101
  exports.NOTIFICATION_INBOX_STATES = NOTIFICATION_INBOX_STATES;
7855
8102
  exports.NOTIFICATION_KINDS = NOTIFICATION_KINDS;
7856
8103
  exports.NOTIFICATION_PRIORITIES = NOTIFICATION_PRIORITIES;
@@ -7886,6 +8133,7 @@ exports.TODO_STATUSES = TODO_STATUSES;
7886
8133
  exports.TabBuilder = TabBuilder;
7887
8134
  exports.TableTabConfig = TableTabConfig;
7888
8135
  exports.USER_STATUSES = USER_STATUSES;
8136
+ exports.USER_WORK_POSTURES = USER_WORK_POSTURES;
7889
8137
  exports.accessLevelToActions = accessLevelToActions;
7890
8138
  exports.actionsToAccessLevel = actionsToAccessLevel;
7891
8139
  exports.agent = agent;
@@ -7893,16 +8141,17 @@ exports.agentDisplayName = agentDisplayName;
7893
8141
  exports.applyPipes = applyPipes;
7894
8142
  exports.applyRelationProps = applyRelationProps;
7895
8143
  exports.assertAcyclicComputedDependencies = assertAcyclicComputedDependencies;
7896
- exports.assertLiveStreamCursor = assertLiveStreamCursor;
7897
8144
  exports.booleanFlag = booleanFlag;
8145
+ exports.buildAgentFallbackTitle = buildAgentFallbackTitle;
8146
+ exports.buildPermissionFlags = buildPermissionFlags;
7898
8147
  exports.buildPropertySchema = buildPropertySchema;
7899
8148
  exports.buildQualifiedAttribute = buildQualifiedAttribute;
7900
8149
  exports.canonicalStringify = canonicalStringify;
7901
8150
  exports.checkbox = checkbox;
7902
- exports.compareLiveStreamCursors = compareLiveStreamCursors;
7903
8151
  exports.compileComputedFormula = compileComputedFormula;
7904
8152
  exports.compileRollupAttribute = compileRollupAttribute;
7905
8153
  exports.computeByteMagnitude = computeByteMagnitude;
8154
+ exports.conversationDisplayTitle = conversationDisplayTitle;
7906
8155
  exports.createFlagRegistry = createFlagRegistry;
7907
8156
  exports.createFlagService = createFlagService;
7908
8157
  exports.createStandardSchemaProps = createStandardSchemaProps;
@@ -7910,6 +8159,7 @@ exports.currency = currency;
7910
8159
  exports.date = date;
7911
8160
  exports.dateInTimezone = dateInTimezone;
7912
8161
  exports.dateValueStart = dateValueStart;
8162
+ exports.deriveInitials = deriveInitials;
7913
8163
  exports.destructiveSchema = destructiveSchema;
7914
8164
  exports.detailView = detailView;
7915
8165
  exports.document = document;
@@ -7919,8 +8169,6 @@ exports.evaluateComputedFormulaWithResult = evaluateComputedFormulaWithResult;
7919
8169
  exports.evaluateFilterState = evaluateFilterState;
7920
8170
  exports.evaluateRecordFilterState = evaluateRecordFilterState;
7921
8171
  exports.extractAttributeNames = extractAttributeNames;
7922
- exports.extractCurrencyFilterValue = extractCurrencyFilterValue;
7923
- exports.extractFilterValue = extractFilterValue;
7924
8172
  exports.extractValueRefs = extractValueRefs;
7925
8173
  exports.flagRegistry = flagRegistry;
7926
8174
  exports.form = form;
@@ -7935,15 +8183,16 @@ exports.generateDefaultListView = generateDefaultListView;
7935
8183
  exports.getActiveTab = getActiveTab;
7936
8184
  exports.getErrorMessage = getErrorMessage;
7937
8185
  exports.getLiveProtocolPayloadChannel = getLiveProtocolPayloadChannel;
7938
- exports.getOperatorPolarity = getOperatorPolarity;
7939
8186
  exports.getRecordCreatorPrincipalId = getRecordCreatorPrincipalId;
7940
8187
  exports.getSlotFieldTargets = getSlotFieldTargets;
7941
8188
  exports.getUserDisplayName = getUserDisplayName;
7942
8189
  exports.group = group;
7943
8190
  exports.hasDestructiveEntries = hasDestructiveEntries;
7944
8191
  exports.hasOptions = hasOptions;
8192
+ exports.includesAction = includesAction;
7945
8193
  exports.inferInverseCardinality = inferInverseCardinality;
7946
8194
  exports.inferRollupReturnType = inferRollupReturnType;
8195
+ exports.isAgentUIMessageBatch = isAgentUIMessageBatch;
7947
8196
  exports.isAttributeSortable = isAttributeSortable2;
7948
8197
  exports.isBilateralRelation = isBilateralRelation;
7949
8198
  exports.isCheckboxEquality = isCheckboxEquality;
@@ -7963,34 +8212,33 @@ exports.isFormSlotFieldRef = isFormSlotFieldRef;
7963
8212
  exports.isFormTextRow = isFormTextRow;
7964
8213
  exports.isLabelExpression = isLabelExpression;
7965
8214
  exports.isListView = isListView;
7966
- exports.isLiveErrorPayload = isLiveErrorPayload;
7967
8215
  exports.isLiveEventEnvelope = isLiveEventEnvelope;
7968
8216
  exports.isLiveEventPayload = isLiveEventPayload;
7969
8217
  exports.isLiveEventPayloadForType = isLiveEventPayloadForType;
7970
8218
  exports.isLiveEventType = isLiveEventType;
7971
- exports.isLiveGapPayload = isLiveGapPayload;
7972
- exports.isLiveReplayCompletePayload = isLiveReplayCompletePayload;
7973
- exports.isLiveStreamCursor = isLiveStreamCursor;
7974
8219
  exports.isNotEmpty = isNotEmpty;
7975
- exports.isPlainRecord = isPlainRecord;
8220
+ exports.isPlainRecord = isPlainRecord2;
7976
8221
  exports.isRelationGroup = isRelationGroup;
7977
8222
  exports.isStandardSchema = isStandardSchema;
7978
8223
  exports.isTerminalSessionStatus = isTerminalSessionStatus;
8224
+ exports.isTerminalState = isTerminalState;
7979
8225
  exports.isUniversalRelation = isUniversalRelation;
7980
8226
  exports.jsonFlag = jsonFlag;
8227
+ exports.legacyStatusToSessionState = legacyStatusToSessionState;
7981
8228
  exports.listView = listView;
7982
8229
  exports.liveChannelKey = liveChannelKey;
7983
8230
  exports.location = location;
7984
8231
  exports.matchesAccepts = matchesAccepts;
7985
8232
  exports.multiselect = multiselect;
8233
+ exports.nativeAgentUIPartIdMetadataKey = nativeAgentUIPartIdMetadataKey;
7986
8234
  exports.normalizeDateValue = normalizeDateValue;
7987
- exports.normalizeForEdgeRpc = normalizeForEdgeRpc;
7988
8235
  exports.number = number;
7989
8236
  exports.numberFlag = numberFlag;
7990
8237
  exports.object = object;
8238
+ exports.parseCountMode = parseCountMode;
7991
8239
  exports.parseLiveChannelKey = parseLiveChannelKey;
7992
- exports.parseLiveSubscribePayload = parseLiveSubscribePayload;
7993
- exports.parseLiveUnsubscribePayload = parseLiveUnsubscribePayload;
8240
+ exports.parseNativeAgentUIPartIdsMetadata = parseNativeAgentUIPartIdsMetadata;
8241
+ exports.parseOptionalCountMode = parseOptionalCountMode;
7994
8242
  exports.parseQualifiedAttribute = parseQualifiedAttribute;
7995
8243
  exports.persistedDefaultViewTargetSchema = persistedDefaultViewTargetSchema;
7996
8244
  exports.persistedSchemaPlanSchema = persistedSchemaPlanSchema;
@@ -8006,21 +8254,23 @@ exports.relationPropertyDefs = relationPropertyDefs;
8006
8254
  exports.renderLabelExpression = renderLabelExpression;
8007
8255
  exports.resetViewToDefault = resetViewToDefault;
8008
8256
  exports.resolveAttributeDefaultValue = resolveAttributeDefaultValue;
8257
+ exports.resolveFieldRequired = resolveFieldRequired;
8009
8258
  exports.resolvePropertyDefinitions = resolvePropertyDefinitions;
8010
8259
  exports.richtext = richtext;
8011
8260
  exports.rollup = rollup;
8012
8261
  exports.rollupToFormulaExpression = rollupToFormulaExpression;
8013
8262
  exports.schemaPlanSchema = schemaPlanSchema;
8014
8263
  exports.select = select;
8264
+ exports.sessionStateToLegacyStatus = sessionStateToLegacyStatus;
8015
8265
  exports.status = status;
8016
8266
  exports.stringFlag = stringFlag;
8017
8267
  exports.text = text;
8018
- exports.toMultiValueOperator = toMultiValueOperator;
8019
8268
  exports.toUndefinedIfEmpty = toUndefinedIfEmpty;
8020
8269
  exports.user = user;
8021
8270
  exports.validateAttributeName = validateAttributeName;
8022
8271
  exports.validateLabelExpression = validateLabelExpression;
8023
8272
  exports.validateObjectName = validateObjectName;
8273
+ exports.validateViewName = validateViewName;
8024
8274
  exports.viewRegistry = viewRegistry;
8025
8275
  exports.viewStateKey = viewStateKey;
8026
8276
  exports.viewSyncPayload = viewSyncPayload;