@proteos/sdk 0.51.1 → 0.53.0

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.
@@ -867,6 +867,74 @@ interface EntityService {
867
867
  delete(slug: string): Promise<void>;
868
868
  }
869
869
 
870
+ /**
871
+ * Service for entity extensions — attributes contributed to an EXISTING host
872
+ * entity by a resource that does not own it (typically a second module). The
873
+ * host's `attributes` are the materialized merge: its own attributes plus every
874
+ * extension's, each stamped with `extension_key`. Every write here
875
+ * re-materializes the host; an attribute name shared with the host or another
876
+ * extension is refused (`entity_extension_attribute_collision`).
877
+ */
878
+ interface EntityExtensionService {
879
+ /** Lists entity extensions (auto-paginating iterator). */
880
+ list(options?: ListEntityExtensionsOptions): PageIterator<EntityExtension, ListEntityExtensionsOptions>;
881
+ /** Fetches a single page of entity extensions. */
882
+ listPage(options?: ListEntityExtensionsOptions): Promise<ListResult<EntityExtension>>;
883
+ /** Gets an entity extension by key (404 when unknown). */
884
+ get(key: string): Promise<EntityExtension>;
885
+ /**
886
+ * Creates an entity extension and merges its attributes into the host.
887
+ * @throws {ProteosError} 409 `entity_extension_already_exists` when the key
888
+ * is taken; 400 `entity_extension_entity_not_found` when the host does
889
+ * not exist; 400 `entity_extension_attribute_collision` on a name clash.
890
+ */
891
+ create(request: CreateEntityExtensionRequest): Promise<EntityExtension>;
892
+ /**
893
+ * Creates or replaces an entity extension idempotently by key
894
+ * (`PUT /meta/v1/entity-extensions/:key`). Replaces the whole definition;
895
+ * the host binding (`entity_slug`) of an existing key is immutable.
896
+ */
897
+ upsert(key: string, request: CreateEntityExtensionRequest): Promise<EntityExtension>;
898
+ /** Partially updates an entity extension (`attributes` replaces the whole list). */
899
+ update(key: string, request: UpdateEntityExtensionRequest): Promise<EntityExtension>;
900
+ /** Deletes an entity extension and removes its attributes from the host. */
901
+ delete(key: string): Promise<void>;
902
+ }
903
+
904
+ /**
905
+ * Service for entity extensions — attributes contributed to an EXISTING host
906
+ * entity by a resource that does not own it (typically a second module). The
907
+ * host's `attributes` are the materialized merge: its own attributes plus every
908
+ * extension's, each stamped with `extension_key`. Every write here
909
+ * re-materializes the host; an attribute name shared with the host or another
910
+ * extension is refused (`entity_extension_attribute_collision`).
911
+ */
912
+ interface ListExtensionService {
913
+ /** Lists entity extensions (auto-paginating iterator). */
914
+ list(options?: ListListExtensionsOptions): PageIterator<ListExtension, ListListExtensionsOptions>;
915
+ /** Fetches a single page of entity extensions. */
916
+ listPage(options?: ListListExtensionsOptions): Promise<ListResult<ListExtension>>;
917
+ /** Gets an entity extension by key (404 when unknown). */
918
+ get(key: string): Promise<ListExtension>;
919
+ /**
920
+ * Creates an entity extension and merges its attributes into the host.
921
+ * @throws {ProteosError} 409 `entity_extension_already_exists` when the key
922
+ * is taken; 400 `entity_extension_entity_not_found` when the host does
923
+ * not exist; 400 `entity_extension_attribute_collision` on a name clash.
924
+ */
925
+ create(request: CreateListExtensionRequest): Promise<ListExtension>;
926
+ /**
927
+ * Creates or replaces an entity extension idempotently by key
928
+ * (`PUT /meta/v1/list-extensions/:key`). Replaces the whole definition;
929
+ * the host binding (`list_slug`) of an existing key is immutable.
930
+ */
931
+ upsert(key: string, request: CreateListExtensionRequest): Promise<ListExtension>;
932
+ /** Partially updates an entity extension (`attributes` replaces the whole list). */
933
+ update(key: string, request: UpdateListExtensionRequest): Promise<ListExtension>;
934
+ /** Deletes an entity extension and removes its attributes from the host. */
935
+ delete(key: string): Promise<void>;
936
+ }
937
+
870
938
  /**
871
939
  * Service for managing list view configurations.
872
940
  * List views define filtered and sorted views of lists.
@@ -981,6 +1049,45 @@ interface ListService {
981
1049
  delete(slug: string): Promise<void>;
982
1050
  }
983
1051
 
1052
+ /**
1053
+ * Service for menu-configuration extensions — items contributed to an EXISTING
1054
+ * host menu configuration by a resource that does not own it (typically a
1055
+ * second module). The host's `items` are the materialized merge: its own tree
1056
+ * plus every extension's placements, each contributed item stamped with
1057
+ * `extension_key` (a replaced / removed host item kept under `replaced_item`).
1058
+ * Every write here re-materializes the host; an item id shared with the host
1059
+ * or another extension is refused
1060
+ * (`menu_configuration_extension_item_id_collision`), an anchor the host does
1061
+ * not have too (`menu_configuration_extension_anchor_not_found`).
1062
+ */
1063
+ interface MenuConfigurationExtensionService {
1064
+ /** Lists menu-configuration extensions (auto-paginating iterator). */
1065
+ list(options?: ListMenuConfigurationExtensionsOptions): PageIterator<MenuConfigurationExtension, ListMenuConfigurationExtensionsOptions>;
1066
+ /** Fetches a single page of menu-configuration extensions. */
1067
+ listPage(options?: ListMenuConfigurationExtensionsOptions): Promise<ListResult<MenuConfigurationExtension>>;
1068
+ /** Gets a menu-configuration extension by key (404 when unknown). */
1069
+ get(key: string): Promise<MenuConfigurationExtension>;
1070
+ /**
1071
+ * Creates a menu-configuration extension and merges its items into the host.
1072
+ * @throws {ProteosError} 409 `menu_configuration_extension_already_exists`
1073
+ * when the key is taken; 400 `menu_configuration_extension_menu_not_found`
1074
+ * when the host does not exist; 400
1075
+ * `menu_configuration_extension_anchor_not_found` /
1076
+ * `menu_configuration_extension_item_id_collision` on a bad placement.
1077
+ */
1078
+ create(request: CreateMenuConfigurationExtensionRequest): Promise<MenuConfigurationExtension>;
1079
+ /**
1080
+ * Creates or replaces a menu-configuration extension idempotently by key
1081
+ * (`PUT /meta/v1/menu-configuration-extensions/:key`). Replaces the whole definition;
1082
+ * the host binding (`menu_slug`) of an existing key is immutable.
1083
+ */
1084
+ upsert(key: string, request: CreateMenuConfigurationExtensionRequest): Promise<MenuConfigurationExtension>;
1085
+ /** Partially updates a menu-configuration extension (`placements` replaces the whole list). */
1086
+ update(key: string, request: UpdateMenuConfigurationExtensionRequest): Promise<MenuConfigurationExtension>;
1087
+ /** Deletes a menu-configuration extension and removes its items from the host. */
1088
+ delete(key: string): Promise<void>;
1089
+ }
1090
+
984
1091
  /**
985
1092
  * Service for managing menu configurations.
986
1093
  * Menu configurations define the navigation structure of applications.
@@ -1128,6 +1235,40 @@ interface ModuleService {
1128
1235
  }>;
1129
1236
  }
1130
1237
 
1238
+ /**
1239
+ * Service for entity extensions — attributes contributed to an EXISTING host
1240
+ * entity by a resource that does not own it (typically a second module). The
1241
+ * host's `attributes` are the materialized merge: its own attributes plus every
1242
+ * extension's, each stamped with `extension_key`. Every write here
1243
+ * re-materializes the host; an attribute name shared with the host or another
1244
+ * extension is refused (`entity_extension_attribute_collision`).
1245
+ */
1246
+ interface PageExtensionService {
1247
+ /** Lists entity extensions (auto-paginating iterator). */
1248
+ list(options?: ListPageExtensionsOptions): PageIterator<PageExtension, ListPageExtensionsOptions>;
1249
+ /** Fetches a single page of entity extensions. */
1250
+ listPage(options?: ListPageExtensionsOptions): Promise<ListResult<PageExtension>>;
1251
+ /** Gets an entity extension by key (404 when unknown). */
1252
+ get(key: string): Promise<PageExtension>;
1253
+ /**
1254
+ * Creates an entity extension and merges its attributes into the host.
1255
+ * @throws {ProteosError} 409 `entity_extension_already_exists` when the key
1256
+ * is taken; 400 `entity_extension_entity_not_found` when the host does
1257
+ * not exist; 400 `entity_extension_attribute_collision` on a name clash.
1258
+ */
1259
+ create(request: CreatePageExtensionRequest): Promise<PageExtension>;
1260
+ /**
1261
+ * Creates or replaces an entity extension idempotently by key
1262
+ * (`PUT /meta/v1/page-extensions/:key`). Replaces the whole definition;
1263
+ * the host binding (`page_slug`) of an existing key is immutable.
1264
+ */
1265
+ upsert(key: string, request: CreatePageExtensionRequest): Promise<PageExtension>;
1266
+ /** Partially updates an entity extension (`attributes` replaces the whole list). */
1267
+ update(key: string, request: UpdatePageExtensionRequest): Promise<PageExtension>;
1268
+ /** Deletes an entity extension and removes its attributes from the host. */
1269
+ delete(key: string): Promise<void>;
1270
+ }
1271
+
1131
1272
  /**
1132
1273
  * Service for managing page configurations.
1133
1274
  * Pages define the layout and content of entity detail views.
@@ -1403,6 +1544,13 @@ interface ResponsiveSizing {
1403
1544
  */
1404
1545
  interface CommonProps {
1405
1546
  id?: string;
1547
+ /**
1548
+ * Server-stamped back-reference to the page extension that contributes this
1549
+ * element to its host page. Present only on a host's merged layout; ignored
1550
+ * (stripped and re-derived) on writes. Mirrors `ExtensionKey` in the Go
1551
+ * `metamodel.CommonProps`.
1552
+ */
1553
+ extension_key?: string;
1406
1554
  visible_when?: FilterGroup;
1407
1555
  read_only_when?: FilterGroup;
1408
1556
  width?: SizeValue;
@@ -1515,6 +1663,8 @@ type CardElement = CommonProps & {
1515
1663
  */
1516
1664
  type LayoutTab = {
1517
1665
  id: string;
1666
+ /** Page-extension stamp for a contributed tab — same contract as `CommonProps.extension_key`. */
1667
+ extension_key?: string;
1518
1668
  label: string;
1519
1669
  icon?: string;
1520
1670
  visible_when?: FilterGroup;
@@ -1689,6 +1839,7 @@ type TextElement = CommonProps & {
1689
1839
  content: string;
1690
1840
  };
1691
1841
  type LayoutElement = RowElement | ColumnElement | SectionElement | CardElement | TabsElement | FieldElement | RelatedListElement | RelatedRecordElement | ComponentElement | DividerElement | TextElement | RecordFilterElement | ListElement | WorkflowTriggerElement;
1842
+ declare const LayoutTabSchema: z.ZodType<LayoutTab>;
1692
1843
  declare const LayoutElementSchema: z.ZodType<LayoutElement>;
1693
1844
 
1694
1845
  /**
@@ -1853,6 +2004,26 @@ declare class MetaClient {
1853
2004
  * Service for managing entity definitions.
1854
2005
  */
1855
2006
  readonly entities: EntityService;
2007
+ /**
2008
+ * Service for managing entity extensions — attributes contributed to a host
2009
+ * entity by a resource that does not own it.
2010
+ */
2011
+ readonly entityExtensions: EntityExtensionService;
2012
+ /**
2013
+ * Service for managing page extensions — anchored layout blocks contributed
2014
+ * to a host page by a resource that does not own it.
2015
+ */
2016
+ readonly pageExtensions: PageExtensionService;
2017
+ /**
2018
+ * Service for managing list extensions — columns and toolbar actions
2019
+ * contributed to a host list by a resource that does not own it.
2020
+ */
2021
+ readonly listExtensions: ListExtensionService;
2022
+ /**
2023
+ * Service for managing menu-configuration extensions — items contributed
2024
+ * to a host menu by another module or resource.
2025
+ */
2026
+ readonly menuConfigurationExtensions: MenuConfigurationExtensionService;
1856
2027
  /**
1857
2028
  * Service for managing WebAssembly modules.
1858
2029
  */
@@ -1915,7 +2086,7 @@ interface MetaListOptions extends ListOptions {
1915
2086
  * full set; format/structural variation lives on `Attribute.meta` (see
1916
2087
  * `AttributeMeta` below), not on the type discriminator.
1917
2088
  */
1918
- type AttributeType = 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object' | 'datetime' | 'enum' | 'relation' | 'user' | 'principal' | 'currency' | 'knowledge-text' | 'file';
2089
+ type AttributeType = 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object' | 'datetime' | 'enum' | 'relation' | 'user' | 'principal' | 'currency' | 'knowledge-text' | 'file' | 'contact-address';
1919
2090
  /**
1920
2091
  * Attribute-level permissions: restricting a FIELD rather than a record — a
1921
2092
  * salary column readable only by the people team, a margin column writable only
@@ -2128,6 +2299,35 @@ declare const CurrencyAttributeMetaSchema: z.ZodObject<{
2128
2299
  default_currency_code?: string | undefined;
2129
2300
  allowed_currency_codes?: string[] | undefined;
2130
2301
  }>;
2302
+ /**
2303
+ * Which endpoint a `contact-address` attribute holds. The record-capable
2304
+ * subset of the conversation contact-address kinds — what a human types.
2305
+ */
2306
+ type ContactAddressAttributeKind = 'email' | 'phone' | 'linkedin_public_identifier';
2307
+ /**
2308
+ * Metadata for a `contact-address`-typed attribute: ONE canonical reachable
2309
+ * address of the person the record represents. The stored value is a plain
2310
+ * string canonicalized on write (lowercased email, E.164 phone with a leading
2311
+ * `+`, LinkedIn public identifier — a pasted profile URL is reduced to its
2312
+ * `/in/<slug>`; displayed as https://www.linkedin.com/in/<slug>; LinkedIn
2313
+ * profile ids such as ACoAA… are refused — the platform learns them itself).
2314
+ * Records carrying such values bind to exactly one conversation contact;
2315
+ * `kind` is REQUIRED. Mirror of the Go `metamodel.ContactAddressAttributeMeta`.
2316
+ */
2317
+ interface ContactAddressAttributeMeta {
2318
+ kind: ContactAddressAttributeKind;
2319
+ description?: string;
2320
+ }
2321
+ declare const ContactAddressAttributeMetaSchema: z.ZodObject<{
2322
+ kind: z.ZodEnum<["email", "phone", "linkedin_public_identifier"]>;
2323
+ description: z.ZodOptional<z.ZodString>;
2324
+ }, "strip", z.ZodTypeAny, {
2325
+ kind: "email" | "phone" | "linkedin_public_identifier";
2326
+ description?: string | undefined;
2327
+ }, {
2328
+ kind: "email" | "phone" | "linkedin_public_identifier";
2329
+ description?: string | undefined;
2330
+ }>;
2131
2331
  /**
2132
2332
  * Metadata for a `knowledge-text`-typed attribute. The value is a
2133
2333
  * {@link KnowledgeNodeRef}; the data-service materializes client-sent text
@@ -2166,7 +2366,7 @@ declare const FileAttributeMetaSchema: z.ZodObject<{
2166
2366
  * appropriate shape based on `Attribute.type`; runtime consumers can
2167
2367
  * narrow via the `type` field.
2168
2368
  */
2169
- type AttributeMeta = StringAttributeMeta | NumberAttributeMeta | DatetimeAttributeMeta | ArrayAttributeMeta | ObjectAttributeMeta | EnumAttributeMeta | RelationAttributeMeta | UserAttributeMeta | PrincipalAttributeMeta | CurrencyAttributeMeta | KnowledgeTextAttributeMeta | FileAttributeMeta;
2369
+ type AttributeMeta = StringAttributeMeta | NumberAttributeMeta | DatetimeAttributeMeta | ArrayAttributeMeta | ObjectAttributeMeta | EnumAttributeMeta | RelationAttributeMeta | UserAttributeMeta | PrincipalAttributeMeta | CurrencyAttributeMeta | KnowledgeTextAttributeMeta | FileAttributeMeta | ContactAddressAttributeMeta;
2170
2370
  /**
2171
2371
  * Entity attribute definition. Mirrors `model.Attribute` in the Go SDK.
2172
2372
  */
@@ -2186,6 +2386,13 @@ interface Attribute {
2186
2386
  * Mirrors `IsPlatformManaged` in the Go `metamodel.Attribute`.
2187
2387
  */
2188
2388
  is_platform_managed?: boolean;
2389
+ /**
2390
+ * Server-stamped back-reference to the entity extension that contributes
2391
+ * this attribute to its host entity. Present only on a host's merged
2392
+ * attribute list; ignored (stripped and re-derived) on writes. Mirrors
2393
+ * `ExtensionKey` in the Go `metamodel.Attribute`.
2394
+ */
2395
+ extension_key?: string;
2189
2396
  /**
2190
2397
  * Attribute-level permissions. Absent means unrestricted (today's behaviour).
2191
2398
  * Platform-managed attributes cannot carry restrictions.
@@ -2230,6 +2437,7 @@ declare const AttributeSchema: z.ZodObject<{
2230
2437
  is_nullable: z.ZodOptional<z.ZodBoolean>;
2231
2438
  is_unique: z.ZodBoolean;
2232
2439
  is_read_only: z.ZodOptional<z.ZodBoolean>;
2440
+ extension_key: z.ZodOptional<z.ZodString>;
2233
2441
  restrictions: z.ZodOptional<z.ZodObject<{
2234
2442
  read: z.ZodOptional<z.ZodObject<{
2235
2443
  roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -2281,6 +2489,7 @@ declare const AttributeSchema: z.ZodObject<{
2281
2489
  is_unique: boolean;
2282
2490
  options?: Record<string, unknown> | undefined;
2283
2491
  meta?: unknown;
2492
+ extension_key?: string | undefined;
2284
2493
  description?: string | undefined;
2285
2494
  is_read_only?: boolean | undefined;
2286
2495
  is_nullable?: boolean | undefined;
@@ -2303,6 +2512,7 @@ declare const AttributeSchema: z.ZodObject<{
2303
2512
  is_unique: boolean;
2304
2513
  options?: Record<string, unknown> | undefined;
2305
2514
  meta?: unknown;
2515
+ extension_key?: string | undefined;
2306
2516
  description?: string | undefined;
2307
2517
  is_read_only?: boolean | undefined;
2308
2518
  is_nullable?: boolean | undefined;
@@ -2344,6 +2554,13 @@ declare function parseUserMeta(attr: Attribute): UserAttributeMeta | null;
2344
2554
  * with no meta still resolves to an empty `{}` rather than null.
2345
2555
  */
2346
2556
  declare function parseFileMeta(attr: Attribute): FileAttributeMeta | null;
2557
+ /**
2558
+ * Returns the typed `ContactAddressAttributeMeta` when `attr` is a
2559
+ * contact-address attribute with a valid kind; null otherwise. Unlike the
2560
+ * `{}`-defaulting parsers, `kind` is required — an attribute without one
2561
+ * cannot be canonicalized, so it resolves to null (shape of parseRelationMeta).
2562
+ */
2563
+ declare function parseContactAddressMeta(attr: Attribute): ContactAddressAttributeMeta | null;
2347
2564
  /**
2348
2565
  * A single operation a resource may be publicly exposed for. Independent set
2349
2566
  * (not a level): a resource can be public for `write` without `read`. Only
@@ -2354,6 +2571,28 @@ type PublicAccessOperation = 'read' | 'write' | 'delete';
2354
2571
  * Entity definition.
2355
2572
  * Note: Entity uses `slug` as its primary identifier, not `id`.
2356
2573
  */
2574
+ /**
2575
+ * What happens when a record's contact-address value already belongs to a
2576
+ * contact linked to ANOTHER record of the same entity: `reject` fails the
2577
+ * write (409 `record_duplicate`); `flag` (default) accepts it and raises a
2578
+ * record duplicate pair for review.
2579
+ */
2580
+ type ContactBindingDuplicatePolicy = 'reject' | 'flag';
2581
+ /**
2582
+ * The entity-level contact-binding setting — meaningful only for entities
2583
+ * with `contact-address` attributes; absent on the wire means `flag`. Mirror
2584
+ * of the Go `metamodel.ContactBinding`.
2585
+ */
2586
+ interface EntityContactBinding {
2587
+ duplicate_policy: ContactBindingDuplicatePolicy;
2588
+ }
2589
+ declare const EntityContactBindingSchema: z.ZodObject<{
2590
+ duplicate_policy: z.ZodEnum<["reject", "flag"]>;
2591
+ }, "strip", z.ZodTypeAny, {
2592
+ duplicate_policy: "reject" | "flag";
2593
+ }, {
2594
+ duplicate_policy: "reject" | "flag";
2595
+ }>;
2357
2596
  interface Entity extends AuditFields {
2358
2597
  slug: string;
2359
2598
  name: string;
@@ -2367,6 +2606,11 @@ interface Entity extends AuditFields {
2367
2606
  * (default).
2368
2607
  */
2369
2608
  public_record_access: PublicAccessOperation[];
2609
+ /**
2610
+ * Contact-binding setting (see `EntityContactBinding`). Optional: a Go
2611
+ * build that predates the setting omits it, which means `flag`.
2612
+ */
2613
+ contact_binding?: EntityContactBinding;
2370
2614
  module_slug: string;
2371
2615
  /**
2372
2616
  * Liquid template that renders a human-readable title for an instance
@@ -2409,6 +2653,13 @@ declare const EntitySchema: z.ZodObject<{
2409
2653
  description: z.ZodString;
2410
2654
  is_remote: z.ZodBoolean;
2411
2655
  public_record_access: z.ZodDefault<z.ZodArray<z.ZodEnum<["read", "write", "delete"]>, "many">>;
2656
+ contact_binding: z.ZodOptional<z.ZodObject<{
2657
+ duplicate_policy: z.ZodEnum<["reject", "flag"]>;
2658
+ }, "strip", z.ZodTypeAny, {
2659
+ duplicate_policy: "reject" | "flag";
2660
+ }, {
2661
+ duplicate_policy: "reject" | "flag";
2662
+ }>>;
2412
2663
  module_slug: z.ZodString;
2413
2664
  title_template: z.ZodDefault<z.ZodString>;
2414
2665
  attributes: z.ZodArray<z.ZodObject<{
@@ -2420,6 +2671,7 @@ declare const EntitySchema: z.ZodObject<{
2420
2671
  is_nullable: z.ZodOptional<z.ZodBoolean>;
2421
2672
  is_unique: z.ZodBoolean;
2422
2673
  is_read_only: z.ZodOptional<z.ZodBoolean>;
2674
+ extension_key: z.ZodOptional<z.ZodString>;
2423
2675
  restrictions: z.ZodOptional<z.ZodObject<{
2424
2676
  read: z.ZodOptional<z.ZodObject<{
2425
2677
  roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -2471,6 +2723,7 @@ declare const EntitySchema: z.ZodObject<{
2471
2723
  is_unique: boolean;
2472
2724
  options?: Record<string, unknown> | undefined;
2473
2725
  meta?: unknown;
2726
+ extension_key?: string | undefined;
2474
2727
  description?: string | undefined;
2475
2728
  is_read_only?: boolean | undefined;
2476
2729
  is_nullable?: boolean | undefined;
@@ -2493,6 +2746,7 @@ declare const EntitySchema: z.ZodObject<{
2493
2746
  is_unique: boolean;
2494
2747
  options?: Record<string, unknown> | undefined;
2495
2748
  meta?: unknown;
2749
+ extension_key?: string | undefined;
2496
2750
  description?: string | undefined;
2497
2751
  is_read_only?: boolean | undefined;
2498
2752
  is_nullable?: boolean | undefined;
@@ -2529,6 +2783,7 @@ declare const EntitySchema: z.ZodObject<{
2529
2783
  is_unique: boolean;
2530
2784
  options?: Record<string, unknown> | undefined;
2531
2785
  meta?: unknown;
2786
+ extension_key?: string | undefined;
2532
2787
  description?: string | undefined;
2533
2788
  is_read_only?: boolean | undefined;
2534
2789
  is_nullable?: boolean | undefined;
@@ -2549,6 +2804,9 @@ declare const EntitySchema: z.ZodObject<{
2549
2804
  public_record_access: ("read" | "write" | "delete")[];
2550
2805
  module_slug: string;
2551
2806
  title_template: string;
2807
+ contact_binding?: {
2808
+ duplicate_policy: "reject" | "flag";
2809
+ } | undefined;
2552
2810
  }, {
2553
2811
  name: string;
2554
2812
  created_at: string;
@@ -2570,6 +2828,7 @@ declare const EntitySchema: z.ZodObject<{
2570
2828
  is_unique: boolean;
2571
2829
  options?: Record<string, unknown> | undefined;
2572
2830
  meta?: unknown;
2831
+ extension_key?: string | undefined;
2573
2832
  description?: string | undefined;
2574
2833
  is_read_only?: boolean | undefined;
2575
2834
  is_nullable?: boolean | undefined;
@@ -2589,6 +2848,9 @@ declare const EntitySchema: z.ZodObject<{
2589
2848
  is_remote: boolean;
2590
2849
  module_slug: string;
2591
2850
  public_record_access?: ("read" | "write" | "delete")[] | undefined;
2851
+ contact_binding?: {
2852
+ duplicate_policy: "reject" | "flag";
2853
+ } | undefined;
2592
2854
  title_template?: string | undefined;
2593
2855
  }>;
2594
2856
  /**
@@ -2626,6 +2888,13 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2626
2888
  description: z.ZodString;
2627
2889
  is_remote: z.ZodBoolean;
2628
2890
  public_record_access: z.ZodDefault<z.ZodArray<z.ZodEnum<["read", "write", "delete"]>, "many">>;
2891
+ contact_binding: z.ZodOptional<z.ZodObject<{
2892
+ duplicate_policy: z.ZodEnum<["reject", "flag"]>;
2893
+ }, "strip", z.ZodTypeAny, {
2894
+ duplicate_policy: "reject" | "flag";
2895
+ }, {
2896
+ duplicate_policy: "reject" | "flag";
2897
+ }>>;
2629
2898
  module_slug: z.ZodString;
2630
2899
  title_template: z.ZodDefault<z.ZodString>;
2631
2900
  attributes: z.ZodArray<z.ZodObject<{
@@ -2637,6 +2906,7 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2637
2906
  is_nullable: z.ZodOptional<z.ZodBoolean>;
2638
2907
  is_unique: z.ZodBoolean;
2639
2908
  is_read_only: z.ZodOptional<z.ZodBoolean>;
2909
+ extension_key: z.ZodOptional<z.ZodString>;
2640
2910
  restrictions: z.ZodOptional<z.ZodObject<{
2641
2911
  read: z.ZodOptional<z.ZodObject<{
2642
2912
  roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -2688,6 +2958,7 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2688
2958
  is_unique: boolean;
2689
2959
  options?: Record<string, unknown> | undefined;
2690
2960
  meta?: unknown;
2961
+ extension_key?: string | undefined;
2691
2962
  description?: string | undefined;
2692
2963
  is_read_only?: boolean | undefined;
2693
2964
  is_nullable?: boolean | undefined;
@@ -2710,6 +2981,7 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2710
2981
  is_unique: boolean;
2711
2982
  options?: Record<string, unknown> | undefined;
2712
2983
  meta?: unknown;
2984
+ extension_key?: string | undefined;
2713
2985
  description?: string | undefined;
2714
2986
  is_read_only?: boolean | undefined;
2715
2987
  is_nullable?: boolean | undefined;
@@ -2748,6 +3020,7 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2748
3020
  is_unique: boolean;
2749
3021
  options?: Record<string, unknown> | undefined;
2750
3022
  meta?: unknown;
3023
+ extension_key?: string | undefined;
2751
3024
  description?: string | undefined;
2752
3025
  is_read_only?: boolean | undefined;
2753
3026
  is_nullable?: boolean | undefined;
@@ -2769,6 +3042,9 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2769
3042
  module_slug: string;
2770
3043
  title_template: string;
2771
3044
  schema: Record<string, unknown>;
3045
+ contact_binding?: {
3046
+ duplicate_policy: "reject" | "flag";
3047
+ } | undefined;
2772
3048
  }, {
2773
3049
  name: string;
2774
3050
  created_at: string;
@@ -2790,6 +3066,7 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2790
3066
  is_unique: boolean;
2791
3067
  options?: Record<string, unknown> | undefined;
2792
3068
  meta?: unknown;
3069
+ extension_key?: string | undefined;
2793
3070
  description?: string | undefined;
2794
3071
  is_read_only?: boolean | undefined;
2795
3072
  is_nullable?: boolean | undefined;
@@ -2810,6 +3087,9 @@ declare const EntityWithSchemaSchema: z.ZodObject<{
2810
3087
  module_slug: string;
2811
3088
  schema: Record<string, unknown>;
2812
3089
  public_record_access?: ("read" | "write" | "delete")[] | undefined;
3090
+ contact_binding?: {
3091
+ duplicate_policy: "reject" | "flag";
3092
+ } | undefined;
2813
3093
  title_template?: string | undefined;
2814
3094
  }>;
2815
3095
  /**
@@ -2834,6 +3114,10 @@ interface CreateEntityRequest {
2834
3114
  * the field resets it to private.
2835
3115
  */
2836
3116
  public_record_access?: PublicAccessOperation[];
3117
+ /**
3118
+ * Contact-binding setting; full-replacement on upsert (omitted = `flag`).
3119
+ */
3120
+ contact_binding?: EntityContactBinding;
2837
3121
  module_slug: string;
2838
3122
  description: string;
2839
3123
  title_template?: string;
@@ -2846,6 +3130,7 @@ interface UpdateEntityRequest {
2846
3130
  name?: string;
2847
3131
  is_remote?: boolean;
2848
3132
  public_record_access?: PublicAccessOperation[];
3133
+ contact_binding?: EntityContactBinding;
2849
3134
  module_slug?: string;
2850
3135
  description?: string;
2851
3136
  title_template?: string;
@@ -3205,6 +3490,12 @@ interface Column {
3205
3490
  attribute: string;
3206
3491
  label: string;
3207
3492
  width: number;
3493
+ /**
3494
+ * Server-stamped back-reference to the list extension that contributes this
3495
+ * column to its host list. Present only on a host's merged column list;
3496
+ * ignored (stripped and re-derived) on writes.
3497
+ */
3498
+ extension_key?: string;
3208
3499
  }
3209
3500
  /**
3210
3501
  * Sort direction.
@@ -3244,6 +3535,8 @@ interface PageAction {
3244
3535
  params?: Record<string, string>;
3245
3536
  inputs?: Record<string, string>;
3246
3537
  skip_confirmation?: boolean;
3538
+ /** List-extension stamp on a toolbar action a list extension appended to its host list. */
3539
+ extension_key?: string;
3247
3540
  }
3248
3541
  declare const PageActionSchema: z.ZodObject<{
3249
3542
  label: z.ZodString;
@@ -3254,24 +3547,27 @@ declare const PageActionSchema: z.ZodObject<{
3254
3547
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3255
3548
  inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3256
3549
  skip_confirmation: z.ZodOptional<z.ZodBoolean>;
3550
+ extension_key: z.ZodOptional<z.ZodString>;
3257
3551
  }, "strip", z.ZodTypeAny, {
3258
3552
  label: string;
3259
3553
  icon: string;
3260
3554
  params?: Record<string, string> | undefined;
3555
+ extension_key?: string | undefined;
3261
3556
  workflow?: string | undefined;
3262
3557
  inputs?: Record<string, string> | undefined;
3263
3558
  skip_confirmation?: boolean | undefined;
3264
- action?: string | undefined;
3265
3559
  kind?: "workflow" | "action" | undefined;
3560
+ action?: string | undefined;
3266
3561
  }, {
3267
3562
  label: string;
3268
3563
  icon: string;
3269
3564
  params?: Record<string, string> | undefined;
3565
+ extension_key?: string | undefined;
3270
3566
  workflow?: string | undefined;
3271
3567
  inputs?: Record<string, string> | undefined;
3272
3568
  skip_confirmation?: boolean | undefined;
3273
- action?: string | undefined;
3274
3569
  kind?: "workflow" | "action" | undefined;
3570
+ action?: string | undefined;
3275
3571
  }>;
3276
3572
  /**
3277
3573
  * Whether a list's rows can be checked, and whether the checkboxes show from
@@ -3310,14 +3606,17 @@ declare const ColumnSchema: z.ZodObject<{
3310
3606
  attribute: z.ZodString;
3311
3607
  label: z.ZodString;
3312
3608
  width: z.ZodNumber;
3609
+ extension_key: z.ZodOptional<z.ZodString>;
3313
3610
  }, "strip", z.ZodTypeAny, {
3314
3611
  width: number;
3315
3612
  label: string;
3316
3613
  attribute: string;
3614
+ extension_key?: string | undefined;
3317
3615
  }, {
3318
3616
  width: number;
3319
3617
  label: string;
3320
3618
  attribute: string;
3619
+ extension_key?: string | undefined;
3321
3620
  }>;
3322
3621
  declare const SortConfigSchema: z.ZodObject<{
3323
3622
  attribute: z.ZodString;
@@ -3361,14 +3660,17 @@ declare const ListSchema: z.ZodObject<{
3361
3660
  attribute: z.ZodString;
3362
3661
  label: z.ZodString;
3363
3662
  width: z.ZodNumber;
3663
+ extension_key: z.ZodOptional<z.ZodString>;
3364
3664
  }, "strip", z.ZodTypeAny, {
3365
3665
  width: number;
3366
3666
  label: string;
3367
3667
  attribute: string;
3668
+ extension_key?: string | undefined;
3368
3669
  }, {
3369
3670
  width: number;
3370
3671
  label: string;
3371
3672
  attribute: string;
3673
+ extension_key?: string | undefined;
3372
3674
  }>, "many">;
3373
3675
  actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
3374
3676
  label: z.ZodString;
@@ -3379,24 +3681,27 @@ declare const ListSchema: z.ZodObject<{
3379
3681
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3380
3682
  inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3381
3683
  skip_confirmation: z.ZodOptional<z.ZodBoolean>;
3684
+ extension_key: z.ZodOptional<z.ZodString>;
3382
3685
  }, "strip", z.ZodTypeAny, {
3383
3686
  label: string;
3384
3687
  icon: string;
3385
3688
  params?: Record<string, string> | undefined;
3689
+ extension_key?: string | undefined;
3386
3690
  workflow?: string | undefined;
3387
3691
  inputs?: Record<string, string> | undefined;
3388
3692
  skip_confirmation?: boolean | undefined;
3389
- action?: string | undefined;
3390
3693
  kind?: "workflow" | "action" | undefined;
3694
+ action?: string | undefined;
3391
3695
  }, {
3392
3696
  label: string;
3393
3697
  icon: string;
3394
3698
  params?: Record<string, string> | undefined;
3699
+ extension_key?: string | undefined;
3395
3700
  workflow?: string | undefined;
3396
3701
  inputs?: Record<string, string> | undefined;
3397
3702
  skip_confirmation?: boolean | undefined;
3398
- action?: string | undefined;
3399
3703
  kind?: "workflow" | "action" | undefined;
3704
+ action?: string | undefined;
3400
3705
  }>, "many">>;
3401
3706
  selection_mode: z.ZodOptional<z.ZodEnum<["on_demand", "always", "off"]>>;
3402
3707
  sorting: z.ZodArray<z.ZodObject<{
@@ -3429,6 +3734,7 @@ declare const ListSchema: z.ZodObject<{
3429
3734
  width: number;
3430
3735
  label: string;
3431
3736
  attribute: string;
3737
+ extension_key?: string | undefined;
3432
3738
  }[];
3433
3739
  sorting: {
3434
3740
  attribute: string;
@@ -3439,11 +3745,12 @@ declare const ListSchema: z.ZodObject<{
3439
3745
  label: string;
3440
3746
  icon: string;
3441
3747
  params?: Record<string, string> | undefined;
3748
+ extension_key?: string | undefined;
3442
3749
  workflow?: string | undefined;
3443
3750
  inputs?: Record<string, string> | undefined;
3444
3751
  skip_confirmation?: boolean | undefined;
3445
- action?: string | undefined;
3446
3752
  kind?: "workflow" | "action" | undefined;
3753
+ action?: string | undefined;
3447
3754
  }[] | undefined;
3448
3755
  selection_mode?: "on_demand" | "always" | "off" | undefined;
3449
3756
  }, {
@@ -3465,6 +3772,7 @@ declare const ListSchema: z.ZodObject<{
3465
3772
  width: number;
3466
3773
  label: string;
3467
3774
  attribute: string;
3775
+ extension_key?: string | undefined;
3468
3776
  }[];
3469
3777
  sorting: {
3470
3778
  attribute: string;
@@ -3475,11 +3783,12 @@ declare const ListSchema: z.ZodObject<{
3475
3783
  label: string;
3476
3784
  icon: string;
3477
3785
  params?: Record<string, string> | undefined;
3786
+ extension_key?: string | undefined;
3478
3787
  workflow?: string | undefined;
3479
3788
  inputs?: Record<string, string> | undefined;
3480
3789
  skip_confirmation?: boolean | undefined;
3481
- action?: string | undefined;
3482
3790
  kind?: "workflow" | "action" | undefined;
3791
+ action?: string | undefined;
3483
3792
  }[] | undefined;
3484
3793
  selection_mode?: "on_demand" | "always" | "off" | undefined;
3485
3794
  }>;
@@ -3565,14 +3874,17 @@ declare const ListViewSchema: z.ZodObject<{
3565
3874
  attribute: z.ZodString;
3566
3875
  label: z.ZodString;
3567
3876
  width: z.ZodNumber;
3877
+ extension_key: z.ZodOptional<z.ZodString>;
3568
3878
  }, "strip", z.ZodTypeAny, {
3569
3879
  width: number;
3570
3880
  label: string;
3571
3881
  attribute: string;
3882
+ extension_key?: string | undefined;
3572
3883
  }, {
3573
3884
  width: number;
3574
3885
  label: string;
3575
3886
  attribute: string;
3887
+ extension_key?: string | undefined;
3576
3888
  }>, "many">;
3577
3889
  sorting: z.ZodArray<z.ZodObject<{
3578
3890
  attribute: z.ZodString;
@@ -3604,6 +3916,7 @@ declare const ListViewSchema: z.ZodObject<{
3604
3916
  width: number;
3605
3917
  label: string;
3606
3918
  attribute: string;
3919
+ extension_key?: string | undefined;
3607
3920
  }[];
3608
3921
  sorting: {
3609
3922
  attribute: string;
@@ -3629,6 +3942,7 @@ declare const ListViewSchema: z.ZodObject<{
3629
3942
  width: number;
3630
3943
  label: string;
3631
3944
  attribute: string;
3945
+ extension_key?: string | undefined;
3632
3946
  }[];
3633
3947
  sorting: {
3634
3948
  attribute: string;
@@ -3737,24 +4051,27 @@ declare const PageSchema: z.ZodObject<{
3737
4051
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3738
4052
  inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3739
4053
  skip_confirmation: z.ZodOptional<z.ZodBoolean>;
4054
+ extension_key: z.ZodOptional<z.ZodString>;
3740
4055
  }, "strip", z.ZodTypeAny, {
3741
4056
  label: string;
3742
4057
  icon: string;
3743
4058
  params?: Record<string, string> | undefined;
4059
+ extension_key?: string | undefined;
3744
4060
  workflow?: string | undefined;
3745
4061
  inputs?: Record<string, string> | undefined;
3746
4062
  skip_confirmation?: boolean | undefined;
3747
- action?: string | undefined;
3748
4063
  kind?: "workflow" | "action" | undefined;
4064
+ action?: string | undefined;
3749
4065
  }, {
3750
4066
  label: string;
3751
4067
  icon: string;
3752
4068
  params?: Record<string, string> | undefined;
4069
+ extension_key?: string | undefined;
3753
4070
  workflow?: string | undefined;
3754
4071
  inputs?: Record<string, string> | undefined;
3755
4072
  skip_confirmation?: boolean | undefined;
3756
- action?: string | undefined;
3757
4073
  kind?: "workflow" | "action" | undefined;
4074
+ action?: string | undefined;
3758
4075
  }>, "many">;
3759
4076
  layout: z.ZodObject<{
3760
4077
  version: z.ZodLiteral<1>;
@@ -3836,11 +4153,12 @@ declare const PageSchema: z.ZodObject<{
3836
4153
  label: string;
3837
4154
  icon: string;
3838
4155
  params?: Record<string, string> | undefined;
4156
+ extension_key?: string | undefined;
3839
4157
  workflow?: string | undefined;
3840
4158
  inputs?: Record<string, string> | undefined;
3841
4159
  skip_confirmation?: boolean | undefined;
3842
- action?: string | undefined;
3843
4160
  kind?: "workflow" | "action" | undefined;
4161
+ action?: string | undefined;
3844
4162
  }[];
3845
4163
  layout: {
3846
4164
  version: 1;
@@ -3877,11 +4195,12 @@ declare const PageSchema: z.ZodObject<{
3877
4195
  label: string;
3878
4196
  icon: string;
3879
4197
  params?: Record<string, string> | undefined;
4198
+ extension_key?: string | undefined;
3880
4199
  workflow?: string | undefined;
3881
4200
  inputs?: Record<string, string> | undefined;
3882
4201
  skip_confirmation?: boolean | undefined;
3883
- action?: string | undefined;
3884
4202
  kind?: "workflow" | "action" | undefined;
4203
+ action?: string | undefined;
3885
4204
  }[];
3886
4205
  layout: {
3887
4206
  version: 1;
@@ -3967,6 +4286,7 @@ type MenuItemType = (typeof MenuItemType)[keyof typeof MenuItemType];
3967
4286
  * Menu item definition. Matches the backend JSON shape for nested menus.
3968
4287
  */
3969
4288
  interface MenuItem {
4289
+ /** Stable within the menu; the menu's extension API (menu-configuration extensions anchor on it). */
3970
4290
  id: string;
3971
4291
  order: number;
3972
4292
  label: string;
@@ -3974,6 +4294,12 @@ interface MenuItem {
3974
4294
  icon: string;
3975
4295
  reference?: string;
3976
4296
  children: MenuItem[] | null;
4297
+ /** Server stamp: the item was contributed by this menu-configuration extension. Never authored. */
4298
+ extension_key?: string;
4299
+ /** Server stamp: a `remove` tombstone — consumers skip the item. Never authored. */
4300
+ is_hidden?: boolean;
4301
+ /** Server stamp: the host's own item this stamped item displaced (`replace` / `remove`). Never authored. */
4302
+ replaced_item?: MenuItem;
3977
4303
  }
3978
4304
  /**
3979
4305
  * Menu configuration.
@@ -4082,49 +4408,26 @@ interface UpdateMenuConfigurationRequest {
4082
4408
  items?: MenuItem[];
4083
4409
  is_default?: boolean;
4084
4410
  }
4085
- /** What an app opens on: a list (records table) or a platform page. */
4086
- type AppHomeType = 'list' | 'page';
4087
- interface AppHome {
4088
- type: AppHomeType;
4089
- reference: string;
4090
- }
4091
- declare const AppHomeSchema: z.ZodObject<{
4092
- type: z.ZodEnum<["list", "page"]>;
4093
- reference: z.ZodString;
4094
- }, "strip", z.ZodTypeAny, {
4095
- type: "page" | "list";
4096
- reference: string;
4097
- }, {
4098
- type: "page" | "list";
4099
- reference: string;
4100
- }>;
4101
4411
  /**
4102
- * AppConfigurationa TYPED binding row: "how app X presents itself" to
4103
- * everyone (`profile_slug: ''` = the app's default configuration) or to one
4104
- * profile (an override). One row per (app, profile). The web merges
4105
- * override default field-wise and falls through to structural defaults (menu
4106
- * `is_default`, first menu leaf, org-default agent, first page) for anything
4107
- * still unset.
4412
+ * EntityExtensionattributes contributed to ONE existing host entity by a
4413
+ * resource that does not own it (typically a second module). The host's
4414
+ * `attributes` are the materialized merge: its own attributes plus every
4415
+ * extension's, each stamped with `extension_key`. The row itself stores the
4416
+ * author's list unstamped. `key` is the identity; `entity_slug` is immutable
4417
+ * after create (delete and recreate to re-host).
4108
4418
  */
4109
- interface AppConfiguration extends AuditFields {
4110
- slug: string;
4419
+ interface EntityExtension extends AuditFields {
4420
+ key: string;
4111
4421
  org_id: string;
4422
+ name: string;
4423
+ description: string;
4424
+ /** The host entity the attributes are merged into. */
4425
+ entity_slug: string;
4112
4426
  module_slug: string;
4113
- app_slug: string;
4114
- /** Bound profile; `''` = the default configuration for everyone. */
4115
- profile_slug: string;
4116
- /** Home; absent = the first list/page leaf of the resolved menu. */
4117
- home?: AppHome | null;
4118
- /** Menu to show; `''` = the app's `is_default` menu. */
4119
- menu_slug?: string;
4120
- /** Agent Ask Proteos preselects in this app; `''` = the org default. */
4121
- default_agent_key?: string;
4122
- /** Agents offered in this app; empty = every org agent. */
4123
- agent_keys?: string[];
4124
- /** entity_slug → record page slug opened from this app. */
4125
- record_pages?: Record<string, string>;
4427
+ /** The contributed definitions, exactly as authored (no `extension_key`). */
4428
+ attributes: Attribute[];
4126
4429
  }
4127
- declare const AppConfigurationSchema: z.ZodObject<{
4430
+ declare const EntityExtensionSchema: z.ZodObject<{
4128
4431
  created_at: z.ZodString;
4129
4432
  updated_at: z.ZodString;
4130
4433
  created_by: z.ZodObject<{
@@ -4148,27 +4451,943 @@ declare const AppConfigurationSchema: z.ZodObject<{
4148
4451
  id: string;
4149
4452
  }>;
4150
4453
  } & {
4151
- slug: z.ZodString;
4454
+ key: z.ZodString;
4152
4455
  org_id: z.ZodString;
4456
+ name: z.ZodString;
4457
+ description: z.ZodString;
4458
+ entity_slug: z.ZodString;
4153
4459
  module_slug: z.ZodString;
4154
- app_slug: z.ZodString;
4155
- profile_slug: z.ZodString;
4156
- home: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4157
- type: z.ZodEnum<["list", "page"]>;
4158
- reference: z.ZodString;
4460
+ attributes: z.ZodArray<z.ZodObject<{
4461
+ name: z.ZodString;
4462
+ type: z.ZodString;
4463
+ label: z.ZodString;
4464
+ description: z.ZodOptional<z.ZodString>;
4465
+ is_required: z.ZodBoolean;
4466
+ is_nullable: z.ZodOptional<z.ZodBoolean>;
4467
+ is_unique: z.ZodBoolean;
4468
+ is_read_only: z.ZodOptional<z.ZodBoolean>;
4469
+ extension_key: z.ZodOptional<z.ZodString>;
4470
+ restrictions: z.ZodOptional<z.ZodObject<{
4471
+ read: z.ZodOptional<z.ZodObject<{
4472
+ roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4473
+ teams: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4474
+ }, "strip", z.ZodTypeAny, {
4475
+ roles?: string[] | undefined;
4476
+ teams?: string[] | undefined;
4477
+ }, {
4478
+ roles?: string[] | undefined;
4479
+ teams?: string[] | undefined;
4480
+ }>>;
4481
+ write: z.ZodOptional<z.ZodObject<{
4482
+ roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4483
+ teams: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4484
+ }, "strip", z.ZodTypeAny, {
4485
+ roles?: string[] | undefined;
4486
+ teams?: string[] | undefined;
4487
+ }, {
4488
+ roles?: string[] | undefined;
4489
+ teams?: string[] | undefined;
4490
+ }>>;
4491
+ }, "strip", z.ZodTypeAny, {
4492
+ read?: {
4493
+ roles?: string[] | undefined;
4494
+ teams?: string[] | undefined;
4495
+ } | undefined;
4496
+ write?: {
4497
+ roles?: string[] | undefined;
4498
+ teams?: string[] | undefined;
4499
+ } | undefined;
4500
+ }, {
4501
+ read?: {
4502
+ roles?: string[] | undefined;
4503
+ teams?: string[] | undefined;
4504
+ } | undefined;
4505
+ write?: {
4506
+ roles?: string[] | undefined;
4507
+ teams?: string[] | undefined;
4508
+ } | undefined;
4509
+ }>>;
4510
+ default_value: z.ZodOptional<z.ZodUnknown>;
4511
+ meta: z.ZodOptional<z.ZodUnknown>;
4512
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4159
4513
  }, "strip", z.ZodTypeAny, {
4160
- type: "page" | "list";
4161
- reference: string;
4514
+ type: string;
4515
+ name: string;
4516
+ label: string;
4517
+ is_required: boolean;
4518
+ is_unique: boolean;
4519
+ options?: Record<string, unknown> | undefined;
4520
+ meta?: unknown;
4521
+ extension_key?: string | undefined;
4522
+ description?: string | undefined;
4523
+ is_read_only?: boolean | undefined;
4524
+ is_nullable?: boolean | undefined;
4525
+ restrictions?: {
4526
+ read?: {
4527
+ roles?: string[] | undefined;
4528
+ teams?: string[] | undefined;
4529
+ } | undefined;
4530
+ write?: {
4531
+ roles?: string[] | undefined;
4532
+ teams?: string[] | undefined;
4533
+ } | undefined;
4534
+ } | undefined;
4535
+ default_value?: unknown;
4162
4536
  }, {
4163
- type: "page" | "list";
4164
- reference: string;
4165
- }>>>;
4166
- menu_slug: z.ZodOptional<z.ZodString>;
4167
- default_agent_key: z.ZodOptional<z.ZodString>;
4168
- agent_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4169
- record_pages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
4537
+ type: string;
4538
+ name: string;
4539
+ label: string;
4540
+ is_required: boolean;
4541
+ is_unique: boolean;
4542
+ options?: Record<string, unknown> | undefined;
4543
+ meta?: unknown;
4544
+ extension_key?: string | undefined;
4545
+ description?: string | undefined;
4546
+ is_read_only?: boolean | undefined;
4547
+ is_nullable?: boolean | undefined;
4548
+ restrictions?: {
4549
+ read?: {
4550
+ roles?: string[] | undefined;
4551
+ teams?: string[] | undefined;
4552
+ } | undefined;
4553
+ write?: {
4554
+ roles?: string[] | undefined;
4555
+ teams?: string[] | undefined;
4556
+ } | undefined;
4557
+ } | undefined;
4558
+ default_value?: unknown;
4559
+ }>, "many">;
4170
4560
  }, "strip", z.ZodTypeAny, {
4171
- created_at: string;
4561
+ key: string;
4562
+ name: string;
4563
+ created_at: string;
4564
+ updated_at: string;
4565
+ created_by: {
4566
+ type: "person" | "agent" | "api";
4567
+ id: string;
4568
+ };
4569
+ updated_by: {
4570
+ type: "person" | "agent" | "api";
4571
+ id: string;
4572
+ };
4573
+ description: string;
4574
+ attributes: {
4575
+ type: string;
4576
+ name: string;
4577
+ label: string;
4578
+ is_required: boolean;
4579
+ is_unique: boolean;
4580
+ options?: Record<string, unknown> | undefined;
4581
+ meta?: unknown;
4582
+ extension_key?: string | undefined;
4583
+ description?: string | undefined;
4584
+ is_read_only?: boolean | undefined;
4585
+ is_nullable?: boolean | undefined;
4586
+ restrictions?: {
4587
+ read?: {
4588
+ roles?: string[] | undefined;
4589
+ teams?: string[] | undefined;
4590
+ } | undefined;
4591
+ write?: {
4592
+ roles?: string[] | undefined;
4593
+ teams?: string[] | undefined;
4594
+ } | undefined;
4595
+ } | undefined;
4596
+ default_value?: unknown;
4597
+ }[];
4598
+ module_slug: string;
4599
+ entity_slug: string;
4600
+ org_id: string;
4601
+ }, {
4602
+ key: string;
4603
+ name: string;
4604
+ created_at: string;
4605
+ updated_at: string;
4606
+ created_by: {
4607
+ type: "person" | "agent" | "api";
4608
+ id: string;
4609
+ };
4610
+ updated_by: {
4611
+ type: "person" | "agent" | "api";
4612
+ id: string;
4613
+ };
4614
+ description: string;
4615
+ attributes: {
4616
+ type: string;
4617
+ name: string;
4618
+ label: string;
4619
+ is_required: boolean;
4620
+ is_unique: boolean;
4621
+ options?: Record<string, unknown> | undefined;
4622
+ meta?: unknown;
4623
+ extension_key?: string | undefined;
4624
+ description?: string | undefined;
4625
+ is_read_only?: boolean | undefined;
4626
+ is_nullable?: boolean | undefined;
4627
+ restrictions?: {
4628
+ read?: {
4629
+ roles?: string[] | undefined;
4630
+ teams?: string[] | undefined;
4631
+ } | undefined;
4632
+ write?: {
4633
+ roles?: string[] | undefined;
4634
+ teams?: string[] | undefined;
4635
+ } | undefined;
4636
+ } | undefined;
4637
+ default_value?: unknown;
4638
+ }[];
4639
+ module_slug: string;
4640
+ entity_slug: string;
4641
+ org_id: string;
4642
+ }>;
4643
+ interface ListEntityExtensionsOptions extends MetaListOptions {
4644
+ key?: string;
4645
+ name?: string;
4646
+ entity_slug?: string;
4647
+ module_slug?: string;
4648
+ }
4649
+ /**
4650
+ * Request to create an entity extension: at least one attribute, no platform
4651
+ * attribute names, no `extension_key` (the server stamps it on the host).
4652
+ */
4653
+ interface CreateEntityExtensionRequest {
4654
+ key: string;
4655
+ name?: string;
4656
+ description?: string;
4657
+ entity_slug: string;
4658
+ module_slug?: string;
4659
+ attributes: Attribute[];
4660
+ }
4661
+ /**
4662
+ * Partial update. `attributes`, when present, replaces the whole contributed
4663
+ * list. `entity_slug` is immutable — delete and recreate to re-host.
4664
+ */
4665
+ interface UpdateEntityExtensionRequest {
4666
+ name?: string;
4667
+ description?: string;
4668
+ module_slug?: string;
4669
+ attributes?: Attribute[];
4670
+ }
4671
+ /**
4672
+ * Where a placement's block goes relative to its anchor. `first` / `last`
4673
+ * mean "inside this container", `before` / `after` mean "next to this node"
4674
+ * (a sibling of the same kind: element next to element, tab next to tab).
4675
+ */
4676
+ type ExtensionPosition = 'before' | 'after' | 'first' | 'last';
4677
+ declare const ExtensionPositionSchema: z.ZodEnum<["before", "after", "first", "last"]>;
4678
+ /**
4679
+ * Virtual anchors naming the layout roots (`first` / `last` only). Dots keep
4680
+ * them out of the kebab-case authored-id namespace.
4681
+ */
4682
+ declare const PAGE_EXTENSION_ANCHOR_MAIN = "layout.main";
4683
+ declare const PAGE_EXTENSION_ANCHOR_SIDE_PANEL = "layout.side_panel";
4684
+ /**
4685
+ * One anchored block: the anchor (an element id, a tab id, or a virtual root
4686
+ * anchor) in the host's OWN layout, a position, and the payload. Exactly one
4687
+ * of `elements` / `tabs` is set; which one is right follows from the anchor —
4688
+ * a tabs element (`first` / `last`) or a tab id (`before` / `after`) takes
4689
+ * `tabs`, everything else takes `elements`. The payload lands as ONE
4690
+ * contiguous run in author order. Every element and tab needs an authored id.
4691
+ */
4692
+ interface PageExtensionPlacement {
4693
+ anchor_id: string;
4694
+ position: ExtensionPosition;
4695
+ elements?: LayoutElement[];
4696
+ tabs?: LayoutTab[];
4697
+ }
4698
+ declare const PageExtensionPlacementSchema: z.ZodObject<{
4699
+ anchor_id: z.ZodString;
4700
+ position: z.ZodEnum<["before", "after", "first", "last"]>;
4701
+ elements: z.ZodOptional<z.ZodArray<z.ZodType<LayoutElement, z.ZodTypeDef, LayoutElement>, "many">>;
4702
+ tabs: z.ZodOptional<z.ZodArray<z.ZodType<LayoutTab, z.ZodTypeDef, LayoutTab>, "many">>;
4703
+ }, "strip", z.ZodTypeAny, {
4704
+ anchor_id: string;
4705
+ position: "before" | "after" | "first" | "last";
4706
+ elements?: LayoutElement[] | undefined;
4707
+ tabs?: LayoutTab[] | undefined;
4708
+ }, {
4709
+ anchor_id: string;
4710
+ position: "before" | "after" | "first" | "last";
4711
+ elements?: LayoutElement[] | undefined;
4712
+ tabs?: LayoutTab[] | undefined;
4713
+ }>;
4714
+ /**
4715
+ * PageExtension — anchored layout blocks contributed to ONE existing host page
4716
+ * by a resource that does not own it (typically a second module). The host's
4717
+ * `layout` is the materialized merge: its own tree plus every extension's
4718
+ * placements, each contributed element and tab stamped with `extension_key`.
4719
+ * The row itself stores the author's placements unstamped. `key` is the
4720
+ * identity; `page_slug` is immutable after create (delete and recreate to
4721
+ * re-host).
4722
+ */
4723
+ interface PageExtension extends AuditFields {
4724
+ key: string;
4725
+ org_id: string;
4726
+ name: string;
4727
+ description: string;
4728
+ /** The host page the placements are merged into. */
4729
+ page_slug: string;
4730
+ module_slug: string;
4731
+ /** The contributed blocks, exactly as authored (no `extension_key`). */
4732
+ placements: PageExtensionPlacement[];
4733
+ }
4734
+ declare const PageExtensionSchema: z.ZodObject<{
4735
+ created_at: z.ZodString;
4736
+ updated_at: z.ZodString;
4737
+ created_by: z.ZodObject<{
4738
+ type: z.ZodEnum<["person", "agent", "api"]>;
4739
+ id: z.ZodString;
4740
+ }, "strip", z.ZodTypeAny, {
4741
+ type: "person" | "agent" | "api";
4742
+ id: string;
4743
+ }, {
4744
+ type: "person" | "agent" | "api";
4745
+ id: string;
4746
+ }>;
4747
+ updated_by: z.ZodObject<{
4748
+ type: z.ZodEnum<["person", "agent", "api"]>;
4749
+ id: z.ZodString;
4750
+ }, "strip", z.ZodTypeAny, {
4751
+ type: "person" | "agent" | "api";
4752
+ id: string;
4753
+ }, {
4754
+ type: "person" | "agent" | "api";
4755
+ id: string;
4756
+ }>;
4757
+ } & {
4758
+ key: z.ZodString;
4759
+ org_id: z.ZodString;
4760
+ name: z.ZodString;
4761
+ description: z.ZodString;
4762
+ page_slug: z.ZodString;
4763
+ module_slug: z.ZodString;
4764
+ placements: z.ZodArray<z.ZodObject<{
4765
+ anchor_id: z.ZodString;
4766
+ position: z.ZodEnum<["before", "after", "first", "last"]>;
4767
+ elements: z.ZodOptional<z.ZodArray<z.ZodType<LayoutElement, z.ZodTypeDef, LayoutElement>, "many">>;
4768
+ tabs: z.ZodOptional<z.ZodArray<z.ZodType<LayoutTab, z.ZodTypeDef, LayoutTab>, "many">>;
4769
+ }, "strip", z.ZodTypeAny, {
4770
+ anchor_id: string;
4771
+ position: "before" | "after" | "first" | "last";
4772
+ elements?: LayoutElement[] | undefined;
4773
+ tabs?: LayoutTab[] | undefined;
4774
+ }, {
4775
+ anchor_id: string;
4776
+ position: "before" | "after" | "first" | "last";
4777
+ elements?: LayoutElement[] | undefined;
4778
+ tabs?: LayoutTab[] | undefined;
4779
+ }>, "many">;
4780
+ }, "strip", z.ZodTypeAny, {
4781
+ key: string;
4782
+ name: string;
4783
+ created_at: string;
4784
+ updated_at: string;
4785
+ created_by: {
4786
+ type: "person" | "agent" | "api";
4787
+ id: string;
4788
+ };
4789
+ updated_by: {
4790
+ type: "person" | "agent" | "api";
4791
+ id: string;
4792
+ };
4793
+ description: string;
4794
+ page_slug: string;
4795
+ module_slug: string;
4796
+ org_id: string;
4797
+ placements: {
4798
+ anchor_id: string;
4799
+ position: "before" | "after" | "first" | "last";
4800
+ elements?: LayoutElement[] | undefined;
4801
+ tabs?: LayoutTab[] | undefined;
4802
+ }[];
4803
+ }, {
4804
+ key: string;
4805
+ name: string;
4806
+ created_at: string;
4807
+ updated_at: string;
4808
+ created_by: {
4809
+ type: "person" | "agent" | "api";
4810
+ id: string;
4811
+ };
4812
+ updated_by: {
4813
+ type: "person" | "agent" | "api";
4814
+ id: string;
4815
+ };
4816
+ description: string;
4817
+ page_slug: string;
4818
+ module_slug: string;
4819
+ org_id: string;
4820
+ placements: {
4821
+ anchor_id: string;
4822
+ position: "before" | "after" | "first" | "last";
4823
+ elements?: LayoutElement[] | undefined;
4824
+ tabs?: LayoutTab[] | undefined;
4825
+ }[];
4826
+ }>;
4827
+ interface ListPageExtensionsOptions extends MetaListOptions {
4828
+ key?: string;
4829
+ name?: string;
4830
+ page_slug?: string;
4831
+ module_slug?: string;
4832
+ }
4833
+ /**
4834
+ * Request to create a page extension: at least one placement, an authored id
4835
+ * on every contributed element and tab, no `extension_key` (the server stamps
4836
+ * it on the host).
4837
+ */
4838
+ interface CreatePageExtensionRequest {
4839
+ key: string;
4840
+ name?: string;
4841
+ description?: string;
4842
+ page_slug: string;
4843
+ module_slug?: string;
4844
+ placements: PageExtensionPlacement[];
4845
+ }
4846
+ /**
4847
+ * Partial update. `placements`, when present, replaces the whole contributed
4848
+ * list. `page_slug` is immutable — delete and recreate to re-host.
4849
+ */
4850
+ interface UpdatePageExtensionRequest {
4851
+ name?: string;
4852
+ description?: string;
4853
+ module_slug?: string;
4854
+ placements?: PageExtensionPlacement[];
4855
+ }
4856
+ /**
4857
+ * Where a menu placement's block goes relative to its anchor. The four insert
4858
+ * positions are the shared `ExtensionPosition`; `replace` swaps the anchor
4859
+ * (whole subtree) for the block, `remove` hides it. Both keep the host's
4860
+ * original under `replaced_item` on the materialized tree.
4861
+ */
4862
+ type MenuConfigurationExtensionPosition = ExtensionPosition | 'replace' | 'remove';
4863
+ declare const MenuConfigurationExtensionPositionSchema: z.ZodEnum<["before", "after", "first", "last", "replace", "remove"]>;
4864
+ /** Virtual anchor naming the menu's root item list (`first` / `last` only). */
4865
+ declare const MENU_CONFIGURATION_EXTENSION_ANCHOR_ITEMS = "menu.items";
4866
+ /**
4867
+ * One anchored block: the anchor (an item id in the host's OWN tree, or the
4868
+ * virtual root `menu.items`), a position, and the contributed items (one
4869
+ * contiguous run in author order). `remove` carries no items; every other
4870
+ * position needs at least one. `first` / `last` on an item go into its
4871
+ * children (groups only). Every contributed item needs an authored id.
4872
+ */
4873
+ interface MenuConfigurationExtensionPlacement {
4874
+ anchor_id: string;
4875
+ position: MenuConfigurationExtensionPosition;
4876
+ items?: MenuItem[];
4877
+ }
4878
+ declare const MenuConfigurationExtensionPlacementSchema: z.ZodObject<{
4879
+ anchor_id: z.ZodString;
4880
+ position: z.ZodEnum<["before", "after", "first", "last", "replace", "remove"]>;
4881
+ items: z.ZodOptional<z.ZodArray<z.ZodType<MenuItem, z.ZodTypeDef, MenuItem>, "many">>;
4882
+ }, "strip", z.ZodTypeAny, {
4883
+ anchor_id: string;
4884
+ position: "before" | "after" | "first" | "last" | "replace" | "remove";
4885
+ items?: MenuItem[] | undefined;
4886
+ }, {
4887
+ anchor_id: string;
4888
+ position: "before" | "after" | "first" | "last" | "replace" | "remove";
4889
+ items?: MenuItem[] | undefined;
4890
+ }>;
4891
+ /**
4892
+ * MenuConfigurationExtension — items contributed to ONE existing host menu
4893
+ * configuration by a resource that does not own it (typically a second
4894
+ * module). The host's `items` are the materialized merge: its own tree plus
4895
+ * every extension's placements, each contributed item stamped with
4896
+ * `extension_key` (a replaced / removed host item kept under `replaced_item`).
4897
+ * The row itself stores the author's placements unstamped. `key` is the
4898
+ * identity; `menu_slug` is immutable after create (delete and recreate to
4899
+ * re-host).
4900
+ */
4901
+ interface MenuConfigurationExtension extends AuditFields {
4902
+ key: string;
4903
+ org_id: string;
4904
+ name: string;
4905
+ description: string;
4906
+ /** The host menu configuration the placements are merged into. */
4907
+ menu_slug: string;
4908
+ module_slug: string;
4909
+ /** The contributed blocks, exactly as authored (no `extension_key`). */
4910
+ placements: MenuConfigurationExtensionPlacement[];
4911
+ }
4912
+ declare const MenuConfigurationExtensionSchema: z.ZodObject<{
4913
+ created_at: z.ZodString;
4914
+ updated_at: z.ZodString;
4915
+ created_by: z.ZodObject<{
4916
+ type: z.ZodEnum<["person", "agent", "api"]>;
4917
+ id: z.ZodString;
4918
+ }, "strip", z.ZodTypeAny, {
4919
+ type: "person" | "agent" | "api";
4920
+ id: string;
4921
+ }, {
4922
+ type: "person" | "agent" | "api";
4923
+ id: string;
4924
+ }>;
4925
+ updated_by: z.ZodObject<{
4926
+ type: z.ZodEnum<["person", "agent", "api"]>;
4927
+ id: z.ZodString;
4928
+ }, "strip", z.ZodTypeAny, {
4929
+ type: "person" | "agent" | "api";
4930
+ id: string;
4931
+ }, {
4932
+ type: "person" | "agent" | "api";
4933
+ id: string;
4934
+ }>;
4935
+ } & {
4936
+ key: z.ZodString;
4937
+ org_id: z.ZodString;
4938
+ name: z.ZodString;
4939
+ description: z.ZodString;
4940
+ menu_slug: z.ZodString;
4941
+ module_slug: z.ZodString;
4942
+ placements: z.ZodArray<z.ZodObject<{
4943
+ anchor_id: z.ZodString;
4944
+ position: z.ZodEnum<["before", "after", "first", "last", "replace", "remove"]>;
4945
+ items: z.ZodOptional<z.ZodArray<z.ZodType<MenuItem, z.ZodTypeDef, MenuItem>, "many">>;
4946
+ }, "strip", z.ZodTypeAny, {
4947
+ anchor_id: string;
4948
+ position: "before" | "after" | "first" | "last" | "replace" | "remove";
4949
+ items?: MenuItem[] | undefined;
4950
+ }, {
4951
+ anchor_id: string;
4952
+ position: "before" | "after" | "first" | "last" | "replace" | "remove";
4953
+ items?: MenuItem[] | undefined;
4954
+ }>, "many">;
4955
+ }, "strip", z.ZodTypeAny, {
4956
+ key: string;
4957
+ name: string;
4958
+ created_at: string;
4959
+ updated_at: string;
4960
+ created_by: {
4961
+ type: "person" | "agent" | "api";
4962
+ id: string;
4963
+ };
4964
+ updated_by: {
4965
+ type: "person" | "agent" | "api";
4966
+ id: string;
4967
+ };
4968
+ description: string;
4969
+ module_slug: string;
4970
+ org_id: string;
4971
+ placements: {
4972
+ anchor_id: string;
4973
+ position: "before" | "after" | "first" | "last" | "replace" | "remove";
4974
+ items?: MenuItem[] | undefined;
4975
+ }[];
4976
+ menu_slug: string;
4977
+ }, {
4978
+ key: string;
4979
+ name: string;
4980
+ created_at: string;
4981
+ updated_at: string;
4982
+ created_by: {
4983
+ type: "person" | "agent" | "api";
4984
+ id: string;
4985
+ };
4986
+ updated_by: {
4987
+ type: "person" | "agent" | "api";
4988
+ id: string;
4989
+ };
4990
+ description: string;
4991
+ module_slug: string;
4992
+ org_id: string;
4993
+ placements: {
4994
+ anchor_id: string;
4995
+ position: "before" | "after" | "first" | "last" | "replace" | "remove";
4996
+ items?: MenuItem[] | undefined;
4997
+ }[];
4998
+ menu_slug: string;
4999
+ }>;
5000
+ interface ListMenuConfigurationExtensionsOptions extends MetaListOptions {
5001
+ key?: string;
5002
+ name?: string;
5003
+ menu_slug?: string;
5004
+ module_slug?: string;
5005
+ }
5006
+ /**
5007
+ * Request to create a menu-configuration extension: at least one placement,
5008
+ * an authored id on every contributed item, no `extension_key` (the server
5009
+ * stamps it on the host).
5010
+ */
5011
+ interface CreateMenuConfigurationExtensionRequest {
5012
+ key: string;
5013
+ name?: string;
5014
+ description?: string;
5015
+ menu_slug: string;
5016
+ module_slug?: string;
5017
+ placements: MenuConfigurationExtensionPlacement[];
5018
+ }
5019
+ /**
5020
+ * Partial update. `placements`, when present, replaces the whole contributed
5021
+ * list. `menu_slug` is immutable — delete and recreate to re-host.
5022
+ */
5023
+ interface UpdateMenuConfigurationExtensionRequest {
5024
+ name?: string;
5025
+ description?: string;
5026
+ module_slug?: string;
5027
+ placements?: MenuConfigurationExtensionPlacement[];
5028
+ }
5029
+ /**
5030
+ * One anchored run of columns. `anchor_attribute` names a column of the host's
5031
+ * OWN column list by its attribute path (a column's identity); required for
5032
+ * `before` / `after`, must be empty for `first` / `last` (the ends of the
5033
+ * list). The columns land as one contiguous run in author order.
5034
+ */
5035
+ interface ListExtensionColumnPlacement {
5036
+ anchor_attribute?: string;
5037
+ position: ExtensionPosition;
5038
+ columns: Column[];
5039
+ }
5040
+ declare const ListExtensionColumnPlacementSchema: z.ZodObject<{
5041
+ anchor_attribute: z.ZodOptional<z.ZodString>;
5042
+ position: z.ZodEnum<["before", "after", "first", "last"]>;
5043
+ columns: z.ZodArray<z.ZodObject<{
5044
+ attribute: z.ZodString;
5045
+ label: z.ZodString;
5046
+ width: z.ZodNumber;
5047
+ extension_key: z.ZodOptional<z.ZodString>;
5048
+ }, "strip", z.ZodTypeAny, {
5049
+ width: number;
5050
+ label: string;
5051
+ attribute: string;
5052
+ extension_key?: string | undefined;
5053
+ }, {
5054
+ width: number;
5055
+ label: string;
5056
+ attribute: string;
5057
+ extension_key?: string | undefined;
5058
+ }>, "many">;
5059
+ }, "strip", z.ZodTypeAny, {
5060
+ columns: {
5061
+ width: number;
5062
+ label: string;
5063
+ attribute: string;
5064
+ extension_key?: string | undefined;
5065
+ }[];
5066
+ position: "before" | "after" | "first" | "last";
5067
+ anchor_attribute?: string | undefined;
5068
+ }, {
5069
+ columns: {
5070
+ width: number;
5071
+ label: string;
5072
+ attribute: string;
5073
+ extension_key?: string | undefined;
5074
+ }[];
5075
+ position: "before" | "after" | "first" | "last";
5076
+ anchor_attribute?: string | undefined;
5077
+ }>;
5078
+ /**
5079
+ * ListExtension — columns and toolbar actions contributed to ONE existing host
5080
+ * list by a resource that does not own it. The host's `columns` / `actions`
5081
+ * are the materialized merge, each contributed one stamped `extension_key`;
5082
+ * the row stores the author's payload unstamped. `key` is the identity;
5083
+ * `list_slug` is immutable after create. Sorting, filters and selection mode
5084
+ * stay the owner's.
5085
+ */
5086
+ interface ListExtension extends AuditFields {
5087
+ key: string;
5088
+ org_id: string;
5089
+ name: string;
5090
+ description: string;
5091
+ /** The host list the columns and actions are merged into. */
5092
+ list_slug: string;
5093
+ module_slug: string;
5094
+ columns: ListExtensionColumnPlacement[];
5095
+ /** Appended after the host's own toolbar actions (no anchor). */
5096
+ actions: PageAction[];
5097
+ }
5098
+ declare const ListExtensionSchema: z.ZodObject<{
5099
+ created_at: z.ZodString;
5100
+ updated_at: z.ZodString;
5101
+ created_by: z.ZodObject<{
5102
+ type: z.ZodEnum<["person", "agent", "api"]>;
5103
+ id: z.ZodString;
5104
+ }, "strip", z.ZodTypeAny, {
5105
+ type: "person" | "agent" | "api";
5106
+ id: string;
5107
+ }, {
5108
+ type: "person" | "agent" | "api";
5109
+ id: string;
5110
+ }>;
5111
+ updated_by: z.ZodObject<{
5112
+ type: z.ZodEnum<["person", "agent", "api"]>;
5113
+ id: z.ZodString;
5114
+ }, "strip", z.ZodTypeAny, {
5115
+ type: "person" | "agent" | "api";
5116
+ id: string;
5117
+ }, {
5118
+ type: "person" | "agent" | "api";
5119
+ id: string;
5120
+ }>;
5121
+ } & {
5122
+ key: z.ZodString;
5123
+ org_id: z.ZodString;
5124
+ name: z.ZodString;
5125
+ description: z.ZodString;
5126
+ list_slug: z.ZodString;
5127
+ module_slug: z.ZodString;
5128
+ columns: z.ZodArray<z.ZodObject<{
5129
+ anchor_attribute: z.ZodOptional<z.ZodString>;
5130
+ position: z.ZodEnum<["before", "after", "first", "last"]>;
5131
+ columns: z.ZodArray<z.ZodObject<{
5132
+ attribute: z.ZodString;
5133
+ label: z.ZodString;
5134
+ width: z.ZodNumber;
5135
+ extension_key: z.ZodOptional<z.ZodString>;
5136
+ }, "strip", z.ZodTypeAny, {
5137
+ width: number;
5138
+ label: string;
5139
+ attribute: string;
5140
+ extension_key?: string | undefined;
5141
+ }, {
5142
+ width: number;
5143
+ label: string;
5144
+ attribute: string;
5145
+ extension_key?: string | undefined;
5146
+ }>, "many">;
5147
+ }, "strip", z.ZodTypeAny, {
5148
+ columns: {
5149
+ width: number;
5150
+ label: string;
5151
+ attribute: string;
5152
+ extension_key?: string | undefined;
5153
+ }[];
5154
+ position: "before" | "after" | "first" | "last";
5155
+ anchor_attribute?: string | undefined;
5156
+ }, {
5157
+ columns: {
5158
+ width: number;
5159
+ label: string;
5160
+ attribute: string;
5161
+ extension_key?: string | undefined;
5162
+ }[];
5163
+ position: "before" | "after" | "first" | "last";
5164
+ anchor_attribute?: string | undefined;
5165
+ }>, "many">;
5166
+ actions: z.ZodArray<z.ZodObject<{
5167
+ label: z.ZodString;
5168
+ icon: z.ZodString;
5169
+ kind: z.ZodOptional<z.ZodEnum<["action", "workflow"]>>;
5170
+ action: z.ZodOptional<z.ZodString>;
5171
+ workflow: z.ZodOptional<z.ZodString>;
5172
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
5173
+ inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
5174
+ skip_confirmation: z.ZodOptional<z.ZodBoolean>;
5175
+ extension_key: z.ZodOptional<z.ZodString>;
5176
+ }, "strip", z.ZodTypeAny, {
5177
+ label: string;
5178
+ icon: string;
5179
+ params?: Record<string, string> | undefined;
5180
+ extension_key?: string | undefined;
5181
+ workflow?: string | undefined;
5182
+ inputs?: Record<string, string> | undefined;
5183
+ skip_confirmation?: boolean | undefined;
5184
+ kind?: "workflow" | "action" | undefined;
5185
+ action?: string | undefined;
5186
+ }, {
5187
+ label: string;
5188
+ icon: string;
5189
+ params?: Record<string, string> | undefined;
5190
+ extension_key?: string | undefined;
5191
+ workflow?: string | undefined;
5192
+ inputs?: Record<string, string> | undefined;
5193
+ skip_confirmation?: boolean | undefined;
5194
+ kind?: "workflow" | "action" | undefined;
5195
+ action?: string | undefined;
5196
+ }>, "many">;
5197
+ }, "strip", z.ZodTypeAny, {
5198
+ key: string;
5199
+ name: string;
5200
+ created_at: string;
5201
+ updated_at: string;
5202
+ created_by: {
5203
+ type: "person" | "agent" | "api";
5204
+ id: string;
5205
+ };
5206
+ updated_by: {
5207
+ type: "person" | "agent" | "api";
5208
+ id: string;
5209
+ };
5210
+ description: string;
5211
+ list_slug: string;
5212
+ module_slug: string;
5213
+ columns: {
5214
+ columns: {
5215
+ width: number;
5216
+ label: string;
5217
+ attribute: string;
5218
+ extension_key?: string | undefined;
5219
+ }[];
5220
+ position: "before" | "after" | "first" | "last";
5221
+ anchor_attribute?: string | undefined;
5222
+ }[];
5223
+ actions: {
5224
+ label: string;
5225
+ icon: string;
5226
+ params?: Record<string, string> | undefined;
5227
+ extension_key?: string | undefined;
5228
+ workflow?: string | undefined;
5229
+ inputs?: Record<string, string> | undefined;
5230
+ skip_confirmation?: boolean | undefined;
5231
+ kind?: "workflow" | "action" | undefined;
5232
+ action?: string | undefined;
5233
+ }[];
5234
+ org_id: string;
5235
+ }, {
5236
+ key: string;
5237
+ name: string;
5238
+ created_at: string;
5239
+ updated_at: string;
5240
+ created_by: {
5241
+ type: "person" | "agent" | "api";
5242
+ id: string;
5243
+ };
5244
+ updated_by: {
5245
+ type: "person" | "agent" | "api";
5246
+ id: string;
5247
+ };
5248
+ description: string;
5249
+ list_slug: string;
5250
+ module_slug: string;
5251
+ columns: {
5252
+ columns: {
5253
+ width: number;
5254
+ label: string;
5255
+ attribute: string;
5256
+ extension_key?: string | undefined;
5257
+ }[];
5258
+ position: "before" | "after" | "first" | "last";
5259
+ anchor_attribute?: string | undefined;
5260
+ }[];
5261
+ actions: {
5262
+ label: string;
5263
+ icon: string;
5264
+ params?: Record<string, string> | undefined;
5265
+ extension_key?: string | undefined;
5266
+ workflow?: string | undefined;
5267
+ inputs?: Record<string, string> | undefined;
5268
+ skip_confirmation?: boolean | undefined;
5269
+ kind?: "workflow" | "action" | undefined;
5270
+ action?: string | undefined;
5271
+ }[];
5272
+ org_id: string;
5273
+ }>;
5274
+ interface ListListExtensionsOptions extends MetaListOptions {
5275
+ key?: string;
5276
+ name?: string;
5277
+ list_slug?: string;
5278
+ module_slug?: string;
5279
+ }
5280
+ /**
5281
+ * Request to create a list extension: at least one column placement or
5282
+ * action, no `extension_key` (the server stamps it on the host).
5283
+ */
5284
+ interface CreateListExtensionRequest {
5285
+ key: string;
5286
+ name?: string;
5287
+ description?: string;
5288
+ list_slug: string;
5289
+ module_slug?: string;
5290
+ columns?: ListExtensionColumnPlacement[];
5291
+ actions?: PageAction[];
5292
+ }
5293
+ /**
5294
+ * Partial update. `columns` / `actions`, when present, each replace their
5295
+ * whole list. `list_slug` is immutable — delete and recreate to re-host.
5296
+ */
5297
+ interface UpdateListExtensionRequest {
5298
+ name?: string;
5299
+ description?: string;
5300
+ module_slug?: string;
5301
+ columns?: ListExtensionColumnPlacement[];
5302
+ actions?: PageAction[];
5303
+ }
5304
+ /** What an app opens on: a list (records table) or a platform page. */
5305
+ type AppHomeType = 'list' | 'page';
5306
+ interface AppHome {
5307
+ type: AppHomeType;
5308
+ reference: string;
5309
+ }
5310
+ declare const AppHomeSchema: z.ZodObject<{
5311
+ type: z.ZodEnum<["list", "page"]>;
5312
+ reference: z.ZodString;
5313
+ }, "strip", z.ZodTypeAny, {
5314
+ type: "page" | "list";
5315
+ reference: string;
5316
+ }, {
5317
+ type: "page" | "list";
5318
+ reference: string;
5319
+ }>;
5320
+ /**
5321
+ * AppConfiguration — a TYPED binding row: "how app X presents itself" to
5322
+ * everyone (`profile_slug: ''` = the app's default configuration) or to one
5323
+ * profile (an override). One row per (app, profile). The web merges
5324
+ * override ⊕ default field-wise and falls through to structural defaults (menu
5325
+ * `is_default`, first menu leaf, org-default agent, first page) for anything
5326
+ * still unset.
5327
+ */
5328
+ interface AppConfiguration extends AuditFields {
5329
+ slug: string;
5330
+ org_id: string;
5331
+ module_slug: string;
5332
+ app_slug: string;
5333
+ /** Bound profile; `''` = the default configuration for everyone. */
5334
+ profile_slug: string;
5335
+ /** Home; absent = the first list/page leaf of the resolved menu. */
5336
+ home?: AppHome | null;
5337
+ /** Menu to show; `''` = the app's `is_default` menu. */
5338
+ menu_slug?: string;
5339
+ /** Agent Ask Proteos preselects in this app; `''` = the org default. */
5340
+ default_agent_key?: string;
5341
+ /** Agents offered in this app; empty = every org agent. */
5342
+ agent_keys?: string[];
5343
+ /** entity_slug → record page slug opened from this app. */
5344
+ record_pages?: Record<string, string>;
5345
+ }
5346
+ declare const AppConfigurationSchema: z.ZodObject<{
5347
+ created_at: z.ZodString;
5348
+ updated_at: z.ZodString;
5349
+ created_by: z.ZodObject<{
5350
+ type: z.ZodEnum<["person", "agent", "api"]>;
5351
+ id: z.ZodString;
5352
+ }, "strip", z.ZodTypeAny, {
5353
+ type: "person" | "agent" | "api";
5354
+ id: string;
5355
+ }, {
5356
+ type: "person" | "agent" | "api";
5357
+ id: string;
5358
+ }>;
5359
+ updated_by: z.ZodObject<{
5360
+ type: z.ZodEnum<["person", "agent", "api"]>;
5361
+ id: z.ZodString;
5362
+ }, "strip", z.ZodTypeAny, {
5363
+ type: "person" | "agent" | "api";
5364
+ id: string;
5365
+ }, {
5366
+ type: "person" | "agent" | "api";
5367
+ id: string;
5368
+ }>;
5369
+ } & {
5370
+ slug: z.ZodString;
5371
+ org_id: z.ZodString;
5372
+ module_slug: z.ZodString;
5373
+ app_slug: z.ZodString;
5374
+ profile_slug: z.ZodString;
5375
+ home: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5376
+ type: z.ZodEnum<["list", "page"]>;
5377
+ reference: z.ZodString;
5378
+ }, "strip", z.ZodTypeAny, {
5379
+ type: "page" | "list";
5380
+ reference: string;
5381
+ }, {
5382
+ type: "page" | "list";
5383
+ reference: string;
5384
+ }>>>;
5385
+ menu_slug: z.ZodOptional<z.ZodString>;
5386
+ default_agent_key: z.ZodOptional<z.ZodString>;
5387
+ agent_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
5388
+ record_pages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
5389
+ }, "strip", z.ZodTypeAny, {
5390
+ created_at: string;
4172
5391
  updated_at: string;
4173
5392
  created_by: {
4174
5393
  type: "person" | "agent" | "api";
@@ -4183,11 +5402,11 @@ declare const AppConfigurationSchema: z.ZodObject<{
4183
5402
  app_slug: string;
4184
5403
  org_id: string;
4185
5404
  profile_slug: string;
5405
+ menu_slug?: string | undefined;
4186
5406
  home?: {
4187
5407
  type: "page" | "list";
4188
5408
  reference: string;
4189
5409
  } | null | undefined;
4190
- menu_slug?: string | undefined;
4191
5410
  default_agent_key?: string | undefined;
4192
5411
  agent_keys?: string[] | undefined;
4193
5412
  record_pages?: Record<string, string> | undefined;
@@ -4207,11 +5426,11 @@ declare const AppConfigurationSchema: z.ZodObject<{
4207
5426
  app_slug: string;
4208
5427
  org_id: string;
4209
5428
  profile_slug: string;
5429
+ menu_slug?: string | undefined;
4210
5430
  home?: {
4211
5431
  type: "page" | "list";
4212
5432
  reference: string;
4213
5433
  } | null | undefined;
4214
- menu_slug?: string | undefined;
4215
5434
  default_agent_key?: string | undefined;
4216
5435
  agent_keys?: string[] | undefined;
4217
5436
  record_pages?: Record<string, string> | undefined;
@@ -4487,4 +5706,4 @@ declare function isCurrentUserDefault(value: unknown): value is CurrentUserDefau
4487
5706
  /** Only the identity-valued attribute types can carry the sentinel. */
4488
5707
  declare function acceptsCurrentUserDefault(type: AttributeType): boolean;
4489
5708
 
4490
- export { type DesignReferenceContent as $, type AuditFields as A, type ComponentService as B, CURRENT_USER_DEFAULT as C, type CreateAppConfigurationRequest as D, type CreateAppRequest as E, type FileRef as F, type CreateComponentRequest as G, type CreateDesignReferenceRequest as H, type CreateEntityRequest as I, type CreateListRequest as J, type CreateListViewRequest as K, type ListOptions as L, type CreateMenuConfigurationRequest as M, type CreatePageRequest as N, type CreateVariableRequest as O, PageIterator as P, type CurrencyAttributeMeta as Q, CurrencyAttributeMetaSchema as R, type CurrencySymbolSide as S, type CurrencyValue as T, type UserRef as U, type CurrentUserDefault as V, DEFAULT_OPTIONS as W, DEFAULT_PAGE_SIZE as X, DONE as Y, type DeployModuleRequest as Z, type DesignReference as _, type Attribute as a, RelationAttributeMetaSchema as a$, DesignReferenceSchema as a0, type DesignReferenceService as a1, type Done as a2, type Entity as a3, EntitySchema as a4, type EntityService as a5, type EntityWithSchema as a6, EntityWithSchemaSchema as a7, type EnumAttributeMeta as a8, type EnumValue as a9, MenuConfigurationSchema as aA, type MenuConfigurationService as aB, type MenuItem as aC, MenuItemSchema as aD, MenuItemType as aE, MetaClient as aF, type MetaListOptions as aG, type Module as aH, ModuleSchema as aI, type ModuleService as aJ, type ModuleStatus as aK, type OnDeleteAction as aL, OnDeleteActionSchema as aM, PLATFORM_ATTRIBUTE_NAMES as aN, PLATFORM_USER_ID as aO, type Page as aP, type PageAction as aQ, type PageActionKind as aR, PageActionSchema as aS, type PageLayout as aT, PageLayoutSchema as aU, PageSchema as aV, type PageService as aW, type PageType as aX, type PublicPageComponent as aY, type PublicPageResponse as aZ, type RelationAttributeMeta as a_, type FileAttributeMeta as aa, FileRefSchema as ab, type FilterElement as ac, FilterElementSchema as ad, type FilterGroup as ae, FilterGroupSchema as af, type List as ag, type ListAppConfigurationsOptions as ah, type ListAppsOptions as ai, type ListComponentsOptions as aj, type ListDesignReferencesOptions as ak, type ListEntitiesOptions as al, type ListFn as am, type ListListViewsOptions as an, type ListListsOptions as ao, type ListMenuConfigurationsOptions as ap, type ListModulesOptions as aq, type ListPagesOptions as ar, ListSchema as as, type ListService as at, type ListVariablesOptions as au, type ListView as av, ListViewSchema as aw, type ListViewService as ax, type LogicalOperator as ay, type MenuConfiguration as az, type ListResult as b, type ListElement as b$, type RequestOptions as b0, type ResolvedClientOptions as b1, type ResponseMeta as b2, ResponseMetaSchema as b3, type SortConfig as b4, SortConfigSchema as b5, type SortDirection as b6, type Timestamps as b7, type TokenProvider as b8, type UpdateAppConfigurationRequest as b9, parseAmount as bA, parseCurrencyMeta as bB, parseFileMeta as bC, parseRelationMeta as bD, platformAttributes as bE, resolveOptions as bF, type AttributeForLookup as bG, type AttributeMeta as bH, BUILT_IN_CONTROLS as bI, type BuiltInControlSlug as bJ, type CardElement as bK, type ColumnElement as bL, type CommonProps as bM, type ComponentElement as bN, type ControlBucket as bO, type DatetimeAttributeMeta as bP, type DatetimeFormat as bQ, type DividerElement as bR, type FieldElement as bS, FileAttributeMetaSchema as bT, type LayoutAlign as bU, type LayoutElement as bV, LayoutElementSchema as bW, LayoutElementType as bX, type LayoutGap as bY, type LayoutJustify as bZ, type LayoutTab as b_, type UpdateAppRequest as ba, type UpdateComponentRequest as bb, type UpdateDesignReferenceRequest as bc, type UpdateEntityRequest as bd, type UpdateListRequest as be, type UpdateListViewRequest as bf, type UpdateMenuConfigurationRequest as bg, type UpdatePageRequest as bh, type UpdateVariableRequest as bi, UserRefSchema as bj, type UserType as bk, type Variable as bl, VariableSchema as bm, type VariableService as bn, acceptsCurrentUserDefault as bo, allCurrencyCodes as bp, createIterator as bq, createListResultSchema as br, currencyLabel as bs, currencySymbol as bt, currencySymbolSide as bu, formatAmount as bv, formatMoney as bw, isCurrentUserDefault as bx, isPlatformAttributeName as by, localeNumberSeparators as bz, ProteosClient as c, type NumberAttributeMeta as c0, type ObjectAttributeMeta as c1, PAGE_BACKGROUND_TOKENS as c2, type PageBackgroundToken as c3, type PageLayoutSidePanel as c4, PageLayoutSidePanelSchema as c5, type PageStyle as c6, PageStyleSchema as c7, type PrincipalAttributeMeta as c8, type PrincipalType as c9, type RecordFilterElement as ca, type RelatedListElement as cb, type RelatedRecordElement as cc, type ResponsiveSizing as cd, type RowElement as ce, type SectionElement as cf, type SizeValue as cg, SizeValueSchema as ch, type SizingProps as ci, type StringAttributeMeta as cj, type StringFormat as ck, type TabsElement as cl, type TextElement as cm, type TextVariant as cn, type UserAttributeMeta as co, UserAttributeMetaSchema as cp, type WorkflowTriggerElement as cq, isBuiltInControl as cr, lookupCompatibleControls as cs, lookupControls as ct, lookupPrimaryControl as cu, parsePrincipalMeta as cv, parseUserMeta as cw, type PrincipalRef as d, type PublicAccessOperation as e, type App as f, type AppConfiguration as g, AppConfigurationSchema as h, type AppConfigurationService as i, type AppHome as j, AppHomeSchema as k, type AppHomeType as l, AppSchema as m, type AppService as n, type ArrayAttributeMeta as o, type AttributeAccessRule as p, type AttributeRestrictions as q, AttributeSchema as r, type AttributeType as s, AuditFieldsSchema as t, type ClientOptions as u, type Column as v, ColumnSchema as w, type ComparisonOperator as x, type Component as y, ComponentSchema as z };
5709
+ export { type CurrencySymbolSide as $, type AuditFields as A, type ComponentService as B, CURRENT_USER_DEFAULT as C, type ContactAddressAttributeKind as D, type ContactAddressAttributeMeta as E, type FileRef as F, ContactAddressAttributeMetaSchema as G, type ContactBindingDuplicatePolicy as H, type CreateAppConfigurationRequest as I, type CreateAppRequest as J, type CreateComponentRequest as K, type ListOptions as L, type CreateDesignReferenceRequest as M, type CreateEntityExtensionRequest as N, type CreateEntityRequest as O, PageIterator as P, type CreateListExtensionRequest as Q, type CreateListRequest as R, type CreateListViewRequest as S, type CreateMenuConfigurationExtensionRequest as T, type UserRef as U, type CreateMenuConfigurationRequest as V, type CreatePageExtensionRequest as W, type CreatePageRequest as X, type CreateVariableRequest as Y, type CurrencyAttributeMeta as Z, CurrencyAttributeMetaSchema as _, type Attribute as a, MenuConfigurationExtensionPlacementSchema as a$, type CurrencyValue as a0, type CurrentUserDefault as a1, DEFAULT_OPTIONS as a2, DEFAULT_PAGE_SIZE as a3, DONE as a4, type DeployModuleRequest as a5, type DesignReference as a6, type DesignReferenceContent as a7, DesignReferenceSchema as a8, type DesignReferenceService as a9, type ListEntitiesOptions as aA, type ListEntityExtensionsOptions as aB, type ListExtension as aC, type ListExtensionColumnPlacement as aD, ListExtensionColumnPlacementSchema as aE, ListExtensionSchema as aF, type ListExtensionService as aG, type ListFn as aH, type ListListExtensionsOptions as aI, type ListListViewsOptions as aJ, type ListListsOptions as aK, type ListMenuConfigurationExtensionsOptions as aL, type ListMenuConfigurationsOptions as aM, type ListModulesOptions as aN, type ListPageExtensionsOptions as aO, type ListPagesOptions as aP, ListSchema as aQ, type ListService as aR, type ListVariablesOptions as aS, type ListView as aT, ListViewSchema as aU, type ListViewService as aV, type LogicalOperator as aW, MENU_CONFIGURATION_EXTENSION_ANCHOR_ITEMS as aX, type MenuConfiguration as aY, type MenuConfigurationExtension as aZ, type MenuConfigurationExtensionPlacement as a_, type Done as aa, type Entity as ab, type EntityContactBinding as ac, EntityContactBindingSchema as ad, type EntityExtension as ae, EntityExtensionSchema as af, type EntityExtensionService as ag, EntitySchema as ah, type EntityService as ai, type EntityWithSchema as aj, EntityWithSchemaSchema as ak, type EnumAttributeMeta as al, type EnumValue as am, type ExtensionPosition as an, ExtensionPositionSchema as ao, type FileAttributeMeta as ap, FileRefSchema as aq, type FilterElement as ar, FilterElementSchema as as, type FilterGroup as at, FilterGroupSchema as au, type List as av, type ListAppConfigurationsOptions as aw, type ListAppsOptions as ax, type ListComponentsOptions as ay, type ListDesignReferencesOptions as az, type ListResult as b, type UserType as b$, type MenuConfigurationExtensionPosition as b0, MenuConfigurationExtensionPositionSchema as b1, MenuConfigurationExtensionSchema as b2, type MenuConfigurationExtensionService as b3, MenuConfigurationSchema as b4, type MenuConfigurationService as b5, type MenuItem as b6, MenuItemSchema as b7, MenuItemType as b8, MetaClient as b9, type PublicPageResponse as bA, type RelationAttributeMeta as bB, RelationAttributeMetaSchema as bC, type RequestOptions as bD, type ResolvedClientOptions as bE, type ResponseMeta as bF, ResponseMetaSchema as bG, type SortConfig as bH, SortConfigSchema as bI, type SortDirection as bJ, type Timestamps as bK, type TokenProvider as bL, type UpdateAppConfigurationRequest as bM, type UpdateAppRequest as bN, type UpdateComponentRequest as bO, type UpdateDesignReferenceRequest as bP, type UpdateEntityExtensionRequest as bQ, type UpdateEntityRequest as bR, type UpdateListExtensionRequest as bS, type UpdateListRequest as bT, type UpdateListViewRequest as bU, type UpdateMenuConfigurationExtensionRequest as bV, type UpdateMenuConfigurationRequest as bW, type UpdatePageExtensionRequest as bX, type UpdatePageRequest as bY, type UpdateVariableRequest as bZ, UserRefSchema as b_, type MetaListOptions as ba, type Module as bb, ModuleSchema as bc, type ModuleService as bd, type ModuleStatus as be, type OnDeleteAction as bf, OnDeleteActionSchema as bg, PAGE_EXTENSION_ANCHOR_MAIN as bh, PAGE_EXTENSION_ANCHOR_SIDE_PANEL as bi, PLATFORM_ATTRIBUTE_NAMES as bj, PLATFORM_USER_ID as bk, type Page as bl, type PageAction as bm, type PageActionKind as bn, PageActionSchema as bo, type PageExtension as bp, type PageExtensionPlacement as bq, PageExtensionPlacementSchema as br, PageExtensionSchema as bs, type PageExtensionService as bt, type PageLayout as bu, PageLayoutSchema as bv, PageSchema as bw, type PageService as bx, type PageType as by, type PublicPageComponent as bz, ProteosClient as c, type SizingProps as c$, type Variable as c0, VariableSchema as c1, type VariableService as c2, acceptsCurrentUserDefault as c3, allCurrencyCodes as c4, createIterator as c5, createListResultSchema as c6, currencyLabel as c7, currencySymbol as c8, currencySymbolSide as c9, type LayoutAlign as cA, type LayoutElement as cB, LayoutElementSchema as cC, LayoutElementType as cD, type LayoutGap as cE, type LayoutJustify as cF, type LayoutTab as cG, LayoutTabSchema as cH, type ListElement as cI, type NumberAttributeMeta as cJ, type ObjectAttributeMeta as cK, PAGE_BACKGROUND_TOKENS as cL, type PageBackgroundToken as cM, type PageLayoutSidePanel as cN, PageLayoutSidePanelSchema as cO, type PageStyle as cP, PageStyleSchema as cQ, type PrincipalAttributeMeta as cR, type PrincipalType as cS, type RecordFilterElement as cT, type RelatedListElement as cU, type RelatedRecordElement as cV, type ResponsiveSizing as cW, type RowElement as cX, type SectionElement as cY, type SizeValue as cZ, SizeValueSchema as c_, formatAmount as ca, formatMoney as cb, isCurrentUserDefault as cc, isPlatformAttributeName as cd, localeNumberSeparators as ce, parseAmount as cf, parseContactAddressMeta as cg, parseCurrencyMeta as ch, parseFileMeta as ci, parseRelationMeta as cj, platformAttributes as ck, resolveOptions as cl, type AttributeForLookup as cm, type AttributeMeta as cn, BUILT_IN_CONTROLS as co, type BuiltInControlSlug as cp, type CardElement as cq, type ColumnElement as cr, type CommonProps as cs, type ComponentElement as ct, type ControlBucket as cu, type DatetimeAttributeMeta as cv, type DatetimeFormat as cw, type DividerElement as cx, type FieldElement as cy, FileAttributeMetaSchema as cz, type PrincipalRef as d, type StringAttributeMeta as d0, type StringFormat as d1, type TabsElement as d2, type TextElement as d3, type TextVariant as d4, type UserAttributeMeta as d5, UserAttributeMetaSchema as d6, type WorkflowTriggerElement as d7, isBuiltInControl as d8, lookupCompatibleControls as d9, lookupControls as da, lookupPrimaryControl as db, parsePrincipalMeta as dc, parseUserMeta as dd, type PublicAccessOperation as e, type App as f, type AppConfiguration as g, AppConfigurationSchema as h, type AppConfigurationService as i, type AppHome as j, AppHomeSchema as k, type AppHomeType as l, AppSchema as m, type AppService as n, type ArrayAttributeMeta as o, type AttributeAccessRule as p, type AttributeRestrictions as q, AttributeSchema as r, type AttributeType as s, AuditFieldsSchema as t, type ClientOptions as u, type Column as v, ColumnSchema as w, type ComparisonOperator as x, type Component as y, ComponentSchema as z };