@stndrds/schema 1.0.0-alpha.291 → 1.0.0-alpha.293

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{all-FGIrc6mI.d.ts → all-CDJSpI46.d.ts} +105 -6
  2. package/dist/{all-DaucFjyz.d.mts → all-Cru_CaSY.d.mts} +105 -6
  3. package/dist/{chunk-5JMQNH2A.js → chunk-5N7OSHVX.js} +4 -4
  4. package/dist/{chunk-KLDZHAGX.mjs → chunk-APRL56F4.mjs} +1 -1
  5. package/dist/{chunk-RDYTVHNN.js → chunk-C32UUQ6D.js} +4 -4
  6. package/dist/{chunk-UW3BOSB6.mjs → chunk-GRUSTQK3.mjs} +1 -1
  7. package/dist/{chunk-K7XGY34S.js → chunk-OASIPLEB.js} +98 -40
  8. package/dist/{chunk-ZHB4VBCX.js → chunk-P4VCAPJT.js} +3 -3
  9. package/dist/{chunk-RMJ75YLQ.mjs → chunk-ULM2BA5A.mjs} +62 -8
  10. package/dist/{chunk-JSQCTLV5.mjs → chunk-VGGGLTYJ.mjs} +1 -1
  11. package/dist/{chunk-3YCZ5H3H.js → chunk-Y3UPKP2B.js} +4 -0
  12. package/dist/{chunk-7WEOBXXA.mjs → chunk-Z5OPSBMQ.mjs} +4 -0
  13. package/dist/exceptions.d.mts +3 -0
  14. package/dist/exceptions.d.ts +3 -0
  15. package/dist/exceptions.js +39 -39
  16. package/dist/exceptions.mjs +1 -1
  17. package/dist/{index-Eh1tYq3i.d.mts → index-BdVnHL3F.d.mts} +27 -7
  18. package/dist/{index-0VG9u1XW.d.ts → index-CFhPHQaI.d.ts} +27 -7
  19. package/dist/index.d.mts +877 -429
  20. package/dist/index.d.ts +877 -429
  21. package/dist/index.js +654 -334
  22. package/dist/index.mjs +332 -61
  23. package/dist/utils.js +8 -8
  24. package/dist/utils.mjs +2 -2
  25. package/dist/validation/all.d.mts +2 -2
  26. package/dist/validation/all.d.ts +2 -2
  27. package/dist/validation/all.js +29 -29
  28. package/dist/validation/all.mjs +4 -4
  29. package/dist/validation/config/index.d.mts +1 -1
  30. package/dist/validation/config/index.d.ts +1 -1
  31. package/dist/validation/config/index.js +12 -12
  32. package/dist/validation/config/index.mjs +2 -2
  33. package/dist/validation/object/index.js +14 -14
  34. package/dist/validation/object/index.mjs +2 -2
  35. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -1,23 +1,23 @@
1
- import { canonicalStringify, generateId } from './chunk-JSQCTLV5.mjs';
2
- export { asTenantId, asUserId, canonicalStringify, deepEqual, generateId, indexBy } from './chunk-JSQCTLV5.mjs';
3
- import { RESERVED_ATTRIBUTE_NAMES, SYSTEM_FILTER_ATTRIBUTE_TYPES, RESERVED_OBJECT_NAMES, listViewConfigSchema, detailViewConfigSchema, detailTabDraftSchema, groupWriteSchema, fieldSlotSchema, sortsSchema, filterStateSchema, columnsSchema, tableSourceSchema, listViewTabSchema, LIST_VIEW_TAB_VISIBILITIES, filterGroupSchema, isAttributeSortable, getAttributeCapabilities, resolveIsWithinBounds, normalizeForEdgeRpc, getOperatorPolarity, extractCurrencyFilterValue, isDynamicValue, LIST_TAB_KANBAN_KEYS, LIST_TAB_TABLE_KEYS } from './chunk-RMJ75YLQ.mjs';
4
- export { ATTRIBUTE_FILTER_OPERATORS, LIST_TAB_KANBAN_KEYS, LIST_TAB_TABLE_KEYS, LIST_VIEW_TAB_VISIBILITIES, NO_VALUE_OPERATORS, OPERATORS_BY_TYPE, REMOVED_OPERATOR_REPLACEMENTS, RESERVED_ATTRIBUTE_NAMES, RESERVED_OBJECT_NAMES, RESOURCE_VISIBILITIES, SYNONYM_ALIASES, SYSTEM_ATTRIBUTES, SYSTEM_ATTRIBUTE_I18N_KEYS, SYSTEM_FIELD_NAMES, SYSTEM_FILTER_ATTRIBUTE_TYPES, canonicalizeFilterValue, collectQualifiedRuleIssues, columnsSchema, currentActor, detailTabDraftSchema, detailTabSchema, detailViewConfigSchema, extractCurrencyFilterValue, extractFilterValue, fieldSchema, fieldShape, fieldSlotSchema, filterGroupSchema, filterStateSchema, getAttributeCapabilities, getAttributeFilterOperators, getOperatorPolarity, getRollupFilterOperators, getSystemAttributeI18nKey, getSystemAttributeList, groupWriteSchema, inverseSourceSchema, isAttributeFilterable, isAttributeGroupable, isAttributeKanbanGroupable, isAttributeSearchable, isDynamicValue, isManagedSystemAttribute, isNoValueOperator, isRelativeDateValue, isSetMembershipOperator, listViewConfigSchema, listViewTabSchema, normalizeFilterRule, normalizeForEdgeRpc, normalizeOperator, now, parseResourceVisibility, parseViewConfig, relationSourceSchema, resolveEffectiveFilterType, resolveIsWithinBounds, resolveUtcDayBounds, sortsSchema, tableSourceSchema, toMultiValueOperator, toUtcDayString, today, validateQualifiedRule, viewConfigByTypeSchema, viewTypeSchema } from './chunk-RMJ75YLQ.mjs';
5
- import { createObjectValidator, createAttributeValidator, validateAttribute, isNullishOrEmptyString } from './chunk-KLDZHAGX.mjs';
6
- export { createFormAttributeValidator, isNullishOrEmptyString, isValuePresent, rejectUnknownAttributesOrThrow, validateDraft, validateDraftOrThrow, validateObject, validateObjectOrThrow } from './chunk-KLDZHAGX.mjs';
1
+ import { canonicalStringify, generateId } from './chunk-VGGGLTYJ.mjs';
2
+ export { asTenantId, asUserId, canonicalStringify, deepEqual, generateId, indexBy } from './chunk-VGGGLTYJ.mjs';
3
+ import { RESERVED_ATTRIBUTE_NAMES, SYSTEM_FILTER_ATTRIBUTE_TYPES, RESERVED_OBJECT_NAMES, listViewConfigSchema, detailViewConfigSchema, detailTabDraftSchema, groupWriteSchema, fieldSlotSchema, sortsSchema, filterStateSchema, columnsSchema, tableSourceSchema, listViewTabSchema, LIST_VIEW_TAB_VISIBILITIES, filterGroupSchema, displayAttributesSchema, isAttributeSortable, getAttributeCapabilities, resolveIsWithinBounds, isLocationFilterProperty, isLocationPartOperator, normalizeForEdgeRpc, getOperatorPolarity, extractCurrencyFilterValue, isDynamicValue, LIST_TAB_KANBAN_KEYS, LIST_TAB_TABLE_KEYS } from './chunk-ULM2BA5A.mjs';
4
+ export { ATTRIBUTE_FILTER_OPERATORS, LIST_TAB_KANBAN_KEYS, LIST_TAB_TABLE_KEYS, LIST_VIEW_TAB_VISIBILITIES, LOCATION_FILTER_PROPERTIES, NO_VALUE_OPERATORS, OPERATORS_BY_TYPE, REMOVED_OPERATOR_REPLACEMENTS, RESERVED_ATTRIBUTE_NAMES, RESERVED_OBJECT_NAMES, RESOURCE_VISIBILITIES, SYNONYM_ALIASES, SYSTEM_ATTRIBUTES, SYSTEM_ATTRIBUTE_I18N_KEYS, SYSTEM_FIELD_NAMES, SYSTEM_FILTER_ATTRIBUTE_TYPES, canonicalizeFilterValue, collectQualifiedRuleIssues, columnsSchema, currentActor, detailTabDraftSchema, detailTabSchema, detailViewConfigSchema, displayAttributesSchema, extractCurrencyFilterValue, extractFilterValue, fieldSchema, fieldShape, fieldSlotSchema, filterGroupSchema, filterStateSchema, getAttributeCapabilities, getAttributeFilterOperators, getOperatorPolarity, getRollupFilterOperators, getSystemAttributeI18nKey, getSystemAttributeList, groupWriteSchema, inverseSourceSchema, isAttributeFilterable, isAttributeGroupable, isAttributeKanbanGroupable, isAttributeSearchable, isDynamicValue, isLocationFilterProperty, isLocationPartOperator, isManagedSystemAttribute, isNoValueOperator, isRelativeDateValue, isSetMembershipOperator, listViewConfigSchema, listViewTabSchema, normalizeFilterRule, normalizeForEdgeRpc, normalizeOperator, now, parseResourceVisibility, parseViewConfig, relationSourceSchema, resolveEffectiveFilterType, resolveIsWithinBounds, resolveUtcDayBounds, sortsSchema, tableSourceSchema, toMultiValueOperator, toUtcDayString, today, validateQualifiedRule, viewConfigByTypeSchema, viewTypeSchema } from './chunk-ULM2BA5A.mjs';
5
+ import { createObjectValidator, createAttributeValidator, validateAttribute, isNullishOrEmptyString } from './chunk-APRL56F4.mjs';
6
+ export { createFormAttributeValidator, isNullishOrEmptyString, isValuePresent, rejectUnknownAttributesOrThrow, validateDraft, validateDraftOrThrow, validateObject, validateObjectOrThrow } from './chunk-APRL56F4.mjs';
7
7
  import './chunk-GO6LQADH.mjs';
8
8
  import './chunk-QVLQPW3O.mjs';
9
9
  import './chunk-ZDQ5AP26.mjs';
10
10
  import './chunk-LV3FEUKU.mjs';
11
11
  import './chunk-UXAHLSWC.mjs';
12
12
  import './chunk-NS63SPNN.mjs';
13
- import { iconNameSchema, parseAttributeConfigForCreate, parseComputedFormula, getAttributeConfigWriteSchema } from './chunk-UW3BOSB6.mjs';
14
- export { ComputedFormulaParseError, SCHEMA_LIMITS, colorIdSchema, iconNameSchema, multiselectOptionWriteSchema, parseAttributeConfig, parseAttributeConfigForCreate, parseAttributeConfigForUpdate, parseComputedFormula, selectOptionWriteSchema, statusGroupSchema, statusOptionWriteSchema } from './chunk-UW3BOSB6.mjs';
13
+ import { iconNameSchema, parseAttributeConfigForCreate, parseComputedFormula, getAttributeConfigWriteSchema } from './chunk-GRUSTQK3.mjs';
14
+ export { ComputedFormulaParseError, SCHEMA_LIMITS, colorIdSchema, iconNameSchema, multiselectOptionWriteSchema, parseAttributeConfig, parseAttributeConfigForCreate, parseAttributeConfigForUpdate, parseComputedFormula, selectOptionWriteSchema, statusGroupSchema, statusOptionWriteSchema } from './chunk-GRUSTQK3.mjs';
15
15
  export { createCheckboxValidator } from './chunk-OSSGN43B.mjs';
16
16
  export { createDateValidator } from './chunk-Q44QKLN4.mjs';
17
17
  export { createNumberValidator } from './chunk-UANQJ2GH.mjs';
18
18
  export { TEXT_FORMAT_PATTERNS, createTextValidator, resolveTextPattern } from './chunk-O73ROMWQ.mjs';
19
- import { ValidationError, SchemaError, SchemaErrorCode, DuplicateError, NotFoundError } from './chunk-7WEOBXXA.mjs';
20
- export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RecordNotFoundError, RecordReferencedError, RepositoryError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError } from './chunk-7WEOBXXA.mjs';
19
+ import { ValidationError, SchemaError, SchemaErrorCode, DuplicateError, NotFoundError } from './chunk-Z5OPSBMQ.mjs';
20
+ export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RecordNotFoundError, RecordReferencedError, RepositoryError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError } from './chunk-Z5OPSBMQ.mjs';
21
21
  import './chunk-AYVHMVKQ.mjs';
22
22
  import './chunk-YUFTHPOE.mjs';
23
23
  import { formatPhoneForDisplay, normalizeCountrylessPhoneNumber, normalizePhoneNumber } from './chunk-R5LAJCBU.mjs';
@@ -214,6 +214,28 @@ var DEFAULT_APPROVAL_POLICY = Object.freeze({
214
214
  outward: "ask"
215
215
  });
216
216
  var TODO_PLAN_STATUSES = ["active", "completed", "abandoned"];
217
+ var PROVIDER_NAMES = [
218
+ "openai",
219
+ "anthropic",
220
+ "google",
221
+ "spacexai",
222
+ "deepseek",
223
+ "moonshotai",
224
+ "alibaba",
225
+ "mistral",
226
+ "minimax",
227
+ "meta",
228
+ "zai"
229
+ ];
230
+ var INFERENCE_SPEEDS = ["standard", "fast"];
231
+ var INFERENCE_REASONING_OPTIONS = [
232
+ "none",
233
+ "minimal",
234
+ "low",
235
+ "medium",
236
+ "high",
237
+ "xhigh"
238
+ ];
217
239
  function agentDisplayName(agent2) {
218
240
  return agent2.label?.trim() || agent2.name;
219
241
  }
@@ -297,6 +319,39 @@ function parseNativeAgentUIPartIdsMetadata(message) {
297
319
  return parsed;
298
320
  }
299
321
 
322
+ // src/types/ai-dictation.ts
323
+ var DICTATION_SAMPLE_RATE = 16e3;
324
+ var DICTATION_FRAME_BYTES = 3200;
325
+ var DICTATION_MAX_FRAME_BYTES = 6400;
326
+ var DICTATION_MAX_BUFFER_BYTES = 16e3;
327
+ var DICTATION_MAX_TRANSCRIPT_BYTES = 65536;
328
+ var DICTATION_TICKET_TTL_MS = 15e3;
329
+ var DICTATION_PREPARATION_TIMEOUT_MS = 1e4;
330
+ var DICTATION_FINALIZATION_TIMEOUT_MS = 5e3;
331
+ var DICTATION_MODEL_ID = "google/gemini-3.5-transcribe-live";
332
+ var DEFAULT_DICTATION_LIMITS = {
333
+ maxDurationMs: 3e5,
334
+ dailyDurationMs: 36e5,
335
+ monthlyDurationMs: 72e6,
336
+ tenantMonthlyBudgetMicrousd: 5e7,
337
+ globalMonthlyBudgetMicrousd: 5e7,
338
+ estimatedMicrousdPerSecond: 150,
339
+ reservationMultiplier: 2
340
+ };
341
+
342
+ // src/types/artifacts.ts
343
+ var ARTIFACT_KINDS = [
344
+ "web",
345
+ "presentation",
346
+ "document",
347
+ "spreadsheet",
348
+ "image",
349
+ "code",
350
+ "other"
351
+ ];
352
+ var ARTIFACT_RETENTIONS = ["ephemeral", "conversation", "persistent"];
353
+ var ARTIFACT_FILE_ROLES = ["source", "preview", "entrypoint", "asset"];
354
+
300
355
  // src/types/document-layout.ts
301
356
  var MAX_PRESET_DEPTH = 5;
302
357
 
@@ -409,6 +464,14 @@ function hasOptions(attr) {
409
464
  return attr.type === "select" || attr.type === "status" || attr.type === "multiselect";
410
465
  }
411
466
 
467
+ // src/types/tenant-settings.ts
468
+ var DEFAULT_MEETING_BOT_DISPLAY_NAME = "Notetaker";
469
+ var DEFAULT_TENANT_SETTINGS = {
470
+ systemPrompt: null,
471
+ meetingRecordingPolicy: "none",
472
+ meetingBotDisplayName: DEFAULT_MEETING_BOT_DISPLAY_NAME
473
+ };
474
+
412
475
  // src/types/user-profiles.ts
413
476
  var USER_STATUSES = ["active", "suspended"];
414
477
  var USER_WORK_POSTURES = ["plan", "manual", "auto"];
@@ -477,6 +540,18 @@ function formatByteSize(bytes) {
477
540
  return `${value} ${BYTE_UNIT_LABELS[unitIndex]}`;
478
541
  }
479
542
 
543
+ // src/lib/list-view-presentation.ts
544
+ function getListViewDisplayAttributeNames(tab) {
545
+ if (tab.displayAttributes !== void 0) return [...tab.displayAttributes];
546
+ return [
547
+ ...new Set(
548
+ [tab.cardUserAttribute, tab.cardDateAttribute].filter(
549
+ (name) => name !== void 0
550
+ )
551
+ )
552
+ ];
553
+ }
554
+
480
555
  // src/lib/document-attribute.ts
481
556
  var DOCUMENT_SYSTEM_ATTRIBUTES = {
482
557
  ATTACHMENTS: "attachments"
@@ -1306,13 +1381,21 @@ var AgentBuilder = class {
1306
1381
  * Partial execution config, shallow-merged over the current config
1307
1382
  * (defaulting to {@link DEFAULT_AGENT_EXECUTION_CONFIG} on the first call).
1308
1383
  *
1309
- * The merge is shallow at the top level only: passing a partial
1384
+ * The merge is shallow at the top level except for provider-neutral
1385
+ * `inference` preferences, whose independent dimensions compose across
1386
+ * calls. Passing a partial
1310
1387
  * `retryPolicy` REPLACES the whole `retryPolicy` object rather than
1311
1388
  * merging its individual fields. Pass a complete `retryPolicy` if you
1312
1389
  * only want to override one of its fields.
1313
1390
  */
1314
1391
  config(value) {
1315
- this.bp.config = { ...this.bp.config ?? DEFAULT_AGENT_EXECUTION_CONFIG, ...value };
1392
+ const current = this.bp.config ?? DEFAULT_AGENT_EXECUTION_CONFIG;
1393
+ const inference = value.inference === void 0 ? current.inference : { ...current.inference, ...value.inference };
1394
+ this.bp.config = {
1395
+ ...current,
1396
+ ...value,
1397
+ ...inference === void 0 ? {} : { inference }
1398
+ };
1316
1399
  return this;
1317
1400
  }
1318
1401
  delegation(value) {
@@ -3115,7 +3198,7 @@ var GroupBuilder = class {
3115
3198
  }
3116
3199
  /**
3117
3200
  * Add a single field with options
3118
- * @example .field("name", { span: 8, readOnly: true })
3201
+ * @example .field("name", { label: "Full name", readOnly: true })
3119
3202
  */
3120
3203
  field(attribute, options) {
3121
3204
  this.data.fields?.push({ attribute, ...options });
@@ -3769,6 +3852,11 @@ var ListViewBuilder = class {
3769
3852
  this.data.defaultFilters = filters;
3770
3853
  return this;
3771
3854
  }
3855
+ /** Allow Architect to customize only the presentation of a system list view. */
3856
+ allowPresentationCustomization() {
3857
+ this.data.allowPresentationCustomization = true;
3858
+ return this;
3859
+ }
3772
3860
  /**
3773
3861
  * Add a tab with its own full configuration (layout, columns, filters, sorts, groupBy)
3774
3862
  * Returns a ListViewTabConfigBuilder for chaining tab configuration
@@ -3809,14 +3897,39 @@ var ListViewBuilder = class {
3809
3897
  throw new Error("[ListViewBuilder] Only one tab can be marked as default");
3810
3898
  }
3811
3899
  for (const tab of this.data.tabs) {
3812
- if (tab.columns.length === 0) {
3813
- throw new Error(`[ListViewBuilder] Tab "${tab.id}" must have at least one column`);
3900
+ if (tab.layout === "table" && tab.columns.length === 0) {
3901
+ throw new ValidationError(
3902
+ `[ListViewBuilder] Tab "${tab.id}" must have at least one column`,
3903
+ []
3904
+ );
3814
3905
  }
3815
3906
  if (tab.layout === "kanban" && !tab.groupByAttribute) {
3816
- throw new Error(`[ListViewBuilder] Kanban tab "${tab.id}" requires a groupByAttribute`);
3907
+ throw new ValidationError(
3908
+ `[ListViewBuilder] Kanban tab "${tab.id}" requires a groupByAttribute`,
3909
+ []
3910
+ );
3911
+ }
3912
+ if (tab.descriptionAttribute !== void 0 && tab.descriptionAttribute.length === 0) {
3913
+ throw new ValidationError(
3914
+ `[ListViewBuilder] Tab "${tab.id}" requires a nonempty description attribute name`,
3915
+ []
3916
+ );
3917
+ }
3918
+ if (tab.displayAttributes !== void 0) {
3919
+ const parsed = displayAttributesSchema.safeParse(tab.displayAttributes);
3920
+ if (!parsed.success) {
3921
+ throw new ValidationError(
3922
+ `[ListViewBuilder] Tab "${tab.id}" has invalid display attributes`,
3923
+ parsed.error.issues.map((issue) => ({
3924
+ path: ["tabs", tab.id, "displayAttributes", ...issue.path.map(String)],
3925
+ message: issue.message
3926
+ }))
3927
+ );
3928
+ }
3817
3929
  }
3818
3930
  }
3819
3931
  const config = {
3932
+ allowPresentationCustomization: this.data.allowPresentationCustomization,
3820
3933
  defaultFilters: this.data.defaultFilters ? {
3821
3934
  id: generateId(),
3822
3935
  combinator: this.data.defaultFilters.combinator,
@@ -3832,6 +3945,8 @@ var ListViewBuilder = class {
3832
3945
  // record's own column (see the visibility notes in CLAUDE.md).
3833
3946
  visibility: tab.visibility,
3834
3947
  columns: tab.columns,
3948
+ descriptionAttribute: tab.descriptionAttribute,
3949
+ displayAttributes: tab.displayAttributes,
3835
3950
  filters: tab.filters ? {
3836
3951
  id: generateId(),
3837
3952
  combinator: tab.filters.combinator,
@@ -3851,7 +3966,7 @@ var ListViewBuilder = class {
3851
3966
  kanbanPinnedColumns: tab.kanbanPinnedColumns
3852
3967
  } : {
3853
3968
  ...common,
3854
- layout: "table",
3969
+ layout: tab.layout,
3855
3970
  columnSizing: tab.columnSizing
3856
3971
  };
3857
3972
  })
@@ -3910,9 +4025,24 @@ var ListViewTabConfigBuilder = class _ListViewTabConfigBuilder {
3910
4025
  this.tabData.layout = "table";
3911
4026
  return this;
3912
4027
  }
4028
+ /** Show records as rows with a description and ordered attribute strip. */
4029
+ list() {
4030
+ this.tabData.layout = "list";
4031
+ return this;
4032
+ }
4033
+ /** Choose the text/richtext attribute below each List or Kanban record label. */
4034
+ descriptionAttribute(attributeName) {
4035
+ this.tabData.descriptionAttribute = attributeName;
4036
+ return this;
4037
+ }
4038
+ /** Choose ordered List/Kanban footer attributes; an empty call hides all. */
4039
+ displayAttributes(...names) {
4040
+ this.tabData.displayAttributes = names;
4041
+ return this;
4042
+ }
3913
4043
  /**
3914
4044
  * Set the layout to kanban and specify the grouping attribute
3915
- * @param groupByAttribute - Attribute to group by (must be a select/status type)
4045
+ * @param groupByAttribute - Status attribute to group by
3916
4046
  */
3917
4047
  kanban(groupByAttribute) {
3918
4048
  this.tabData.layout = "kanban";
@@ -3921,6 +4051,7 @@ var ListViewTabConfigBuilder = class _ListViewTabConfigBuilder {
3921
4051
  }
3922
4052
  /**
3923
4053
  * Set the user attribute to display on kanban cards (bottom-left)
4054
+ * @deprecated Use displayAttributes.
3924
4055
  * @param attributeName - Name of a user-type attribute
3925
4056
  */
3926
4057
  cardUserAttribute(attributeName) {
@@ -3929,6 +4060,7 @@ var ListViewTabConfigBuilder = class _ListViewTabConfigBuilder {
3929
4060
  }
3930
4061
  /**
3931
4062
  * Set the date attribute to display on kanban cards (bottom-right)
4063
+ * @deprecated Use displayAttributes.
3932
4064
  * @param attributeName - Name of a date-type attribute
3933
4065
  */
3934
4066
  cardDateAttribute(attributeName) {
@@ -4776,16 +4908,16 @@ Show at least one concrete example of the skill applied well.
4776
4908
  - Never \u2026
4777
4909
  - Do not \u2026
4778
4910
  `;
4779
- 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(SKILL_NAME_MAX_LENGTH).required()).attribute(
4911
+ var SKILL_OBJECT = object({ name: "skill", label: "Skill" }).sealed().icon("book-open").order(Number.MAX_SAFE_INTEGER).pluralLabel("Skills").labelExpression("{{ name }}").embeddingExpression("{{ name }}\n{{ description }}\n{{ content }}").attribute(text({ name: "name", label: "Name" }).maxLength(SKILL_NAME_MAX_LENGTH).required()).attribute(
4780
4912
  text({ name: "description", label: "Description" }).multiline().maxLength(SKILL_DESCRIPTION_MAX_LENGTH).required().placeholder(
4781
4913
  '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."'
4782
4914
  )
4783
4915
  ).attribute(richtext({ name: "content", label: "Content" }).defaultValue(SKILL_CONTENT_TEMPLATE)).build();
4784
4916
  var SKILL_VIEW = markSystemView(
4785
- 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()
4917
+ detailView("skill-detail", "Skill").for("skill").default().sidePanel({ attributes: ["name", "description"] }).tab("content", "Content").richtext("content").titleAttribute("name").done().tab("files", "Files").documents().done().tab("activity", "Activity").activity().done().build()
4786
4918
  );
4787
4919
  var SKILL_LIST_VIEW = markSystemView(
4788
- listView("skill-list", "Skills").for("skill").default().tab("workspace", "Skills").default().icon("table").visibility("workspace").table().columns("name", "description").sort("name", "asc").tab("mine", "My skills").icon("lock").visibility("private").table().columns("name", "description").sort("name", "asc").build()
4920
+ listView("skill-list", "Skills").for("skill").default().allowPresentationCustomization().tab("workspace", "Skills").default().icon("list").visibility("workspace").list().columns("name", "description").descriptionAttribute("description").displayAttributes("createdBy", "updatedAt").sort("name", "asc").tab("mine", "My skills").icon("lock").visibility("private").list().columns("name", "description").descriptionAttribute("description").displayAttributes("createdBy", "updatedAt").sort("name", "asc").build()
4789
4921
  );
4790
4922
  var MEMORY_OBJECT = object({ name: "memory", label: "Memory" }).sealed().icon("database").order(Number.MAX_SAFE_INTEGER).pluralLabel("Memories").labelExpression("{{ name }}").embeddingExpression("{{ name }}\n{{ description }}\n{{ content }}").migration(2, (migration) => migration.changeType("content", "text", "richtext")).attribute(text({ name: "name", label: "Name" }).maxLength(MEMORY_NAME_MAX_LENGTH).required()).attribute(
4791
4923
  text({ name: "description", label: "Description" }).multiline().maxLength(MEMORY_DESCRIPTION_MAX_LENGTH).required()
@@ -4800,25 +4932,52 @@ var MEMORY_OBJECT = object({ name: "memory", label: "Memory" }).sealed().icon("d
4800
4932
  select({ name: "source", label: "Source" }).options([
4801
4933
  { value: "explicit", label: "Saved by an agent" },
4802
4934
  { value: "extracted", label: "Extracted from a session" },
4803
- { value: "corroborated", label: "Corroborated across users" }
4935
+ { value: "corroborated", label: "Corroborated across users" },
4936
+ { value: "curated", label: "Curated by Dreamer" }
4937
+ ])
4938
+ ).attribute(date({ name: "validFrom", label: "Valid from" }).includeTime()).attribute(date({ name: "invalidAt", label: "Invalid at" }).includeTime()).attribute(relation({ name: "supersededBy", label: "Superseded by" }).to("memory")).attribute(text({ name: "provenance", label: "Provenance" }).multiline()).attribute(
4939
+ select({ name: "reviewState", label: "Review state" }).options([
4940
+ { value: "needs_review", label: "Needs review" },
4941
+ { value: "skill_candidate", label: "Skill candidate" }
4804
4942
  ])
4805
- ).attribute(date({ name: "validFrom", label: "Valid from" }).includeTime()).attribute(date({ name: "invalidAt", label: "Invalid at" }).includeTime()).attribute(relation({ name: "supersededBy", label: "Superseded by" }).to("memory")).build();
4943
+ ).attribute(text({ name: "reviewReason", label: "Review reason" }).multiline()).attribute(date({ name: "curatedAt", label: "Curated at" }).includeTime()).attribute(date({ name: "reviewAfter", label: "Review after" }).includeTime()).attribute(text({ name: "curationFingerprint", label: "Curation fingerprint" })).build();
4944
+ var ACTIVE_MEMORY_FILTER = {
4945
+ combinator: "and",
4946
+ rules: [
4947
+ { attribute: "invalidAt", operator: "is_empty", value: null },
4948
+ { attribute: "reviewState", operator: "is_empty", value: null }
4949
+ ]
4950
+ };
4806
4951
  var MEMORY_VIEW = markSystemView(
4807
4952
  detailView("memory-detail", "Memory").for("memory").default().sidePanel({
4808
4953
  attributes: [
4809
4954
  "description",
4810
4955
  "kind",
4811
4956
  "source",
4957
+ "provenance",
4958
+ "reviewState",
4959
+ "reviewReason",
4812
4960
  "validFrom",
4813
4961
  "invalidAt",
4814
4962
  "supersededBy",
4963
+ "curatedAt",
4964
+ "reviewAfter",
4815
4965
  "subjects",
4816
4966
  "links"
4817
4967
  ]
4818
4968
  }).tab("content", "Content").richtext("content").titleAttribute("name").build()
4819
4969
  );
4820
4970
  var MEMORY_LIST_VIEW = markSystemView(
4821
- listView("memory-list", "Memories").for("memory").default().tab("workspace", "Memories").default().icon("table").visibility("workspace").table().columns("name", "kind", "description", "createdAt").sort("name", "asc").tab("mine", "My memories").icon("lock").visibility("private").table().columns("name", "kind", "description", "createdAt").sort("name", "asc").build()
4971
+ listView("memory-list", "Memories").for("memory").default().allowPresentationCustomization().tab("workspace", "Memories").default().icon("list").visibility("workspace").list().columns("name", "kind", "description", "createdAt").descriptionAttribute("description").displayAttributes("kind", "subjects", "createdAt").filter(ACTIVE_MEMORY_FILTER).sort("name", "asc").tab("mine", "My memories").icon("lock").visibility("private").list().columns("name", "kind", "description", "createdAt").descriptionAttribute("description").displayAttributes("kind", "subjects", "createdAt").filter(ACTIVE_MEMORY_FILTER).sort("name", "asc").tab("review", "To review").icon("question-circle").table().columns("name", "reviewState", "reviewReason", "updatedAt").filter({
4972
+ combinator: "and",
4973
+ rules: [
4974
+ { attribute: "invalidAt", operator: "is_empty", value: null },
4975
+ { attribute: "reviewState", operator: "is_not_empty", value: null }
4976
+ ]
4977
+ }).sort("updatedAt", "desc").tab("history", "History").icon("archive").table().columns("name", "kind", "invalidAt", "supersededBy").filter({
4978
+ combinator: "and",
4979
+ rules: [{ attribute: "invalidAt", operator: "is_not_empty", value: null }]
4980
+ }).sort("invalidAt", "desc").build()
4822
4981
  );
4823
4982
 
4824
4983
  // src/native/drive.object.ts
@@ -4831,6 +4990,46 @@ var DRIVE_LIST_VIEW = markSystemView(
4831
4990
  listView("drive-list", "Drives").for(DRIVE_OBJECT_NAME).default().tab("workspace", "Shared").default().icon("users").visibility("workspace").table().columns("name", "description", "updatedAt").sort("name", "asc").tab("mine", "My drives").icon("lock").visibility("private").table().columns("name", "description", "updatedAt").sort("name", "asc").build()
4832
4991
  );
4833
4992
 
4993
+ // src/native/artifact.object.ts
4994
+ var ARTIFACT_OBJECT_NAME = "artifact";
4995
+ var ARTIFACT_OBJECT = object({ name: ARTIFACT_OBJECT_NAME, label: "Artifact" }).sealed().hidden().icon("package").pluralLabel("Artifacts").labelExpression("{{ name }}").embeddingExpression("{{ name }}\n{{ description }}").attribute(text({ name: "name", label: "Name" }).required()).attribute(text({ name: "description", label: "Description" }).multiline()).attribute(
4996
+ select({ name: "kind", label: "Kind" }).options([
4997
+ { value: "web", label: "Web", color: "blue" },
4998
+ { value: "presentation", label: "Presentation", color: "purple" },
4999
+ { value: "document", label: "Document", color: "sky" },
5000
+ { value: "spreadsheet", label: "Spreadsheet", color: "green" },
5001
+ { value: "image", label: "Image", color: "pink" },
5002
+ { value: "code", label: "Code", color: "slate" },
5003
+ { value: "other", label: "Other", color: "gray" }
5004
+ ]).required()
5005
+ ).attribute(
5006
+ select({ name: "retention", label: "Retention" }).options([
5007
+ { value: "ephemeral", label: "Ephemeral", color: "gray" },
5008
+ { value: "conversation", label: "Conversation", color: "blue" },
5009
+ { value: "persistent", label: "Persistent", color: "green" }
5010
+ ]).defaultValue("conversation").required()
5011
+ ).attribute(number({ name: "currentRevision", label: "Current revision" }).integer().min(1)).attribute(date({ name: "expiresAt", label: "Expires at" }).includeTime().hidden()).attribute(text({ name: "sourceSessionId", label: "Source session" }).hidden()).attribute(text({ name: "sourceMessageId", label: "Source message" }).hidden()).attribute(text({ name: "initialToolCallId", label: "Initial tool call" }).hidden()).attribute(
5012
+ document({ name: "versions", label: "Versions" }).qualifyWith(
5013
+ number({ name: "revision", label: "Revision" }).integer().min(1).required(),
5014
+ text({ name: "toolCallId", label: "Tool call" }).hidden(),
5015
+ text({ name: "sourceFileId", label: "Source file" }).hidden(),
5016
+ text({ name: "previewFileId", label: "Preview file" }).hidden(),
5017
+ text({ name: "fileIds", label: "File manifest" }).hidden(),
5018
+ text({ name: "entrypoint", label: "Entrypoint" }).hidden(),
5019
+ text({ name: "sourceMessageId", label: "Source message" }).hidden(),
5020
+ text({ name: "artifactName", label: "Artifact name" }).hidden(),
5021
+ text({ name: "artifactDescription", label: "Artifact description" }).hidden(),
5022
+ text({ name: "artifactKind", label: "Artifact kind" }).hidden(),
5023
+ text({ name: "displayMode", label: "Display mode" }).hidden(),
5024
+ text({ name: "displayInteraction", label: "Display interaction" }).hidden(),
5025
+ text({ name: "displaySize", label: "Display size" }).hidden(),
5026
+ number({ name: "displayAspectRatio", label: "Display aspect ratio" }).hidden()
5027
+ )
5028
+ ).build();
5029
+ var ARTIFACT_LIST_VIEW = markSystemView(
5030
+ listView("artifact-list", "Artifacts").for(ARTIFACT_OBJECT_NAME).default().allowPresentationCustomization().tab("all", "Artifacts").default().icon("list").list().columns("name", "kind", "currentRevision", "updatedAt").descriptionAttribute("description").displayAttributes("kind", "currentRevision", "versions").sort("updatedAt", "desc").build()
5031
+ );
5032
+
4834
5033
  // src/views/registry.ts
4835
5034
  function cloneViewDefinition(view) {
4836
5035
  return structuredClone(view);
@@ -5391,6 +5590,7 @@ var LIVE_EVENT_TYPE_REGISTRY = {
5391
5590
  "reflex.run.completed": true,
5392
5591
  "reflex.authoring.progress": true,
5393
5592
  "architect.draft.updated": true,
5593
+ "meeting.recording.patch": true,
5394
5594
  "channel.revoked": true
5395
5595
  };
5396
5596
  var LIVE_EVENT_TYPES = Object.keys(LIVE_EVENT_TYPE_REGISTRY);
@@ -5492,6 +5692,8 @@ function isLiveEventPayloadForType(type, payload) {
5492
5692
  return isReflexAuthoringProgressPayload(payload);
5493
5693
  case "architect.draft.updated":
5494
5694
  return isArchitectDraftUpdatedPayload(payload);
5695
+ case "meeting.recording.patch":
5696
+ return isMeetingRecordingPatchPayload(payload);
5495
5697
  case "channel.revoked":
5496
5698
  return isChannelRevokedPayload(payload);
5497
5699
  default:
@@ -5652,6 +5854,16 @@ function isReflexRunCompletedPayload(payload) {
5652
5854
  function isReflexAuthoringProgressPayload(payload) {
5653
5855
  return payload.type === "reflex.authoring.progress" && hasNonEmptyString(payload, "reflexId") && isOneOf(payload.status, REFLEX_AUTHORING_STATUSES) && hasIsoDateString(payload, "updatedAt");
5654
5856
  }
5857
+ var MEETING_RECORDING_STATUSES = [
5858
+ "none",
5859
+ "scheduled",
5860
+ "recording",
5861
+ "completed",
5862
+ "failed"
5863
+ ];
5864
+ function isMeetingRecordingPatchPayload(payload) {
5865
+ return payload.type === "meeting.recording.patch" && hasNonEmptyString(payload, "meetingId") && isOneOf(payload.status, MEETING_RECORDING_STATUSES) && isNullableString(payload.failureReason) && hasIsoDateString(payload, "updatedAt");
5866
+ }
5655
5867
  function isChannelRevokedPayload(payload) {
5656
5868
  return payload.type === "channel.revoked" && hasString(payload, "channel") && isOneOf(payload.reason, CHANNEL_REVOKED_REASONS);
5657
5869
  }
@@ -7106,6 +7318,16 @@ function evaluateFilterState(state, values, attributes) {
7106
7318
  function evaluateRule(rule, values, attrByName) {
7107
7319
  const attr = attrByName.get(rule.attribute);
7108
7320
  if (!attr) return false;
7321
+ if (rule.property && attr.type === "location") {
7322
+ if (!(isLocationFilterProperty(rule.property) && isLocationPartOperator(rule.operator))) {
7323
+ return false;
7324
+ }
7325
+ const spec2 = OPERATOR_SPECS[rule.operator];
7326
+ if (!spec2) return false;
7327
+ const stored = values[rule.attribute];
7328
+ const part = typeof stored === "object" && stored !== null ? stored[rule.property] : void 0;
7329
+ return evaluateNormalizedComparands(spec2, "text", rule.operator, part, rule.value, attr);
7330
+ }
7109
7331
  if (rule.property) {
7110
7332
  const property = resolvePropertyDefinitions(attr).find(
7111
7333
  (definition) => definition.name === rule.property
@@ -7258,6 +7480,17 @@ var CONNECTOR_CALLBACK_PARAM = {
7258
7480
  provider: "connector_provider"
7259
7481
  };
7260
7482
 
7483
+ // src/types/meetings.ts
7484
+ var RECORDING_OVERRIDES = ["force", "skip"];
7485
+ var RECORDING_POLICIES = ["none", "all", "external_only"];
7486
+ var FAKE_MEETING_BOT_SIGNATURE_HEADER = "x-fake-signature";
7487
+ var NO_RECORDING = {
7488
+ override: null,
7489
+ status: "none",
7490
+ failureReason: null,
7491
+ botId: null
7492
+ };
7493
+
7261
7494
  // src/utils/agent-title.ts
7262
7495
  var AGENT_FALLBACK_TITLE_MAX_LENGTH = 60;
7263
7496
  var STORAGE_PLACEHOLDER_TITLE = /^Session \d+$/;
@@ -7698,6 +7931,25 @@ var persistedSchemaPlanSchema = z.preprocess(
7698
7931
  structuralPersistedSchemaPlanSchema
7699
7932
  );
7700
7933
  var nonNegativeNumberSchema = z.number().finite().nonnegative();
7934
+ var providerNameSchema = z.enum(PROVIDER_NAMES);
7935
+ var inferenceSpeedSchema = z.enum(INFERENCE_SPEEDS);
7936
+ var inferenceReasoningSchema = z.enum(INFERENCE_REASONING_OPTIONS);
7937
+ var modelReferenceSchema = z.object({
7938
+ provider: providerNameSchema,
7939
+ model: z.string().min(1)
7940
+ }).strict();
7941
+ var agentInferencePreferencesSchema = z.object({
7942
+ speed: inferenceSpeedSchema.optional(),
7943
+ reasoning: inferenceReasoningSchema.optional()
7944
+ }).strict();
7945
+ var agentSessionInferenceOverridesSchema = z.object({
7946
+ model: modelReferenceSchema.optional(),
7947
+ speed: inferenceSpeedSchema.optional(),
7948
+ reasoning: inferenceReasoningSchema.optional()
7949
+ }).strict().refine(
7950
+ (overrides) => overrides.model !== void 0 || overrides.speed !== void 0 || overrides.reasoning !== void 0,
7951
+ { message: "At least one inference override is required" }
7952
+ );
7701
7953
  var toolImpactSchema = z.object({
7702
7954
  label: z.string(),
7703
7955
  denied: z.boolean().optional(),
@@ -7790,7 +8042,7 @@ var mentionReferenceSchema = z.object({
7790
8042
  endIndex: nonNegativeNumberSchema
7791
8043
  }).strict();
7792
8044
  var modelDefinitionSchema = z.object({
7793
- provider: z.enum(["anthropic", "openai", "google", "mistral"]),
8045
+ provider: providerNameSchema,
7794
8046
  model: z.string(),
7795
8047
  maxTokens: nonNegativeNumberSchema.optional(),
7796
8048
  contextWindow: nonNegativeNumberSchema.optional()
@@ -8721,13 +8973,13 @@ var setColumnSizing = setOnTab(
8721
8973
  var setLayoutSchema = z.object({
8722
8974
  ...listTabBase,
8723
8975
  type: z.literal("set_layout"),
8724
- value: z.enum(["table", "kanban"])
8976
+ value: z.enum(["table", "list", "kanban"])
8725
8977
  });
8726
8978
  var setLayout = defineOperation({
8727
8979
  type: "set_layout",
8728
8980
  schema: setLayoutSchema,
8729
8981
  apply: (state, op) => mapListTab(state, op.viewId, op.tabId, (tab) => {
8730
- if (op.value === "table") return { ...withoutKanbanKeys(tab), layout: "table" };
8982
+ if (op.value !== "kanban") return { ...withoutKanbanKeys(tab), layout: op.value };
8731
8983
  if (tab.groupByAttribute === void 0) {
8732
8984
  throw new ValidationError(
8733
8985
  `List tab "${op.tabId}" cannot switch to kanban without a group attribute \u2014 use set_group_by, which switches the layout itself`,
@@ -8795,6 +9047,18 @@ var setCardDateAttribute = setOnTab(
8795
9047
  z.string().min(1).nullable(),
8796
9048
  (value) => value ? `Affiche ${value} sur les cartes` : "Retire la date des cartes"
8797
9049
  );
9050
+ var setDescriptionAttribute = setOnTab(
9051
+ "set_description_attribute",
9052
+ "descriptionAttribute",
9053
+ z.string().min(1).nullable(),
9054
+ (value) => value ? `Affiche ${value} en description` : "Retire la description"
9055
+ );
9056
+ var setDisplayAttributes = setOnTab(
9057
+ "set_display_attributes",
9058
+ "displayAttributes",
9059
+ displayAttributesSchema.nullable(),
9060
+ (value) => `Affiche ${Array.isArray(value) ? value.length : 0} attribut(s)`
9061
+ );
8798
9062
  var setDefaultFiltersSchema = z.object({
8799
9063
  ...viewOperationBase,
8800
9064
  type: z.literal("set_default_filters"),
@@ -8829,8 +9093,46 @@ var LIST_VIEW_OPERATIONS = [
8829
9093
  setCreateMode,
8830
9094
  setReadOnly,
8831
9095
  setCardUserAttribute,
8832
- setCardDateAttribute
9096
+ setCardDateAttribute,
9097
+ setDescriptionAttribute,
9098
+ setDisplayAttributes
8833
9099
  ];
9100
+
9101
+ // src/architect/object-projection.ts
9102
+ function toDraftableObject(object2) {
9103
+ return {
9104
+ id: object2.id ?? object2.name,
9105
+ name: object2.name,
9106
+ label: object2.label,
9107
+ ...object2.icon === void 0 ? {} : { icon: object2.icon }
9108
+ };
9109
+ }
9110
+ function toDraftableAttributes(object2) {
9111
+ const objectId = object2.id ?? object2.name;
9112
+ return (object2.attributes ?? []).map((attribute) => toDraftableAttribute(attribute, objectId));
9113
+ }
9114
+ function toAttribute(attribute) {
9115
+ return {
9116
+ id: attribute.id,
9117
+ name: attribute.name,
9118
+ label: attribute.label,
9119
+ type: attribute.attributeType,
9120
+ ...attribute.config
9121
+ };
9122
+ }
9123
+ function toDraftableAttribute(attribute, objectId) {
9124
+ const { id: _id, name: _name, label: _label, type: _type, ...config } = attribute;
9125
+ return {
9126
+ id: attribute.id ?? attribute.name,
9127
+ objectId,
9128
+ name: attribute.name,
9129
+ label: attribute.label ?? attribute.name,
9130
+ attributeType: attribute.type,
9131
+ config
9132
+ };
9133
+ }
9134
+
9135
+ // src/architect/operations/schema.ts
8834
9136
  function requireObject(state, objectId) {
8835
9137
  if (!state.objects.some((o) => o.id === objectId)) {
8836
9138
  throw new ValidationError(`Object "${objectId}" is not in the draftable state`, []);
@@ -9046,13 +9348,7 @@ var removeAttribute = defineOperation({
9046
9348
  describe: (op) => `Supprime l'attribut ${op.attributeId}`
9047
9349
  });
9048
9350
  function assertSampleValue(recordId, key, attribute, value) {
9049
- const reconstructed = {
9050
- id: attribute.id,
9051
- name: attribute.name,
9052
- label: attribute.label,
9053
- type: attribute.attributeType,
9054
- ...attribute.config
9055
- };
9351
+ const reconstructed = toAttribute(attribute);
9056
9352
  try {
9057
9353
  createAttributeValidator(reconstructed);
9058
9354
  } catch {
@@ -9328,31 +9624,6 @@ function deriveArchitectChanges(initial, operations) {
9328
9624
  });
9329
9625
  }
9330
9626
 
9331
- // src/architect/object-projection.ts
9332
- function toDraftableObject(object2) {
9333
- return {
9334
- id: object2.id ?? object2.name,
9335
- name: object2.name,
9336
- label: object2.label,
9337
- ...object2.icon === void 0 ? {} : { icon: object2.icon }
9338
- };
9339
- }
9340
- function toDraftableAttributes(object2) {
9341
- const objectId = object2.id ?? object2.name;
9342
- return (object2.attributes ?? []).map((attribute) => toDraftableAttribute(attribute, objectId));
9343
- }
9344
- function toDraftableAttribute(attribute, objectId) {
9345
- const { id: _id, name: _name, label: _label, type: _type, ...config } = attribute;
9346
- return {
9347
- id: attribute.id ?? attribute.name,
9348
- objectId,
9349
- name: attribute.name,
9350
- label: attribute.label ?? attribute.name,
9351
- attributeType: attribute.type,
9352
- config
9353
- };
9354
- }
9355
-
9356
9627
  // src/architect/view-projection.ts
9357
9628
  function toDraftableView(view) {
9358
9629
  return {
@@ -9382,4 +9653,4 @@ function fromDraftableView(original, drafted) {
9382
9653
  };
9383
9654
  }
9384
9655
 
9385
- export { AGENT_UI_BATCH_MAX_BYTES, AGENT_UI_BATCH_MAX_ITEMS, ALLOWED_PROPERTY_TYPES, ALL_ACTIONS, ALL_OPERATION_TYPES, ALL_SYSTEM_RESOURCES, ATTRIBUTE_TYPES, AUDIT_ACTIONS, AUDIT_RESOURCE_TYPES, ActivityTabConfig, AgentBuilder, BEHAVIOR_PROPERTIES, BYTE_UNIT_LABELS, CLAIMABLE_SESSION_STATUSES, COMPUTED_FUNCTIONS, COMPUTED_FUNCTION_METADATA, COMPUTED_FUNCTION_NAMES, CONNECTOR_CALLBACK_PARAM, COUNT_MODES, ComputedFormulaCompileError, CustomTabConfig, DB_COLUMN_FIELDS, DEFAULT_AGENT_EXECUTION_CONFIG, DEFAULT_APPROVAL_POLICY, DEFAULT_LABEL_FALLBACK, DEFAULT_ROLES, DEFAULT_ROLE_DESCRIPTIONS, DEFAULT_ROLE_LABELS, DEFAULT_ROLE_PERMISSIONS, DOCUMENT_SYSTEM_ATTRIBUTES, DRAFTABLE_ATTRIBUTE_TYPES, DRIVE_LIST_VIEW, DRIVE_OBJECT, DRIVE_OBJECT_NAME, DRIVE_VIEW, DetailViewBuilder, DocumentsTabConfig, EMPTY_VALUE_PLACEHOLDER, ESTIMATED_COUNT_CAP, EmailsTabConfig, FORM_FORBIDDEN_ATTRIBUTE_TYPES, FlagRegistry, FlagService, FormBuilder, FormRegistry, FormRowBuilder, FormStepBuilder, GroupBuilder, IDENTITY_PROPERTIES, LIVE_EVENT_TYPES, ListViewBuilder, ListViewTabConfigBuilder, MAX_PRESET_DEPTH, MAX_TODOS, MAX_TODO_DESCRIPTION_CHARS, MAX_TODO_ID_CHARS, MAX_TODO_RESULT_CHARS, MEMORY_LIST_VIEW, MEMORY_OBJECT, MEMORY_VIEW, MeetingsTabConfig, NATIVE_AGENT_UI_PART_IDS_METADATA_KEY, NATIVE_AGENT_UI_PART_IDS_METADATA_SCHEMA_VERSION, NOTIFICATION_INBOX_STATES, NOTIFICATION_KINDS, NOTIFICATION_PRIORITIES, NOTIFICATION_SENSITIVITIES, NOTIFICATION_TYPES_V1, NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED, NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN, NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED, NOTIFICATION_WORK_STATES, NoopGeocodingAdapter, OBJECT_NAME_SCHEMA, OPEN_TOOL_PART_STATES, OPERATION_REGISTRY, OPERATOR_SPECS, ObjectBuilder, PRESENTATION_PROPERTIES, QUALIFIED_SEPARATOR, RECORD_CREATOR_ROOT_ACTOR_METADATA_KEY, RELATION_TARGET_ANY, RichtextTabConfig, SCHEMA_PLAN_LIMITS, SESSION_STATE_STREAM_ID, SESSION_TERMINAL_STATUSES, SKILL_LIST_VIEW, SKILL_OBJECT, SKILL_VIEW, STANDARD_SCHEMA_VENDOR, SYSTEM_RESOURCES, SYSTEM_RESOURCE_LABELS, TODAY_DEFAULT, TODO_PLAN_STATUSES, TODO_STATUSES, TOOL_APPROVAL_STATES, TabBuilder, TableTabConfig, UPDATE_TABLE_TAB_CHANGE_KEYS, UPDATE_TAB_CHANGE_KEYS, UPDATE_TAB_CONFIG_CHANGE_KEYS, USER_STATUSES, USER_WORK_POSTURES, accessLevelToActions, actionsToAccessLevel, agent, agentDataChunk, agentDisplayName, agentMessageAttachmentSchema, agentMessagePartSchema, agentSessionMessageSchema, agentUIValidationError, applyOperations, applyPipes, applyRelationProps, assertAcyclicComputedDependencies, assertCustomAgentUIMessageChunk, booleanFlag, buildAgentFallbackTitle, buildPermissionFlags, buildPropertySchema, buildQualifiedAttribute, checkbox, compareAgentSessionMessages, compileComputedFormula, compileRollupAttribute, computeByteMagnitude, conversationDisplayTitle, createFlagRegistry, createFlagService, createStandardSchemaProps, currency, customDataChunkSchemas, date, dateInTimezone, dateValueStart, defineOperation, definePresentation, deriveArchitectChanges, deriveCreateDefaultsFromFilters, deriveInitials, describeAttributeConfig, describeOperationInput, describeOperations, destructiveSchema, detailView, document, durableDateSchema, ensureFieldIds, episodeImpactOf, evaluateComputedAst, evaluateComputedFormula, evaluateComputedFormulaWithResult, evaluateFilterState, evaluateRecordFilterState, extractAttributeNames, extractValueRefs, flagRegistry, focusOf, form, formFieldFlatKey, formFieldKey, formRegistry, formatAgentStreamFrameId, formatAttributeValue, formatByteSize, formatComputedResult, formatLocationValue, formula, fromDraftableView, generateDefaultDetailView, generateDefaultListView, getActiveTab, getEditableLabelAttribute, getErrorMessage, getLiveProtocolPayloadChannel, getRecordCreatorPrincipalId, getSingleAttributeFromExpression, getSlotFieldTargets, getUserDisplayName, group, hasDestructiveEntries, hasOptions, includesAction, inferInverseCardinality, inferRollupReturnType, isAgentUIDataName, isAgentUIMessageBatch, isAttributeSortable2 as isAttributeSortable, isBilateralRelation, isCheckboxEquality, isClaimableSessionStatus, isComputedFunctionName, isDateRangeValue, isDefaultRole, isDetailView, isDocumentAttribute, isEmptyObject, isFieldGroup, isFormDefinition, isFormFieldsRow, isFormFreeFieldRef, isFormHeadingRow, isFormSeparatorRow, isFormSlotFieldRef, isFormTextRow, isLabelExpression, isListView, isLiveEventEnvelope, isLiveEventPayload, isLiveEventPayloadForType, isLiveEventType, isNotEmpty, isOpenToolPartState, isPlainRecord2 as isPlainRecord, isStandardSchema, isTerminalSessionStatus, isTerminalState, isToolApprovalState, isUniversalRelation, jsonFlag, legacyStatusToSessionState, listDescribableNames, listView, liveChannelKey, location, makeFieldId, matchesAccepts, mentionReferenceSchema, modelDefinitionSchema, multiselect, nativeAgentUIPartIdMetadataKey, normalizeDateValue, number, numberFlag, object, orderAgentSessionMessages, parseAgentStreamFrameId, parseCountMode, parseLiveChannelKey, parseNativeAgentUIPartIdsMetadata, parseOperation, parseOptionalCountMode, parseQualifiedAttribute, persistedDefaultViewTargetSchema, persistedSchemaPlanSchema, phone, plannedAttributeSchema, plannedInlineAttributeSchema, plannedObjectSchema, presentationOf, proposedDefaultViewTargetSchema, qualifiedPropertyDefs, readFormFieldValue, registry, relation, relationPropertyDefs, renderLabelExpression, resetViewToDefault, resolveAttributeDefaultValue, resolveFieldRequired, resolvePropertyDefinitions, richtext, rollup, rollupToFormulaExpression, schemaPlanSchema, select, sessionStateToLegacyStatus, status, stringFlag, text, toDraftableAttributes, toDraftableObject, toDraftableView, toUndefinedIfEmpty, todoItemSchema, todoPlanSchema, toolImpactSchema, user, validateAttributeName, validateLabelExpression, validateObjectName, validateViewName, viewRegistry, viewStateKey, viewSyncPayload };
9656
+ export { AGENT_UI_BATCH_MAX_BYTES, AGENT_UI_BATCH_MAX_ITEMS, ALLOWED_PROPERTY_TYPES, ALL_ACTIONS, ALL_OPERATION_TYPES, ALL_SYSTEM_RESOURCES, ARTIFACT_FILE_ROLES, ARTIFACT_KINDS, ARTIFACT_LIST_VIEW, ARTIFACT_OBJECT, ARTIFACT_OBJECT_NAME, ARTIFACT_RETENTIONS, ATTRIBUTE_TYPES, AUDIT_ACTIONS, AUDIT_RESOURCE_TYPES, ActivityTabConfig, AgentBuilder, BEHAVIOR_PROPERTIES, BYTE_UNIT_LABELS, CLAIMABLE_SESSION_STATUSES, COMPUTED_FUNCTIONS, COMPUTED_FUNCTION_METADATA, COMPUTED_FUNCTION_NAMES, CONNECTOR_CALLBACK_PARAM, COUNT_MODES, ComputedFormulaCompileError, CustomTabConfig, DB_COLUMN_FIELDS, DEFAULT_AGENT_EXECUTION_CONFIG, DEFAULT_APPROVAL_POLICY, DEFAULT_DICTATION_LIMITS, DEFAULT_LABEL_FALLBACK, DEFAULT_MEETING_BOT_DISPLAY_NAME, DEFAULT_ROLES, DEFAULT_ROLE_DESCRIPTIONS, DEFAULT_ROLE_LABELS, DEFAULT_ROLE_PERMISSIONS, DEFAULT_TENANT_SETTINGS, DICTATION_FINALIZATION_TIMEOUT_MS, DICTATION_FRAME_BYTES, DICTATION_MAX_BUFFER_BYTES, DICTATION_MAX_FRAME_BYTES, DICTATION_MAX_TRANSCRIPT_BYTES, DICTATION_MODEL_ID, DICTATION_PREPARATION_TIMEOUT_MS, DICTATION_SAMPLE_RATE, DICTATION_TICKET_TTL_MS, DOCUMENT_SYSTEM_ATTRIBUTES, DRAFTABLE_ATTRIBUTE_TYPES, DRIVE_LIST_VIEW, DRIVE_OBJECT, DRIVE_OBJECT_NAME, DRIVE_VIEW, DetailViewBuilder, DocumentsTabConfig, EMPTY_VALUE_PLACEHOLDER, ESTIMATED_COUNT_CAP, EmailsTabConfig, FAKE_MEETING_BOT_SIGNATURE_HEADER, FORM_FORBIDDEN_ATTRIBUTE_TYPES, FlagRegistry, FlagService, FormBuilder, FormRegistry, FormRowBuilder, FormStepBuilder, GroupBuilder, IDENTITY_PROPERTIES, INFERENCE_REASONING_OPTIONS, INFERENCE_SPEEDS, LIVE_EVENT_TYPES, ListViewBuilder, ListViewTabConfigBuilder, MAX_PRESET_DEPTH, MAX_TODOS, MAX_TODO_DESCRIPTION_CHARS, MAX_TODO_ID_CHARS, MAX_TODO_RESULT_CHARS, MEMORY_LIST_VIEW, MEMORY_OBJECT, MEMORY_VIEW, MeetingsTabConfig, NATIVE_AGENT_UI_PART_IDS_METADATA_KEY, NATIVE_AGENT_UI_PART_IDS_METADATA_SCHEMA_VERSION, NOTIFICATION_INBOX_STATES, NOTIFICATION_KINDS, NOTIFICATION_PRIORITIES, NOTIFICATION_SENSITIVITIES, NOTIFICATION_TYPES_V1, NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED, NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN, NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED, NOTIFICATION_WORK_STATES, NO_RECORDING, NoopGeocodingAdapter, OBJECT_NAME_SCHEMA, OPEN_TOOL_PART_STATES, OPERATION_REGISTRY, OPERATOR_SPECS, ObjectBuilder, PRESENTATION_PROPERTIES, PROVIDER_NAMES, QUALIFIED_SEPARATOR, RECORDING_OVERRIDES, RECORDING_POLICIES, RECORD_CREATOR_ROOT_ACTOR_METADATA_KEY, RELATION_TARGET_ANY, RichtextTabConfig, SCHEMA_PLAN_LIMITS, SESSION_STATE_STREAM_ID, SESSION_TERMINAL_STATUSES, SKILL_LIST_VIEW, SKILL_OBJECT, SKILL_VIEW, STANDARD_SCHEMA_VENDOR, SYSTEM_RESOURCES, SYSTEM_RESOURCE_LABELS, TODAY_DEFAULT, TODO_PLAN_STATUSES, TODO_STATUSES, TOOL_APPROVAL_STATES, TabBuilder, TableTabConfig, UPDATE_TABLE_TAB_CHANGE_KEYS, UPDATE_TAB_CHANGE_KEYS, UPDATE_TAB_CONFIG_CHANGE_KEYS, USER_STATUSES, USER_WORK_POSTURES, accessLevelToActions, actionsToAccessLevel, agent, agentDataChunk, agentDisplayName, agentInferencePreferencesSchema, agentMessageAttachmentSchema, agentMessagePartSchema, agentSessionInferenceOverridesSchema, agentSessionMessageSchema, agentUIValidationError, applyOperations, applyPipes, applyRelationProps, assertAcyclicComputedDependencies, assertCustomAgentUIMessageChunk, booleanFlag, buildAgentFallbackTitle, buildPermissionFlags, buildPropertySchema, buildQualifiedAttribute, checkbox, compareAgentSessionMessages, compileComputedFormula, compileRollupAttribute, computeByteMagnitude, conversationDisplayTitle, createFlagRegistry, createFlagService, createStandardSchemaProps, currency, customDataChunkSchemas, date, dateInTimezone, dateValueStart, defineOperation, definePresentation, deriveArchitectChanges, deriveCreateDefaultsFromFilters, deriveInitials, describeAttributeConfig, describeOperationInput, describeOperations, destructiveSchema, detailView, document, durableDateSchema, ensureFieldIds, episodeImpactOf, evaluateComputedAst, evaluateComputedFormula, evaluateComputedFormulaWithResult, evaluateFilterState, evaluateRecordFilterState, extractAttributeNames, extractValueRefs, flagRegistry, focusOf, form, formFieldFlatKey, formFieldKey, formRegistry, formatAgentStreamFrameId, formatAttributeValue, formatByteSize, formatComputedResult, formatLocationValue, formula, fromDraftableView, generateDefaultDetailView, generateDefaultListView, getActiveTab, getEditableLabelAttribute, getErrorMessage, getListViewDisplayAttributeNames, getLiveProtocolPayloadChannel, getRecordCreatorPrincipalId, getSingleAttributeFromExpression, getSlotFieldTargets, getUserDisplayName, group, hasDestructiveEntries, hasOptions, includesAction, inferInverseCardinality, inferRollupReturnType, inferenceReasoningSchema, inferenceSpeedSchema, isAgentUIDataName, isAgentUIMessageBatch, isAttributeSortable2 as isAttributeSortable, isBilateralRelation, isCheckboxEquality, isClaimableSessionStatus, isComputedFunctionName, isDateRangeValue, isDefaultRole, isDetailView, isDocumentAttribute, isEmptyObject, isFieldGroup, isFormDefinition, isFormFieldsRow, isFormFreeFieldRef, isFormHeadingRow, isFormSeparatorRow, isFormSlotFieldRef, isFormTextRow, isLabelExpression, isListView, isLiveEventEnvelope, isLiveEventPayload, isLiveEventPayloadForType, isLiveEventType, isNotEmpty, isOpenToolPartState, isPlainRecord2 as isPlainRecord, isStandardSchema, isTerminalSessionStatus, isTerminalState, isToolApprovalState, isUniversalRelation, jsonFlag, legacyStatusToSessionState, listDescribableNames, listView, liveChannelKey, location, makeFieldId, matchesAccepts, mentionReferenceSchema, modelDefinitionSchema, modelReferenceSchema, multiselect, nativeAgentUIPartIdMetadataKey, normalizeDateValue, number, numberFlag, object, orderAgentSessionMessages, parseAgentStreamFrameId, parseCountMode, parseLiveChannelKey, parseNativeAgentUIPartIdsMetadata, parseOperation, parseOptionalCountMode, parseQualifiedAttribute, persistedDefaultViewTargetSchema, persistedSchemaPlanSchema, phone, plannedAttributeSchema, plannedInlineAttributeSchema, plannedObjectSchema, presentationOf, proposedDefaultViewTargetSchema, providerNameSchema, qualifiedPropertyDefs, readFormFieldValue, registry, relation, relationPropertyDefs, renderLabelExpression, resetViewToDefault, resolveAttributeDefaultValue, resolveFieldRequired, resolvePropertyDefinitions, richtext, rollup, rollupToFormulaExpression, schemaPlanSchema, select, sessionStateToLegacyStatus, status, stringFlag, text, toAttribute, toDraftableAttributes, toDraftableObject, toDraftableView, toUndefinedIfEmpty, todoItemSchema, todoPlanSchema, toolImpactSchema, user, validateAttributeName, validateLabelExpression, validateObjectName, validateViewName, viewRegistry, viewStateKey, viewSyncPayload };