@stndrds/schema 1.0.0-alpha.258 → 1.0.0-alpha.260

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.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
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 chunk44EVNHSR_js = require('./chunk-44EVNHSR.js');
6
+ var chunkTS3PJOMZ_js = require('./chunk-TS3PJOMZ.js');
7
7
  require('./chunk-SI34M4IC.js');
8
8
  require('./chunk-YIP5FJ5H.js');
9
9
  require('./chunk-QAF3HNKQ.js');
@@ -1262,36 +1262,20 @@ var DEFAULT_ROLE_PERMISSIONS = {
1262
1262
  function isDefaultRole(roleName) {
1263
1263
  return Object.values(DEFAULT_ROLES).includes(roleName);
1264
1264
  }
1265
-
1266
- // src/standard-schema.ts
1267
- var STANDARD_SCHEMA_VENDOR = "@stndrds/schema";
1268
- function createStandardSchemaProps(zodSchema) {
1269
- return {
1270
- version: 1,
1271
- vendor: STANDARD_SCHEMA_VENDOR,
1272
- validate: (value) => {
1273
- const result = zodSchema.safeParse(value);
1274
- if (result.success) {
1275
- return { value: result.data };
1276
- }
1277
- return {
1278
- issues: result.error.issues.map((issue) => ({
1279
- message: issue.message,
1280
- // Zod path segments are string | number which are valid PropertyKey
1281
- // for Standard Schema v1 (no conversion needed)
1282
- path: issue.path
1283
- }))
1284
- };
1285
- }
1286
- };
1287
- }
1288
- function isStandardSchema(obj) {
1289
- return typeof obj === "object" && obj !== null && "~standard" in obj && typeof obj["~standard"] === "object" && obj["~standard"].version === 1;
1290
- }
1291
1265
  var VALID_ICONS = new Set(constants.ICONS);
1292
1266
  var ATTRIBUTE_NAME_REGEX = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
1293
1267
  var MAX_NAME_LENGTH = 63;
1294
1268
  var MAX_LABEL_LENGTH = 128;
1269
+ function assertUniqueBy(items, getKey, buildError) {
1270
+ const seen = /* @__PURE__ */ new Set();
1271
+ for (const item of items) {
1272
+ const key = getKey(item);
1273
+ if (seen.has(key)) {
1274
+ throw buildError(key);
1275
+ }
1276
+ seen.add(key);
1277
+ }
1278
+ }
1295
1279
  function validateAttributeName(name) {
1296
1280
  if (!name || name.length === 0) {
1297
1281
  throw new Error("[AttributeBuilder] Attribute name cannot be empty");
@@ -1367,6 +1351,136 @@ function validateOptions(attributeName, options) {
1367
1351
  }
1368
1352
  }
1369
1353
 
1354
+ // src/builders/agent-builder.ts
1355
+ var DEFAULT_AGENT_EXECUTION_CONFIG = {
1356
+ maxConcurrentRuns: 3,
1357
+ retryPolicy: { maxRetries: 3, backoffMs: 1e3, backoffMultiplier: 2 },
1358
+ timeoutMs: 3e5
1359
+ };
1360
+ var AgentBuilder = class {
1361
+ constructor(config) {
1362
+ if (!config.name || config.name.trim().length === 0) {
1363
+ throw new chunkTS3PJOMZ_js.ValidationError("Agent name is required", []);
1364
+ }
1365
+ this.bp = { name: config.name, system: true, triggers: [] };
1366
+ }
1367
+ description(value) {
1368
+ this.bp.description = value;
1369
+ return this;
1370
+ }
1371
+ icon(value) {
1372
+ this.bp.icon = value;
1373
+ return this;
1374
+ }
1375
+ systemPrompt(value) {
1376
+ this.bp.systemPrompt = value;
1377
+ return this;
1378
+ }
1379
+ model(provider, model, options) {
1380
+ this.bp.model = { provider, model, ...options };
1381
+ return this;
1382
+ }
1383
+ tools(names) {
1384
+ this.bp.tools = [...names];
1385
+ return this;
1386
+ }
1387
+ /** Cron schedule; `enabled` defaults to true. */
1388
+ schedule(value) {
1389
+ this.bp.schedule = { ...value, enabled: value.enabled ?? true };
1390
+ return this;
1391
+ }
1392
+ /**
1393
+ * Partial execution config, shallow-merged over the current config
1394
+ * (defaulting to {@link DEFAULT_AGENT_EXECUTION_CONFIG} on the first call).
1395
+ *
1396
+ * The merge is shallow at the top level only: passing a partial
1397
+ * `retryPolicy` REPLACES the whole `retryPolicy` object rather than
1398
+ * merging its individual fields. Pass a complete `retryPolicy` if you
1399
+ * only want to override one of its fields.
1400
+ */
1401
+ config(value) {
1402
+ this.bp.config = { ...this.bp.config ?? DEFAULT_AGENT_EXECUTION_CONFIG, ...value };
1403
+ return this;
1404
+ }
1405
+ delegation(value) {
1406
+ Object.assign(this.bp, value);
1407
+ return this;
1408
+ }
1409
+ /**
1410
+ * Declare a trigger. `name` is the stable identity the boot sync uses to
1411
+ * reconcile trigger rows; `enabled` defaults to true.
1412
+ */
1413
+ trigger(name, eventType, options) {
1414
+ this.bp.triggers.push({ name, eventType, ...options, enabled: options?.enabled ?? true });
1415
+ return this;
1416
+ }
1417
+ /**
1418
+ * Marks this agent as runtime-only (system: false).
1419
+ *
1420
+ * ⚠️ ADVANCED USE ONLY. In production, agents declared in code are
1421
+ * automatically system:true (immutable at runtime). Use .runtime() ONLY for:
1422
+ * - Test fixtures (`*.test.ts`, `tests/`)
1423
+ * - Seed data (`seeds/`)
1424
+ * - Dev fixtures (`fixtures/`)
1425
+ *
1426
+ * Calling .runtime() in production code creates an agent that:
1427
+ * - Can be modified or deleted by end users via the admin UI
1428
+ * - Will be picked up by `standards diff` as runtime drift
1429
+ */
1430
+ runtime() {
1431
+ this.bp.system = false;
1432
+ return this;
1433
+ }
1434
+ build() {
1435
+ if (!this.bp.systemPrompt) {
1436
+ throw new chunkTS3PJOMZ_js.ValidationError(`Agent "${this.bp.name}": systemPrompt is required`, []);
1437
+ }
1438
+ if (!this.bp.model) {
1439
+ throw new chunkTS3PJOMZ_js.ValidationError(`Agent "${this.bp.name}": model is required`, []);
1440
+ }
1441
+ assertUniqueBy(
1442
+ this.bp.triggers,
1443
+ (t) => t.name,
1444
+ (name) => new chunkTS3PJOMZ_js.ValidationError(`Agent "${this.bp.name}": duplicate trigger name "${name}"`, [])
1445
+ );
1446
+ return {
1447
+ ...this.bp,
1448
+ config: this.bp.config ?? DEFAULT_AGENT_EXECUTION_CONFIG,
1449
+ systemPrompt: this.bp.systemPrompt,
1450
+ model: this.bp.model
1451
+ };
1452
+ }
1453
+ };
1454
+ function agent(config) {
1455
+ return new AgentBuilder(config);
1456
+ }
1457
+
1458
+ // src/standard-schema.ts
1459
+ var STANDARD_SCHEMA_VENDOR = "@stndrds/schema";
1460
+ function createStandardSchemaProps(zodSchema) {
1461
+ return {
1462
+ version: 1,
1463
+ vendor: STANDARD_SCHEMA_VENDOR,
1464
+ validate: (value) => {
1465
+ const result = zodSchema.safeParse(value);
1466
+ if (result.success) {
1467
+ return { value: result.data };
1468
+ }
1469
+ return {
1470
+ issues: result.error.issues.map((issue) => ({
1471
+ message: issue.message,
1472
+ // Zod path segments are string | number which are valid PropertyKey
1473
+ // for Standard Schema v1 (no conversion needed)
1474
+ path: issue.path
1475
+ }))
1476
+ };
1477
+ }
1478
+ };
1479
+ }
1480
+ function isStandardSchema(obj) {
1481
+ return typeof obj === "object" && obj !== null && "~standard" in obj && typeof obj["~standard"] === "object" && obj["~standard"].version === 1;
1482
+ }
1483
+
1370
1484
  // src/builders/attribute-builders.ts
1371
1485
  function asMutableArray(arr) {
1372
1486
  return arr;
@@ -1381,7 +1495,7 @@ var BaseAttributeBuilder = class {
1381
1495
  * @see https://standardschema.dev/
1382
1496
  */
1383
1497
  get "~standard"() {
1384
- const zodSchema = chunk44EVNHSR_js.createAttributeValidator(this.build());
1498
+ const zodSchema = chunkTS3PJOMZ_js.createAttributeValidator(this.build());
1385
1499
  return createStandardSchemaProps(zodSchema);
1386
1500
  }
1387
1501
  constructor(type, name, label) {
@@ -2133,9 +2247,9 @@ var RollupAttributeBuilder = class extends BaseAttributeBuilder {
2133
2247
  if (fn === "original" && targetType !== void 0 && targetType !== "select" && targetType !== "status" && targetType !== "multiselect") {
2134
2248
  const relation2 = this.attr.relationAttribute ?? "relation";
2135
2249
  const target = this.attr.targetAttribute ?? "field";
2136
- throw new chunk44EVNHSR_js.SchemaError(
2250
+ throw new chunkTS3PJOMZ_js.SchemaError(
2137
2251
  `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}").`,
2138
- chunk44EVNHSR_js.SchemaErrorCode.VALIDATION_FAILED
2252
+ chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2139
2253
  );
2140
2254
  }
2141
2255
  return super.build();
@@ -2645,7 +2759,7 @@ var ObjectBuilder = class {
2645
2759
  * @see https://standardschema.dev/
2646
2760
  */
2647
2761
  get "~standard"() {
2648
- const zodSchema = chunk44EVNHSR_js.createObjectValidator(this.build());
2762
+ const zodSchema = chunkTS3PJOMZ_js.createObjectValidator(this.build());
2649
2763
  return createStandardSchemaProps(zodSchema);
2650
2764
  }
2651
2765
  /**
@@ -2859,26 +2973,26 @@ var ObjectBuilder = class {
2859
2973
  throw new Error("[ObjectBuilder] Missing required field: label");
2860
2974
  }
2861
2975
  if (!this._labelExpression) {
2862
- throw new chunk44EVNHSR_js.SchemaError(
2976
+ throw new chunkTS3PJOMZ_js.SchemaError(
2863
2977
  `Object "${this.obj.name}" must have a labelExpression. The labelExpression defines how records are displayed in lists and relations (e.g. "{{ name }}").`,
2864
- chunk44EVNHSR_js.SchemaErrorCode.VALIDATION_FAILED
2978
+ chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2865
2979
  );
2866
2980
  }
2867
2981
  const labelResult = labelExpressionSchema.safeParse(this._labelExpression);
2868
2982
  if (!labelResult.success) {
2869
2983
  const errorMsg = labelResult.error.issues[0]?.message ?? "Invalid labelExpression";
2870
- throw new chunk44EVNHSR_js.SchemaError(
2984
+ throw new chunkTS3PJOMZ_js.SchemaError(
2871
2985
  `Invalid labelExpression for "${this.obj.name}": ${errorMsg}`,
2872
- chunk44EVNHSR_js.SchemaErrorCode.VALIDATION_FAILED
2986
+ chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2873
2987
  );
2874
2988
  }
2875
2989
  if (this._embeddingExpression !== void 0) {
2876
2990
  const embeddingResult = labelExpressionSchema.safeParse(this._embeddingExpression);
2877
2991
  if (!embeddingResult.success) {
2878
2992
  const errorMsg = embeddingResult.error.issues[0]?.message ?? "Invalid embeddingExpression";
2879
- throw new chunk44EVNHSR_js.SchemaError(
2993
+ throw new chunkTS3PJOMZ_js.SchemaError(
2880
2994
  `Invalid embeddingExpression for "${this.obj.name}": ${errorMsg}`,
2881
- chunk44EVNHSR_js.SchemaErrorCode.VALIDATION_FAILED
2995
+ chunkTS3PJOMZ_js.SchemaErrorCode.VALIDATION_FAILED
2882
2996
  );
2883
2997
  }
2884
2998
  }
@@ -2919,7 +3033,7 @@ var ObjectBuilder = class {
2919
3033
  objectNameSchema.parse(name);
2920
3034
  } catch (error) {
2921
3035
  if (error instanceof z3__default.default.ZodError) {
2922
- throw new chunk44EVNHSR_js.SchemaError(error.issues[0].message, chunk44EVNHSR_js.SchemaErrorCode.INVALID_OBJECT_NAME);
3036
+ throw new chunkTS3PJOMZ_js.SchemaError(error.issues[0].message, chunkTS3PJOMZ_js.SchemaErrorCode.INVALID_OBJECT_NAME);
2923
3037
  }
2924
3038
  throw error;
2925
3039
  }
@@ -2930,7 +3044,7 @@ function object(config) {
2930
3044
  }
2931
3045
  function validatePresetStructure(presetId, nodes, depth) {
2932
3046
  const fail = (message, detail) => {
2933
- throw new chunk44EVNHSR_js.ValidationError(message, [
3047
+ throw new chunkTS3PJOMZ_js.ValidationError(message, [
2934
3048
  { path: ["documentLayout", "presets", presetId], message: detail }
2935
3049
  ]);
2936
3050
  };
@@ -3106,19 +3220,6 @@ var RelationGroupBuilder = class {
3106
3220
  return this.data;
3107
3221
  }
3108
3222
  };
3109
- function assertViewVersion(version) {
3110
- if (version < 1) throw new Error("View version must be >= 1");
3111
- }
3112
- function assertUniqueBy(items, getKey, buildError) {
3113
- const seen = /* @__PURE__ */ new Set();
3114
- for (const item of items) {
3115
- const key = getKey(item);
3116
- if (seen.has(key)) {
3117
- throw new Error(buildError(key));
3118
- }
3119
- seen.add(key);
3120
- }
3121
- }
3122
3223
  function validateViewName(name, builderName, examples) {
3123
3224
  const viewNameSchema = z3.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-]*$/, {
3124
3225
  message: `Invalid view name format.
@@ -3150,15 +3251,23 @@ var TableTabConfig = class {
3150
3251
  return this;
3151
3252
  }
3152
3253
  /**
3153
- * Allow creating new records
3254
+ * Allow creating new records.
3255
+ *
3256
+ * @param options.mode - Creation behavior when clicking "+": "redirect"
3257
+ * (navigate to detail), "inline" (empty row), or "peek" (instant-create a
3258
+ * draft and open it in the record stack side panel).
3259
+ * @example .create() or .create({ mode: "peek" })
3154
3260
  */
3155
- create() {
3261
+ create(options) {
3156
3262
  this.tabData.allowCreate = true;
3263
+ if (options?.mode) {
3264
+ this.tabData.createMode = options.mode;
3265
+ }
3157
3266
  return this;
3158
3267
  }
3159
3268
  /**
3160
3269
  * Set creation behavior when clicking "+"
3161
- * @param mode - "redirect" (navigate to detail), "inline" (empty row), or "peek" (instant-create a draft and open it in the record stack side panel)
3270
+ * @deprecated Use `create({ mode })` instead.
3162
3271
  * @example .createMode("inline") or .createMode("peek")
3163
3272
  */
3164
3273
  createMode(mode) {
@@ -3180,7 +3289,8 @@ var TableTabConfig = class {
3180
3289
  return this;
3181
3290
  }
3182
3291
  /**
3183
- * Enable all CRUD operations (create, edit, delete)
3292
+ * Sugar for `create().edit().delete()`. Prefer the explicit methods —
3293
+ * creation options live on `create({ mode })`.
3184
3294
  */
3185
3295
  crud() {
3186
3296
  this.tabData.allowCreate = true;
@@ -3584,7 +3694,6 @@ var TabBuilder = class {
3584
3694
  };
3585
3695
  var DetailViewBuilder = class {
3586
3696
  constructor(name, label) {
3587
- this._version = 1;
3588
3697
  validateViewName(name, "DetailViewBuilder", {
3589
3698
  valid: "'detail', 'list-view', 'company-detail'",
3590
3699
  invalid: "'Detail', 'listView', 'list_view'"
@@ -3631,17 +3740,6 @@ var DetailViewBuilder = class {
3631
3740
  this.data.metadata = value;
3632
3741
  return this;
3633
3742
  }
3634
- /**
3635
- * Set the schema version for this view definition.
3636
- * Increment when making breaking changes to force client updates.
3637
- * @param v - Version number (must be >= 1)
3638
- * @default 1
3639
- */
3640
- version(v) {
3641
- assertViewVersion(v);
3642
- this._version = v;
3643
- return this;
3644
- }
3645
3743
  /**
3646
3744
  * Configure a side panel with flat attribute fields displayed alongside tab content.
3647
3745
  *
@@ -3684,7 +3782,7 @@ var DetailViewBuilder = class {
3684
3782
  assertUniqueBy(
3685
3783
  this.data.tabs,
3686
3784
  (tab) => tab.name,
3687
- (name) => `[DetailViewBuilder] Duplicate tab name "${name}"`
3785
+ (name) => new Error(`[DetailViewBuilder] Duplicate tab name "${name}"`)
3688
3786
  );
3689
3787
  const config = {
3690
3788
  tabs: this.data.tabs,
@@ -3699,8 +3797,7 @@ var DetailViewBuilder = class {
3699
3797
  type: "detail",
3700
3798
  config,
3701
3799
  default: this.data.default,
3702
- metadata: this.data.metadata,
3703
- schema_version: this._version
3800
+ metadata: this.data.metadata
3704
3801
  };
3705
3802
  }
3706
3803
  };
@@ -3709,7 +3806,6 @@ function detailView(name, label) {
3709
3806
  }
3710
3807
  var ListViewBuilder = class {
3711
3808
  constructor(name, label) {
3712
- this._version = 1;
3713
3809
  validateViewName(name, "ListViewBuilder", {
3714
3810
  valid: "'default', 'list-view', 'active-contacts'",
3715
3811
  invalid: "'Default', 'listView', 'list_view'"
@@ -3756,17 +3852,6 @@ var ListViewBuilder = class {
3756
3852
  this.data.metadata = value;
3757
3853
  return this;
3758
3854
  }
3759
- /**
3760
- * Set the schema version for this view definition.
3761
- * Increment when making breaking changes to force client updates.
3762
- * @param v - Version number (must be >= 1)
3763
- * @default 1
3764
- */
3765
- version(v) {
3766
- assertViewVersion(v);
3767
- this._version = v;
3768
- return this;
3769
- }
3770
3855
  /**
3771
3856
  * Set base filters applied to ALL tabs (scoping, tenant, etc.)
3772
3857
  * @example .baseFilter({ combinator: "and", rules: [{ attribute: "tenant", operator: "is", value: "acme" }] })
@@ -3808,7 +3893,7 @@ var ListViewBuilder = class {
3808
3893
  assertUniqueBy(
3809
3894
  this.data.tabs,
3810
3895
  (tab) => tab.id,
3811
- (id) => `[ListViewBuilder] Duplicate tab id "${id}"`
3896
+ (id) => new Error(`[ListViewBuilder] Duplicate tab id "${id}"`)
3812
3897
  );
3813
3898
  const defaultTabs = this.data.tabs.filter((t) => t.default);
3814
3899
  if (defaultTabs.length > 1) {
@@ -3860,8 +3945,7 @@ var ListViewBuilder = class {
3860
3945
  type: "list",
3861
3946
  config,
3862
3947
  default: this.data.default,
3863
- metadata: this.data.metadata,
3864
- schema_version: this._version
3948
+ metadata: this.data.metadata
3865
3949
  };
3866
3950
  }
3867
3951
  };
@@ -4195,7 +4279,7 @@ function jsonFlag(name, defaultValue) {
4195
4279
 
4196
4280
  // src/feature-flags/flag-registry.ts
4197
4281
  function duplicateFlagError(name) {
4198
- return new chunk44EVNHSR_js.DuplicateError(
4282
+ return new chunkTS3PJOMZ_js.DuplicateError(
4199
4283
  "feature flag",
4200
4284
  name,
4201
4285
  `Flag "${name}" is already registered. Each flag name must be unique.`
@@ -4273,7 +4357,7 @@ var FlagRegistry = class {
4273
4357
  getOrThrow(name) {
4274
4358
  const flag = this.get(name);
4275
4359
  if (!flag) {
4276
- throw new chunk44EVNHSR_js.NotFoundError(
4360
+ throw new chunkTS3PJOMZ_js.NotFoundError(
4277
4361
  "Feature flag",
4278
4362
  name,
4279
4363
  void 0,
@@ -4430,19 +4514,19 @@ var FlagService = class {
4430
4514
  */
4431
4515
  async setOverride(flagName, level, value, options = {}) {
4432
4516
  if (!this.repository) {
4433
- throw new chunk44EVNHSR_js.SchemaError(
4517
+ throw new chunkTS3PJOMZ_js.SchemaError(
4434
4518
  "Cannot set override: no FeatureFlagsRepository configured. Add featureFlags to your DatabaseAdapter to enable runtime overrides.",
4435
- chunk44EVNHSR_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4519
+ chunkTS3PJOMZ_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4436
4520
  );
4437
4521
  }
4438
4522
  const flag = this.registry.get(flagName);
4439
4523
  if (flag && !flag.allowedLevels.includes(level)) {
4440
4524
  const message = `Flag "${flagName}" does not allow ${level}-level overrides. Allowed levels: ${flag.allowedLevels.join(", ")}`;
4441
- throw new chunk44EVNHSR_js.ValidationError(message, [{ path: ["level"], message }]);
4525
+ throw new chunkTS3PJOMZ_js.ValidationError(message, [{ path: ["level"], message }]);
4442
4526
  }
4443
4527
  if (flag?.system) {
4444
4528
  const message = `Flag "${flagName}" is a system flag and cannot be overridden via API.`;
4445
- throw new chunk44EVNHSR_js.ValidationError(message, [{ path: ["flagName"], message }]);
4529
+ throw new chunkTS3PJOMZ_js.ValidationError(message, [{ path: ["flagName"], message }]);
4446
4530
  }
4447
4531
  await this.repository.setOverride({
4448
4532
  flagName,
@@ -4462,9 +4546,9 @@ var FlagService = class {
4462
4546
  */
4463
4547
  async deleteOverride(flagName, level, targetId) {
4464
4548
  if (!this.repository) {
4465
- throw new chunk44EVNHSR_js.SchemaError(
4549
+ throw new chunkTS3PJOMZ_js.SchemaError(
4466
4550
  "Cannot delete override: no FeatureFlagsRepository configured.",
4467
- chunk44EVNHSR_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4551
+ chunkTS3PJOMZ_js.SchemaErrorCode.CONFIGURATION_REQUIRED
4468
4552
  );
4469
4553
  }
4470
4554
  await this.repository.deleteOverride(flagName, level, targetId);
@@ -4601,7 +4685,7 @@ var NativeObjectRegistryClass = class {
4601
4685
  if (!object2.system) {
4602
4686
  const message = `[NativeObjectRegistry] Cannot register object "${object2.name}" (id: ${object2.id}): missing system flag.
4603
4687
  Native objects must have system=true. Did you call .runtime() on the builder? Remove that call \u2014 objects are system:true by default.`;
4604
- throw new chunk44EVNHSR_js.ValidationError(message, []);
4688
+ throw new chunkTS3PJOMZ_js.ValidationError(message, []);
4605
4689
  }
4606
4690
  if (this.objects.has(object2.name)) {
4607
4691
  const existing = this.objects.get(object2.name);
@@ -4609,7 +4693,7 @@ Native objects must have system=true. Did you call .runtime() on the builder? Re
4609
4693
  - Existing: "${existing?.label}" (id: ${existing?.id})
4610
4694
  - New: "${object2.label}" (id: ${object2.id})
4611
4695
  Please use unique names for each native object.`;
4612
- throw new chunk44EVNHSR_js.DuplicateError("object", object2.name, message);
4696
+ throw new chunkTS3PJOMZ_js.DuplicateError("object", object2.name, message);
4613
4697
  }
4614
4698
  this.objects.set(object2.name, cloneObjectDefinition(object2));
4615
4699
  }
@@ -4641,7 +4725,7 @@ Please use unique names for each native object.`;
4641
4725
  if (!object2) {
4642
4726
  const message = `[NativeObjectRegistry] Native object "${name}" not found.
4643
4727
  Available objects: ${this.listNames().join(", ")}`;
4644
- throw new chunk44EVNHSR_js.NotFoundError("Native object", name, chunk44EVNHSR_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4728
+ throw new chunkTS3PJOMZ_js.NotFoundError("Native object", name, chunkTS3PJOMZ_js.SchemaErrorCode.OBJECT_NOT_FOUND, message);
4645
4729
  }
4646
4730
  return object2;
4647
4731
  }
@@ -4702,11 +4786,45 @@ Available objects: ${this.listNames().join(", ")}`;
4702
4786
  }
4703
4787
  };
4704
4788
  var registry = new NativeObjectRegistryClass();
4789
+ var SKILL_CONTENT_TEMPLATE = `## Overview
4790
+
4791
+ Describe in one or two sentences what this skill does and the outcome it produces. The agent reads this page when it uses the skill \u2014 write instructions for the agent, not documentation for people.
4792
+
4793
+ ## When to use
4794
+
4795
+ List the situations or requests that should trigger this skill. Concrete phrases beat vague categories.
4796
+
4797
+ - When asked to \u2026
4798
+ - When a record of \u2026 needs \u2026
4799
+
4800
+ ## Instructions
4801
+
4802
+ Write imperative, step-by-step directions. Name the exact objects, documents, or tools involved \u2014 the agent follows these literally.
4803
+
4804
+ 1. First, \u2026
4805
+ 2. Then, \u2026
4806
+ 3. Finally, \u2026
4807
+
4808
+ ## Examples
4809
+
4810
+ Show at least one concrete example of the skill applied well.
4811
+
4812
+ **Request:** "\u2026"
4813
+
4814
+ **Expected result:** \u2026
4815
+
4816
+ ## What to avoid
4817
+
4818
+ - Never \u2026
4819
+ - Do not \u2026
4820
+ `;
4705
4821
  var SKILL_OBJECT = object({ name: "skill", label: "Skill" }).sealed().icon("sparkles").order(Number.MAX_SAFE_INTEGER).pluralLabel("Skills").labelExpression("{{ name }}").embeddingExpression("{{ name }}\n{{ description }}\n{{ content }}").attribute(text({ name: "name", label: "Name" }).maxLength(constants.SKILL_NAME_MAX_LENGTH).required()).attribute(
4706
- text({ name: "description", label: "Description" }).multiline().maxLength(constants.SKILL_DESCRIPTION_MAX_LENGTH).required()
4707
- ).attribute(richtext({ name: "content", label: "Content" })).build();
4708
- var SKILL_VIEW = detailView("skill-detail", "Skill").for("skill").version(2).default().sidePanel({ attributes: ["name", "description"] }).tab("content", "Content").richtext("content").titleAttribute("name").done().build();
4709
- var SKILL_LIST_VIEW = listView("skill-list", "Skills").for("skill").version(2).default().tab("all", "All").table().columns("name", "description").sort("name", "asc").build();
4822
+ text({ name: "description", label: "Description" }).multiline().maxLength(constants.SKILL_DESCRIPTION_MAX_LENGTH).required().placeholder(
4823
+ '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
+ )
4825
+ ).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();
4827
+ var SKILL_LIST_VIEW = listView("skill-list", "Skills").for("skill").default().tab("all", "All").table().columns("name", "description").sort("name", "asc").build();
4710
4828
  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(
4711
4829
  text({ name: "description", label: "Description" }).multiline().maxLength(constants.MEMORY_DESCRIPTION_MAX_LENGTH).required()
4712
4830
  ).attribute(text({ name: "content", label: "Content" }).multiline()).attribute(
@@ -4746,7 +4864,7 @@ var ViewRegistry = class {
4746
4864
  const key = this.makeKey(view.object, view.name, view.type);
4747
4865
  if (this.views.has(key)) {
4748
4866
  const message = `[ViewRegistry] Duplicate view: "${view.name}" (${view.type}) for object "${view.object}"`;
4749
- throw new chunk44EVNHSR_js.DuplicateError("view", key, message);
4867
+ throw new chunkTS3PJOMZ_js.DuplicateError("view", key, message);
4750
4868
  }
4751
4869
  const storedView = cloneViewDefinition(view);
4752
4870
  this.views.set(key, storedView);
@@ -4791,7 +4909,7 @@ var ViewRegistry = class {
4791
4909
  const availableNames = available.map((v) => `${v.name} (${v.type})`).join(", ") || "(none)";
4792
4910
  const message = `[ViewRegistry] View "${viewName}" not found for object "${objectName}".
4793
4911
  Available views: ${availableNames}`;
4794
- throw new chunk44EVNHSR_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4912
+ throw new chunkTS3PJOMZ_js.NotFoundError("View", `${objectName}:${viewName}`, void 0, message);
4795
4913
  }
4796
4914
  return view;
4797
4915
  }
@@ -4961,8 +5079,7 @@ function generateDefaultDetailView(object2, options = {}) {
4961
5079
  object: object2.name,
4962
5080
  type: "detail",
4963
5081
  config,
4964
- default: true,
4965
- schema_version: 1
5082
+ default: true
4966
5083
  };
4967
5084
  }
4968
5085
  function generateDefaultListView(object2, options = {}) {
@@ -4989,8 +5106,7 @@ function generateDefaultListView(object2, options = {}) {
4989
5106
  object: object2.name,
4990
5107
  type: "list",
4991
5108
  config,
4992
- default: true,
4993
- schema_version: 1
5109
+ default: true
4994
5110
  };
4995
5111
  }
4996
5112
 
@@ -5099,7 +5215,7 @@ var FormRegistry = class {
5099
5215
  const forms = Array.isArray(formOrForms) ? formOrForms : [formOrForms];
5100
5216
  for (const f of forms) {
5101
5217
  if (this.forms.has(f.name)) {
5102
- throw new chunk44EVNHSR_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
5218
+ throw new chunkTS3PJOMZ_js.DuplicateError("form", f.name, `[FormRegistry] Duplicate form: "${f.name}"`);
5103
5219
  }
5104
5220
  this.forms.set(f.name, cloneFormDefinition(f));
5105
5221
  }
@@ -6986,7 +7102,7 @@ function assertOperatorForType(operator, type, context) {
6986
7102
  if (!ops?.includes(operator)) {
6987
7103
  const validList = ops?.length ? ops.join(", ") : "(no operators registered for this type)";
6988
7104
  const summary = `Operator "${operator}" is not valid for ${context} type "${type}". Valid operators: ${validList}.`;
6989
- throw new chunk44EVNHSR_js.ValidationError(summary, [
7105
+ throw new chunkTS3PJOMZ_js.ValidationError(summary, [
6990
7106
  {
6991
7107
  path: ["operator"],
6992
7108
  message: summary
@@ -7002,7 +7118,7 @@ function assertRelativeDateValue(rule) {
7002
7118
  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);
7003
7119
  if (!valid) {
7004
7120
  const m = `Operator "is_within" requires a relative-date value { amount: positive number, unit: days|weeks|months|years, direction: past|future }`;
7005
- throw new chunk44EVNHSR_js.ValidationError(m, [{ path: ["value"], message: m }]);
7121
+ throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["value"], message: m }]);
7006
7122
  }
7007
7123
  }
7008
7124
  function assertDynamicValueForAttribute(rule, attrType) {
@@ -7010,34 +7126,34 @@ function assertDynamicValueForAttribute(rule, attrType) {
7010
7126
  const v = rule.value;
7011
7127
  if (v.dynamic === "actor" && attrType !== "user") {
7012
7128
  const m = `actor token (@me) is only valid on user attributes, not "${attrType}"`;
7013
- throw new chunk44EVNHSR_js.ValidationError(m, [{ path: ["value"], message: m }]);
7129
+ throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["value"], message: m }]);
7014
7130
  }
7015
7131
  if (v.dynamic === "date" && attrType !== "date") {
7016
7132
  const m = `date token (@today/@now) is only valid on date attributes, not "${attrType}"`;
7017
- throw new chunk44EVNHSR_js.ValidationError(m, [{ path: ["value"], message: m }]);
7133
+ throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["value"], message: m }]);
7018
7134
  }
7019
7135
  }
7020
7136
  function validateQualifiedRule(rule, context) {
7021
7137
  const rootAttr = context.attributes.find((a) => a.name === rule.attribute);
7022
7138
  const systemOps = SYSTEM_FILTER_OPERATORS[rule.attribute];
7023
7139
  if (!(rootAttr || systemOps)) {
7024
- throw new chunk44EVNHSR_js.ValidationError(`Unknown attribute: ${rule.attribute}`, [
7140
+ throw new chunkTS3PJOMZ_js.ValidationError(`Unknown attribute: ${rule.attribute}`, [
7025
7141
  { path: ["attribute"], message: `Unknown attribute: ${rule.attribute}` }
7026
7142
  ]);
7027
7143
  }
7028
7144
  if (rule.quantifier !== void 0 && !rule.property) {
7029
7145
  const m = `quantifier is only valid on qualified edge rules (set "property")`;
7030
- throw new chunk44EVNHSR_js.ValidationError(m, [{ path: ["quantifier"], message: m }]);
7146
+ throw new chunkTS3PJOMZ_js.ValidationError(m, [{ path: ["quantifier"], message: m }]);
7031
7147
  }
7032
7148
  if (!rootAttr) {
7033
7149
  if (rule.property) {
7034
- throw new chunk44EVNHSR_js.ValidationError(`Cannot qualify system attribute "${rule.attribute}"`, [
7150
+ throw new chunkTS3PJOMZ_js.ValidationError(`Cannot qualify system attribute "${rule.attribute}"`, [
7035
7151
  { path: ["property"], message: `"${rule.attribute}" is a system column, not a reference` }
7036
7152
  ]);
7037
7153
  }
7038
7154
  if (!systemOps.includes(rule.operator)) {
7039
7155
  const summary = `Operator "${rule.operator}" is not valid for system attribute "${rule.attribute}". Valid operators: ${systemOps.join(", ")}.`;
7040
- throw new chunk44EVNHSR_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7156
+ throw new chunkTS3PJOMZ_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7041
7157
  }
7042
7158
  assertRelativeDateValue(rule);
7043
7159
  return;
@@ -7048,25 +7164,25 @@ function validateQualifiedRule(rule, context) {
7048
7164
  if (!ops.includes(rule.operator)) {
7049
7165
  const validList = ops.length ? ops.join(", ") : "(not filterable)";
7050
7166
  const summary = `Operator "${rule.operator}" is not valid for attribute "${rootAttr.name}". Valid operators: ${validList}.`;
7051
- throw new chunk44EVNHSR_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7167
+ throw new chunkTS3PJOMZ_js.ValidationError(summary, [{ path: ["operator"], message: summary }]);
7052
7168
  }
7053
7169
  assertRelativeDateValue(rule);
7054
7170
  return;
7055
7171
  }
7056
7172
  if (!REFERENCE_TYPES.has(rootAttr.type)) {
7057
- throw new chunk44EVNHSR_js.ValidationError(`Cannot qualify ${rootAttr.type} attribute "${rule.attribute}"`, [
7173
+ throw new chunkTS3PJOMZ_js.ValidationError(`Cannot qualify ${rootAttr.type} attribute "${rule.attribute}"`, [
7058
7174
  { path: ["property"], message: `Attribute "${rule.attribute}" is not a reference type` }
7059
7175
  ]);
7060
7176
  }
7061
7177
  const propSchema = rootAttr.properties;
7062
7178
  if (!propSchema) {
7063
- throw new chunk44EVNHSR_js.ValidationError(`Attribute "${rule.attribute}" has no qualifyWith schema`, [
7179
+ throw new chunkTS3PJOMZ_js.ValidationError(`Attribute "${rule.attribute}" has no qualifyWith schema`, [
7064
7180
  { path: ["property"], message: `"${rule.attribute}" has no qualifyWith` }
7065
7181
  ]);
7066
7182
  }
7067
7183
  const propDef = propSchema.definitions.find((p) => p.name === rule.property);
7068
7184
  if (!propDef) {
7069
- throw new chunk44EVNHSR_js.ValidationError(
7185
+ throw new chunkTS3PJOMZ_js.ValidationError(
7070
7186
  `Property "${rule.property}" not defined on "${rule.attribute}".qualifyWith()`,
7071
7187
  [{ path: ["property"], message: `Unknown property: ${rule.property}` }]
7072
7188
  );
@@ -7082,6 +7198,49 @@ var CONNECTOR_CALLBACK_PARAM = {
7082
7198
  provider: "connector_provider"
7083
7199
  };
7084
7200
 
7201
+ // src/utils/canonical-json.ts
7202
+ function canonicalStringify(value) {
7203
+ const seen = /* @__PURE__ */ new Set();
7204
+ function encode(v) {
7205
+ if (v === null) return "null";
7206
+ switch (typeof v) {
7207
+ case "string":
7208
+ case "number":
7209
+ case "boolean":
7210
+ return JSON.stringify(v);
7211
+ case "undefined":
7212
+ return void 0;
7213
+ case "object":
7214
+ break;
7215
+ default:
7216
+ throw new chunkTS3PJOMZ_js.ValidationError(`Cannot canonicalize value of type ${typeof v}`, []);
7217
+ }
7218
+ const obj = v;
7219
+ if (seen.has(obj)) throw new chunkTS3PJOMZ_js.ValidationError("Cannot canonicalize circular structure", []);
7220
+ seen.add(obj);
7221
+ try {
7222
+ if (Array.isArray(obj)) return `[${obj.map((e) => encode(e) ?? "null").join(",")}]`;
7223
+ const entries = Object.entries(obj).map(([k, val]) => [k, encode(val)]).filter((pair) => pair[1] !== void 0).sort(([a], [b]) => a < b ? -1 : 1);
7224
+ return `{${entries.map(([k, val]) => `${JSON.stringify(k)}:${val}`).join(",")}}`;
7225
+ } finally {
7226
+ seen.delete(obj);
7227
+ }
7228
+ }
7229
+ return encode(value) ?? "null";
7230
+ }
7231
+
7232
+ // src/utils/view-sync-payload.ts
7233
+ function viewSyncPayload(view) {
7234
+ return {
7235
+ label: view.label,
7236
+ description: view.description ?? null,
7237
+ icon: view.icon ?? null,
7238
+ config: view.config,
7239
+ default: view.default ?? false,
7240
+ metadata: view.metadata ?? null
7241
+ };
7242
+ }
7243
+
7085
7244
  Object.defineProperty(exports, "asTenantId", {
7086
7245
  enumerable: true,
7087
7246
  get: function () { return chunkFRCDMQER_js.asTenantId; }
@@ -7116,175 +7275,175 @@ Object.defineProperty(exports, "parseComputedFormula", {
7116
7275
  });
7117
7276
  Object.defineProperty(exports, "AccessDeniedError", {
7118
7277
  enumerable: true,
7119
- get: function () { return chunk44EVNHSR_js.AccessDeniedError; }
7278
+ get: function () { return chunkTS3PJOMZ_js.AccessDeniedError; }
7120
7279
  });
7121
7280
  Object.defineProperty(exports, "AttributeInUseError", {
7122
7281
  enumerable: true,
7123
- get: function () { return chunk44EVNHSR_js.AttributeInUseError; }
7282
+ get: function () { return chunkTS3PJOMZ_js.AttributeInUseError; }
7124
7283
  });
7125
7284
  Object.defineProperty(exports, "AttributeNotFoundError", {
7126
7285
  enumerable: true,
7127
- get: function () { return chunk44EVNHSR_js.AttributeNotFoundError; }
7286
+ get: function () { return chunkTS3PJOMZ_js.AttributeNotFoundError; }
7128
7287
  });
7129
7288
  Object.defineProperty(exports, "ChangeTypeNotSupportedError", {
7130
7289
  enumerable: true,
7131
- get: function () { return chunk44EVNHSR_js.ChangeTypeNotSupportedError; }
7290
+ get: function () { return chunkTS3PJOMZ_js.ChangeTypeNotSupportedError; }
7132
7291
  });
7133
7292
  Object.defineProperty(exports, "ConcurrentModificationError", {
7134
7293
  enumerable: true,
7135
- get: function () { return chunk44EVNHSR_js.ConcurrentModificationError; }
7294
+ get: function () { return chunkTS3PJOMZ_js.ConcurrentModificationError; }
7136
7295
  });
7137
7296
  Object.defineProperty(exports, "DestructiveSyncNotAllowedError", {
7138
7297
  enumerable: true,
7139
- get: function () { return chunk44EVNHSR_js.DestructiveSyncNotAllowedError; }
7298
+ get: function () { return chunkTS3PJOMZ_js.DestructiveSyncNotAllowedError; }
7140
7299
  });
7141
7300
  Object.defineProperty(exports, "DuplicateError", {
7142
7301
  enumerable: true,
7143
- get: function () { return chunk44EVNHSR_js.DuplicateError; }
7302
+ get: function () { return chunkTS3PJOMZ_js.DuplicateError; }
7144
7303
  });
7145
7304
  Object.defineProperty(exports, "ForbiddenError", {
7146
7305
  enumerable: true,
7147
- get: function () { return chunk44EVNHSR_js.ForbiddenError; }
7306
+ get: function () { return chunkTS3PJOMZ_js.ForbiddenError; }
7148
7307
  });
7149
7308
  Object.defineProperty(exports, "MemoryNotFoundError", {
7150
7309
  enumerable: true,
7151
- get: function () { return chunk44EVNHSR_js.MemoryNotFoundError; }
7310
+ get: function () { return chunkTS3PJOMZ_js.MemoryNotFoundError; }
7152
7311
  });
7153
7312
  Object.defineProperty(exports, "MigrationTimeoutError", {
7154
7313
  enumerable: true,
7155
- get: function () { return chunk44EVNHSR_js.MigrationTimeoutError; }
7314
+ get: function () { return chunkTS3PJOMZ_js.MigrationTimeoutError; }
7156
7315
  });
7157
7316
  Object.defineProperty(exports, "NotFoundError", {
7158
7317
  enumerable: true,
7159
- get: function () { return chunk44EVNHSR_js.NotFoundError; }
7318
+ get: function () { return chunkTS3PJOMZ_js.NotFoundError; }
7160
7319
  });
7161
7320
  Object.defineProperty(exports, "NotImplementedError", {
7162
7321
  enumerable: true,
7163
- get: function () { return chunk44EVNHSR_js.NotImplementedError; }
7322
+ get: function () { return chunkTS3PJOMZ_js.NotImplementedError; }
7164
7323
  });
7165
7324
  Object.defineProperty(exports, "ObjectNotFoundError", {
7166
7325
  enumerable: true,
7167
- get: function () { return chunk44EVNHSR_js.ObjectNotFoundError; }
7326
+ get: function () { return chunkTS3PJOMZ_js.ObjectNotFoundError; }
7168
7327
  });
7169
7328
  Object.defineProperty(exports, "ObjectReferencedError", {
7170
7329
  enumerable: true,
7171
- get: function () { return chunk44EVNHSR_js.ObjectReferencedError; }
7330
+ get: function () { return chunkTS3PJOMZ_js.ObjectReferencedError; }
7172
7331
  });
7173
7332
  Object.defineProperty(exports, "OrphanSystemAttributeError", {
7174
7333
  enumerable: true,
7175
- get: function () { return chunk44EVNHSR_js.OrphanSystemAttributeError; }
7334
+ get: function () { return chunkTS3PJOMZ_js.OrphanSystemAttributeError; }
7176
7335
  });
7177
7336
  Object.defineProperty(exports, "ProtectedResourceError", {
7178
7337
  enumerable: true,
7179
- get: function () { return chunk44EVNHSR_js.ProtectedResourceError; }
7338
+ get: function () { return chunkTS3PJOMZ_js.ProtectedResourceError; }
7180
7339
  });
7181
7340
  Object.defineProperty(exports, "ProtectedRoleError", {
7182
7341
  enumerable: true,
7183
- get: function () { return chunk44EVNHSR_js.ProtectedRoleError; }
7342
+ get: function () { return chunkTS3PJOMZ_js.ProtectedRoleError; }
7184
7343
  });
7185
7344
  Object.defineProperty(exports, "RecordNotFoundError", {
7186
7345
  enumerable: true,
7187
- get: function () { return chunk44EVNHSR_js.RecordNotFoundError; }
7346
+ get: function () { return chunkTS3PJOMZ_js.RecordNotFoundError; }
7188
7347
  });
7189
7348
  Object.defineProperty(exports, "RecordReferencedError", {
7190
7349
  enumerable: true,
7191
- get: function () { return chunk44EVNHSR_js.RecordReferencedError; }
7350
+ get: function () { return chunkTS3PJOMZ_js.RecordReferencedError; }
7192
7351
  });
7193
7352
  Object.defineProperty(exports, "RepositoryError", {
7194
7353
  enumerable: true,
7195
- get: function () { return chunk44EVNHSR_js.RepositoryError; }
7354
+ get: function () { return chunkTS3PJOMZ_js.RepositoryError; }
7196
7355
  });
7197
7356
  Object.defineProperty(exports, "RoleNotFoundError", {
7198
7357
  enumerable: true,
7199
- get: function () { return chunk44EVNHSR_js.RoleNotFoundError; }
7358
+ get: function () { return chunkTS3PJOMZ_js.RoleNotFoundError; }
7200
7359
  });
7201
7360
  Object.defineProperty(exports, "SchemaError", {
7202
7361
  enumerable: true,
7203
- get: function () { return chunk44EVNHSR_js.SchemaError; }
7362
+ get: function () { return chunkTS3PJOMZ_js.SchemaError; }
7204
7363
  });
7205
7364
  Object.defineProperty(exports, "SchemaErrorCode", {
7206
7365
  enumerable: true,
7207
- get: function () { return chunk44EVNHSR_js.SchemaErrorCode; }
7366
+ get: function () { return chunkTS3PJOMZ_js.SchemaErrorCode; }
7208
7367
  });
7209
7368
  Object.defineProperty(exports, "SearchBackendError", {
7210
7369
  enumerable: true,
7211
- get: function () { return chunk44EVNHSR_js.SearchBackendError; }
7370
+ get: function () { return chunkTS3PJOMZ_js.SearchBackendError; }
7212
7371
  });
7213
7372
  Object.defineProperty(exports, "StorageError", {
7214
7373
  enumerable: true,
7215
- get: function () { return chunk44EVNHSR_js.StorageError; }
7374
+ get: function () { return chunkTS3PJOMZ_js.StorageError; }
7216
7375
  });
7217
7376
  Object.defineProperty(exports, "SyncCascadeError", {
7218
7377
  enumerable: true,
7219
- get: function () { return chunk44EVNHSR_js.SyncCascadeError; }
7378
+ get: function () { return chunkTS3PJOMZ_js.SyncCascadeError; }
7220
7379
  });
7221
7380
  Object.defineProperty(exports, "SyncConflictError", {
7222
7381
  enumerable: true,
7223
- get: function () { return chunk44EVNHSR_js.SyncConflictError; }
7382
+ get: function () { return chunkTS3PJOMZ_js.SyncConflictError; }
7224
7383
  });
7225
7384
  Object.defineProperty(exports, "SyncError", {
7226
7385
  enumerable: true,
7227
- get: function () { return chunk44EVNHSR_js.SyncError; }
7386
+ get: function () { return chunkTS3PJOMZ_js.SyncError; }
7228
7387
  });
7229
7388
  Object.defineProperty(exports, "SystemEntityImmutableError", {
7230
7389
  enumerable: true,
7231
- get: function () { return chunk44EVNHSR_js.SystemEntityImmutableError; }
7390
+ get: function () { return chunkTS3PJOMZ_js.SystemEntityImmutableError; }
7232
7391
  });
7233
7392
  Object.defineProperty(exports, "ValidationError", {
7234
7393
  enumerable: true,
7235
- get: function () { return chunk44EVNHSR_js.ValidationError; }
7394
+ get: function () { return chunkTS3PJOMZ_js.ValidationError; }
7236
7395
  });
7237
7396
  Object.defineProperty(exports, "createFormAttributeValidator", {
7238
7397
  enumerable: true,
7239
- get: function () { return chunk44EVNHSR_js.createFormAttributeValidator; }
7398
+ get: function () { return chunkTS3PJOMZ_js.createFormAttributeValidator; }
7240
7399
  });
7241
7400
  Object.defineProperty(exports, "isAttributeInUseError", {
7242
7401
  enumerable: true,
7243
- get: function () { return chunk44EVNHSR_js.isAttributeInUseError; }
7402
+ get: function () { return chunkTS3PJOMZ_js.isAttributeInUseError; }
7244
7403
  });
7245
7404
  Object.defineProperty(exports, "isNotFoundError", {
7246
7405
  enumerable: true,
7247
- get: function () { return chunk44EVNHSR_js.isNotFoundError; }
7406
+ get: function () { return chunkTS3PJOMZ_js.isNotFoundError; }
7248
7407
  });
7249
7408
  Object.defineProperty(exports, "isObjectReferencedError", {
7250
7409
  enumerable: true,
7251
- get: function () { return chunk44EVNHSR_js.isObjectReferencedError; }
7410
+ get: function () { return chunkTS3PJOMZ_js.isObjectReferencedError; }
7252
7411
  });
7253
7412
  Object.defineProperty(exports, "isProtectedResourceError", {
7254
7413
  enumerable: true,
7255
- get: function () { return chunk44EVNHSR_js.isProtectedResourceError; }
7414
+ get: function () { return chunkTS3PJOMZ_js.isProtectedResourceError; }
7256
7415
  });
7257
7416
  Object.defineProperty(exports, "isRecordReferencedError", {
7258
7417
  enumerable: true,
7259
- get: function () { return chunk44EVNHSR_js.isRecordReferencedError; }
7418
+ get: function () { return chunkTS3PJOMZ_js.isRecordReferencedError; }
7260
7419
  });
7261
7420
  Object.defineProperty(exports, "isSchemaError", {
7262
7421
  enumerable: true,
7263
- get: function () { return chunk44EVNHSR_js.isSchemaError; }
7422
+ get: function () { return chunkTS3PJOMZ_js.isSchemaError; }
7264
7423
  });
7265
7424
  Object.defineProperty(exports, "isValidationError", {
7266
7425
  enumerable: true,
7267
- get: function () { return chunk44EVNHSR_js.isValidationError; }
7426
+ get: function () { return chunkTS3PJOMZ_js.isValidationError; }
7268
7427
  });
7269
7428
  Object.defineProperty(exports, "rejectUnknownAttributesOrThrow", {
7270
7429
  enumerable: true,
7271
- get: function () { return chunk44EVNHSR_js.rejectUnknownAttributesOrThrow; }
7430
+ get: function () { return chunkTS3PJOMZ_js.rejectUnknownAttributesOrThrow; }
7272
7431
  });
7273
7432
  Object.defineProperty(exports, "validateDraft", {
7274
7433
  enumerable: true,
7275
- get: function () { return chunk44EVNHSR_js.validateDraft; }
7434
+ get: function () { return chunkTS3PJOMZ_js.validateDraft; }
7276
7435
  });
7277
7436
  Object.defineProperty(exports, "validateDraftOrThrow", {
7278
7437
  enumerable: true,
7279
- get: function () { return chunk44EVNHSR_js.validateDraftOrThrow; }
7438
+ get: function () { return chunkTS3PJOMZ_js.validateDraftOrThrow; }
7280
7439
  });
7281
7440
  Object.defineProperty(exports, "validateObject", {
7282
7441
  enumerable: true,
7283
- get: function () { return chunk44EVNHSR_js.validateObject; }
7442
+ get: function () { return chunkTS3PJOMZ_js.validateObject; }
7284
7443
  });
7285
7444
  Object.defineProperty(exports, "validateObjectOrThrow", {
7286
7445
  enumerable: true,
7287
- get: function () { return chunk44EVNHSR_js.validateObjectOrThrow; }
7446
+ get: function () { return chunkTS3PJOMZ_js.validateObjectOrThrow; }
7288
7447
  });
7289
7448
  Object.defineProperty(exports, "DEFAULT_VALIDATION_MESSAGES", {
7290
7449
  enumerable: true,
@@ -7302,6 +7461,7 @@ exports.AUDIT_ACTIONS = AUDIT_ACTIONS;
7302
7461
  exports.AUDIT_RESOURCE_TYPES = AUDIT_RESOURCE_TYPES;
7303
7462
  exports.AUTOFILL_ELIGIBLE_TYPES = AUTOFILL_ELIGIBLE_TYPES;
7304
7463
  exports.ActivityTabConfig = ActivityTabConfig;
7464
+ exports.AgentBuilder = AgentBuilder;
7305
7465
  exports.BEHAVIOR_PROPERTIES = BEHAVIOR_PROPERTIES;
7306
7466
  exports.BROWSER_PREVIEW_STATUSES = BROWSER_PREVIEW_STATUSES;
7307
7467
  exports.COMPUTED_FUNCTIONS = COMPUTED_FUNCTIONS;
@@ -7311,6 +7471,7 @@ exports.CONNECTOR_CALLBACK_PARAM = CONNECTOR_CALLBACK_PARAM;
7311
7471
  exports.ComputedFormulaCompileError = ComputedFormulaCompileError;
7312
7472
  exports.CustomTabConfig = CustomTabConfig;
7313
7473
  exports.DB_COLUMN_FIELDS = DB_COLUMN_FIELDS;
7474
+ exports.DEFAULT_AGENT_EXECUTION_CONFIG = DEFAULT_AGENT_EXECUTION_CONFIG;
7314
7475
  exports.DEFAULT_ROLES = DEFAULT_ROLES;
7315
7476
  exports.DEFAULT_ROLE_DESCRIPTIONS = DEFAULT_ROLE_DESCRIPTIONS;
7316
7477
  exports.DEFAULT_ROLE_LABELS = DEFAULT_ROLE_LABELS;
@@ -7375,6 +7536,7 @@ exports.TableTabConfig = TableTabConfig;
7375
7536
  exports.USER_STATUSES = USER_STATUSES;
7376
7537
  exports.accessLevelToActions = accessLevelToActions;
7377
7538
  exports.actionsToAccessLevel = actionsToAccessLevel;
7539
+ exports.agent = agent;
7378
7540
  exports.applyPipes = applyPipes;
7379
7541
  exports.applyRelationProps = applyRelationProps;
7380
7542
  exports.assertAcyclicComputedDependencies = assertAcyclicComputedDependencies;
@@ -7382,6 +7544,7 @@ exports.assertLiveStreamCursor = assertLiveStreamCursor;
7382
7544
  exports.booleanFlag = booleanFlag;
7383
7545
  exports.buildPropertySchema = buildPropertySchema;
7384
7546
  exports.buildQualifiedAttribute = buildQualifiedAttribute;
7547
+ exports.canonicalStringify = canonicalStringify;
7385
7548
  exports.checkbox = checkbox;
7386
7549
  exports.compareLiveStreamCursors = compareLiveStreamCursors;
7387
7550
  exports.compileComputedFormula = compileComputedFormula;
@@ -7500,3 +7663,4 @@ exports.user = user;
7500
7663
  exports.validateAttributeName = validateAttributeName;
7501
7664
  exports.validateQualifiedRule = validateQualifiedRule;
7502
7665
  exports.viewRegistry = viewRegistry;
7666
+ exports.viewSyncPayload = viewSyncPayload;