@stndrds/schema 1.0.0-alpha.204 → 1.0.0-alpha.205

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 (53) hide show
  1. package/dist/{attributes--APpo6Vp.d.ts → attributes-BpvQ7YKV.d.ts} +1 -7
  2. package/dist/{attributes-C1WwLpp9.d.mts → attributes-BykLtzP-.d.mts} +1 -7
  3. package/dist/{chunk-PMKCDRRO.mjs → chunk-7SSN7BXS.mjs} +49 -10
  4. package/dist/{chunk-MZOEL7FN.js → chunk-SJCEXYFG.js} +49 -10
  5. package/dist/{helpers-DLrvi7WO.d.ts → helpers-Bd-m3ygv.d.ts} +2 -2
  6. package/dist/{helpers-DgZYyORn.d.mts → helpers-xalb2T4E.d.mts} +2 -2
  7. package/dist/index.d.mts +362 -311
  8. package/dist/index.d.ts +362 -311
  9. package/dist/index.js +198 -95
  10. package/dist/index.mjs +128 -37
  11. package/dist/{types-DUmDvKBW.d.mts → types-BmgBJGpl.d.mts} +1 -1
  12. package/dist/{types-D7_-64EG.d.ts → types-DeFxYTDc.d.ts} +1 -1
  13. package/dist/validation/all.d.mts +3 -3
  14. package/dist/validation/all.d.ts +3 -3
  15. package/dist/validation/all.js +10 -10
  16. package/dist/validation/all.mjs +3 -3
  17. package/dist/validation/complex/currency.d.mts +2 -2
  18. package/dist/validation/complex/currency.d.ts +2 -2
  19. package/dist/validation/complex/file.d.mts +2 -2
  20. package/dist/validation/complex/file.d.ts +2 -2
  21. package/dist/validation/complex/location.d.mts +2 -2
  22. package/dist/validation/complex/location.d.ts +2 -2
  23. package/dist/validation/complex/phone.d.mts +2 -2
  24. package/dist/validation/complex/phone.d.ts +2 -2
  25. package/dist/validation/complex/relation.d.mts +2 -2
  26. package/dist/validation/complex/relation.d.ts +2 -2
  27. package/dist/validation/complex/richtext.d.mts +2 -2
  28. package/dist/validation/complex/richtext.d.ts +2 -2
  29. package/dist/validation/complex/select.d.mts +2 -2
  30. package/dist/validation/complex/select.d.ts +2 -2
  31. package/dist/validation/complex/user.d.mts +2 -2
  32. package/dist/validation/complex/user.d.ts +2 -2
  33. package/dist/validation/computed/formula.d.mts +2 -2
  34. package/dist/validation/computed/formula.d.ts +2 -2
  35. package/dist/validation/computed/rollup.d.mts +2 -2
  36. package/dist/validation/computed/rollup.d.ts +2 -2
  37. package/dist/validation/config/index.d.mts +1 -1
  38. package/dist/validation/config/index.d.ts +1 -1
  39. package/dist/validation/core/index.d.mts +3 -3
  40. package/dist/validation/core/index.d.ts +3 -3
  41. package/dist/validation/object/index.d.mts +3 -3
  42. package/dist/validation/object/index.d.ts +3 -3
  43. package/dist/validation/object/index.js +16 -16
  44. package/dist/validation/object/index.mjs +3 -3
  45. package/dist/validation/primitives/checkbox.d.mts +2 -2
  46. package/dist/validation/primitives/checkbox.d.ts +2 -2
  47. package/dist/validation/primitives/date.d.mts +2 -2
  48. package/dist/validation/primitives/date.d.ts +2 -2
  49. package/dist/validation/primitives/number.d.mts +2 -2
  50. package/dist/validation/primitives/number.d.ts +2 -2
  51. package/dist/validation/primitives/text.d.mts +2 -2
  52. package/dist/validation/primitives/text.d.ts +2 -2
  53. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -3,11 +3,13 @@
3
3
  var chunkFRCDMQER_js = require('./chunk-FRCDMQER.js');
4
4
  require('./chunk-PGERPYDR.js');
5
5
  var chunkNSM2JPC3_js = require('./chunk-NSM2JPC3.js');
6
- var chunkMZOEL7FN_js = require('./chunk-MZOEL7FN.js');
6
+ var chunkSJCEXYFG_js = require('./chunk-SJCEXYFG.js');
7
7
  require('./chunk-5WATIVCA.js');
8
8
  require('./chunk-O44XVGHE.js');
9
9
  require('./chunk-YIP5FJ5H.js');
10
10
  require('./chunk-SGSGREPG.js');
11
+ var chunkEBGRZUIH_js = require('./chunk-EBGRZUIH.js');
12
+ require('./chunk-BV3IUMMW.js');
11
13
  require('./chunk-EW5XR2X3.js');
12
14
  require('./chunk-QWKLQRBX.js');
13
15
  require('./chunk-T6L2MUG2.js');
@@ -16,8 +18,6 @@ require('./chunk-V2UA2D4E.js');
16
18
  require('./chunk-ACKMC6FL.js');
17
19
  require('./chunk-ROLWVTU3.js');
18
20
  require('./chunk-E6JUYGJX.js');
19
- var chunkEBGRZUIH_js = require('./chunk-EBGRZUIH.js');
20
- require('./chunk-BV3IUMMW.js');
21
21
  var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
22
22
  var constants = require('@stndrds/constants');
23
23
  var z3 = require('zod');
@@ -26,6 +26,35 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
26
26
 
27
27
  var z3__default = /*#__PURE__*/_interopDefault(z3);
28
28
 
29
+ // src/types/notifications.ts
30
+ var NOTIFICATION_KINDS = ["fyi", "task", "question", "handoff", "system"];
31
+ var NOTIFICATION_PRIORITIES = ["low", "normal", "high", "urgent"];
32
+ var NOTIFICATION_SENSITIVITIES = ["public", "internal", "sensitive"];
33
+ var NOTIFICATION_INBOX_STATES = ["unread", "read", "archived", "snoozed"];
34
+ var NOTIFICATION_WORK_STATES = [
35
+ "none",
36
+ "pending",
37
+ "processing",
38
+ "completed",
39
+ "dismissed",
40
+ "expired",
41
+ "failed"
42
+ ];
43
+ var NOTIFICATION_TYPE_AGENT_SESSION_COMPLETED = "agent.session.completed";
44
+ var NOTIFICATION_TYPE_AGENT_SESSION_FAILED = "agent.session.failed";
45
+ var NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN = "agent.session.waiting_human";
46
+ var NOTIFICATION_TYPE_AGENT_SESSION_TIMEOUT = "agent.session.timeout";
47
+ var NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED = "agent.task.assigned";
48
+ var NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED = "agent.question.requested";
49
+ var NOTIFICATION_TYPES_V1 = [
50
+ NOTIFICATION_TYPE_AGENT_SESSION_COMPLETED,
51
+ NOTIFICATION_TYPE_AGENT_SESSION_FAILED,
52
+ NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN,
53
+ NOTIFICATION_TYPE_AGENT_SESSION_TIMEOUT,
54
+ NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED,
55
+ NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED
56
+ ];
57
+
29
58
  // src/types/attribute-protection.ts
30
59
  var IDENTITY_PROPERTIES = ["name", "type"];
31
60
  var BEHAVIOR_PROPERTIES = [
@@ -1239,7 +1268,7 @@ var BaseAttributeBuilder = class {
1239
1268
  * @see https://standardschema.dev/
1240
1269
  */
1241
1270
  get "~standard"() {
1242
- const zodSchema = chunkMZOEL7FN_js.createAttributeValidator(this.build());
1271
+ const zodSchema = chunkSJCEXYFG_js.createAttributeValidator(this.build());
1243
1272
  return createStandardSchemaProps(zodSchema);
1244
1273
  }
1245
1274
  constructor(type, name, label) {
@@ -2003,9 +2032,9 @@ var RollupAttributeBuilder = class extends BaseAttributeBuilder {
2003
2032
  if (fn === "original" && targetType !== void 0 && targetType !== "select" && targetType !== "status" && targetType !== "multiselect") {
2004
2033
  const relation2 = this.attr.relationAttribute ?? "relation";
2005
2034
  const target = this.attr.targetAttribute ?? "field";
2006
- throw new chunkMZOEL7FN_js.SchemaError(
2035
+ throw new chunkSJCEXYFG_js.SchemaError(
2007
2036
  `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}").`,
2008
- chunkMZOEL7FN_js.SchemaErrorCode.VALIDATION_FAILED
2037
+ chunkSJCEXYFG_js.SchemaErrorCode.VALIDATION_FAILED
2009
2038
  );
2010
2039
  }
2011
2040
  return super.build();
@@ -2501,7 +2530,7 @@ var ObjectBuilder = class {
2501
2530
  * @see https://standardschema.dev/
2502
2531
  */
2503
2532
  get "~standard"() {
2504
- const zodSchema = chunkMZOEL7FN_js.createObjectValidator(this.build());
2533
+ const zodSchema = chunkSJCEXYFG_js.createObjectValidator(this.build());
2505
2534
  return createStandardSchemaProps(zodSchema);
2506
2535
  }
2507
2536
  /**
@@ -2705,17 +2734,17 @@ var ObjectBuilder = class {
2705
2734
  throw new Error("[ObjectBuilder] Missing required field: label");
2706
2735
  }
2707
2736
  if (!this._labelExpression) {
2708
- throw new chunkMZOEL7FN_js.SchemaError(
2737
+ throw new chunkSJCEXYFG_js.SchemaError(
2709
2738
  `Object "${this.obj.name}" must have a labelExpression. The labelExpression defines how records are displayed in lists and relations (e.g. "{{ name }}").`,
2710
- chunkMZOEL7FN_js.SchemaErrorCode.VALIDATION_FAILED
2739
+ chunkSJCEXYFG_js.SchemaErrorCode.VALIDATION_FAILED
2711
2740
  );
2712
2741
  }
2713
2742
  const labelResult = labelExpressionSchema.safeParse(this._labelExpression);
2714
2743
  if (!labelResult.success) {
2715
2744
  const errorMsg = labelResult.error.issues[0]?.message ?? "Invalid labelExpression";
2716
- throw new chunkMZOEL7FN_js.SchemaError(
2745
+ throw new chunkSJCEXYFG_js.SchemaError(
2717
2746
  `Invalid labelExpression for "${this.obj.name}": ${errorMsg}`,
2718
- chunkMZOEL7FN_js.SchemaErrorCode.VALIDATION_FAILED
2747
+ chunkSJCEXYFG_js.SchemaErrorCode.VALIDATION_FAILED
2719
2748
  );
2720
2749
  }
2721
2750
  const sortedVersions = [...this._migrations].sort((a, b) => a.version - b.version);
@@ -2754,7 +2783,7 @@ var ObjectBuilder = class {
2754
2783
  objectNameSchema.parse(name);
2755
2784
  } catch (error) {
2756
2785
  if (error instanceof z3__default.default.ZodError) {
2757
- throw new chunkMZOEL7FN_js.SchemaError(error.issues[0].message, chunkMZOEL7FN_js.SchemaErrorCode.INVALID_OBJECT_NAME);
2786
+ throw new chunkSJCEXYFG_js.SchemaError(error.issues[0].message, chunkSJCEXYFG_js.SchemaErrorCode.INVALID_OBJECT_NAME);
2758
2787
  }
2759
2788
  throw error;
2760
2789
  }
@@ -4989,6 +5018,9 @@ var LIVE_EVENT_TYPE_REGISTRY = {
4989
5018
  "view.projection.stale": true,
4990
5019
  "agent.session.patch": true,
4991
5020
  "agent.unread.patch": true,
5021
+ "notification.created": true,
5022
+ "notification.recipient.patch": true,
5023
+ "notification.count.patch": true,
4992
5024
  "conversation.renamed": true,
4993
5025
  "channel.revoked": true
4994
5026
  };
@@ -5004,6 +5036,18 @@ var CHANNEL_REVOKED_REASONS = [
5004
5036
  "workspace-left",
5005
5037
  "object-deleted"
5006
5038
  ];
5039
+ var NOTIFICATION_RECIPIENT_PATCH_KEYS = [
5040
+ "inboxState",
5041
+ "workState",
5042
+ "lockedAt",
5043
+ "lockedByActorId",
5044
+ "readAt",
5045
+ "archivedAt",
5046
+ "snoozedUntil",
5047
+ "completedAt",
5048
+ "dismissedAt",
5049
+ "updatedAt"
5050
+ ];
5007
5051
  function isLiveEventType(value) {
5008
5052
  return typeof value === "string" && LIVE_EVENT_TYPES.includes(value);
5009
5053
  }
@@ -5028,6 +5072,12 @@ function isLiveEventPayloadForType(type, payload) {
5028
5072
  return isAgentSessionPatchPayload(payload);
5029
5073
  case "agent.unread.patch":
5030
5074
  return isAgentUnreadPatchPayload(payload);
5075
+ case "notification.created":
5076
+ return isNotificationCreatedPayload(payload);
5077
+ case "notification.recipient.patch":
5078
+ return isNotificationRecipientPatchPayload(payload);
5079
+ case "notification.count.patch":
5080
+ return isNotificationCountPatchPayload(payload);
5031
5081
  case "conversation.renamed":
5032
5082
  return isConversationRenamedPayload(payload);
5033
5083
  case "channel.revoked":
@@ -5042,15 +5092,31 @@ function isRecord(value) {
5042
5092
  function isString(value) {
5043
5093
  return typeof value === "string";
5044
5094
  }
5095
+ function isNullableString(value) {
5096
+ return value === null || isString(value);
5097
+ }
5045
5098
  function isVersion(value) {
5046
5099
  return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
5047
5100
  }
5101
+ function isIsoDateString(value) {
5102
+ if (!isString(value)) {
5103
+ return false;
5104
+ }
5105
+ const timestamp = Date.parse(value);
5106
+ return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
5107
+ }
5108
+ function isNullableIsoDateString(value) {
5109
+ return value === null || isIsoDateString(value);
5110
+ }
5048
5111
  function hasString(value, key) {
5049
5112
  return isString(value[key]);
5050
5113
  }
5051
5114
  function hasVersion(value, key) {
5052
5115
  return isVersion(value[key]);
5053
5116
  }
5117
+ function hasIsoDateString(value, key) {
5118
+ return isIsoDateString(value[key]);
5119
+ }
5054
5120
  function hasOptional(value, key, predicate) {
5055
5121
  return !Object.hasOwn(value, key) || predicate(value[key]);
5056
5122
  }
@@ -5060,6 +5126,24 @@ function isOneOf(value, values) {
5060
5126
  function isCompletionStatus(value) {
5061
5127
  return isOneOf(value, COMPLETION_STATUSES);
5062
5128
  }
5129
+ function isNotificationKind(value) {
5130
+ return isOneOf(value, NOTIFICATION_KINDS);
5131
+ }
5132
+ function isNotificationPriority(value) {
5133
+ return isOneOf(value, NOTIFICATION_PRIORITIES);
5134
+ }
5135
+ function isNotificationSensitivity(value) {
5136
+ return isOneOf(value, NOTIFICATION_SENSITIVITIES);
5137
+ }
5138
+ function isNotificationInboxState(value) {
5139
+ return isOneOf(value, NOTIFICATION_INBOX_STATES);
5140
+ }
5141
+ function isNotificationWorkState(value) {
5142
+ return isOneOf(value, NOTIFICATION_WORK_STATES);
5143
+ }
5144
+ function isNotificationSubject(value) {
5145
+ return isRecord(value) && hasString(value, "type") && hasString(value, "id");
5146
+ }
5063
5147
  function isRecordFieldPatch(value) {
5064
5148
  return isRecord(value) && hasString(value, "fieldKey") && Object.hasOwn(value, "value") && hasVersion(value, "version");
5065
5149
  }
@@ -5078,6 +5162,32 @@ function isAgentSessionPatchPayload(payload) {
5078
5162
  function isAgentUnreadPatchPayload(payload) {
5079
5163
  return payload.type === "agent.unread.patch" && hasString(payload, "workspaceId") && 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);
5080
5164
  }
5165
+ function isLiveNotification(value) {
5166
+ 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");
5167
+ }
5168
+ function isLiveNotificationRecipient(value) {
5169
+ 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");
5170
+ }
5171
+ function isNotificationRecipientPatch(value) {
5172
+ if (!isRecord(value)) {
5173
+ return false;
5174
+ }
5175
+ return Object.keys(value).every(
5176
+ (key) => NOTIFICATION_RECIPIENT_PATCH_KEYS.includes(key)
5177
+ ) && hasOptional(value, "inboxState", isNotificationInboxState) && hasOptional(value, "workState", isNotificationWorkState) && hasOptional(value, "lockedAt", isNullableIsoDateString) && hasOptional(value, "lockedByActorId", isNullableString) && hasOptional(value, "readAt", isNullableIsoDateString) && hasOptional(value, "archivedAt", isNullableIsoDateString) && hasOptional(value, "snoozedUntil", isNullableIsoDateString) && hasOptional(value, "completedAt", isNullableIsoDateString) && hasOptional(value, "dismissedAt", isNullableIsoDateString) && hasOptional(value, "updatedAt", isIsoDateString);
5178
+ }
5179
+ function isNotificationCreatedPayload(payload) {
5180
+ const notification = isLiveNotification(payload.notification) ? payload.notification : null;
5181
+ return payload.type === "notification.created" && hasString(payload, "workspaceId") && notification !== null && Array.isArray(payload.recipients) && payload.recipients.length > 0 && payload.recipients.every(
5182
+ (recipient) => isLiveNotificationRecipient(recipient) && recipient.notificationId === notification.id
5183
+ ) && hasVersion(payload, "version") && hasIsoDateString(payload, "updatedAt");
5184
+ }
5185
+ function isNotificationRecipientPatchPayload(payload) {
5186
+ return payload.type === "notification.recipient.patch" && hasString(payload, "workspaceId") && hasString(payload, "recipientId") && hasString(payload, "recipientActorId") && isNotificationRecipientPatch(payload.patch) && hasVersion(payload, "version") && hasIsoDateString(payload, "updatedAt");
5187
+ }
5188
+ function isNotificationCountPatchPayload(payload) {
5189
+ return payload.type === "notification.count.patch" && hasString(payload, "workspaceId") && hasString(payload, "targetActorId") && hasVersion(payload, "unread") && hasVersion(payload, "pendingWork") && hasVersion(payload, "version") && hasIsoDateString(payload, "updatedAt");
5190
+ }
5081
5191
  function isConversationRenamedPayload(payload) {
5082
5192
  return payload.type === "conversation.renamed" && hasString(payload, "workspaceId") && hasString(payload, "sessionId") && hasString(payload, "title") && hasVersion(payload, "version") && hasString(payload, "updatedAt");
5083
5193
  }
@@ -5514,7 +5624,7 @@ function inferFunctionReturn(functionName, args) {
5514
5624
  return { valueType: { kind: "scalar", type: "text" }, dependencies };
5515
5625
  case "sum":
5516
5626
  case "avg":
5517
- ensureNumericCollectionOrScalar(functionName, args[0]);
5627
+ ensureCollectionOrScalarType(functionName, args[0], "number");
5518
5628
  return { valueType: { kind: "scalar", type: "number" }, dependencies };
5519
5629
  case "count":
5520
5630
  case "count_empty":
@@ -5522,11 +5632,7 @@ function inferFunctionReturn(functionName, args) {
5522
5632
  case "count_unique":
5523
5633
  case "percent_empty":
5524
5634
  case "percent_not_empty":
5525
- if (functionName === "count_unique") {
5526
- ensureUniqueCountSource(args[0]);
5527
- } else {
5528
- ensureCollectionSource(functionName, args[0]);
5529
- }
5635
+ ensureCollectionSource(functionName, args[0]);
5530
5636
  return { valueType: { kind: "scalar", type: "number" }, dependencies };
5531
5637
  case "min":
5532
5638
  case "max":
@@ -5539,7 +5645,7 @@ function inferFunctionReturn(functionName, args) {
5539
5645
  };
5540
5646
  case "earliest":
5541
5647
  case "latest":
5542
- ensureDateCollectionOrScalar(functionName, args[0]);
5648
+ ensureCollectionOrScalarType(functionName, args[0], "date");
5543
5649
  return {
5544
5650
  valueType: { kind: "scalar", type: "date" },
5545
5651
  dependencies,
@@ -5595,12 +5701,13 @@ function inferFirstFunction(source, dependencies) {
5595
5701
  }
5596
5702
  function inferBinary(operator, left, right) {
5597
5703
  const dependencies = uniqueDependencies([...left.dependencies, ...right.dependencies]);
5598
- if (operator === "+" || operator === "-" || operator === "*" || operator === "/") {
5599
- if (left.valueType.kind === "collection" || right.valueType.kind === "collection") {
5600
- throw new ComputedFormulaCompileError(
5601
- `Cannot use collection values with arithmetic operator "${operator}"`
5602
- );
5603
- }
5704
+ const isArithmetic = operator === "+" || operator === "-" || operator === "*" || operator === "/";
5705
+ if (left.valueType.kind === "collection" || right.valueType.kind === "collection") {
5706
+ throw new ComputedFormulaCompileError(
5707
+ `Cannot use collection values with ${isArithmetic ? "arithmetic" : "comparison"} operator "${operator}"`
5708
+ );
5709
+ }
5710
+ if (isArithmetic) {
5604
5711
  if (operator === "+" && (left.valueType.type === "text" || right.valueType.type === "text")) {
5605
5712
  return { valueType: { kind: "scalar", type: "text" }, dependencies };
5606
5713
  }
@@ -5608,11 +5715,6 @@ function inferBinary(operator, left, right) {
5608
5715
  ensureScalarType(right.valueType, "number", `Operator "${operator}" expects number operands`);
5609
5716
  return { valueType: { kind: "scalar", type: "number" }, dependencies };
5610
5717
  }
5611
- if (left.valueType.kind === "collection" || right.valueType.kind === "collection") {
5612
- throw new ComputedFormulaCompileError(
5613
- `Cannot use collection values with comparison operator "${operator}"`
5614
- );
5615
- }
5616
5718
  if (operator === "==" || operator === "!=") {
5617
5719
  if (left.valueType.type !== right.valueType.type) {
5618
5720
  throw new ComputedFormulaCompileError(
@@ -5635,16 +5737,10 @@ function ensureNoCollections(args, message) {
5635
5737
  }
5636
5738
  }
5637
5739
  }
5638
- function ensureNumericCollectionOrScalar(functionName, expression) {
5740
+ function ensureCollectionOrScalarType(functionName, expression, expected) {
5639
5741
  const type = expression.valueType.kind === "collection" ? expression.valueType.itemType : expression.valueType.type;
5640
- if (type !== "number") {
5641
- throw new ComputedFormulaCompileError(`Function "${functionName}" expects number values`);
5642
- }
5643
- }
5644
- function ensureDateCollectionOrScalar(functionName, expression) {
5645
- const type = expression.valueType.kind === "collection" ? expression.valueType.itemType : expression.valueType.type;
5646
- if (type !== "date") {
5647
- throw new ComputedFormulaCompileError(`Function "${functionName}" expects date values`);
5742
+ if (type !== expected) {
5743
+ throw new ComputedFormulaCompileError(`Function "${functionName}" expects ${expected} values`);
5648
5744
  }
5649
5745
  }
5650
5746
  function ensureMinMaxSource(functionName, expression) {
@@ -5663,11 +5759,6 @@ function ensureCollectionSource(functionName, expression) {
5663
5759
  throw new ComputedFormulaCompileError(`Function "${functionName}" expects a collection`);
5664
5760
  }
5665
5761
  }
5666
- function ensureUniqueCountSource(expression) {
5667
- if (expression.valueType.kind !== "collection") {
5668
- throw new ComputedFormulaCompileError('Function "count_unique" expects a collection');
5669
- }
5670
- }
5671
5762
  function ensureScalarType(valueType, expectedType, message) {
5672
5763
  if (valueType.kind !== "scalar" || valueType.type !== expectedType) {
5673
5764
  throw new ComputedFormulaCompileError(message);
@@ -6626,7 +6717,7 @@ function assertOperatorForType(operator, type, context) {
6626
6717
  if (!ops?.includes(operator)) {
6627
6718
  const validList = ops?.length ? ops.join(", ") : "(no operators registered for this type)";
6628
6719
  const summary = `Operator "${operator}" is not valid for ${context} type "${type}". Valid operators: ${validList}.`;
6629
- throw new chunkMZOEL7FN_js.ValidationError(summary, [
6720
+ throw new chunkSJCEXYFG_js.ValidationError(summary, [
6630
6721
  {
6631
6722
  path: ["operator"],
6632
6723
  message: summary
@@ -6638,19 +6729,19 @@ function validateQualifiedRule(rule, context) {
6638
6729
  const rootAttr = context.attributes.find((a) => a.name === rule.attribute);
6639
6730
  const systemOps = SYSTEM_FILTER_OPERATORS[rule.attribute];
6640
6731
  if (!(rootAttr || systemOps)) {
6641
- throw new chunkMZOEL7FN_js.ValidationError(`Unknown attribute: ${rule.attribute}`, [
6732
+ throw new chunkSJCEXYFG_js.ValidationError(`Unknown attribute: ${rule.attribute}`, [
6642
6733
  { path: ["attribute"], message: `Unknown attribute: ${rule.attribute}` }
6643
6734
  ]);
6644
6735
  }
6645
6736
  if (!rootAttr) {
6646
6737
  if (rule.property) {
6647
- throw new chunkMZOEL7FN_js.ValidationError(`Cannot qualify system attribute "${rule.attribute}"`, [
6738
+ throw new chunkSJCEXYFG_js.ValidationError(`Cannot qualify system attribute "${rule.attribute}"`, [
6648
6739
  { path: ["property"], message: `"${rule.attribute}" is a system column, not a reference` }
6649
6740
  ]);
6650
6741
  }
6651
6742
  if (!systemOps.includes(rule.operator)) {
6652
6743
  const summary = `Operator "${rule.operator}" is not valid for system attribute "${rule.attribute}". Valid operators: ${systemOps.join(", ")}.`;
6653
- throw new chunkMZOEL7FN_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
6744
+ throw new chunkSJCEXYFG_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
6654
6745
  }
6655
6746
  return;
6656
6747
  }
@@ -6659,24 +6750,24 @@ function validateQualifiedRule(rule, context) {
6659
6750
  if (!ops.includes(rule.operator)) {
6660
6751
  const validList = ops.length ? ops.join(", ") : "(not filterable)";
6661
6752
  const summary = `Operator "${rule.operator}" is not valid for attribute "${rootAttr.name}". Valid operators: ${validList}.`;
6662
- throw new chunkMZOEL7FN_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
6753
+ throw new chunkSJCEXYFG_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
6663
6754
  }
6664
6755
  return;
6665
6756
  }
6666
6757
  if (!REFERENCE_TYPES.has(rootAttr.type)) {
6667
- throw new chunkMZOEL7FN_js.ValidationError(`Cannot qualify ${rootAttr.type} attribute "${rule.attribute}"`, [
6758
+ throw new chunkSJCEXYFG_js.ValidationError(`Cannot qualify ${rootAttr.type} attribute "${rule.attribute}"`, [
6668
6759
  { path: ["property"], message: `Attribute "${rule.attribute}" is not a reference type` }
6669
6760
  ]);
6670
6761
  }
6671
6762
  const propSchema = rootAttr.properties;
6672
6763
  if (!propSchema) {
6673
- throw new chunkMZOEL7FN_js.ValidationError(`Attribute "${rule.attribute}" has no qualifyWith schema`, [
6764
+ throw new chunkSJCEXYFG_js.ValidationError(`Attribute "${rule.attribute}" has no qualifyWith schema`, [
6674
6765
  { path: ["property"], message: `"${rule.attribute}" has no qualifyWith` }
6675
6766
  ]);
6676
6767
  }
6677
6768
  const propDef = propSchema.definitions.find((p) => p.name === rule.property);
6678
6769
  if (!propDef) {
6679
- throw new chunkMZOEL7FN_js.ValidationError(
6770
+ throw new chunkSJCEXYFG_js.ValidationError(
6680
6771
  `Property "${rule.property}" not defined on "${rule.attribute}".qualifyWith()`,
6681
6772
  [{ path: ["property"], message: `Unknown property: ${rule.property}` }]
6682
6773
  );
@@ -6718,175 +6809,175 @@ Object.defineProperty(exports, "parseComputedFormula", {
6718
6809
  });
6719
6810
  Object.defineProperty(exports, "AccessDeniedError", {
6720
6811
  enumerable: true,
6721
- get: function () { return chunkMZOEL7FN_js.AccessDeniedError; }
6812
+ get: function () { return chunkSJCEXYFG_js.AccessDeniedError; }
6722
6813
  });
6723
6814
  Object.defineProperty(exports, "AttributeInUseError", {
6724
6815
  enumerable: true,
6725
- get: function () { return chunkMZOEL7FN_js.AttributeInUseError; }
6816
+ get: function () { return chunkSJCEXYFG_js.AttributeInUseError; }
6726
6817
  });
6727
6818
  Object.defineProperty(exports, "AttributeNotFoundError", {
6728
6819
  enumerable: true,
6729
- get: function () { return chunkMZOEL7FN_js.AttributeNotFoundError; }
6820
+ get: function () { return chunkSJCEXYFG_js.AttributeNotFoundError; }
6730
6821
  });
6731
6822
  Object.defineProperty(exports, "ChangeTypeNotSupportedError", {
6732
6823
  enumerable: true,
6733
- get: function () { return chunkMZOEL7FN_js.ChangeTypeNotSupportedError; }
6824
+ get: function () { return chunkSJCEXYFG_js.ChangeTypeNotSupportedError; }
6734
6825
  });
6735
6826
  Object.defineProperty(exports, "ConcurrentModificationError", {
6736
6827
  enumerable: true,
6737
- get: function () { return chunkMZOEL7FN_js.ConcurrentModificationError; }
6828
+ get: function () { return chunkSJCEXYFG_js.ConcurrentModificationError; }
6738
6829
  });
6739
6830
  Object.defineProperty(exports, "DestructiveSyncNotAllowedError", {
6740
6831
  enumerable: true,
6741
- get: function () { return chunkMZOEL7FN_js.DestructiveSyncNotAllowedError; }
6832
+ get: function () { return chunkSJCEXYFG_js.DestructiveSyncNotAllowedError; }
6742
6833
  });
6743
6834
  Object.defineProperty(exports, "DuplicateError", {
6744
6835
  enumerable: true,
6745
- get: function () { return chunkMZOEL7FN_js.DuplicateError; }
6836
+ get: function () { return chunkSJCEXYFG_js.DuplicateError; }
6746
6837
  });
6747
6838
  Object.defineProperty(exports, "ForbiddenError", {
6748
6839
  enumerable: true,
6749
- get: function () { return chunkMZOEL7FN_js.ForbiddenError; }
6840
+ get: function () { return chunkSJCEXYFG_js.ForbiddenError; }
6750
6841
  });
6751
6842
  Object.defineProperty(exports, "MemoryNotFoundError", {
6752
6843
  enumerable: true,
6753
- get: function () { return chunkMZOEL7FN_js.MemoryNotFoundError; }
6844
+ get: function () { return chunkSJCEXYFG_js.MemoryNotFoundError; }
6754
6845
  });
6755
6846
  Object.defineProperty(exports, "MigrationTimeoutError", {
6756
6847
  enumerable: true,
6757
- get: function () { return chunkMZOEL7FN_js.MigrationTimeoutError; }
6848
+ get: function () { return chunkSJCEXYFG_js.MigrationTimeoutError; }
6758
6849
  });
6759
6850
  Object.defineProperty(exports, "NotFoundError", {
6760
6851
  enumerable: true,
6761
- get: function () { return chunkMZOEL7FN_js.NotFoundError; }
6852
+ get: function () { return chunkSJCEXYFG_js.NotFoundError; }
6762
6853
  });
6763
6854
  Object.defineProperty(exports, "NotImplementedError", {
6764
6855
  enumerable: true,
6765
- get: function () { return chunkMZOEL7FN_js.NotImplementedError; }
6856
+ get: function () { return chunkSJCEXYFG_js.NotImplementedError; }
6766
6857
  });
6767
6858
  Object.defineProperty(exports, "ObjectNotFoundError", {
6768
6859
  enumerable: true,
6769
- get: function () { return chunkMZOEL7FN_js.ObjectNotFoundError; }
6860
+ get: function () { return chunkSJCEXYFG_js.ObjectNotFoundError; }
6770
6861
  });
6771
6862
  Object.defineProperty(exports, "ObjectReferencedError", {
6772
6863
  enumerable: true,
6773
- get: function () { return chunkMZOEL7FN_js.ObjectReferencedError; }
6864
+ get: function () { return chunkSJCEXYFG_js.ObjectReferencedError; }
6774
6865
  });
6775
6866
  Object.defineProperty(exports, "OrphanSystemAttributeError", {
6776
6867
  enumerable: true,
6777
- get: function () { return chunkMZOEL7FN_js.OrphanSystemAttributeError; }
6868
+ get: function () { return chunkSJCEXYFG_js.OrphanSystemAttributeError; }
6778
6869
  });
6779
6870
  Object.defineProperty(exports, "ProtectedResourceError", {
6780
6871
  enumerable: true,
6781
- get: function () { return chunkMZOEL7FN_js.ProtectedResourceError; }
6872
+ get: function () { return chunkSJCEXYFG_js.ProtectedResourceError; }
6782
6873
  });
6783
6874
  Object.defineProperty(exports, "ProtectedRoleError", {
6784
6875
  enumerable: true,
6785
- get: function () { return chunkMZOEL7FN_js.ProtectedRoleError; }
6876
+ get: function () { return chunkSJCEXYFG_js.ProtectedRoleError; }
6786
6877
  });
6787
6878
  Object.defineProperty(exports, "RecordNotFoundError", {
6788
6879
  enumerable: true,
6789
- get: function () { return chunkMZOEL7FN_js.RecordNotFoundError; }
6880
+ get: function () { return chunkSJCEXYFG_js.RecordNotFoundError; }
6790
6881
  });
6791
6882
  Object.defineProperty(exports, "RecordReferencedError", {
6792
6883
  enumerable: true,
6793
- get: function () { return chunkMZOEL7FN_js.RecordReferencedError; }
6884
+ get: function () { return chunkSJCEXYFG_js.RecordReferencedError; }
6794
6885
  });
6795
6886
  Object.defineProperty(exports, "RepositoryError", {
6796
6887
  enumerable: true,
6797
- get: function () { return chunkMZOEL7FN_js.RepositoryError; }
6888
+ get: function () { return chunkSJCEXYFG_js.RepositoryError; }
6798
6889
  });
6799
6890
  Object.defineProperty(exports, "RoleNotFoundError", {
6800
6891
  enumerable: true,
6801
- get: function () { return chunkMZOEL7FN_js.RoleNotFoundError; }
6892
+ get: function () { return chunkSJCEXYFG_js.RoleNotFoundError; }
6802
6893
  });
6803
6894
  Object.defineProperty(exports, "SchemaError", {
6804
6895
  enumerable: true,
6805
- get: function () { return chunkMZOEL7FN_js.SchemaError; }
6896
+ get: function () { return chunkSJCEXYFG_js.SchemaError; }
6806
6897
  });
6807
6898
  Object.defineProperty(exports, "SchemaErrorCode", {
6808
6899
  enumerable: true,
6809
- get: function () { return chunkMZOEL7FN_js.SchemaErrorCode; }
6900
+ get: function () { return chunkSJCEXYFG_js.SchemaErrorCode; }
6810
6901
  });
6811
6902
  Object.defineProperty(exports, "StorageError", {
6812
6903
  enumerable: true,
6813
- get: function () { return chunkMZOEL7FN_js.StorageError; }
6904
+ get: function () { return chunkSJCEXYFG_js.StorageError; }
6814
6905
  });
6815
6906
  Object.defineProperty(exports, "SyncCascadeError", {
6816
6907
  enumerable: true,
6817
- get: function () { return chunkMZOEL7FN_js.SyncCascadeError; }
6908
+ get: function () { return chunkSJCEXYFG_js.SyncCascadeError; }
6818
6909
  });
6819
6910
  Object.defineProperty(exports, "SyncConflictError", {
6820
6911
  enumerable: true,
6821
- get: function () { return chunkMZOEL7FN_js.SyncConflictError; }
6912
+ get: function () { return chunkSJCEXYFG_js.SyncConflictError; }
6822
6913
  });
6823
6914
  Object.defineProperty(exports, "SyncError", {
6824
6915
  enumerable: true,
6825
- get: function () { return chunkMZOEL7FN_js.SyncError; }
6916
+ get: function () { return chunkSJCEXYFG_js.SyncError; }
6826
6917
  });
6827
6918
  Object.defineProperty(exports, "SystemEntityImmutableError", {
6828
6919
  enumerable: true,
6829
- get: function () { return chunkMZOEL7FN_js.SystemEntityImmutableError; }
6920
+ get: function () { return chunkSJCEXYFG_js.SystemEntityImmutableError; }
6830
6921
  });
6831
6922
  Object.defineProperty(exports, "ValidationError", {
6832
6923
  enumerable: true,
6833
- get: function () { return chunkMZOEL7FN_js.ValidationError; }
6924
+ get: function () { return chunkSJCEXYFG_js.ValidationError; }
6834
6925
  });
6835
6926
  Object.defineProperty(exports, "computeRecordStatus", {
6836
6927
  enumerable: true,
6837
- get: function () { return chunkMZOEL7FN_js.computeRecordStatus; }
6928
+ get: function () { return chunkSJCEXYFG_js.computeRecordStatus; }
6838
6929
  });
6839
6930
  Object.defineProperty(exports, "createFormAttributeValidator", {
6840
6931
  enumerable: true,
6841
- get: function () { return chunkMZOEL7FN_js.createFormAttributeValidator; }
6932
+ get: function () { return chunkSJCEXYFG_js.createFormAttributeValidator; }
6842
6933
  });
6843
6934
  Object.defineProperty(exports, "isAttributeInUseError", {
6844
6935
  enumerable: true,
6845
- get: function () { return chunkMZOEL7FN_js.isAttributeInUseError; }
6936
+ get: function () { return chunkSJCEXYFG_js.isAttributeInUseError; }
6846
6937
  });
6847
6938
  Object.defineProperty(exports, "isNotFoundError", {
6848
6939
  enumerable: true,
6849
- get: function () { return chunkMZOEL7FN_js.isNotFoundError; }
6940
+ get: function () { return chunkSJCEXYFG_js.isNotFoundError; }
6850
6941
  });
6851
6942
  Object.defineProperty(exports, "isObjectReferencedError", {
6852
6943
  enumerable: true,
6853
- get: function () { return chunkMZOEL7FN_js.isObjectReferencedError; }
6944
+ get: function () { return chunkSJCEXYFG_js.isObjectReferencedError; }
6854
6945
  });
6855
6946
  Object.defineProperty(exports, "isProtectedResourceError", {
6856
6947
  enumerable: true,
6857
- get: function () { return chunkMZOEL7FN_js.isProtectedResourceError; }
6948
+ get: function () { return chunkSJCEXYFG_js.isProtectedResourceError; }
6858
6949
  });
6859
6950
  Object.defineProperty(exports, "isRecordReferencedError", {
6860
6951
  enumerable: true,
6861
- get: function () { return chunkMZOEL7FN_js.isRecordReferencedError; }
6952
+ get: function () { return chunkSJCEXYFG_js.isRecordReferencedError; }
6862
6953
  });
6863
6954
  Object.defineProperty(exports, "isSchemaError", {
6864
6955
  enumerable: true,
6865
- get: function () { return chunkMZOEL7FN_js.isSchemaError; }
6956
+ get: function () { return chunkSJCEXYFG_js.isSchemaError; }
6866
6957
  });
6867
6958
  Object.defineProperty(exports, "isValidationError", {
6868
6959
  enumerable: true,
6869
- get: function () { return chunkMZOEL7FN_js.isValidationError; }
6960
+ get: function () { return chunkSJCEXYFG_js.isValidationError; }
6870
6961
  });
6871
6962
  Object.defineProperty(exports, "rejectUnknownAttributesOrThrow", {
6872
6963
  enumerable: true,
6873
- get: function () { return chunkMZOEL7FN_js.rejectUnknownAttributesOrThrow; }
6964
+ get: function () { return chunkSJCEXYFG_js.rejectUnknownAttributesOrThrow; }
6874
6965
  });
6875
6966
  Object.defineProperty(exports, "validateDraft", {
6876
6967
  enumerable: true,
6877
- get: function () { return chunkMZOEL7FN_js.validateDraft; }
6968
+ get: function () { return chunkSJCEXYFG_js.validateDraft; }
6878
6969
  });
6879
6970
  Object.defineProperty(exports, "validateDraftOrThrow", {
6880
6971
  enumerable: true,
6881
- get: function () { return chunkMZOEL7FN_js.validateDraftOrThrow; }
6972
+ get: function () { return chunkSJCEXYFG_js.validateDraftOrThrow; }
6882
6973
  });
6883
6974
  Object.defineProperty(exports, "validateObject", {
6884
6975
  enumerable: true,
6885
- get: function () { return chunkMZOEL7FN_js.validateObject; }
6976
+ get: function () { return chunkSJCEXYFG_js.validateObject; }
6886
6977
  });
6887
6978
  Object.defineProperty(exports, "validateObjectOrThrow", {
6888
6979
  enumerable: true,
6889
- get: function () { return chunkMZOEL7FN_js.validateObjectOrThrow; }
6980
+ get: function () { return chunkSJCEXYFG_js.validateObjectOrThrow; }
6890
6981
  });
6891
6982
  Object.defineProperty(exports, "DEFAULT_VALIDATION_MESSAGES", {
6892
6983
  enumerable: true,
@@ -6932,6 +7023,18 @@ exports.LIVE_STREAM_START_CURSOR = LIVE_STREAM_START_CURSOR;
6932
7023
  exports.ListViewBuilder = ListViewBuilder;
6933
7024
  exports.ListViewTabConfigBuilder = ListViewTabConfigBuilder;
6934
7025
  exports.MAX_PRESET_DEPTH = MAX_PRESET_DEPTH;
7026
+ exports.NOTIFICATION_INBOX_STATES = NOTIFICATION_INBOX_STATES;
7027
+ exports.NOTIFICATION_KINDS = NOTIFICATION_KINDS;
7028
+ exports.NOTIFICATION_PRIORITIES = NOTIFICATION_PRIORITIES;
7029
+ exports.NOTIFICATION_SENSITIVITIES = NOTIFICATION_SENSITIVITIES;
7030
+ exports.NOTIFICATION_TYPES_V1 = NOTIFICATION_TYPES_V1;
7031
+ exports.NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED = NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED;
7032
+ exports.NOTIFICATION_TYPE_AGENT_SESSION_COMPLETED = NOTIFICATION_TYPE_AGENT_SESSION_COMPLETED;
7033
+ exports.NOTIFICATION_TYPE_AGENT_SESSION_FAILED = NOTIFICATION_TYPE_AGENT_SESSION_FAILED;
7034
+ exports.NOTIFICATION_TYPE_AGENT_SESSION_TIMEOUT = NOTIFICATION_TYPE_AGENT_SESSION_TIMEOUT;
7035
+ exports.NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN = NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN;
7036
+ exports.NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED = NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED;
7037
+ exports.NOTIFICATION_WORK_STATES = NOTIFICATION_WORK_STATES;
6935
7038
  exports.NO_VALUE_OPERATORS = NO_VALUE_OPERATORS;
6936
7039
  exports.NoopGeocodingAdapter = NoopGeocodingAdapter;
6937
7040
  exports.OPERATORS_BY_TYPE = OPERATORS_BY_TYPE;