@vcp-dev/contracts 0.10.6 → 0.10.7

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.
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ /** Optional enhancement: no defaults are materialized into legacy plans. */
3
+ export declare const BlockInteractionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4
+ autoplay: z.ZodOptional<z.ZodBoolean>;
5
+ intervalMs: z.ZodOptional<z.ZodNumber>;
6
+ loop: z.ZodOptional<z.ZodBoolean>;
7
+ kind: z.ZodLiteral<"media-carousel">;
8
+ presentation: z.ZodOptional<z.ZodEnum<{
9
+ flat: "flat";
10
+ angled: "angled";
11
+ }>>;
12
+ }, z.core.$strict>, z.ZodObject<{
13
+ autoplay: z.ZodOptional<z.ZodBoolean>;
14
+ intervalMs: z.ZodOptional<z.ZodNumber>;
15
+ loop: z.ZodOptional<z.ZodBoolean>;
16
+ kind: z.ZodLiteral<"category-carousel">;
17
+ }, z.core.$strict>], "kind">;
18
+ export type BlockInteraction = z.infer<typeof BlockInteractionSchema>;
@@ -0,0 +1,248 @@
1
+ import { z } from "zod";
2
+ export declare const CmsNavigationTargetTypeSchema: z.ZodEnum<{
3
+ email: "email";
4
+ file: "file";
5
+ page: "page";
6
+ anchor: "anchor";
7
+ external: "external";
8
+ phone: "phone";
9
+ group: "group";
10
+ }>;
11
+ export type CmsNavigationTargetType = z.infer<typeof CmsNavigationTargetTypeSchema>;
12
+ /** Navigation destinations are data, never executable URLs or protocol-relative hosts. */
13
+ export declare function isCmsNavigationHref(value: string): boolean;
14
+ export interface CmsNavigationItem {
15
+ id: string;
16
+ group_id: string;
17
+ parent_id: string | null;
18
+ sort_order: number;
19
+ label: string;
20
+ href: string | null;
21
+ target_type: CmsNavigationTargetType;
22
+ enabled: boolean;
23
+ effective_visible: boolean;
24
+ open_in_new: boolean;
25
+ nofollow: boolean;
26
+ role: "link" | "cta" | null;
27
+ link_binding: {
28
+ kind: "custom" | "cms_page" | "file";
29
+ page_id: string | null;
30
+ };
31
+ children: CmsNavigationItem[];
32
+ }
33
+ export declare const CmsNavigationItemSchema: z.ZodType<CmsNavigationItem>;
34
+ export declare const CmsNavigationGroupSchema: z.ZodObject<{
35
+ id: z.ZodString;
36
+ name: z.ZodString;
37
+ description: z.ZodString;
38
+ is_default: z.ZodBoolean;
39
+ can_delete: z.ZodBoolean;
40
+ delete_block_reason: z.ZodNullable<z.ZodString>;
41
+ items: z.ZodArray<z.ZodType<CmsNavigationItem, unknown, z.core.$ZodTypeInternals<CmsNavigationItem, unknown>>>;
42
+ }, z.core.$strip>;
43
+ export type CmsNavigationGroup = z.infer<typeof CmsNavigationGroupSchema>;
44
+ export declare const CmsNavigationEditorContextSchema: z.ZodObject<{
45
+ site_id: z.ZodString;
46
+ default_group_id: z.ZodNullable<z.ZodString>;
47
+ groups: z.ZodArray<z.ZodObject<{
48
+ id: z.ZodString;
49
+ name: z.ZodString;
50
+ description: z.ZodString;
51
+ is_default: z.ZodBoolean;
52
+ can_delete: z.ZodBoolean;
53
+ delete_block_reason: z.ZodNullable<z.ZodString>;
54
+ items: z.ZodArray<z.ZodType<CmsNavigationItem, unknown, z.core.$ZodTypeInternals<CmsNavigationItem, unknown>>>;
55
+ }, z.core.$strip>>;
56
+ limits: z.ZodObject<{
57
+ max_depth: z.ZodNumber;
58
+ max_items: z.ZodNumber;
59
+ }, z.core.$strip>;
60
+ }, z.core.$strip>;
61
+ export type CmsNavigationEditorContext = z.infer<typeof CmsNavigationEditorContextSchema>;
62
+ export declare const CmsNavigationEditorResponseSchema: z.ZodObject<{
63
+ data: z.ZodObject<{
64
+ site_id: z.ZodString;
65
+ default_group_id: z.ZodNullable<z.ZodString>;
66
+ groups: z.ZodArray<z.ZodObject<{
67
+ id: z.ZodString;
68
+ name: z.ZodString;
69
+ description: z.ZodString;
70
+ is_default: z.ZodBoolean;
71
+ can_delete: z.ZodBoolean;
72
+ delete_block_reason: z.ZodNullable<z.ZodString>;
73
+ items: z.ZodArray<z.ZodType<CmsNavigationItem, unknown, z.core.$ZodTypeInternals<CmsNavigationItem, unknown>>>;
74
+ }, z.core.$strip>>;
75
+ limits: z.ZodObject<{
76
+ max_depth: z.ZodNumber;
77
+ max_items: z.ZodNumber;
78
+ }, z.core.$strip>;
79
+ }, z.core.$strip>;
80
+ }, z.core.$strip>;
81
+ export type CmsNavigationEditorResponse = z.infer<typeof CmsNavigationEditorResponseSchema>;
82
+ export declare const CmsNavigationCreateGroupBodySchema: z.ZodObject<{
83
+ name: z.ZodString;
84
+ description: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strict>;
86
+ export type CmsNavigationCreateGroupBody = z.infer<typeof CmsNavigationCreateGroupBodySchema>;
87
+ export declare const CmsNavigationPatchGroupBodySchema: z.ZodObject<{
88
+ name: z.ZodOptional<z.ZodString>;
89
+ description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
90
+ }, z.core.$strict>;
91
+ export type CmsNavigationPatchGroupBody = z.infer<typeof CmsNavigationPatchGroupBodySchema>;
92
+ export declare const CmsNavigationDefaultGroupBodySchema: z.ZodObject<{
93
+ group_id: z.ZodString;
94
+ }, z.core.$strict>;
95
+ export declare const CmsNavigationCreateItemBodySchema: z.ZodObject<{
96
+ label: z.ZodString;
97
+ target_type: z.ZodEnum<{
98
+ email: "email";
99
+ file: "file";
100
+ page: "page";
101
+ anchor: "anchor";
102
+ external: "external";
103
+ phone: "phone";
104
+ group: "group";
105
+ }>;
106
+ href: z.ZodOptional<z.ZodNullable<z.ZodString>>;
107
+ enabled: z.ZodOptional<z.ZodBoolean>;
108
+ open_in_new: z.ZodOptional<z.ZodBoolean>;
109
+ nofollow: z.ZodOptional<z.ZodBoolean>;
110
+ role: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
111
+ link: "link";
112
+ cta: "cta";
113
+ }>>>;
114
+ group_id: z.ZodString;
115
+ parent_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
116
+ }, z.core.$strict>;
117
+ export type CmsNavigationCreateItemBody = z.infer<typeof CmsNavigationCreateItemBodySchema>;
118
+ export declare const CmsNavigationPatchItemBodySchema: z.ZodObject<{
119
+ link_mode: z.ZodOptional<z.ZodOptional<z.ZodLiteral<"custom">>>;
120
+ label: z.ZodOptional<z.ZodString>;
121
+ target_type: z.ZodOptional<z.ZodEnum<{
122
+ email: "email";
123
+ file: "file";
124
+ page: "page";
125
+ anchor: "anchor";
126
+ external: "external";
127
+ phone: "phone";
128
+ group: "group";
129
+ }>>;
130
+ href: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
131
+ enabled: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
132
+ open_in_new: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
133
+ nofollow: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
134
+ role: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
135
+ link: "link";
136
+ cta: "cta";
137
+ }>>>>;
138
+ }, z.core.$strict>;
139
+ export type CmsNavigationPatchItemBody = z.infer<typeof CmsNavigationPatchItemBodySchema>;
140
+ export declare const CmsNavigationMoveItemBodySchema: z.ZodObject<{
141
+ group_id: z.ZodString;
142
+ parent_id: z.ZodNullable<z.ZodString>;
143
+ before_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
144
+ }, z.core.$strict>;
145
+ export type CmsNavigationMoveItemBody = z.infer<typeof CmsNavigationMoveItemBodySchema>;
146
+ export declare const CmsNavigationCapabilitiesSchema: z.ZodObject<{
147
+ cms_bound: z.ZodBoolean;
148
+ cms_driven: z.ZodBoolean;
149
+ supports_groups: z.ZodBoolean;
150
+ supports_nested_groups: z.ZodBoolean;
151
+ supports_link_attributes: z.ZodBoolean;
152
+ requires_agent: z.ZodBoolean;
153
+ reasons: z.ZodArray<z.ZodString>;
154
+ }, z.core.$strip>;
155
+ export type CmsNavigationCapabilities = z.infer<typeof CmsNavigationCapabilitiesSchema>;
156
+ export declare const CmsNavigationCapabilitiesResponseSchema: z.ZodObject<{
157
+ data: z.ZodObject<{
158
+ cms_bound: z.ZodBoolean;
159
+ cms_driven: z.ZodBoolean;
160
+ supports_groups: z.ZodBoolean;
161
+ supports_nested_groups: z.ZodBoolean;
162
+ supports_link_attributes: z.ZodBoolean;
163
+ requires_agent: z.ZodBoolean;
164
+ reasons: z.ZodArray<z.ZodString>;
165
+ }, z.core.$strip>;
166
+ }, z.core.$strip>;
167
+ /** One model tool call maps to one ordinary CMS request; no cross-request transaction. */
168
+ export declare const CmsNavigationActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
169
+ action: z.ZodLiteral<"create_group">;
170
+ values: z.ZodObject<{
171
+ name: z.ZodString;
172
+ description: z.ZodOptional<z.ZodString>;
173
+ }, z.core.$strict>;
174
+ }, z.core.$strict>, z.ZodObject<{
175
+ action: z.ZodLiteral<"update_group">;
176
+ id: z.ZodString;
177
+ values: z.ZodObject<{
178
+ name: z.ZodOptional<z.ZodString>;
179
+ description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
180
+ }, z.core.$strict>;
181
+ }, z.core.$strict>, z.ZodObject<{
182
+ action: z.ZodLiteral<"delete_group">;
183
+ id: z.ZodString;
184
+ }, z.core.$strict>, z.ZodObject<{
185
+ action: z.ZodLiteral<"set_default_group">;
186
+ group_id: z.ZodString;
187
+ }, z.core.$strict>, z.ZodObject<{
188
+ action: z.ZodLiteral<"create_item">;
189
+ values: z.ZodObject<{
190
+ label: z.ZodString;
191
+ target_type: z.ZodEnum<{
192
+ email: "email";
193
+ file: "file";
194
+ page: "page";
195
+ anchor: "anchor";
196
+ external: "external";
197
+ phone: "phone";
198
+ group: "group";
199
+ }>;
200
+ href: z.ZodOptional<z.ZodNullable<z.ZodString>>;
201
+ enabled: z.ZodOptional<z.ZodBoolean>;
202
+ open_in_new: z.ZodOptional<z.ZodBoolean>;
203
+ nofollow: z.ZodOptional<z.ZodBoolean>;
204
+ role: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
205
+ link: "link";
206
+ cta: "cta";
207
+ }>>>;
208
+ group_id: z.ZodString;
209
+ parent_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
210
+ }, z.core.$strict>;
211
+ }, z.core.$strict>, z.ZodObject<{
212
+ action: z.ZodLiteral<"update_item">;
213
+ id: z.ZodString;
214
+ values: z.ZodObject<{
215
+ link_mode: z.ZodOptional<z.ZodOptional<z.ZodLiteral<"custom">>>;
216
+ label: z.ZodOptional<z.ZodString>;
217
+ target_type: z.ZodOptional<z.ZodEnum<{
218
+ email: "email";
219
+ file: "file";
220
+ page: "page";
221
+ anchor: "anchor";
222
+ external: "external";
223
+ phone: "phone";
224
+ group: "group";
225
+ }>>;
226
+ href: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
227
+ enabled: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
228
+ open_in_new: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
229
+ nofollow: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
230
+ role: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
231
+ link: "link";
232
+ cta: "cta";
233
+ }>>>>;
234
+ }, z.core.$strict>;
235
+ }, z.core.$strict>, z.ZodObject<{
236
+ action: z.ZodLiteral<"delete_item">;
237
+ id: z.ZodString;
238
+ cascade: z.ZodOptional<z.ZodBoolean>;
239
+ }, z.core.$strict>, z.ZodObject<{
240
+ action: z.ZodLiteral<"move_item">;
241
+ id: z.ZodString;
242
+ values: z.ZodObject<{
243
+ group_id: z.ZodString;
244
+ parent_id: z.ZodNullable<z.ZodString>;
245
+ before_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
246
+ }, z.core.$strict>;
247
+ }, z.core.$strict>], "action">;
248
+ export type CmsNavigationAction = z.infer<typeof CmsNavigationActionSchema>;
@@ -1,6 +1,15 @@
1
1
  /**
2
- * 将 CMS 侧站点 URL / 已配置公共 API base 归一为生成站点实际读取的
3
- * vibe/v1 base。external-sync 写入的 site_url 可能是站点根域名,而
4
- * generated site 的 CMS_PROXY_URL 必须指向 /vibe/v1。
2
+ * 将配置的统一公网 origin / API base 归一为生成站点读取的 /vibe/v1。
5
3
  */
6
4
  export declare function normalizeCmsPublicApiBase(input: string | null | undefined): string | null;
5
+ export interface CmsPublicRuntimeBinding {
6
+ cmsProxyUrl: string;
7
+ cmsProjectId: string;
8
+ cmsTenantId: string;
9
+ }
10
+ /** Only platform configuration supplies the origin; a site URL is not a fallback. */
11
+ export declare function resolveCmsPublicRuntimeBinding(input: {
12
+ publicProxyUrl?: string | null;
13
+ tenantId?: string | null;
14
+ cmsSiteId?: string | null;
15
+ }): CmsPublicRuntimeBinding | null;
@@ -0,0 +1,10 @@
1
+ /** Trusted VCP tenant plus the CMS-owned site identity; never a visitor context. */
2
+ export interface CmsRequestContext {
3
+ tenant_id: string;
4
+ cms_site_id: string;
5
+ }
6
+ export declare function buildCmsIdentityHeaders(context: CmsRequestContext): {
7
+ Accept: "application/json";
8
+ "X-Tenant-Id": string;
9
+ "X-Site-Id": string;
10
+ };
@@ -31,8 +31,8 @@ export declare const FormFieldDeclSchema: z.ZodObject<{
31
31
  email: "email";
32
32
  select: "select";
33
33
  multiselect: "multiselect";
34
- textarea: "textarea";
35
34
  phone: "phone";
35
+ textarea: "textarea";
36
36
  radio: "radio";
37
37
  }>;
38
38
  label: z.ZodString;
@@ -47,6 +47,15 @@ export declare const ConnectFormInputSchema: z.ZodObject<{
47
47
  }>;
48
48
  form_hint: z.ZodOptional<z.ZodString>;
49
49
  name: z.ZodOptional<z.ZodString>;
50
+ scene: z.ZodOptional<z.ZodEnum<{
51
+ "lead-generation": "lead-generation";
52
+ "trial-and-samples": "trial-and-samples";
53
+ "quote-and-commerce": "quote-and-commerce";
54
+ "appointments-and-visits": "appointments-and-visits";
55
+ "resources-and-subscriptions": "resources-and-subscriptions";
56
+ "service-and-channel": "service-and-channel";
57
+ "-": "-";
58
+ }>>;
50
59
  component_slug: z.ZodOptional<z.ZodString>;
51
60
  description: z.ZodOptional<z.ZodString>;
52
61
  fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -59,8 +68,8 @@ export declare const ConnectFormInputSchema: z.ZodObject<{
59
68
  email: "email";
60
69
  select: "select";
61
70
  multiselect: "multiselect";
62
- textarea: "textarea";
63
71
  phone: "phone";
72
+ textarea: "textarea";
64
73
  radio: "radio";
65
74
  }>;
66
75
  label: z.ZodString;
@@ -35,8 +35,8 @@ export declare const FormSpecFieldNodeSchema: z.ZodObject<{
35
35
  select: "select";
36
36
  multiselect: "multiselect";
37
37
  file: "file";
38
- textarea: "textarea";
39
38
  phone: "phone";
39
+ textarea: "textarea";
40
40
  radio: "radio";
41
41
  }>;
42
42
  label: z.ZodString;
@@ -70,8 +70,8 @@ export declare const FormSpecNodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
70
70
  select: "select";
71
71
  multiselect: "multiselect";
72
72
  file: "file";
73
- textarea: "textarea";
74
73
  phone: "phone";
74
+ textarea: "textarea";
75
75
  radio: "radio";
76
76
  }>;
77
77
  label: z.ZodString;
@@ -225,8 +225,8 @@ export declare const FormSpecV1Schema: z.ZodObject<{
225
225
  select: "select";
226
226
  multiselect: "multiselect";
227
227
  file: "file";
228
- textarea: "textarea";
229
228
  phone: "phone";
229
+ textarea: "textarea";
230
230
  radio: "radio";
231
231
  }>;
232
232
  label: z.ZodString;
@@ -263,8 +263,8 @@ export declare const FormSpecV1Schema: z.ZodObject<{
263
263
  select: "select";
264
264
  multiselect: "multiselect";
265
265
  file: "file";
266
- textarea: "textarea";
267
266
  phone: "phone";
267
+ textarea: "textarea";
268
268
  radio: "radio";
269
269
  }>;
270
270
  last_label: z.ZodString;
@@ -743,8 +743,8 @@ export declare const FormTemplateV1Schema: z.ZodObject<{
743
743
  select: "select";
744
744
  multiselect: "multiselect";
745
745
  file: "file";
746
- textarea: "textarea";
747
746
  phone: "phone";
747
+ textarea: "textarea";
748
748
  radio: "radio";
749
749
  }>;
750
750
  label: z.ZodObject<{
@@ -1213,8 +1213,8 @@ export declare const FormTemplateCatalogResponseSchema: z.ZodObject<{
1213
1213
  select: "select";
1214
1214
  multiselect: "multiselect";
1215
1215
  file: "file";
1216
- textarea: "textarea";
1217
1216
  phone: "phone";
1217
+ textarea: "textarea";
1218
1218
  radio: "radio";
1219
1219
  }>;
1220
1220
  label: z.ZodObject<{
@@ -1515,6 +1515,18 @@ export declare const FormDesignOperationFingerprintInputSchema: z.ZodObject<{
1515
1515
  base_snapshot_id: z.ZodUUID;
1516
1516
  expected_form_spec_hash: z.ZodString;
1517
1517
  expected_cms_schema_hash: z.ZodNullable<z.ZodString>;
1518
+ form_metadata: z.ZodNullable<z.ZodObject<{
1519
+ scene: z.ZodEnum<{
1520
+ "lead-generation": "lead-generation";
1521
+ "trial-and-samples": "trial-and-samples";
1522
+ "quote-and-commerce": "quote-and-commerce";
1523
+ "appointments-and-visits": "appointments-and-visits";
1524
+ "resources-and-subscriptions": "resources-and-subscriptions";
1525
+ "service-and-channel": "service-and-channel";
1526
+ "-": "-";
1527
+ }>;
1528
+ shape: z.ZodLiteral<"embedded">;
1529
+ }, z.core.$strict>>;
1518
1530
  draft_form_spec_hash: z.ZodString;
1519
1531
  desired_cms_schema_hash: z.ZodString;
1520
1532
  affected_files_hash: z.ZodString;
@@ -1690,8 +1702,8 @@ export declare const FormDesignOpenResponseSchema: z.ZodObject<{
1690
1702
  select: "select";
1691
1703
  multiselect: "multiselect";
1692
1704
  file: "file";
1693
- textarea: "textarea";
1694
1705
  phone: "phone";
1706
+ textarea: "textarea";
1695
1707
  radio: "radio";
1696
1708
  }>;
1697
1709
  label: z.ZodString;
@@ -1728,8 +1740,8 @@ export declare const FormDesignOpenResponseSchema: z.ZodObject<{
1728
1740
  select: "select";
1729
1741
  multiselect: "multiselect";
1730
1742
  file: "file";
1731
- textarea: "textarea";
1732
1743
  phone: "phone";
1744
+ textarea: "textarea";
1733
1745
  radio: "radio";
1734
1746
  }>;
1735
1747
  last_label: z.ZodString;
@@ -1786,6 +1798,18 @@ export declare const FormDesignSaveRequestSchema: z.ZodObject<{
1786
1798
  base_snapshot_id: z.ZodUUID;
1787
1799
  expected_form_spec_hash: z.ZodString;
1788
1800
  expected_cms_schema_hash: z.ZodNullable<z.ZodString>;
1801
+ form_metadata: z.ZodNullable<z.ZodObject<{
1802
+ scene: z.ZodEnum<{
1803
+ "lead-generation": "lead-generation";
1804
+ "trial-and-samples": "trial-and-samples";
1805
+ "quote-and-commerce": "quote-and-commerce";
1806
+ "appointments-and-visits": "appointments-and-visits";
1807
+ "resources-and-subscriptions": "resources-and-subscriptions";
1808
+ "service-and-channel": "service-and-channel";
1809
+ "-": "-";
1810
+ }>;
1811
+ shape: z.ZodLiteral<"embedded">;
1812
+ }, z.core.$strict>>;
1789
1813
  draft_form_spec: z.ZodObject<{
1790
1814
  schema_version: z.ZodLiteral<1>;
1791
1815
  min_runtime_version: z.ZodNumber;
@@ -1920,8 +1944,8 @@ export declare const FormDesignSaveRequestSchema: z.ZodObject<{
1920
1944
  select: "select";
1921
1945
  multiselect: "multiselect";
1922
1946
  file: "file";
1923
- textarea: "textarea";
1924
1947
  phone: "phone";
1948
+ textarea: "textarea";
1925
1949
  radio: "radio";
1926
1950
  }>;
1927
1951
  label: z.ZodString;
@@ -1958,8 +1982,8 @@ export declare const FormDesignSaveRequestSchema: z.ZodObject<{
1958
1982
  select: "select";
1959
1983
  multiselect: "multiselect";
1960
1984
  file: "file";
1961
- textarea: "textarea";
1962
1985
  phone: "phone";
1986
+ textarea: "textarea";
1963
1987
  radio: "radio";
1964
1988
  }>;
1965
1989
  last_label: z.ZodString;
@@ -2551,6 +2575,18 @@ export declare const FormDesignOperationRecordSchema: z.ZodObject<{
2551
2575
  base_snapshot_id: z.ZodUUID;
2552
2576
  expected_form_spec_hash: z.ZodString;
2553
2577
  expected_cms_schema_hash: z.ZodNullable<z.ZodString>;
2578
+ form_metadata: z.ZodNullable<z.ZodObject<{
2579
+ scene: z.ZodEnum<{
2580
+ "lead-generation": "lead-generation";
2581
+ "trial-and-samples": "trial-and-samples";
2582
+ "quote-and-commerce": "quote-and-commerce";
2583
+ "appointments-and-visits": "appointments-and-visits";
2584
+ "resources-and-subscriptions": "resources-and-subscriptions";
2585
+ "service-and-channel": "service-and-channel";
2586
+ "-": "-";
2587
+ }>;
2588
+ shape: z.ZodLiteral<"embedded">;
2589
+ }, z.core.$strict>>;
2554
2590
  draft_form_spec: z.ZodObject<{
2555
2591
  schema_version: z.ZodLiteral<1>;
2556
2592
  min_runtime_version: z.ZodNumber;
@@ -2685,8 +2721,8 @@ export declare const FormDesignOperationRecordSchema: z.ZodObject<{
2685
2721
  select: "select";
2686
2722
  multiselect: "multiselect";
2687
2723
  file: "file";
2688
- textarea: "textarea";
2689
2724
  phone: "phone";
2725
+ textarea: "textarea";
2690
2726
  radio: "radio";
2691
2727
  }>;
2692
2728
  label: z.ZodString;
@@ -2723,8 +2759,8 @@ export declare const FormDesignOperationRecordSchema: z.ZodObject<{
2723
2759
  select: "select";
2724
2760
  multiselect: "multiselect";
2725
2761
  file: "file";
2726
- textarea: "textarea";
2727
2762
  phone: "phone";
2763
+ textarea: "textarea";
2728
2764
  radio: "radio";
2729
2765
  }>;
2730
2766
  last_label: z.ZodString;
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ /** CMS form-level business metadata, independent from Resource Platform taxonomy. */
3
+ export declare const FORM_SCENE_CODES: readonly ["lead-generation", "trial-and-samples", "quote-and-commerce", "appointments-and-visits", "resources-and-subscriptions", "service-and-channel"];
4
+ export declare const FORM_SCENE_UNKNOWN: "-";
5
+ export declare const FORM_SHAPE_EMBEDDED: "embedded";
6
+ export declare const FormSceneSchema: z.ZodEnum<{
7
+ "lead-generation": "lead-generation";
8
+ "trial-and-samples": "trial-and-samples";
9
+ "quote-and-commerce": "quote-and-commerce";
10
+ "appointments-and-visits": "appointments-and-visits";
11
+ "resources-and-subscriptions": "resources-and-subscriptions";
12
+ "service-and-channel": "service-and-channel";
13
+ "-": "-";
14
+ }>;
15
+ export type FormScene = z.infer<typeof FormSceneSchema>;
16
+ export declare const FormShapeSchema: z.ZodLiteral<"embedded">;
17
+ export type FormShape = z.infer<typeof FormShapeSchema>;
18
+ export declare const FormMetadataSchema: z.ZodObject<{
19
+ scene: z.ZodEnum<{
20
+ "lead-generation": "lead-generation";
21
+ "trial-and-samples": "trial-and-samples";
22
+ "quote-and-commerce": "quote-and-commerce";
23
+ "appointments-and-visits": "appointments-and-visits";
24
+ "resources-and-subscriptions": "resources-and-subscriptions";
25
+ "service-and-channel": "service-and-channel";
26
+ "-": "-";
27
+ }>;
28
+ shape: z.ZodLiteral<"embedded">;
29
+ }, z.core.$strict>;
30
+ export type FormMetadata = z.infer<typeof FormMetadataSchema>;
31
+ /** Selection-time exact mapping only; never infer from copy or normalize taxonomy. */
32
+ export declare function resolveTemplateFormScene(category: string): FormScene;