@stndrds/schema 1.0.0-alpha.263 → 1.0.0-alpha.265

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 (59) hide show
  1. package/dist/{attributes-_6tvjbyl.d.ts → attributes-_b3Db8vT.d.ts} +1 -23
  2. package/dist/{attributes-Cmkc7UgJ.d.mts → attributes-lBLiOIY3.d.mts} +1 -23
  3. package/dist/chunk-NGGU6BSN.mjs +216 -0
  4. package/dist/chunk-NI3HCSYH.js +229 -0
  5. package/dist/{chunk-54WDPQ6R.mjs → chunk-QIWADKYA.mjs} +12 -216
  6. package/dist/{chunk-TS3PJOMZ.js → chunk-ZBQEMIAV.js} +11 -227
  7. package/dist/exceptions.d.mts +458 -0
  8. package/dist/exceptions.d.ts +458 -0
  9. package/dist/exceptions.js +154 -0
  10. package/dist/exceptions.mjs +1 -0
  11. package/dist/{helpers-BTC6TsKH.d.ts → helpers-eyrnPJEF.d.ts} +4 -39
  12. package/dist/{helpers-BO10yqih.d.mts → helpers-uKLet0kF.d.mts} +4 -39
  13. package/dist/index.d.mts +150 -476
  14. package/dist/index.d.ts +150 -476
  15. package/dist/index.js +238 -139
  16. package/dist/index.mjs +131 -35
  17. package/dist/migrations-BXd2ZGfM.d.mts +39 -0
  18. package/dist/migrations-DcuJZ8qO.d.ts +39 -0
  19. package/dist/{types-CVswgCx9.d.mts → types-DNz3ITS-.d.mts} +1 -1
  20. package/dist/{types-B_UZK_6m.d.ts → types-DqLi1tx1.d.ts} +1 -1
  21. package/dist/validation/all.d.mts +4 -3
  22. package/dist/validation/all.d.ts +4 -3
  23. package/dist/validation/all.js +10 -9
  24. package/dist/validation/all.mjs +4 -3
  25. package/dist/validation/complex/currency.d.mts +2 -2
  26. package/dist/validation/complex/currency.d.ts +2 -2
  27. package/dist/validation/complex/location.d.mts +2 -2
  28. package/dist/validation/complex/location.d.ts +2 -2
  29. package/dist/validation/complex/phone.d.mts +2 -2
  30. package/dist/validation/complex/phone.d.ts +2 -2
  31. package/dist/validation/complex/relation.d.mts +2 -2
  32. package/dist/validation/complex/relation.d.ts +2 -2
  33. package/dist/validation/complex/richtext.d.mts +2 -2
  34. package/dist/validation/complex/richtext.d.ts +2 -2
  35. package/dist/validation/complex/select.d.mts +2 -2
  36. package/dist/validation/complex/select.d.ts +2 -2
  37. package/dist/validation/complex/user.d.mts +2 -2
  38. package/dist/validation/complex/user.d.ts +2 -2
  39. package/dist/validation/computed/formula.d.mts +2 -2
  40. package/dist/validation/computed/formula.d.ts +2 -2
  41. package/dist/validation/computed/rollup.d.mts +2 -2
  42. package/dist/validation/computed/rollup.d.ts +2 -2
  43. package/dist/validation/config/index.d.mts +1 -1
  44. package/dist/validation/config/index.d.ts +1 -1
  45. package/dist/validation/core/index.d.mts +3 -3
  46. package/dist/validation/core/index.d.ts +3 -3
  47. package/dist/validation/object/index.d.mts +5 -4
  48. package/dist/validation/object/index.d.ts +5 -4
  49. package/dist/validation/object/index.js +16 -15
  50. package/dist/validation/object/index.mjs +4 -3
  51. package/dist/validation/primitives/checkbox.d.mts +2 -2
  52. package/dist/validation/primitives/checkbox.d.ts +2 -2
  53. package/dist/validation/primitives/date.d.mts +2 -2
  54. package/dist/validation/primitives/date.d.ts +2 -2
  55. package/dist/validation/primitives/number.d.mts +2 -2
  56. package/dist/validation/primitives/number.d.ts +2 -2
  57. package/dist/validation/primitives/text.d.mts +2 -2
  58. package/dist/validation/primitives/text.d.ts +2 -2
  59. package/package.json +7 -2
package/dist/index.js CHANGED
@@ -3,20 +3,21 @@
3
3
  var chunkFRCDMQER_js = require('./chunk-FRCDMQER.js');
4
4
  require('./chunk-PGERPYDR.js');
5
5
  var chunkL4U5QEQL_js = require('./chunk-L4U5QEQL.js');
6
- var chunkTS3PJOMZ_js = require('./chunk-TS3PJOMZ.js');
6
+ var chunkNI3HCSYH_js = require('./chunk-NI3HCSYH.js');
7
+ require('./chunk-5WATIVCA.js');
7
8
  require('./chunk-SI34M4IC.js');
8
9
  require('./chunk-YIP5FJ5H.js');
9
10
  require('./chunk-QAF3HNKQ.js');
11
+ require('./chunk-EW5XR2X3.js');
10
12
  require('./chunk-QWKLQRBX.js');
11
13
  require('./chunk-KNGWHQLR.js');
12
14
  require('./chunk-HTSTPTNZ.js');
13
15
  require('./chunk-V2UA2D4E.js');
14
- require('./chunk-5WATIVCA.js');
16
+ var chunkZBQEMIAV_js = require('./chunk-ZBQEMIAV.js');
15
17
  require('./chunk-ACKMC6FL.js');
16
18
  require('./chunk-E6JUYGJX.js');
17
19
  var chunkEBGRZUIH_js = require('./chunk-EBGRZUIH.js');
18
20
  require('./chunk-EEH4XQ7W.js');
19
- require('./chunk-EW5XR2X3.js');
20
21
  var chunkYKWSHBT5_js = require('./chunk-YKWSHBT5.js');
21
22
  var constants = require('@stndrds/constants');
22
23
  var z3 = require('zod');
@@ -485,19 +486,6 @@ function isAttributeSortable2(attr) {
485
486
  return isAttributeSortable(attr);
486
487
  }
487
488
 
488
- // src/types/autofill.ts
489
- var AUTOFILL_ELIGIBLE_TYPES = [
490
- "text",
491
- "number",
492
- "checkbox",
493
- "date",
494
- "phone",
495
- "currency",
496
- "status",
497
- "select",
498
- "multiselect"
499
- ];
500
-
501
489
  // src/types/audit.ts
502
490
  var AUDIT_RESOURCE_TYPES = [
503
491
  "record",
@@ -1217,17 +1205,25 @@ var DEFAULT_ROLES = {
1217
1205
  /** Standard user - can work with business data and view people */
1218
1206
  MEMBER: "member",
1219
1207
  /** Default role for agent actors - CRUD on records + documents/files */
1220
- AGENT_DEFAULT: "agent_default"
1208
+ AGENT_DEFAULT: "agent_default",
1209
+ /**
1210
+ * Default role for reflex actors — deliberately NO record access (D22).
1211
+ * An agent is interactive, watched, and acts once; a reflex is unattended and
1212
+ * repeats. Real access is a per-reflex role derived from its first rehearsal.
1213
+ */
1214
+ REFLEX_DEFAULT: "reflex_default"
1221
1215
  };
1222
1216
  var DEFAULT_ROLE_LABELS = {
1223
1217
  owner: "Owner",
1224
1218
  member: "Member",
1225
- agent_default: "Agent Default"
1219
+ agent_default: "Agent Default",
1220
+ reflex_default: "Reflex Default"
1226
1221
  };
1227
1222
  var DEFAULT_ROLE_DESCRIPTIONS = {
1228
1223
  owner: "Full access to all platform features and data",
1229
1224
  member: "Can view, create, edit and delete business data",
1230
- agent_default: "Default role for AI agents \u2014 CRUD on records plus documents and files"
1225
+ agent_default: "Default role for AI agents \u2014 CRUD on records plus documents and files",
1226
+ reflex_default: "Default role for reflexes \u2014 no data access; each reflex is granted exactly what its rehearsal showed it uses"
1231
1227
  };
1232
1228
  var ALL_ACTIONS2 = ["read", "create", "update", "delete", "manage"];
1233
1229
  var MEMBER_CONNECTOR_ACTIONS = ["read", "create", "delete"];
@@ -1257,6 +1253,13 @@ var DEFAULT_ROLE_PERMISSIONS = {
1257
1253
  { target: "session", actions: ["observe"] }
1258
1254
  ],
1259
1255
  object: [{ target: "*", actions: ["read", "create", "update", "delete"] }]
1256
+ },
1257
+ reflex_default: {
1258
+ // Intentionally empty (D22): a reflex starts with no access at all. Real
1259
+ // access is a per-reflex role derived from its first rehearsal, not a
1260
+ // shared default.
1261
+ system: [],
1262
+ object: []
1260
1263
  }
1261
1264
  };
1262
1265
  function isDefaultRole(roleName) {
@@ -1360,7 +1363,7 @@ var DEFAULT_AGENT_EXECUTION_CONFIG = {
1360
1363
  var AgentBuilder = class {
1361
1364
  constructor(config) {
1362
1365
  if (!config.name || config.name.trim().length === 0) {
1363
- throw new chunkTS3PJOMZ_js.ValidationError("Agent name is required", []);
1366
+ throw new chunkZBQEMIAV_js.ValidationError("Agent name is required", []);
1364
1367
  }
1365
1368
  this.bp = { name: config.name, system: true, triggers: [] };
1366
1369
  }
@@ -1433,15 +1436,15 @@ var AgentBuilder = class {
1433
1436
  }
1434
1437
  build() {
1435
1438
  if (!this.bp.systemPrompt) {
1436
- throw new chunkTS3PJOMZ_js.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`, []);
1439
+ throw new chunkZBQEMIAV_js.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`, []);
1437
1440
  }
1438
1441
  if (!this.bp.model) {
1439
- throw new chunkTS3PJOMZ_js.ValidationError(`Agent "${this.bp.name}": model is required`, []);
1442
+ throw new chunkZBQEMIAV_js.ValidationError(`Agent "${this.bp.name}": model is required`, []);
1440
1443
  }
1441
1444
  assertUniqueBy(
1442
1445
  this.bp.triggers,
1443
1446
  (t) => t.name,
1444
- (name) => new chunkTS3PJOMZ_js.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${name}"`, [])
1447
+ (name) => new chunkZBQEMIAV_js.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${name}"`, [])
1445
1448
  );
1446
1449
  return {
1447
1450
  ...this.bp,
@@ -1495,7 +1498,7 @@ var BaseAttributeBuilder = class {
1495
1498
  * @see https://standardschema.dev/
1496
1499
  */
1497
1500
  get "~standard"() {
1498
- const zodSchema = chunkTS3PJOMZ_js.createAttributeValidator(this.build());
1501
+ const zodSchema = chunkNI3HCSYH_js.createAttributeValidator(this.build());
1499
1502
  return createStandardSchemaProps(zodSchema);
1500
1503
  }
1501
1504
  constructor(type, name, label) {
@@ -1575,15 +1578,6 @@ var BaseAttributeBuilder = class {
1575
1578
  this.attr.placeholder = value;
1576
1579
  return this;
1577
1580
  }
1578
- /**
1579
- * Enable AI autofill for this attribute. `from` is mandatory:
1580
- * empty array = document-only, non-empty = also triggered when those
1581
- * source attributes change. Eligibility by type is validated at schema sync.
1582
- */
1583
- autofill(config) {
1584
- this.attr.autofill = config;
1585
- return this;
1586
- }
1587
1581
  description(value) {
1588
1582
  this.attr.description = value;
1589
1583
  return this;
@@ -2247,9 +2241,9 @@ var RollupAttributeBuilder = class extends BaseAttributeBuilder {
2247
2241
  if (fn === "original" && targetType !== void 0 && targetType !== "select" && targetType !== "status" && targetType !== "multiselect") {
2248
2242
  const relation2 = this.attr.relationAttribute ?? "relation";
2249
2243
  const target = this.attr.targetAttribute ?? "field";
2250
- throw new chunkTS3PJOMZ_js.SchemaError(
2244
+ throw new chunkZBQEMIAV_js.SchemaError(
2251
2245
  `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}").`,
2252
- chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2246
+ chunkZBQEMIAV_js.SchemaErrorCode.VALIDATION_FAILED
2253
2247
  );
2254
2248
  }
2255
2249
  return super.build();
@@ -2759,7 +2753,7 @@ var ObjectBuilder = class {
2759
2753
  * @see https://standardschema.dev/
2760
2754
  */
2761
2755
  get "~standard"() {
2762
- const zodSchema = chunkTS3PJOMZ_js.createObjectValidator(this.build());
2756
+ const zodSchema = chunkNI3HCSYH_js.createObjectValidator(this.build());
2763
2757
  return createStandardSchemaProps(zodSchema);
2764
2758
  }
2765
2759
  /**
@@ -2973,26 +2967,26 @@ var ObjectBuilder = class {
2973
2967
  throw new Error("[ObjectBuilder] Missing required field: label");
2974
2968
  }
2975
2969
  if (!this._labelExpression) {
2976
- throw new chunkTS3PJOMZ_js.SchemaError(
2970
+ throw new chunkZBQEMIAV_js.SchemaError(
2977
2971
  `Object "${this.obj.name}" must have a labelExpression. The labelExpression defines how records are displayed in lists and relations (e.g. "{{ name }}").`,
2978
- chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2972
+ chunkZBQEMIAV_js.SchemaErrorCode.VALIDATION_FAILED
2979
2973
  );
2980
2974
  }
2981
2975
  const labelResult = labelExpressionSchema.safeParse(this._labelExpression);
2982
2976
  if (!labelResult.success) {
2983
2977
  const errorMsg = labelResult.error.issues[0]?.message ?? "Invalid labelExpression";
2984
- throw new chunkTS3PJOMZ_js.SchemaError(
2978
+ throw new chunkZBQEMIAV_js.SchemaError(
2985
2979
  `Invalid labelExpression for "${this.obj.name}": ${errorMsg}`,
2986
- chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2980
+ chunkZBQEMIAV_js.SchemaErrorCode.VALIDATION_FAILED
2987
2981
  );
2988
2982
  }
2989
2983
  if (this._embeddingExpression !== void 0) {
2990
2984
  const embeddingResult = labelExpressionSchema.safeParse(this._embeddingExpression);
2991
2985
  if (!embeddingResult.success) {
2992
2986
  const errorMsg = embeddingResult.error.issues[0]?.message ?? "Invalid embeddingExpression";
2993
- throw new chunkTS3PJOMZ_js.SchemaError(
2987
+ throw new chunkZBQEMIAV_js.SchemaError(
2994
2988
  `Invalid embeddingExpression for "${this.obj.name}": ${errorMsg}`,
2995
- chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2989
+ chunkZBQEMIAV_js.SchemaErrorCode.VALIDATION_FAILED
2996
2990
  );
2997
2991
  }
2998
2992
  }
@@ -3033,7 +3027,7 @@ var ObjectBuilder = class {
3033
3027
  objectNameSchema.parse(name);
3034
3028
  } catch (error) {
3035
3029
  if (error instanceof z3__default.default.ZodError) {
3036
- throw new chunkTS3PJOMZ_js.SchemaError(error.issues[0].message, chunkTS3PJOMZ_js.SchemaErrorCode.INVALID_OBJECT_NAME);
3030
+ throw new chunkZBQEMIAV_js.SchemaError(error.issues[0].message, chunkZBQEMIAV_js.SchemaErrorCode.INVALID_OBJECT_NAME);
3037
3031
  }
3038
3032
  throw error;
3039
3033
  }
@@ -3044,7 +3038,7 @@ function object(config) {
3044
3038
  }
3045
3039
  function validatePresetStructure(presetId, nodes, depth) {
3046
3040
  const fail = (message, detail) => {
3047
- throw new chunkTS3PJOMZ_js.ValidationError(message, [
3041
+ throw new chunkZBQEMIAV_js.ValidationError(message, [
3048
3042
  { path: ["documentLayout", "presets", presetId], message: detail }
3049
3043
  ]);
3050
3044
  };
@@ -4279,7 +4273,7 @@ function jsonFlag(name, defaultValue) {
4279
4273
 
4280
4274
  // src/feature-flags/flag-registry.ts
4281
4275
  function duplicateFlagError(name) {
4282
- return new chunkTS3PJOMZ_js.DuplicateError(
4276
+ return new chunkZBQEMIAV_js.DuplicateError(
4283
4277
  "feature flag",
4284
4278
  name,
4285
4279
  `Flag "${name}" is already registered. Each flag name must be unique.`
@@ -4357,7 +4351,7 @@ var FlagRegistry = class {
4357
4351
  getOrThrow(name) {
4358
4352
  const flag = this.get(name);
4359
4353
  if (!flag) {
4360
- throw new chunkTS3PJOMZ_js.NotFoundError(
4354
+ throw new chunkZBQEMIAV_js.NotFoundError(
4361
4355
  "Feature flag",
4362
4356
  name,
4363
4357
  void 0,
@@ -4514,19 +4508,19 @@ var FlagService = class {
4514
4508
  */
4515
4509
  async setOverride(flagName, level, value, options = {}) {
4516
4510
  if (!this.repository) {
4517
- throw new chunkTS3PJOMZ_js.SchemaError(
4511
+ throw new chunkZBQEMIAV_js.SchemaError(
4518
4512
  "Cannot set override: no FeatureFlagsRepository configured. Add featureFlags to your DatabaseAdapter to enable runtime overrides.",
4519
- chunkTS3PJOMZ_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4513
+ chunkZBQEMIAV_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4520
4514
  );
4521
4515
  }
4522
4516
  const flag = this.registry.get(flagName);
4523
4517
  if (flag && !flag.allowedLevels.includes(level)) {
4524
4518
  const message = `Flag "${flagName}" does not allow ${level}-level overrides. Allowed levels: ${flag.allowedLevels.join(", ")}`;
4525
- throw new chunkTS3PJOMZ_js.ValidationError(message, [{ path: ["level"], message }]);
4519
+ throw new chunkZBQEMIAV_js.ValidationError(message, [{ path: ["level"], message }]);
4526
4520
  }
4527
4521
  if (flag?.system) {
4528
4522
  const message = `Flag "${flagName}" is a system flag and cannot be overridden via API.`;
4529
- throw new chunkTS3PJOMZ_js.ValidationError(message, [{ path: ["flagName"], message }]);
4523
+ throw new chunkZBQEMIAV_js.ValidationError(message, [{ path: ["flagName"], message }]);
4530
4524
  }
4531
4525
  await this.repository.setOverride({
4532
4526
  flagName,
@@ -4546,9 +4540,9 @@ var FlagService = class {
4546
4540
  */
4547
4541
  async deleteOverride(flagName, level, targetId) {
4548
4542
  if (!this.repository) {
4549
- throw new chunkTS3PJOMZ_js.SchemaError(
4543
+ throw new chunkZBQEMIAV_js.SchemaError(
4550
4544
  "Cannot delete override: no FeatureFlagsRepository configured.",
4551
- chunkTS3PJOMZ_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4545
+ chunkZBQEMIAV_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4552
4546
  );
4553
4547
  }
4554
4548
  await this.repository.deleteOverride(flagName, level, targetId);
@@ -4685,7 +4679,7 @@ var NativeObjectRegistryClass = class {
4685
4679
  if (!object2.system) {
4686
4680
  const message = `[NativeObjectRegistry] Cannot register object "${object2.name}" (id: ${object2.id}): missing system flag.
4687
4681
  Native objects must have system=true. Did you call .runtime() on the builder? Remove that call \u2014 objects are system:true by default.`;
4688
- throw new chunkTS3PJOMZ_js.ValidationError(message, []);
4682
+ throw new chunkZBQEMIAV_js.ValidationError(message, []);
4689
4683
  }
4690
4684
  if (this.objects.has(object2.name)) {
4691
4685
  const existing = this.objects.get(object2.name);
@@ -4693,7 +4687,7 @@ Native objects must have system=true. Did you call .runtime() on the builder? Re
4693
4687
  - Existing: "${existing?.label}" (id: ${existing?.id})
4694
4688
  - New: "${object2.label}" (id: ${object2.id})
4695
4689
  Please use unique names for each native object.`;
4696
- throw new chunkTS3PJOMZ_js.DuplicateError("object", object2.name, message);
4690
+ throw new chunkZBQEMIAV_js.DuplicateError("object", object2.name, message);
4697
4691
  }
4698
4692
  this.objects.set(object2.name, cloneObjectDefinition(object2));
4699
4693
  }
@@ -4725,7 +4719,7 @@ Please use unique names for each native object.`;
4725
4719
  if (!object2) {
4726
4720
  const message = `[NativeObjectRegistry] Native object "${name}" not found.
4727
4721
  Available objects: ${this.listNames().join(", ")}`;
4728
- throw new chunkTS3PJOMZ_js.NotFoundError("Native object", name, chunkTS3PJOMZ_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4722
+ throw new chunkZBQEMIAV_js.NotFoundError("Native object", name, chunkZBQEMIAV_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4729
4723
  }
4730
4724
  return object2;
4731
4725
  }
@@ -4823,7 +4817,7 @@ var SKILL_OBJECT = object({ name: "skill", label: "Skill" }).sealed().icon("spar
4823
4817
  'What this skill does and when to use it \u2014 e.g. "Drafts replies to customer complaints. Use when asked to answer an unhappy customer."'
4824
4818
  )
4825
4819
  ).attribute(richtext({ name: "content", label: "Content" }).defaultValue(SKILL_CONTENT_TEMPLATE)).build();
4826
- var SKILL_VIEW = detailView("skill-detail", "Skill").for("skill").default().sidePanel({ attributes: ["name", "description"] }).tab("content", "Content").richtext("content").titleAttribute("name").done().build();
4820
+ 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();
4827
4821
  var SKILL_LIST_VIEW = listView("skill-list", "Skills").for("skill").default().tab("all", "All").table().columns("name", "description").sort("name", "asc").build();
4828
4822
  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(
4829
4823
  text({ name: "description", label: "Description" }).multiline().maxLength(constants.MEMORY_DESCRIPTION_MAX_LENGTH).required()
@@ -4864,7 +4858,7 @@ var ViewRegistry = class {
4864
4858
  const key = this.makeKey(view.object, view.name, view.type);
4865
4859
  if (this.views.has(key)) {
4866
4860
  const message = `[ViewRegistry] Duplicate view: "${view.name}" (${view.type}) for object "${view.object}"`;
4867
- throw new chunkTS3PJOMZ_js.DuplicateError("view", key, message);
4861
+ throw new chunkZBQEMIAV_js.DuplicateError("view", key, message);
4868
4862
  }
4869
4863
  const storedView = cloneViewDefinition(view);
4870
4864
  this.views.set(key, storedView);
@@ -4909,7 +4903,7 @@ var ViewRegistry = class {
4909
4903
  const availableNames = available.map((v) => `${v.name} (${v.type})`).join(", ") || "(none)";
4910
4904
  const message = `[ViewRegistry] View "${viewName}" not found for object "${objectName}".
4911
4905
  Available views: ${availableNames}`;
4912
- throw new chunkTS3PJOMZ_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4906
+ throw new chunkZBQEMIAV_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4913
4907
  }
4914
4908
  return view;
4915
4909
  }
@@ -5215,7 +5209,7 @@ var FormRegistry = class {
5215
5209
  const forms = Array.isArray(formOrForms) ? formOrForms : [formOrForms];
5216
5210
  for (const f of forms) {
5217
5211
  if (this.forms.has(f.name)) {
5218
- throw new chunkTS3PJOMZ_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
5212
+ throw new chunkZBQEMIAV_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
5219
5213
  }
5220
5214
  this.forms.set(f.name, cloneFormDefinition(f));
5221
5215
  }
@@ -7070,6 +7064,66 @@ function now() {
7070
7064
  return { dynamic: "date", anchor: "now" };
7071
7065
  }
7072
7066
 
7067
+ // src/filters/normalize-operator.ts
7068
+ var SYNONYM_ALIASES = {
7069
+ // equality
7070
+ equals: "is",
7071
+ equal: "is",
7072
+ "==": "is",
7073
+ "=": "is",
7074
+ notEqual: "is_not",
7075
+ isNot: "is_not",
7076
+ "!=": "is_not",
7077
+ "<>": "is_not",
7078
+ // set
7079
+ in: "any_of",
7080
+ isAnyOf: "any_of",
7081
+ oneOf: "any_of",
7082
+ notIn: "none_of",
7083
+ not_in: "none_of",
7084
+ isNoneOf: "none_of",
7085
+ notOneOf: "none_of",
7086
+ // text
7087
+ startsWith: "starts_with",
7088
+ beginsWith: "starts_with",
7089
+ endsWith: "ends_with",
7090
+ doesNotContain: "not_contains",
7091
+ notContain: "not_contains",
7092
+ // nullity
7093
+ isEmpty: "is_empty",
7094
+ isNotEmpty: "is_not_empty",
7095
+ // checkbox
7096
+ isChecked: "is_checked",
7097
+ isUnchecked: "is_not_checked"
7098
+ };
7099
+ var CROSS_TYPE_CONVERSIONS = {
7100
+ date: {
7101
+ gte: "on_or_after",
7102
+ lte: "on_or_before",
7103
+ gt: "after",
7104
+ lt: "before",
7105
+ eq: "is",
7106
+ neq: "is_not"
7107
+ },
7108
+ number: { is: "eq", is_not: "neq" },
7109
+ currency: { is: "eq", is_not: "neq" },
7110
+ text: { eq: "is", neq: "is_not" },
7111
+ phone: { eq: "is", neq: "is_not" },
7112
+ select: { eq: "is", neq: "is_not" },
7113
+ status: { eq: "is", neq: "is_not" },
7114
+ multiselect: { eq: "contains", neq: "not_contains" },
7115
+ relation: { eq: "is", neq: "is_not" },
7116
+ user: { eq: "is", neq: "is_not" },
7117
+ document: { eq: "is", neq: "is_not" },
7118
+ file: { eq: "is", neq: "is_not" },
7119
+ checkbox: { eq: "is_checked", neq: "is_not_checked", is: "is_checked", is_not: "is_not_checked" }
7120
+ };
7121
+ function normalizeOperator(rawOp, effectiveType) {
7122
+ const synonymed = SYNONYM_ALIASES[rawOp] ?? rawOp;
7123
+ const typeMap = CROSS_TYPE_CONVERSIONS[effectiveType];
7124
+ return typeMap?.[synonymed] ?? synonymed;
7125
+ }
7126
+
7073
7127
  // src/filters/validation.ts
7074
7128
  var REFERENCE_TYPES = /* @__PURE__ */ new Set(["relation", "document", "user"]);
7075
7129
  var ID_LIKE_OPERATORS = [
@@ -7097,18 +7151,31 @@ var SYSTEM_FILTER_OPERATORS = {
7097
7151
  createdBy: OPERATORS_BY_TYPE.user,
7098
7152
  lastUpdatedBy: OPERATORS_BY_TYPE.user
7099
7153
  };
7154
+ var SYSTEM_ATTRIBUTE_TYPES = {
7155
+ id: "id",
7156
+ objectId: "id",
7157
+ tenantId: "id",
7158
+ label: "text",
7159
+ createdAt: "date",
7160
+ updatedAt: "date",
7161
+ deletedAt: "date",
7162
+ createdBy: "user",
7163
+ lastUpdatedBy: "user"
7164
+ };
7100
7165
  function assertOperatorForType(operator, type, context) {
7166
+ const normalized = normalizeOperator(operator, type);
7101
7167
  const ops = OPERATORS_BY_TYPE[type];
7102
- if (!ops?.includes(operator)) {
7168
+ if (!ops?.includes(normalized)) {
7103
7169
  const validList = ops?.length ? ops.join(", ") : "(no operators registered for this type)";
7104
7170
  const summary = `Operator "${operator}" is not valid for ${context} type "${type}". Valid operators: ${validList}.`;
7105
- throw new chunkTS3PJOMZ_js.ValidationError(summary, [
7171
+ throw new chunkZBQEMIAV_js.ValidationError(summary, [
7106
7172
  {
7107
7173
  path: ["operator"],
7108
7174
  message: summary
7109
7175
  }
7110
7176
  ]);
7111
7177
  }
7178
+ return normalized;
7112
7179
  }
7113
7180
  var RELATIVE_DATE_UNITS = /* @__PURE__ */ new Set(["days", "weeks", "months", "years"]);
7114
7181
  var RELATIVE_DATE_DIRECTIONS = /* @__PURE__ */ new Set(["past", "future"]);
@@ -7118,7 +7185,7 @@ function assertRelativeDateValue(rule) {
7118
7185
  const valid = typeof v === "object" && v !== null && typeof v.amount === "number" && Number.isFinite(v.amount) && v.amount > 0 && typeof v.unit === "string" && RELATIVE_DATE_UNITS.has(v.unit) && typeof v.direction === "string" && RELATIVE_DATE_DIRECTIONS.has(v.direction);
7119
7186
  if (!valid) {
7120
7187
  const m = `Operator "is_within" requires a relative-date value { amount: positive number, unit: days|weeks|months|years, direction: past|future }`;
7121
- throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["value"], message: m }]);
7188
+ throw new chunkZBQEMIAV_js.ValidationError(m, [{ path: ["value"], message: m }]);
7122
7189
  }
7123
7190
  }
7124
7191
  function assertDynamicValueForAttribute(rule, attrType) {
@@ -7126,71 +7193,99 @@ function assertDynamicValueForAttribute(rule, attrType) {
7126
7193
  const v = rule.value;
7127
7194
  if (v.dynamic === "actor" && attrType !== "user") {
7128
7195
  const m = `actor token (@me) is only valid on user attributes, not "${attrType}"`;
7129
- throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["value"], message: m }]);
7196
+ throw new chunkZBQEMIAV_js.ValidationError(m, [{ path: ["value"], message: m }]);
7130
7197
  }
7131
7198
  if (v.dynamic === "date" && attrType !== "date") {
7132
7199
  const m = `date token (@today/@now) is only valid on date attributes, not "${attrType}"`;
7133
- throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["value"], message: m }]);
7200
+ throw new chunkZBQEMIAV_js.ValidationError(m, [{ path: ["value"], message: m }]);
7134
7201
  }
7135
7202
  }
7136
7203
  function validateQualifiedRule(rule, context) {
7137
7204
  const rootAttr = context.attributes.find((a) => a.name === rule.attribute);
7138
7205
  const systemOps = SYSTEM_FILTER_OPERATORS[rule.attribute];
7139
7206
  if (!(rootAttr || systemOps)) {
7140
- throw new chunkTS3PJOMZ_js.ValidationError(`Unknown attribute: ${rule.attribute}`, [
7207
+ throw new chunkZBQEMIAV_js.ValidationError(`Unknown attribute: ${rule.attribute}`, [
7141
7208
  { path: ["attribute"], message: `Unknown attribute: ${rule.attribute}` }
7142
7209
  ]);
7143
7210
  }
7144
7211
  if (rule.quantifier !== void 0 && !rule.property) {
7145
7212
  const m = `quantifier is only valid on qualified edge rules (set "property")`;
7146
- throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["quantifier"], message: m }]);
7213
+ throw new chunkZBQEMIAV_js.ValidationError(m, [{ path: ["quantifier"], message: m }]);
7147
7214
  }
7148
7215
  if (!rootAttr) {
7149
7216
  if (rule.property) {
7150
- throw new chunkTS3PJOMZ_js.ValidationError(`Cannot qualify system attribute "${rule.attribute}"`, [
7217
+ throw new chunkZBQEMIAV_js.ValidationError(`Cannot qualify system attribute "${rule.attribute}"`, [
7151
7218
  { path: ["property"], message: `"${rule.attribute}" is a system column, not a reference` }
7152
7219
  ]);
7153
7220
  }
7154
- if (!systemOps.includes(rule.operator)) {
7221
+ const effectiveType = SYSTEM_ATTRIBUTE_TYPES[rule.attribute] ?? "id";
7222
+ const normalizedOperator = normalizeOperator(
7223
+ rule.operator,
7224
+ effectiveType
7225
+ );
7226
+ if (!systemOps.includes(normalizedOperator)) {
7155
7227
  const summary = `Operator "${rule.operator}" is not valid for system attribute "${rule.attribute}". Valid operators: ${systemOps.join(", ")}.`;
7156
- throw new chunkTS3PJOMZ_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7228
+ throw new chunkZBQEMIAV_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7157
7229
  }
7230
+ rule.operator = normalizedOperator;
7158
7231
  assertRelativeDateValue(rule);
7159
7232
  return;
7160
7233
  }
7161
7234
  if (!rule.property) {
7162
7235
  assertDynamicValueForAttribute(rule, rootAttr.type);
7163
7236
  const ops = getAttributeFilterOperators(rootAttr);
7164
- if (!ops.includes(rule.operator)) {
7237
+ const normalizedOperator = normalizeOperator(
7238
+ rule.operator,
7239
+ rootAttr.type
7240
+ );
7241
+ if (!ops.includes(normalizedOperator)) {
7165
7242
  const validList = ops.length ? ops.join(", ") : "(not filterable)";
7166
7243
  const summary = `Operator "${rule.operator}" is not valid for attribute "${rootAttr.name}". Valid operators: ${validList}.`;
7167
- throw new chunkTS3PJOMZ_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7244
+ throw new chunkZBQEMIAV_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7168
7245
  }
7246
+ rule.operator = normalizedOperator;
7169
7247
  assertRelativeDateValue(rule);
7170
7248
  return;
7171
7249
  }
7172
7250
  if (!REFERENCE_TYPES.has(rootAttr.type)) {
7173
- throw new chunkTS3PJOMZ_js.ValidationError(`Cannot qualify ${rootAttr.type} attribute "${rule.attribute}"`, [
7251
+ throw new chunkZBQEMIAV_js.ValidationError(`Cannot qualify ${rootAttr.type} attribute "${rule.attribute}"`, [
7174
7252
  { path: ["property"], message: `Attribute "${rule.attribute}" is not a reference type` }
7175
7253
  ]);
7176
7254
  }
7177
7255
  const propSchema = rootAttr.properties;
7178
7256
  if (!propSchema) {
7179
- throw new chunkTS3PJOMZ_js.ValidationError(`Attribute "${rule.attribute}" has no qualifyWith schema`, [
7257
+ throw new chunkZBQEMIAV_js.ValidationError(`Attribute "${rule.attribute}" has no qualifyWith schema`, [
7180
7258
  { path: ["property"], message: `"${rule.attribute}" has no qualifyWith` }
7181
7259
  ]);
7182
7260
  }
7183
7261
  const propDef = propSchema.definitions.find((p) => p.name === rule.property);
7184
7262
  if (!propDef) {
7185
- throw new chunkTS3PJOMZ_js.ValidationError(
7263
+ throw new chunkZBQEMIAV_js.ValidationError(
7186
7264
  `Property "${rule.property}" not defined on "${rule.attribute}".qualifyWith()`,
7187
7265
  [{ path: ["property"], message: `Unknown property: ${rule.property}` }]
7188
7266
  );
7189
7267
  }
7190
- assertOperatorForType(rule.operator, propDef.type, "property");
7268
+ rule.operator = assertOperatorForType(rule.operator, propDef.type, "property");
7191
7269
  assertRelativeDateValue(rule);
7192
7270
  }
7193
7271
 
7272
+ // src/filters/extract-filter-value.ts
7273
+ function extractCurrencyFilterValue(value) {
7274
+ if (typeof value === "number") return value;
7275
+ if (value !== null && typeof value === "object" && "value" in value) {
7276
+ const inner = value.value;
7277
+ return typeof inner === "number" ? inner : null;
7278
+ }
7279
+ return null;
7280
+ }
7281
+ function extractFilterValue(value) {
7282
+ if (value === null || value === void 0) return null;
7283
+ if (typeof value === "object" && "value" in value) {
7284
+ return value.value ?? null;
7285
+ }
7286
+ return value;
7287
+ }
7288
+
7194
7289
  // src/connectors/types.ts
7195
7290
  var CONNECTOR_CALLBACK_PARAM = {
7196
7291
  status: "connector_status",
@@ -7213,10 +7308,10 @@ function canonicalStringify(value) {
7213
7308
  case "object":
7214
7309
  break;
7215
7310
  default:
7216
- throw new chunkTS3PJOMZ_js.ValidationError(`Cannot canonicalize value of type ${typeof v}`, []);
7311
+ throw new chunkZBQEMIAV_js.ValidationError(`Cannot canonicalize value of type ${typeof v}`, []);
7217
7312
  }
7218
7313
  const obj = v;
7219
- if (seen.has(obj)) throw new chunkTS3PJOMZ_js.ValidationError("Cannot canonicalize circular structure", []);
7314
+ if (seen.has(obj)) throw new chunkZBQEMIAV_js.ValidationError("Cannot canonicalize circular structure", []);
7220
7315
  seen.add(obj);
7221
7316
  try {
7222
7317
  if (Array.isArray(obj)) return `[${obj.map((e) => encode(e) ?? "null").join(",")}]`;
@@ -7273,177 +7368,177 @@ Object.defineProperty(exports, "parseComputedFormula", {
7273
7368
  enumerable: true,
7274
7369
  get: function () { return chunkL4U5QEQL_js.parseComputedFormula; }
7275
7370
  });
7371
+ Object.defineProperty(exports, "createFormAttributeValidator", {
7372
+ enumerable: true,
7373
+ get: function () { return chunkNI3HCSYH_js.createFormAttributeValidator; }
7374
+ });
7375
+ Object.defineProperty(exports, "rejectUnknownAttributesOrThrow", {
7376
+ enumerable: true,
7377
+ get: function () { return chunkNI3HCSYH_js.rejectUnknownAttributesOrThrow; }
7378
+ });
7379
+ Object.defineProperty(exports, "validateDraft", {
7380
+ enumerable: true,
7381
+ get: function () { return chunkNI3HCSYH_js.validateDraft; }
7382
+ });
7383
+ Object.defineProperty(exports, "validateDraftOrThrow", {
7384
+ enumerable: true,
7385
+ get: function () { return chunkNI3HCSYH_js.validateDraftOrThrow; }
7386
+ });
7387
+ Object.defineProperty(exports, "validateObject", {
7388
+ enumerable: true,
7389
+ get: function () { return chunkNI3HCSYH_js.validateObject; }
7390
+ });
7391
+ Object.defineProperty(exports, "validateObjectOrThrow", {
7392
+ enumerable: true,
7393
+ get: function () { return chunkNI3HCSYH_js.validateObjectOrThrow; }
7394
+ });
7276
7395
  Object.defineProperty(exports, "AccessDeniedError", {
7277
7396
  enumerable: true,
7278
- get: function () { return chunkTS3PJOMZ_js.AccessDeniedError; }
7397
+ get: function () { return chunkZBQEMIAV_js.AccessDeniedError; }
7279
7398
  });
7280
7399
  Object.defineProperty(exports, "AttributeInUseError", {
7281
7400
  enumerable: true,
7282
- get: function () { return chunkTS3PJOMZ_js.AttributeInUseError; }
7401
+ get: function () { return chunkZBQEMIAV_js.AttributeInUseError; }
7283
7402
  });
7284
7403
  Object.defineProperty(exports, "AttributeNotFoundError", {
7285
7404
  enumerable: true,
7286
- get: function () { return chunkTS3PJOMZ_js.AttributeNotFoundError; }
7405
+ get: function () { return chunkZBQEMIAV_js.AttributeNotFoundError; }
7287
7406
  });
7288
7407
  Object.defineProperty(exports, "ChangeTypeNotSupportedError", {
7289
7408
  enumerable: true,
7290
- get: function () { return chunkTS3PJOMZ_js.ChangeTypeNotSupportedError; }
7409
+ get: function () { return chunkZBQEMIAV_js.ChangeTypeNotSupportedError; }
7291
7410
  });
7292
7411
  Object.defineProperty(exports, "ConcurrentModificationError", {
7293
7412
  enumerable: true,
7294
- get: function () { return chunkTS3PJOMZ_js.ConcurrentModificationError; }
7413
+ get: function () { return chunkZBQEMIAV_js.ConcurrentModificationError; }
7295
7414
  });
7296
7415
  Object.defineProperty(exports, "DestructiveSyncNotAllowedError", {
7297
7416
  enumerable: true,
7298
- get: function () { return chunkTS3PJOMZ_js.DestructiveSyncNotAllowedError; }
7417
+ get: function () { return chunkZBQEMIAV_js.DestructiveSyncNotAllowedError; }
7299
7418
  });
7300
7419
  Object.defineProperty(exports, "DuplicateError", {
7301
7420
  enumerable: true,
7302
- get: function () { return chunkTS3PJOMZ_js.DuplicateError; }
7421
+ get: function () { return chunkZBQEMIAV_js.DuplicateError; }
7303
7422
  });
7304
7423
  Object.defineProperty(exports, "ForbiddenError", {
7305
7424
  enumerable: true,
7306
- get: function () { return chunkTS3PJOMZ_js.ForbiddenError; }
7425
+ get: function () { return chunkZBQEMIAV_js.ForbiddenError; }
7307
7426
  });
7308
7427
  Object.defineProperty(exports, "MemoryNotFoundError", {
7309
7428
  enumerable: true,
7310
- get: function () { return chunkTS3PJOMZ_js.MemoryNotFoundError; }
7429
+ get: function () { return chunkZBQEMIAV_js.MemoryNotFoundError; }
7311
7430
  });
7312
7431
  Object.defineProperty(exports, "MigrationTimeoutError", {
7313
7432
  enumerable: true,
7314
- get: function () { return chunkTS3PJOMZ_js.MigrationTimeoutError; }
7433
+ get: function () { return chunkZBQEMIAV_js.MigrationTimeoutError; }
7315
7434
  });
7316
7435
  Object.defineProperty(exports, "NotFoundError", {
7317
7436
  enumerable: true,
7318
- get: function () { return chunkTS3PJOMZ_js.NotFoundError; }
7437
+ get: function () { return chunkZBQEMIAV_js.NotFoundError; }
7319
7438
  });
7320
7439
  Object.defineProperty(exports, "NotImplementedError", {
7321
7440
  enumerable: true,
7322
- get: function () { return chunkTS3PJOMZ_js.NotImplementedError; }
7441
+ get: function () { return chunkZBQEMIAV_js.NotImplementedError; }
7323
7442
  });
7324
7443
  Object.defineProperty(exports, "ObjectNotFoundError", {
7325
7444
  enumerable: true,
7326
- get: function () { return chunkTS3PJOMZ_js.ObjectNotFoundError; }
7445
+ get: function () { return chunkZBQEMIAV_js.ObjectNotFoundError; }
7327
7446
  });
7328
7447
  Object.defineProperty(exports, "ObjectReferencedError", {
7329
7448
  enumerable: true,
7330
- get: function () { return chunkTS3PJOMZ_js.ObjectReferencedError; }
7449
+ get: function () { return chunkZBQEMIAV_js.ObjectReferencedError; }
7331
7450
  });
7332
7451
  Object.defineProperty(exports, "OrphanSystemAttributeError", {
7333
7452
  enumerable: true,
7334
- get: function () { return chunkTS3PJOMZ_js.OrphanSystemAttributeError; }
7453
+ get: function () { return chunkZBQEMIAV_js.OrphanSystemAttributeError; }
7335
7454
  });
7336
7455
  Object.defineProperty(exports, "ProtectedResourceError", {
7337
7456
  enumerable: true,
7338
- get: function () { return chunkTS3PJOMZ_js.ProtectedResourceError; }
7457
+ get: function () { return chunkZBQEMIAV_js.ProtectedResourceError; }
7339
7458
  });
7340
7459
  Object.defineProperty(exports, "ProtectedRoleError", {
7341
7460
  enumerable: true,
7342
- get: function () { return chunkTS3PJOMZ_js.ProtectedRoleError; }
7461
+ get: function () { return chunkZBQEMIAV_js.ProtectedRoleError; }
7343
7462
  });
7344
7463
  Object.defineProperty(exports, "RecordNotFoundError", {
7345
7464
  enumerable: true,
7346
- get: function () { return chunkTS3PJOMZ_js.RecordNotFoundError; }
7465
+ get: function () { return chunkZBQEMIAV_js.RecordNotFoundError; }
7347
7466
  });
7348
7467
  Object.defineProperty(exports, "RecordReferencedError", {
7349
7468
  enumerable: true,
7350
- get: function () { return chunkTS3PJOMZ_js.RecordReferencedError; }
7469
+ get: function () { return chunkZBQEMIAV_js.RecordReferencedError; }
7351
7470
  });
7352
7471
  Object.defineProperty(exports, "RepositoryError", {
7353
7472
  enumerable: true,
7354
- get: function () { return chunkTS3PJOMZ_js.RepositoryError; }
7473
+ get: function () { return chunkZBQEMIAV_js.RepositoryError; }
7355
7474
  });
7356
7475
  Object.defineProperty(exports, "RoleNotFoundError", {
7357
7476
  enumerable: true,
7358
- get: function () { return chunkTS3PJOMZ_js.RoleNotFoundError; }
7477
+ get: function () { return chunkZBQEMIAV_js.RoleNotFoundError; }
7359
7478
  });
7360
7479
  Object.defineProperty(exports, "SchemaError", {
7361
7480
  enumerable: true,
7362
- get: function () { return chunkTS3PJOMZ_js.SchemaError; }
7481
+ get: function () { return chunkZBQEMIAV_js.SchemaError; }
7363
7482
  });
7364
7483
  Object.defineProperty(exports, "SchemaErrorCode", {
7365
7484
  enumerable: true,
7366
- get: function () { return chunkTS3PJOMZ_js.SchemaErrorCode; }
7485
+ get: function () { return chunkZBQEMIAV_js.SchemaErrorCode; }
7367
7486
  });
7368
7487
  Object.defineProperty(exports, "SearchBackendError", {
7369
7488
  enumerable: true,
7370
- get: function () { return chunkTS3PJOMZ_js.SearchBackendError; }
7489
+ get: function () { return chunkZBQEMIAV_js.SearchBackendError; }
7371
7490
  });
7372
7491
  Object.defineProperty(exports, "StorageError", {
7373
7492
  enumerable: true,
7374
- get: function () { return chunkTS3PJOMZ_js.StorageError; }
7493
+ get: function () { return chunkZBQEMIAV_js.StorageError; }
7375
7494
  });
7376
7495
  Object.defineProperty(exports, "SyncCascadeError", {
7377
7496
  enumerable: true,
7378
- get: function () { return chunkTS3PJOMZ_js.SyncCascadeError; }
7497
+ get: function () { return chunkZBQEMIAV_js.SyncCascadeError; }
7379
7498
  });
7380
7499
  Object.defineProperty(exports, "SyncConflictError", {
7381
7500
  enumerable: true,
7382
- get: function () { return chunkTS3PJOMZ_js.SyncConflictError; }
7501
+ get: function () { return chunkZBQEMIAV_js.SyncConflictError; }
7383
7502
  });
7384
7503
  Object.defineProperty(exports, "SyncError", {
7385
7504
  enumerable: true,
7386
- get: function () { return chunkTS3PJOMZ_js.SyncError; }
7505
+ get: function () { return chunkZBQEMIAV_js.SyncError; }
7387
7506
  });
7388
7507
  Object.defineProperty(exports, "SystemEntityImmutableError", {
7389
7508
  enumerable: true,
7390
- get: function () { return chunkTS3PJOMZ_js.SystemEntityImmutableError; }
7509
+ get: function () { return chunkZBQEMIAV_js.SystemEntityImmutableError; }
7391
7510
  });
7392
7511
  Object.defineProperty(exports, "ValidationError", {
7393
7512
  enumerable: true,
7394
- get: function () { return chunkTS3PJOMZ_js.ValidationError; }
7395
- });
7396
- Object.defineProperty(exports, "createFormAttributeValidator", {
7397
- enumerable: true,
7398
- get: function () { return chunkTS3PJOMZ_js.createFormAttributeValidator; }
7513
+ get: function () { return chunkZBQEMIAV_js.ValidationError; }
7399
7514
  });
7400
7515
  Object.defineProperty(exports, "isAttributeInUseError", {
7401
7516
  enumerable: true,
7402
- get: function () { return chunkTS3PJOMZ_js.isAttributeInUseError; }
7517
+ get: function () { return chunkZBQEMIAV_js.isAttributeInUseError; }
7403
7518
  });
7404
7519
  Object.defineProperty(exports, "isNotFoundError", {
7405
7520
  enumerable: true,
7406
- get: function () { return chunkTS3PJOMZ_js.isNotFoundError; }
7521
+ get: function () { return chunkZBQEMIAV_js.isNotFoundError; }
7407
7522
  });
7408
7523
  Object.defineProperty(exports, "isObjectReferencedError", {
7409
7524
  enumerable: true,
7410
- get: function () { return chunkTS3PJOMZ_js.isObjectReferencedError; }
7525
+ get: function () { return chunkZBQEMIAV_js.isObjectReferencedError; }
7411
7526
  });
7412
7527
  Object.defineProperty(exports, "isProtectedResourceError", {
7413
7528
  enumerable: true,
7414
- get: function () { return chunkTS3PJOMZ_js.isProtectedResourceError; }
7529
+ get: function () { return chunkZBQEMIAV_js.isProtectedResourceError; }
7415
7530
  });
7416
7531
  Object.defineProperty(exports, "isRecordReferencedError", {
7417
7532
  enumerable: true,
7418
- get: function () { return chunkTS3PJOMZ_js.isRecordReferencedError; }
7533
+ get: function () { return chunkZBQEMIAV_js.isRecordReferencedError; }
7419
7534
  });
7420
7535
  Object.defineProperty(exports, "isSchemaError", {
7421
7536
  enumerable: true,
7422
- get: function () { return chunkTS3PJOMZ_js.isSchemaError; }
7537
+ get: function () { return chunkZBQEMIAV_js.isSchemaError; }
7423
7538
  });
7424
7539
  Object.defineProperty(exports, "isValidationError", {
7425
7540
  enumerable: true,
7426
- get: function () { return chunkTS3PJOMZ_js.isValidationError; }
7427
- });
7428
- Object.defineProperty(exports, "rejectUnknownAttributesOrThrow", {
7429
- enumerable: true,
7430
- get: function () { return chunkTS3PJOMZ_js.rejectUnknownAttributesOrThrow; }
7431
- });
7432
- Object.defineProperty(exports, "validateDraft", {
7433
- enumerable: true,
7434
- get: function () { return chunkTS3PJOMZ_js.validateDraft; }
7435
- });
7436
- Object.defineProperty(exports, "validateDraftOrThrow", {
7437
- enumerable: true,
7438
- get: function () { return chunkTS3PJOMZ_js.validateDraftOrThrow; }
7439
- });
7440
- Object.defineProperty(exports, "validateObject", {
7441
- enumerable: true,
7442
- get: function () { return chunkTS3PJOMZ_js.validateObject; }
7443
- });
7444
- Object.defineProperty(exports, "validateObjectOrThrow", {
7445
- enumerable: true,
7446
- get: function () { return chunkTS3PJOMZ_js.validateObjectOrThrow; }
7541
+ get: function () { return chunkZBQEMIAV_js.isValidationError; }
7447
7542
  });
7448
7543
  Object.defineProperty(exports, "DEFAULT_VALIDATION_MESSAGES", {
7449
7544
  enumerable: true,
@@ -7459,7 +7554,6 @@ exports.ALL_SYSTEM_RESOURCES = ALL_SYSTEM_RESOURCES;
7459
7554
  exports.ATTRIBUTE_FILTER_OPERATORS = ATTRIBUTE_FILTER_OPERATORS;
7460
7555
  exports.AUDIT_ACTIONS = AUDIT_ACTIONS;
7461
7556
  exports.AUDIT_RESOURCE_TYPES = AUDIT_RESOURCE_TYPES;
7462
- exports.AUTOFILL_ELIGIBLE_TYPES = AUTOFILL_ELIGIBLE_TYPES;
7463
7557
  exports.ActivityTabConfig = ActivityTabConfig;
7464
7558
  exports.AgentBuilder = AgentBuilder;
7465
7559
  exports.BEHAVIOR_PROPERTIES = BEHAVIOR_PROPERTIES;
@@ -7468,6 +7562,7 @@ exports.COMPUTED_FUNCTIONS = COMPUTED_FUNCTIONS;
7468
7562
  exports.COMPUTED_FUNCTION_METADATA = COMPUTED_FUNCTION_METADATA;
7469
7563
  exports.COMPUTED_FUNCTION_NAMES = COMPUTED_FUNCTION_NAMES;
7470
7564
  exports.CONNECTOR_CALLBACK_PARAM = CONNECTOR_CALLBACK_PARAM;
7565
+ exports.CROSS_TYPE_CONVERSIONS = CROSS_TYPE_CONVERSIONS;
7471
7566
  exports.ComputedFormulaCompileError = ComputedFormulaCompileError;
7472
7567
  exports.CustomTabConfig = CustomTabConfig;
7473
7568
  exports.DB_COLUMN_FIELDS = DB_COLUMN_FIELDS;
@@ -7526,6 +7621,7 @@ exports.SKILL_LIST_VIEW = SKILL_LIST_VIEW;
7526
7621
  exports.SKILL_OBJECT = SKILL_OBJECT;
7527
7622
  exports.SKILL_VIEW = SKILL_VIEW;
7528
7623
  exports.STANDARD_SCHEMA_VENDOR = STANDARD_SCHEMA_VENDOR;
7624
+ exports.SYNONYM_ALIASES = SYNONYM_ALIASES;
7529
7625
  exports.SYSTEM_ATTRIBUTES = SYSTEM_ATTRIBUTES;
7530
7626
  exports.SYSTEM_ATTRIBUTE_I18N_KEYS = SYSTEM_ATTRIBUTE_I18N_KEYS;
7531
7627
  exports.SYSTEM_FIELD_NAMES = SYSTEM_FIELD_NAMES;
@@ -7563,6 +7659,8 @@ exports.evaluateComputedFormula = evaluateComputedFormula;
7563
7659
  exports.evaluateComputedFormulaWithResult = evaluateComputedFormulaWithResult;
7564
7660
  exports.evaluateFilterState = evaluateFilterState;
7565
7661
  exports.extractAttributeNames = extractAttributeNames;
7662
+ exports.extractCurrencyFilterValue = extractCurrencyFilterValue;
7663
+ exports.extractFilterValue = extractFilterValue;
7566
7664
  exports.extractValueRefs = extractValueRefs;
7567
7665
  exports.flagRegistry = flagRegistry;
7568
7666
  exports.form = form;
@@ -7634,6 +7732,7 @@ exports.matchesMime = matchesMime;
7634
7732
  exports.multiselect = multiselect;
7635
7733
  exports.normalizeDateValue = normalizeDateValue;
7636
7734
  exports.normalizeForEdgeRpc = normalizeForEdgeRpc;
7735
+ exports.normalizeOperator = normalizeOperator;
7637
7736
  exports.now = now;
7638
7737
  exports.number = number;
7639
7738
  exports.numberFlag = numberFlag;