@vcp-dev/contracts 0.6.10 → 0.7.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.
- package/README.md +5 -4
- package/dist/api-response.d.ts +11 -0
- package/dist/business-facts.d.ts +23 -0
- package/dist/cms-page-directory.d.ts +281 -0
- package/dist/cms-site-id.d.ts +4 -0
- package/dist/colorway-distinctness.js +1 -1
- package/dist/connect-dynamic-collection.d.ts +7 -3
- package/dist/connect-form.d.ts +7 -5
- package/dist/conversion-hints.d.ts +37 -0
- package/dist/crawler-task-service.d.ts +594 -0
- package/dist/custom-domain.d.ts +120 -206
- package/dist/customer-materials.d.ts +196 -0
- package/dist/deployment-lifecycle.d.ts +45 -0
- package/dist/deployment-progress.d.ts +51 -0
- package/dist/design-tokens.d.ts +1 -0
- package/dist/design-tokens.js +1 -1
- package/dist/designer-component-library.d.ts +9 -7
- package/dist/designer-page-library.d.ts +36 -40
- package/dist/e2b-preview-proxy.d.ts +5 -0
- package/dist/external-site-edit.d.ts +267 -0
- package/dist/firecrawl-internal.d.ts +122 -0
- package/dist/font-catalog.d.ts +5 -2
- package/dist/form-design.d.ts +109 -69
- package/dist/google-search-console.d.ts +317 -0
- package/dist/index.d.ts +7110 -1965
- package/dist/index.js +1 -1
- package/dist/industry-classification.d.ts +43 -0
- package/dist/input-context-bundle.d.ts +16 -6
- package/dist/internal-entity-id.d.ts +3 -0
- package/dist/knowledge-category.d.ts +20 -0
- package/dist/knowledge-source-readiness.d.ts +94 -0
- package/dist/launcher-prompt-templates.d.ts +742 -0
- package/dist/media-library.d.ts +164 -0
- package/dist/migration-products.d.ts +45 -0
- package/dist/page-slug.d.ts +2 -0
- package/dist/page-template.d.ts +95 -0
- package/dist/product-search.d.ts +227 -0
- package/dist/site-build.d.ts +563 -0
- package/dist/site-design-presets.d.ts +20 -0
- package/dist/site-edit-capability.d.ts +13 -1
- package/dist/site-edit-class-name-source.d.ts +40 -8
- package/dist/site-edit-command-result.d.ts +15 -4
- package/dist/site-edit-composition.d.ts +13 -0
- package/dist/site-edit-event.d.ts +76 -14
- package/dist/site-edit-history-status.d.ts +193 -0
- package/dist/site-edit-operation.d.ts +205 -62
- package/dist/site-edit-page-composition.d.ts +101 -22
- package/dist/site-edit-patch-plan.d.ts +49 -3
- package/dist/site-edit-render-document.d.ts +67 -17
- package/dist/site-edit-session.d.ts +5 -2
- package/dist/site-edit-source.d.ts +60 -11
- package/dist/site-edit-version.d.ts +1 -1
- package/dist/site-extra-requirement.d.ts +31 -0
- package/dist/site-locale.d.ts +20 -0
- package/dist/site-localization-fields.d.ts +196 -0
- package/dist/site-localization-scope.d.ts +95 -0
- package/dist/site-preview.d.ts +65 -0
- package/dist/site-publish-domain.d.ts +680 -0
- package/dist/site-publish-workflow.d.ts +612 -0
- package/dist/site-workflow-completions.d.ts +163 -0
- package/dist/site-workflow.d.ts +1026 -0
- package/dist/sitemap-navigation.d.ts +12 -0
- package/dist/step2-page-selection.d.ts +88 -0
- package/dist/step2-site-initialization.d.ts +500 -0
- package/dist/step3-digital-employee-analysis.d.ts +661 -0
- package/dist/step4-diagnosis.d.ts +272 -0
- package/dist/step5-strategy.d.ts +8076 -0
- package/dist/step6-design.d.ts +986 -0
- package/dist/subsite-localization-input.d.ts +121 -0
- package/dist/subsite-mount-path.d.ts +23 -0
- package/dist/subsite-visible-text-export.d.ts +22 -0
- package/dist/template-upgrade-observability.d.ts +2 -2
- package/dist/theme-presets.d.ts +56 -1
- package/dist/user-facing-copy.d.ts +1 -0
- package/dist/workspace-design-apply.d.ts +5 -0
- package/dist/workspace-resource-operation.d.ts +75 -33
- package/package.json +2 -1
- package/dist/publish-plan.d.ts +0 -54
package/README.md
CHANGED
|
@@ -31,11 +31,12 @@ import {
|
|
|
31
31
|
|
|
32
32
|
const request: SiteEditOperationRequest = SiteEditOperationRequestSchema.parse({
|
|
33
33
|
id: "op_123",
|
|
34
|
-
siteId: "
|
|
35
|
-
baseSnapshotId: "
|
|
34
|
+
siteId: "018f6f4d-a9b8-7401-8401-0123456789ab",
|
|
35
|
+
baseSnapshotId: "018f6f4d-a9b8-7402-8402-0123456789ab",
|
|
36
36
|
kind: "update-text",
|
|
37
|
-
target: { kind: "
|
|
38
|
-
|
|
37
|
+
target: { kind: "node", key: "hero-title" },
|
|
38
|
+
documentVersion: 3,
|
|
39
|
+
params: { kind: "update-text", segmentIndex: 0, value: "Hello VCP" },
|
|
39
40
|
});
|
|
40
41
|
```
|
|
41
42
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export type ApiResponse<T> = {
|
|
3
|
+
code: number;
|
|
4
|
+
data: T;
|
|
5
|
+
message: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const ApiResponseSchema: <T extends z.ZodTypeAny>(dataSchema: T) => z.ZodObject<{
|
|
8
|
+
code: z.ZodNumber;
|
|
9
|
+
data: T;
|
|
10
|
+
message: z.ZodString;
|
|
11
|
+
}, z.core.$strip>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* 用户在建站之前已经确认过的业务事实。
|
|
4
|
+
*
|
|
5
|
+
* 两条流都填这一个形状:
|
|
6
|
+
* - 有原站流:Step2 冻结结果里的主营产品、现有市场、资质;
|
|
7
|
+
* - 无原站流:客户资料表里的对应字段。
|
|
8
|
+
*
|
|
9
|
+
* 刻意只放中立短文本,三条硬边界:
|
|
10
|
+
* - **不含公司名**。站点名单独走现有的权威段落,两处同义但可能不同的值会打架。
|
|
11
|
+
* - **不含网址、不含证据数组**。那会把原站原文和链接带进提示词。
|
|
12
|
+
* - **不含行业码**。行业先验是另一条独立的判定链路,不从这里读。
|
|
13
|
+
*
|
|
14
|
+
* 全部可选:任一侧读不到就整个字段不注入,按原请求体转发,提示词与今天一致。
|
|
15
|
+
*/
|
|
16
|
+
export declare const BusinessFactsSchema: z.ZodObject<{
|
|
17
|
+
primary_products: z.ZodOptional<z.ZodString>;
|
|
18
|
+
current_markets: z.ZodOptional<z.ZodString>;
|
|
19
|
+
qualifications: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$strict>;
|
|
21
|
+
export type BusinessFacts = z.infer<typeof BusinessFactsSchema>;
|
|
22
|
+
/** 一条都没有的业务事实等于没有,调用方据此整个不注入。 */
|
|
23
|
+
export declare function hasAnyBusinessFact(facts: BusinessFacts): boolean;
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const HOME_PAGE_URL_PATH = "/";
|
|
3
|
+
export declare const CMS_PAGE_URL_PATH_MAX_LENGTH = 255;
|
|
4
|
+
export declare const CMS_PAGE_DIRECTORY_MAX_NODES = 5000;
|
|
5
|
+
export declare const CMS_PAGE_DIRECTORY_MAX_DEPTH = 64;
|
|
6
|
+
/** CMS-managed, browser-safe site-relative identity. */
|
|
7
|
+
export declare const CmsPageUrlPathSchema: z.ZodString;
|
|
8
|
+
export declare const CmsManagedPageTypeSchema: z.ZodEnum<{
|
|
9
|
+
landing_page: "landing_page";
|
|
10
|
+
general_page: "general_page";
|
|
11
|
+
detail_page: "detail_page";
|
|
12
|
+
}>;
|
|
13
|
+
export type CmsManagedPageType = z.infer<typeof CmsManagedPageTypeSchema>;
|
|
14
|
+
export declare const CmsPageTypeSchema: z.ZodEnum<{
|
|
15
|
+
landing_page: "landing_page";
|
|
16
|
+
general_page: "general_page";
|
|
17
|
+
detail_page: "detail_page";
|
|
18
|
+
list_page: "list_page";
|
|
19
|
+
category_page: "category_page";
|
|
20
|
+
tag_page: "tag_page";
|
|
21
|
+
author_page: "author_page";
|
|
22
|
+
search_page: "search_page";
|
|
23
|
+
date_page: "date_page";
|
|
24
|
+
}>;
|
|
25
|
+
export type CmsPageType = z.infer<typeof CmsPageTypeSchema>;
|
|
26
|
+
export interface CmsPageDirectoryNode {
|
|
27
|
+
readonly cms_page_id: number;
|
|
28
|
+
readonly title: string;
|
|
29
|
+
readonly url_path: string;
|
|
30
|
+
readonly url: string | null;
|
|
31
|
+
readonly page_type: CmsPageType;
|
|
32
|
+
readonly vcp_managed: boolean;
|
|
33
|
+
readonly children: readonly CmsPageDirectoryNode[];
|
|
34
|
+
}
|
|
35
|
+
export declare const CmsPageDirectoryNodeSchema: z.ZodType<CmsPageDirectoryNode>;
|
|
36
|
+
export declare const CmsPageDirectoryGroupSchema: z.ZodObject<{
|
|
37
|
+
group_id: z.ZodString;
|
|
38
|
+
title: z.ZodString;
|
|
39
|
+
pages: z.ZodArray<z.ZodType<CmsPageDirectoryNode, unknown, z.core.$ZodTypeInternals<CmsPageDirectoryNode, unknown>>>;
|
|
40
|
+
}, z.core.$strict>;
|
|
41
|
+
export type CmsPageDirectoryGroup = z.infer<typeof CmsPageDirectoryGroupSchema>;
|
|
42
|
+
export declare const CmsPageDirectorySchema: z.ZodObject<{
|
|
43
|
+
groups: z.ZodArray<z.ZodObject<{
|
|
44
|
+
group_id: z.ZodString;
|
|
45
|
+
title: z.ZodString;
|
|
46
|
+
pages: z.ZodArray<z.ZodType<CmsPageDirectoryNode, unknown, z.core.$ZodTypeInternals<CmsPageDirectoryNode, unknown>>>;
|
|
47
|
+
}, z.core.$strict>>;
|
|
48
|
+
}, z.core.$strict>;
|
|
49
|
+
export type CmsPageDirectory = z.infer<typeof CmsPageDirectorySchema>;
|
|
50
|
+
/** 将 CMS 当前页面目录响应归一化为 VCP 内部目录模型。 */
|
|
51
|
+
export declare function parseCmsPageDirectory(input: unknown): CmsPageDirectory | null;
|
|
52
|
+
export declare const DesignerPageDisabledReasonSchema: z.ZodEnum<{
|
|
53
|
+
invalid_url_path: "invalid_url_path";
|
|
54
|
+
missing_url: "missing_url";
|
|
55
|
+
not_vcp_managed: "not_vcp_managed";
|
|
56
|
+
unsupported_page_type: "unsupported_page_type";
|
|
57
|
+
}>;
|
|
58
|
+
export type DesignerPageDisabledReason = z.infer<typeof DesignerPageDisabledReasonSchema>;
|
|
59
|
+
export declare const DesignerPageDeleteBlockReasonSchema: z.ZodEnum<{
|
|
60
|
+
invalid_url_path: "invalid_url_path";
|
|
61
|
+
not_vcp_managed: "not_vcp_managed";
|
|
62
|
+
unsupported_page_type: "unsupported_page_type";
|
|
63
|
+
home_page: "home_page";
|
|
64
|
+
not_selectable: "not_selectable";
|
|
65
|
+
page_has_children: "page_has_children";
|
|
66
|
+
last_selectable_page: "last_selectable_page";
|
|
67
|
+
cms_unbound: "cms_unbound";
|
|
68
|
+
}>;
|
|
69
|
+
export type DesignerPageDeleteBlockReason = z.infer<typeof DesignerPageDeleteBlockReasonSchema>;
|
|
70
|
+
export interface DesignerPageNode {
|
|
71
|
+
/** Null for VCP sitemap pages when the site has no CMS binding. */
|
|
72
|
+
readonly cms_page_id: number | null;
|
|
73
|
+
readonly title: string;
|
|
74
|
+
readonly url_path: string;
|
|
75
|
+
readonly url: string | null;
|
|
76
|
+
readonly page_type: CmsPageType;
|
|
77
|
+
readonly vcp_managed: boolean;
|
|
78
|
+
readonly selectable: boolean;
|
|
79
|
+
readonly disabled_reason: DesignerPageDisabledReason | null;
|
|
80
|
+
readonly can_delete: boolean;
|
|
81
|
+
readonly delete_block_reason: DesignerPageDeleteBlockReason | null;
|
|
82
|
+
readonly has_cms_children: boolean;
|
|
83
|
+
readonly children: readonly DesignerPageNode[];
|
|
84
|
+
}
|
|
85
|
+
export declare const DesignerPageNodeSchema: z.ZodType<DesignerPageNode>;
|
|
86
|
+
export declare const DesignerPageGroupSchema: z.ZodObject<{
|
|
87
|
+
group_id: z.ZodString;
|
|
88
|
+
title: z.ZodString;
|
|
89
|
+
pages: z.ZodArray<z.ZodType<DesignerPageNode, unknown, z.core.$ZodTypeInternals<DesignerPageNode, unknown>>>;
|
|
90
|
+
}, z.core.$strict>;
|
|
91
|
+
export type DesignerPageGroup = z.infer<typeof DesignerPageGroupSchema>;
|
|
92
|
+
export declare const DeleteDesignerPageRequestSchema: z.ZodObject<{
|
|
93
|
+
base_snapshot_id: z.ZodUUID;
|
|
94
|
+
expected_url_path: z.ZodString;
|
|
95
|
+
}, z.core.$strict>;
|
|
96
|
+
export type DeleteDesignerPageRequest = z.infer<typeof DeleteDesignerPageRequestSchema>;
|
|
97
|
+
export declare const PageDirectoryReconcileStatusSchema: z.ZodEnum<{
|
|
98
|
+
failed: "failed";
|
|
99
|
+
succeeded: "succeeded";
|
|
100
|
+
}>;
|
|
101
|
+
export declare const PageDirectoryReconcileFailedPageSchema: z.ZodObject<{
|
|
102
|
+
url_path: z.ZodString;
|
|
103
|
+
phase: z.ZodEnum<{
|
|
104
|
+
ensure: "ensure";
|
|
105
|
+
binding: "binding";
|
|
106
|
+
delete: "delete";
|
|
107
|
+
}>;
|
|
108
|
+
code: z.ZodString;
|
|
109
|
+
message: z.ZodString;
|
|
110
|
+
}, z.core.$strict>;
|
|
111
|
+
export declare const PageDirectoryReconcileResultSchema: z.ZodObject<{
|
|
112
|
+
status: z.ZodEnum<{
|
|
113
|
+
failed: "failed";
|
|
114
|
+
succeeded: "succeeded";
|
|
115
|
+
}>;
|
|
116
|
+
checked_count: z.ZodNumber;
|
|
117
|
+
ensured_count: z.ZodNumber;
|
|
118
|
+
deleted_count: z.ZodNumber;
|
|
119
|
+
already_absent_count: z.ZodNumber;
|
|
120
|
+
failed_pages: z.ZodArray<z.ZodObject<{
|
|
121
|
+
url_path: z.ZodString;
|
|
122
|
+
phase: z.ZodEnum<{
|
|
123
|
+
ensure: "ensure";
|
|
124
|
+
binding: "binding";
|
|
125
|
+
delete: "delete";
|
|
126
|
+
}>;
|
|
127
|
+
code: z.ZodString;
|
|
128
|
+
message: z.ZodString;
|
|
129
|
+
}, z.core.$strict>>;
|
|
130
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
131
|
+
}, z.core.$strict>;
|
|
132
|
+
export type PageDirectoryReconcileResult = z.infer<typeof PageDirectoryReconcileResultSchema>;
|
|
133
|
+
export declare const DeleteDesignerPageResultSchema: z.ZodObject<{
|
|
134
|
+
result_snapshot_id: z.ZodUUID;
|
|
135
|
+
deleted_files: z.ZodArray<z.ZodString>;
|
|
136
|
+
updated_files: z.ZodArray<z.ZodString>;
|
|
137
|
+
preserved_shared_files: z.ZodArray<z.ZodString>;
|
|
138
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
139
|
+
next_url: z.ZodNullable<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
|
|
140
|
+
previous_url: z.ZodNullable<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
|
|
141
|
+
cms_reconcile_result: z.ZodObject<{
|
|
142
|
+
status: z.ZodEnum<{
|
|
143
|
+
failed: "failed";
|
|
144
|
+
succeeded: "succeeded";
|
|
145
|
+
}>;
|
|
146
|
+
checked_count: z.ZodNumber;
|
|
147
|
+
ensured_count: z.ZodNumber;
|
|
148
|
+
deleted_count: z.ZodNumber;
|
|
149
|
+
already_absent_count: z.ZodNumber;
|
|
150
|
+
failed_pages: z.ZodArray<z.ZodObject<{
|
|
151
|
+
url_path: z.ZodString;
|
|
152
|
+
phase: z.ZodEnum<{
|
|
153
|
+
ensure: "ensure";
|
|
154
|
+
binding: "binding";
|
|
155
|
+
delete: "delete";
|
|
156
|
+
}>;
|
|
157
|
+
code: z.ZodString;
|
|
158
|
+
message: z.ZodString;
|
|
159
|
+
}, z.core.$strict>>;
|
|
160
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
161
|
+
}, z.core.$strict>;
|
|
162
|
+
}, z.core.$strict>;
|
|
163
|
+
export type DeleteDesignerPageResult = z.infer<typeof DeleteDesignerPageResultSchema>;
|
|
164
|
+
export declare const DeleteDesignerPageResponseSchema: z.ZodObject<{
|
|
165
|
+
code: z.ZodLiteral<0>;
|
|
166
|
+
message: z.ZodString;
|
|
167
|
+
data: z.ZodObject<{
|
|
168
|
+
result_snapshot_id: z.ZodUUID;
|
|
169
|
+
deleted_files: z.ZodArray<z.ZodString>;
|
|
170
|
+
updated_files: z.ZodArray<z.ZodString>;
|
|
171
|
+
preserved_shared_files: z.ZodArray<z.ZodString>;
|
|
172
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
173
|
+
next_url: z.ZodNullable<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
|
|
174
|
+
previous_url: z.ZodNullable<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
|
|
175
|
+
cms_reconcile_result: z.ZodObject<{
|
|
176
|
+
status: z.ZodEnum<{
|
|
177
|
+
failed: "failed";
|
|
178
|
+
succeeded: "succeeded";
|
|
179
|
+
}>;
|
|
180
|
+
checked_count: z.ZodNumber;
|
|
181
|
+
ensured_count: z.ZodNumber;
|
|
182
|
+
deleted_count: z.ZodNumber;
|
|
183
|
+
already_absent_count: z.ZodNumber;
|
|
184
|
+
failed_pages: z.ZodArray<z.ZodObject<{
|
|
185
|
+
url_path: z.ZodString;
|
|
186
|
+
phase: z.ZodEnum<{
|
|
187
|
+
ensure: "ensure";
|
|
188
|
+
binding: "binding";
|
|
189
|
+
delete: "delete";
|
|
190
|
+
}>;
|
|
191
|
+
code: z.ZodString;
|
|
192
|
+
message: z.ZodString;
|
|
193
|
+
}, z.core.$strict>>;
|
|
194
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
195
|
+
}, z.core.$strict>;
|
|
196
|
+
}, z.core.$strict>;
|
|
197
|
+
}, z.core.$strict>;
|
|
198
|
+
export type DeleteDesignerPageResponse = z.infer<typeof DeleteDesignerPageResponseSchema>;
|
|
199
|
+
export declare const DeleteDesignerPageErrorDetailsSchema: z.ZodObject<{
|
|
200
|
+
source_committed: z.ZodBoolean;
|
|
201
|
+
result_snapshot_id: z.ZodOptional<z.ZodUUID>;
|
|
202
|
+
cms_reconcile_result: z.ZodOptional<z.ZodObject<{
|
|
203
|
+
status: z.ZodEnum<{
|
|
204
|
+
failed: "failed";
|
|
205
|
+
succeeded: "succeeded";
|
|
206
|
+
}>;
|
|
207
|
+
checked_count: z.ZodNumber;
|
|
208
|
+
ensured_count: z.ZodNumber;
|
|
209
|
+
deleted_count: z.ZodNumber;
|
|
210
|
+
already_absent_count: z.ZodNumber;
|
|
211
|
+
failed_pages: z.ZodArray<z.ZodObject<{
|
|
212
|
+
url_path: z.ZodString;
|
|
213
|
+
phase: z.ZodEnum<{
|
|
214
|
+
ensure: "ensure";
|
|
215
|
+
binding: "binding";
|
|
216
|
+
delete: "delete";
|
|
217
|
+
}>;
|
|
218
|
+
code: z.ZodString;
|
|
219
|
+
message: z.ZodString;
|
|
220
|
+
}, z.core.$strict>>;
|
|
221
|
+
warnings: z.ZodArray<z.ZodString>;
|
|
222
|
+
}, z.core.$strict>>;
|
|
223
|
+
}, z.core.$strict>;
|
|
224
|
+
export type DeleteDesignerPageErrorDetails = z.infer<typeof DeleteDesignerPageErrorDetailsSchema>;
|
|
225
|
+
export declare const PageTargetKindSchema: z.ZodEnum<{
|
|
226
|
+
landing_page: "landing_page";
|
|
227
|
+
general_page: "general_page";
|
|
228
|
+
detail_page: "detail_page";
|
|
229
|
+
}>;
|
|
230
|
+
export declare const PageTargetSchema: z.ZodObject<{
|
|
231
|
+
url_path: z.ZodString;
|
|
232
|
+
title: z.ZodString;
|
|
233
|
+
kind: z.ZodEnum<{
|
|
234
|
+
landing_page: "landing_page";
|
|
235
|
+
general_page: "general_page";
|
|
236
|
+
detail_page: "detail_page";
|
|
237
|
+
}>;
|
|
238
|
+
route_file: z.ZodString;
|
|
239
|
+
collection_id: z.ZodOptional<z.ZodString>;
|
|
240
|
+
}, z.core.$strict>;
|
|
241
|
+
export type PageTarget = z.infer<typeof PageTargetSchema>;
|
|
242
|
+
export declare const PageTargetSetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
243
|
+
complete: z.ZodLiteral<true>;
|
|
244
|
+
targets: z.ZodArray<z.ZodObject<{
|
|
245
|
+
url_path: z.ZodString;
|
|
246
|
+
title: z.ZodString;
|
|
247
|
+
kind: z.ZodEnum<{
|
|
248
|
+
landing_page: "landing_page";
|
|
249
|
+
general_page: "general_page";
|
|
250
|
+
detail_page: "detail_page";
|
|
251
|
+
}>;
|
|
252
|
+
route_file: z.ZodString;
|
|
253
|
+
collection_id: z.ZodOptional<z.ZodString>;
|
|
254
|
+
}, z.core.$strict>>;
|
|
255
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
256
|
+
complete: z.ZodLiteral<false>;
|
|
257
|
+
targets: z.ZodArray<z.ZodObject<{
|
|
258
|
+
url_path: z.ZodString;
|
|
259
|
+
title: z.ZodString;
|
|
260
|
+
kind: z.ZodEnum<{
|
|
261
|
+
landing_page: "landing_page";
|
|
262
|
+
general_page: "general_page";
|
|
263
|
+
detail_page: "detail_page";
|
|
264
|
+
}>;
|
|
265
|
+
route_file: z.ZodString;
|
|
266
|
+
collection_id: z.ZodOptional<z.ZodString>;
|
|
267
|
+
}, z.core.$strict>>;
|
|
268
|
+
errors: z.ZodArray<z.ZodString>;
|
|
269
|
+
}, z.core.$strict>], "complete">;
|
|
270
|
+
export type PageTargetSet = z.infer<typeof PageTargetSetSchema>;
|
|
271
|
+
export declare const PageTargetProjectionHashSchema: z.ZodString;
|
|
272
|
+
export type PageTargetProjectionHash = z.infer<typeof PageTargetProjectionHashSchema>;
|
|
273
|
+
export declare const PageDirectoryReconcileStateSchema: z.ZodObject<{
|
|
274
|
+
projection_hash: z.ZodNullable<z.ZodString>;
|
|
275
|
+
}, z.core.$strict>;
|
|
276
|
+
export type PageDirectoryReconcileState = z.infer<typeof PageDirectoryReconcileStateSchema>;
|
|
277
|
+
export declare const UpdatePageDirectoryReconcileStateRequestSchema: z.ZodObject<{
|
|
278
|
+
expected_projection_hash: z.ZodNullable<z.ZodString>;
|
|
279
|
+
projection_hash: z.ZodString;
|
|
280
|
+
}, z.core.$strict>;
|
|
281
|
+
export type UpdatePageDirectoryReconcileStateRequest = z.infer<typeof UpdatePageDirectoryReconcileStateRequestSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{converter as re,differenceCiede2000 as ne}from"culori";import{converter as
|
|
1
|
+
import{converter as re,differenceCiede2000 as ne}from"culori";import{converter as q,parse as k,wcagContrast as b}from"culori";var p=q("oklch"),I=4.5,e={paper:"oklch(0.92 0.008 250)",cream:"oklch(0.90 0.035 85)",sand:"oklch(0.75 0.05 78)",stone:"oklch(0.60 0.02 75)",ash:"oklch(0.60 0.012 250)",slate:"oklch(0.45 0.025 250)",charcoal:"oklch(0.30 0.015 255)",ink:"oklch(0.25 0.04 260)",sky:"oklch(0.72 0.12 230)",blue:"oklch(0.58 0.17 250)","medical blue":"oklch(0.58 0.12 235)",indigo:"oklch(0.50 0.18 280)",navy:"oklch(0.40 0.10 258)",ocean:"oklch(0.55 0.13 220)","slate blue":"oklch(0.46 0.06 245)",teal:"oklch(0.60 0.12 195)","soft aqua":"oklch(0.78 0.07 190)",mint:"oklch(0.78 0.10 165)",sage:"oklch(0.65 0.05 145)",green:"oklch(0.58 0.15 145)","clinical green":"oklch(0.62 0.12 155)",emerald:"oklch(0.60 0.16 155)",forest:"oklch(0.45 0.10 145)",olive:"oklch(0.58 0.08 115)",lime:"oklch(0.72 0.17 130)",yellow:"oklch(0.82 0.15 100)",gold:"oklch(0.72 0.14 85)",amber:"oklch(0.70 0.16 70)",orange:"oklch(0.66 0.18 55)",coral:"oklch(0.68 0.16 32)",terracotta:"oklch(0.55 0.12 42)",rust:"oklch(0.50 0.13 38)",brown:"oklch(0.45 0.07 55)",rose:"oklch(0.65 0.16 18)",red:"oklch(0.58 0.20 25)",crimson:"oklch(0.52 0.20 22)",wine:"oklch(0.42 0.13 18)",pink:"oklch(0.72 0.14 0)",magenta:"oklch(0.60 0.22 345)",lavender:"oklch(0.72 0.08 295)",violet:"oklch(0.58 0.19 295)",purple:"oklch(0.52 0.19 305)",plum:"oklch(0.45 0.13 325)",electric:"oklch(0.62 0.23 285)","clean white":"oklch(0.97 0.01 245)","cool gray":"oklch(0.62 0.02 245)",zinc:"oklch(0.60 0.012 250)",gray:"oklch(0.60 0.012 250)",grey:"oklch(0.60 0.012 250)",neutral:"oklch(0.60 0.005 250)",gunmetal:"oklch(0.30 0.015 255)"},J={\u84DD:e.blue,\u84DD\u8272:e.blue,\u5929\u84DD:e.sky,\u5929\u84DD\u8272:e.sky,\u6D45\u84DD:e.sky,\u6E56\u84DD:e.ocean,\u6D77\u84DD:e.ocean,\u6DF1\u84DD:e.navy,\u85CF\u84DD:e.navy,\u85CF\u9752:e.navy,\u6D77\u519B\u84DD:e.navy,\u6DF1\u6D77\u519B\u84DD:e.navy,\u5348\u591C\u84DD:e.navy,\u975B\u84DD:e.indigo,\u975B\u9752:e.indigo,\u94A2\u84DD:e["slate blue"],\u9752:e.teal,\u9752\u8272:e.teal,\u84DD\u7EFF:e.teal,\u7EFF:e.green,\u7EFF\u8272:e.green,\u6D45\u7EFF:e.mint,\u8584\u8377\u7EFF:e.mint,\u8349\u7EFF:e.lime,\u6A44\u6984\u7EFF:e.olive,\u58A8\u7EFF:e.forest,\u6DF1\u7EFF:e.forest,\u68EE\u6797\u7EFF:e.forest,\u7FE0\u7EFF:e.emerald,\u7956\u6BCD\u7EFF:e.emerald,\u9EC4:e.yellow,\u9EC4\u8272:e.yellow,\u91D1:e.gold,\u91D1\u8272:e.gold,\u91D1\u9EC4:e.gold,\u7425\u73C0:e.amber,\u7425\u73C0\u8272:e.amber,\u6A59:e.orange,\u6A59\u8272:e.orange,\u6A58\u8272:e.orange,\u6A58\u9EC4:e.orange,\u6D3B\u529B\u6A59:e.orange,\u6696\u6A59:e.orange,\u73CA\u745A:e.coral,\u73CA\u745A\u6A59:e.coral,\u9676\u571F:e.terracotta,\u8D64\u9676:e.terracotta,\u9508\u7EA2:e.rust,\u68D5:e.brown,\u68D5\u8272:e.brown,\u8910\u8272:e.brown,\u5496\u5561\u8272:e.brown,\u7EA2:e.red,\u7EA2\u8272:e.red,\u6731\u7EA2:e.red,\u7EEF\u7EA2:e.crimson,\u6DF1\u7EA2:e.crimson,\u9152\u7EA2:e.wine,\u73AB\u7470:e.rose,\u73AB\u7EA2:e.rose,\u7C89:e.pink,\u7C89\u8272:e.pink,\u7C89\u7EA2:e.pink,\u6D0B\u7EA2:e.magenta,\u54C1\u7EA2:e.magenta,\u7D2B:e.purple,\u7D2B\u8272:e.purple,\u6DE1\u7D2B:e.lavender,\u85B0\u8863\u8349:e.lavender,\u7D2B\u7F57\u5170:e.violet,\u6885\u7EA2:e.plum,\u7070:e.gray,\u7070\u8272:e.gray,\u6D45\u7070:e.gray,\u6DE1\u7070:e.gray,\u51B7\u7070:e["cool gray"],\u51B7\u7070\u767D:e["cool gray"],\u6696\u7070:e.stone,\u6DF1\u7070:e.slate,\u77F3\u58A8\u7070:e.slate,\u77F3\u677F\u7070:e.slate,\u70AD\u7070:e.charcoal,\u70AD\u9ED1:e.charcoal,\u58A8:e.ink,\u58A8\u8272:e.ink,\u9ED1:e.ink,\u9ED1\u8272:e.ink,\u767D:e["clean white"],\u767D\u8272:e["clean white"],\u7C73\u767D:e.cream,\u7C73\u8272:e.cream,\u8C61\u7259\u767D:e.cream,\u5976\u6CB9\u767D:e.cream,\u6C99\u8272:e.sand},F={...e,...J};function T(t){let o=t.colorSeeds??{primary:"slate",accent:"blue",neutral:"zinc"},r=t.surfaceMode,n=y(o.primary||"slate"),c=s(n),l=s(y(o.accent||"blue")),h=o.neutral?y(o.neutral):Y(n),i=u(h.h),d,a,f,g,S,E;r==="dark"?(d=s({mode:"oklch",l:.14,c:.03,h:i}),a=s({mode:"oklch",l:.95,c:.02,h:i}),f=s({mode:"oklch",l:.2,c:.04,h:i}),g=s({mode:"oklch",l:.29,c:.05,h:i}),S=s({mode:"oklch",l:.78,c:.02,h:i}),E=s({mode:"oklch",l:.35,c:.06,h:i})):(d=s({mode:"oklch",l:.98,c:.01,h:i}),a=s({mode:"oklch",l:.2,c:.02,h:i}),f=s({mode:"oklch",l:.96,c:.015,h:i}),g=s({mode:"oklch",l:.92,c:.02,h:i}),S=s({mode:"oklch",l:.43,c:.02,h:i}),E=s({mode:"oklch",l:.84,c:.025,h:i}));let m=t.imagePalette;if(m){let C=typeof m.background=="string"&&w(m.background),x=C&&te(m.background,r);C&&x&&(d=s(y(m.background))),x&&typeof m.card=="string"&&w(m.card)&&(f=s(y(m.card))),x&&typeof m.muted=="string"&&w(m.muted)&&(g=s(y(m.muted))),typeof m.foreground=="string"&&w(m.foreground)?a=L(s(y(m.foreground)),d,I):C&&x&&(a=v(d)),typeof m.border=="string"&&w(m.border)&&(E=oe(s(y(m.border)),d))}typeof o.foreground=="string"&&w(o.foreground)&&(a=L(s(y(o.foreground)),d,I));let M=r!=="dark",P={"--background":d,"--foreground":a,"--card":f,"--card-foreground":a,"--muted":g,"--muted-foreground":S,"--border":E,"--input":E,"--ring":l,"--primary":c,"--primary-foreground":v(c),"--primary-hover":O(c,M),"--accent":l,"--accent-foreground":v(l),"--accent-ink":A(l,d),"--accent-subtle":Z(l,M),"--accent-hover":O(l,M),"--overlay-on-dark":s({mode:"oklch",l:.96,c:.02,h:i}),"--overlay-on-light":s({mode:"oklch",l:.2,c:.02,h:i})},H=a,G=v(a),$=_(a,i),V=A(l,a),z=p(k(c)??c),U=u(z?.h),j=_(c,U),K=A(l,c);return W({...P,...{"--surface-inverse":H,"--surface-inverse-foreground":G,"--surface-inverse-muted":$,"--surface-inverse-accent-ink":V,"--surface-primary-muted":j,"--surface-primary-accent-ink":K}},o)}function W(t,o){let r=s({mode:"oklch",l:.58,c:.22,h:28}),n=s({mode:"oklch",l:.6,c:.14,h:150}),c=s({mode:"oklch",l:.75,c:.15,h:75}),l={...t,"--popover":"var(--card)","--popover-foreground":"var(--card-foreground)","--secondary":"var(--muted)","--secondary-foreground":"var(--foreground)","--destructive":r,"--destructive-foreground":v(r),"--success":n,"--success-foreground":v(n),"--warning":c,"--warning-foreground":v(c)},[h,i]=X(o,l);return l["--supporting-0"]=h,l["--supporting-1"]=i,ee(l["--accent"]).forEach((a,f)=>{l[`--chart-${f+1}`]=a}),l}function X(t,o){let c=(t.supporting??[]).filter(h=>!!(h&&h.trim())).slice(0,2).map(h=>s(y(h))),l=[o["--primary"],o["--accent"]];for(;c.length<2;)c.push(l[c.length]);return[c[0],c[1]]}function w(t){let o=(t??"").trim();if(!o||o.startsWith("#")&&!/^#[0-9A-Fa-f]{3,8}$/.test(o))return!1;let r=F[o.toLowerCase()]??o;return!!k(r)}function y(t,o="paper"){let r=(t??"").trim();if(!r)return y(o);let n=F[r.toLowerCase()]??r,c=k(n);if(c){let l=p(c);if(l)return l}return Q(r)}function Q(t){let o=2166136261,r=t.toLowerCase();for(let h=0;h<r.length;h++)o^=r.charCodeAt(h),o=Math.imul(o,16777619)>>>0;let n=o%360,c=.08+(o>>>9)%9/100;return{mode:"oklch",l:.52+(o>>>18)%16/100,c,h:n}}function Y(t){return{mode:"oklch",l:.6,c:.02,h:u(t.h)}}function O(t,o){let r=p(k(t)??t);if(!r)return t;let n=o?-.06:.06,c=Math.max(.06,Math.min(.97,u(r.l)+n));return s({mode:"oklch",l:c,c:u(r.c),h:u(r.h)})}function Z(t,o){let r=p(k(t)??t),n=u(r?.h),c=Math.min(u(r?.c),o?.05:.06);return s({mode:"oklch",l:o?.95:.24,c,h:n})}function ee(t){let o=p(k(t)??t),r=u(o?.h),n=Math.max(.12,Math.min(u(o?.c),.16));return[0,72,144,216,288].map(c=>s({mode:"oklch",l:.62,c:n,h:(r+c)%360}))}function v(t){let o=k(t),r=o?p(o):void 0,n=u(r?.h),c={mode:"oklch",l:.99,c:.01,h:n},l={mode:"oklch",l:.18,c:.02,h:n},h=b(o??t,c),i=b(o??t,l);return s(h>=i?c:l)}function L(t,o,r){let n=p(k(t)??t);if(!n)return v(o);if(b(t,o)>=r)return s(n);let c=p(k(o)??o),h=(c?u(c.l)>=.5:!0)?-.02:.02,i=u(n.l),d=u(n.c),a=u(n.h);for(let f=1;f<=50;f++){let g=i+h*f;if(g<=0||g>=1)break;let S={mode:"oklch",l:g,c:d,h:a};if(b(S,o)>=r)return s(S)}return v(o)}var D=1.3;function oe(t,o){let r=p(k(t)??t);if(!r)return t;if(b(t,o)>=D)return s(r);let n=p(k(o)??o),l=(n?u(n.l)>=.5:!0)?-.03:.03,h=u(r.l),i=u(r.c),d=u(r.h);for(let a=1;a<=40;a++){let f=h+l*a;if(f<=0||f>=1)break;let g={mode:"oklch",l:f,c:i,h:d};if(b(g,o)>=D)return s(g)}return t}function te(t,o){let r=p(k(t)??t);if(!r)return!1;let n=u(r.l)>=.5;return o==="dark"?!n:n}function A(t,o){let r=p(k(t)??t);if(!r)return t;let n=u(r.h),c=u(r.c),l=u(r.l),h=p(k(o)??o),d=(h?u(h.l)>=.5:!0)?-.02:.02;for(let a=0;a<=50;a++){let f=l+d*a;if(f<=0||f>=1)break;let g={mode:"oklch",l:f,c,h:n};if(b(g,o)>=I)return s(g)}return v(o)}function _(t,o){let r=p(k(t)??t),c=(r?u(r.l):.5)>=.5,l=c?.75:.35,h=c?-.02:.02;for(let i=0;i<=50;i++){let d=l+h*i;if(d<=0||d>=1)break;let a={mode:"oklch",l:d,c:.02,h:o};if(b(a,t)>=I)return s(a)}return v(t)}function u(t){return typeof t=="number"&&Number.isFinite(t)?t:0}function s(t){let o=u(t.l),r=u(t.c),n=u(t.h);return`oklch(${o.toFixed(2)} ${r.toFixed(2)} ${n.toFixed(2)})`}var ce=10,N=25,le=re("oklch"),ae=ne();function se(t){return typeof t.colorSeeds?.primary=="string"&&t.colorSeeds.primary.trim().length>0}function R(t){let o=le(t);return o&&typeof o.h=="number"?o.h:void 0}function B(t){let o=0;for(let r=0;r<t.length;r+=1)for(let n=r+1;n<t.length;n+=1){let c=t[r],l=t[n];if(c===void 0||l===void 0)continue;let h=Math.abs(c-l)%360,i=h>180?360-h:h;i>o&&(o=i)}return o}function ie(t){let o=0,r=1/0;for(let n=0;n<t.length;n+=1)for(let c=n+1;c<t.length;c+=1){let l=ae(t[n],t[c]);l>o&&(o=l),l<r&&(r=l)}return{max:o,min:r===1/0?0:r}}function ke(t){let o=t.filter(se);if(o.length<2)return{minBackgroundDeltaE:null,tooSimilar:!1,insufficient:!0};let r=o.map(a=>a.surfaceMode??"light"),n=o.map((a,f)=>T({colorSeeds:a.colorSeeds,surfaceMode:r[f]})),c=ie(n.map(a=>a["--background"])),l=B(n.map(a=>R(a["--primary"]))),h=B(n.map(a=>R(a["--accent"]))),d=!(new Set(r).size===1)||c.max>=ce||l>=N||h>=N;return{minBackgroundDeltaE:c.min,tooSimilar:!d,insufficient:!1}}export{ke as measureColorwayDistinctness};
|
|
@@ -8,11 +8,11 @@ export declare const FieldDeclSchema: z.ZodObject<{
|
|
|
8
8
|
number: "number";
|
|
9
9
|
boolean: "boolean";
|
|
10
10
|
date: "date";
|
|
11
|
+
url: "url";
|
|
11
12
|
title: "title";
|
|
12
13
|
text: "text";
|
|
13
14
|
richtext: "richtext";
|
|
14
15
|
datetime: "datetime";
|
|
15
|
-
url: "url";
|
|
16
16
|
email: "email";
|
|
17
17
|
color: "color";
|
|
18
18
|
select: "select";
|
|
@@ -46,17 +46,21 @@ export declare const ConnectDynamicCollectionInputSchema: z.ZodObject<{
|
|
|
46
46
|
route_file_path: z.ZodString;
|
|
47
47
|
target_component_path: z.ZodString;
|
|
48
48
|
content_type_hint: z.ZodString;
|
|
49
|
+
collection_purpose: z.ZodOptional<z.ZodEnum<{
|
|
50
|
+
generic: "generic";
|
|
51
|
+
product: "product";
|
|
52
|
+
}>>;
|
|
49
53
|
required_fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
50
54
|
name: z.ZodString;
|
|
51
55
|
type: z.ZodEnum<{
|
|
52
56
|
number: "number";
|
|
53
57
|
boolean: "boolean";
|
|
54
58
|
date: "date";
|
|
59
|
+
url: "url";
|
|
55
60
|
title: "title";
|
|
56
61
|
text: "text";
|
|
57
62
|
richtext: "richtext";
|
|
58
63
|
datetime: "datetime";
|
|
59
|
-
url: "url";
|
|
60
64
|
email: "email";
|
|
61
65
|
color: "color";
|
|
62
66
|
select: "select";
|
|
@@ -81,11 +85,11 @@ export declare const ConnectDynamicCollectionInputSchema: z.ZodObject<{
|
|
|
81
85
|
number: "number";
|
|
82
86
|
boolean: "boolean";
|
|
83
87
|
date: "date";
|
|
88
|
+
url: "url";
|
|
84
89
|
title: "title";
|
|
85
90
|
text: "text";
|
|
86
91
|
richtext: "richtext";
|
|
87
92
|
datetime: "datetime";
|
|
88
|
-
url: "url";
|
|
89
93
|
email: "email";
|
|
90
94
|
color: "color";
|
|
91
95
|
select: "select";
|
package/dist/connect-form.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { z } from "zod";
|
|
|
4
4
|
* 词表→CMS 表单字段类型映射在 agent 侧 `cms/forms/field-type-to-form.ts`,
|
|
5
5
|
* 与 connect-dynamic-collection 的 FIELD_TYPES/field-type-to-cms 同款分层。
|
|
6
6
|
*/
|
|
7
|
-
export declare const FORM_FIELD_TYPES: readonly ["text", "textarea", "email", "phone", "select", "radio", "multiselect", "boolean", "date", "number"];
|
|
7
|
+
export declare const FORM_FIELD_TYPES: readonly ["text", "textarea", "email", "phone", "select", "radio", "multiselect", "boolean", "date", "number", "file"];
|
|
8
8
|
export type FormFieldType = (typeof FORM_FIELD_TYPES)[number];
|
|
9
9
|
export declare const FormFieldDeclSchema: z.ZodObject<{
|
|
10
10
|
name: z.ZodString;
|
|
@@ -12,6 +12,7 @@ export declare const FormFieldDeclSchema: z.ZodObject<{
|
|
|
12
12
|
number: "number";
|
|
13
13
|
boolean: "boolean";
|
|
14
14
|
date: "date";
|
|
15
|
+
file: "file";
|
|
15
16
|
text: "text";
|
|
16
17
|
email: "email";
|
|
17
18
|
select: "select";
|
|
@@ -40,6 +41,7 @@ export declare const ConnectFormInputSchema: z.ZodObject<{
|
|
|
40
41
|
number: "number";
|
|
41
42
|
boolean: "boolean";
|
|
42
43
|
date: "date";
|
|
44
|
+
file: "file";
|
|
43
45
|
text: "text";
|
|
44
46
|
email: "email";
|
|
45
47
|
select: "select";
|
|
@@ -70,9 +72,9 @@ export type ConnectFormResult = {
|
|
|
70
72
|
fields: ResolvedFormField[];
|
|
71
73
|
/** 历史表单来源页 id,仅用于旧生成站点兼容;当前提交按 url_path 解析真实页面。 */
|
|
72
74
|
source_page_id: number | null;
|
|
73
|
-
/**
|
|
75
|
+
/** 公开 Workspace 工具已创建的标准表单容器路径;调用方只负责挂载。 */
|
|
74
76
|
form_view: string;
|
|
75
|
-
/**
|
|
77
|
+
/** 标准容器挂载契约,确定性派生;不得据此另写 form view。 */
|
|
76
78
|
form_contract: string;
|
|
77
79
|
/** 工具已写入 working set 的确定性产物路径——LLM 绝不可再 create/覆盖。 */
|
|
78
80
|
created_files: string[];
|
|
@@ -92,8 +94,8 @@ export type ConnectFormResult = {
|
|
|
92
94
|
}
|
|
93
95
|
/**
|
|
94
96
|
* 幂等命中:该表单的 scaffold 已存在于 base snapshot(此前 run 绑定过),
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
+
* 本次会补建或升级确定性提交基建。该状态只保留给旧内部调用方;公开 Workspace
|
|
98
|
+
* 工具不会再进入 legacy scaffold。绝不重建 existing_files、绝不手写提交链路(与 connect_dynamic_collection
|
|
97
99
|
* 的 already_bound 同款)。
|
|
98
100
|
*/
|
|
99
101
|
| {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* 用户已确认的转化目标(访客该怎么迈出下一步)。
|
|
4
|
+
*
|
|
5
|
+
* 两条上游都写这个形状,下游只认这一个:
|
|
6
|
+
* - 旧 Clarify 流:转化题每个 option 自带 `conversionHints`,API 把选中项镜像到
|
|
7
|
+
* `SitemapAnswer.conversion`,sitemap.service 再提到
|
|
8
|
+
* `SitemapSchema.confirmedChoices.conversion`。
|
|
9
|
+
* - 新 Launcher 流:Step5 转化卡是自由文本,没有结构化协议可读;由 Step6 设计
|
|
10
|
+
* 推荐那一次已有的模型调用顺带产出,结构确认物化设计选择时写进同一个位置。
|
|
11
|
+
*
|
|
12
|
+
* 下游 inspect-sitemap / DesignPlan / worker prompt 据此读到用户确认的转化目标,
|
|
13
|
+
* 不依赖 block props。
|
|
14
|
+
*
|
|
15
|
+
* 字段语义:
|
|
16
|
+
* - protocol:访客怎么完成这个动作 —— phone(tel: 链接)、form(留资表单)、
|
|
17
|
+
* download(文件)、route(站内页面)、external(第三方地址)。
|
|
18
|
+
* - ctaLabel:具体的行动号召文案,能确定站点语种时就用站点语种,否则用需求
|
|
19
|
+
* 原文的语言(≤40 字),如「立即致电咨询」或 "Book a consultation"。
|
|
20
|
+
* - ctaTarget:可选的具体目标 —— 电话号码 / 站内路径 / 网址 / 锚点;缺省时由
|
|
21
|
+
* 站主稍后补。
|
|
22
|
+
* - requiresOwnerDetail:该协议需要一项需求里没有的站主信息时为 true(例如选了
|
|
23
|
+
* 电话但没给号码)。
|
|
24
|
+
*/
|
|
25
|
+
export declare const ConversionHintsSchema: z.ZodObject<{
|
|
26
|
+
protocol: z.ZodEnum<{
|
|
27
|
+
external: "external";
|
|
28
|
+
phone: "phone";
|
|
29
|
+
form: "form";
|
|
30
|
+
download: "download";
|
|
31
|
+
route: "route";
|
|
32
|
+
}>;
|
|
33
|
+
ctaLabel: z.ZodString;
|
|
34
|
+
ctaTarget: z.ZodOptional<z.ZodString>;
|
|
35
|
+
requiresOwnerDetail: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
export type ConversionHints = z.infer<typeof ConversionHintsSchema>;
|