@zlooks.cn/blog-server 1.0.3 → 1.0.4

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.
@@ -48,6 +48,9 @@ export declare const BLOG_MCP_TOOLS: Readonly<{
48
48
  selectTheme: "select-theme";
49
49
  readThemeStatus: "read-theme-status";
50
50
  }>;
51
+ export declare const BLOG_MCP_RESOURCES: Readonly<{
52
+ themeAuthoringContract: "theme-authoring-contract";
53
+ }>;
51
54
  export declare const BLOG_MCP_PROMPTS: Readonly<{
52
55
  reviewAndPublishPost: "review-and-publish-post";
53
56
  moderatePendingComments: "moderate-pending-comments";
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/contracts/mcp.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,SAAiB,CAAC;AACnD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAEvD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBzB,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;EAiB3B,CAAC"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/contracts/mcp.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,SAAiB,CAAC;AACnD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAEvD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBzB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;EAE7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;EAiB3B,CAAC"}
@@ -20,6 +20,9 @@ export const BLOG_MCP_TOOLS = Object.freeze({
20
20
  listThemes: 'list-theme', readThemeSelection: 'read-theme-selection',
21
21
  selectTheme: 'select-theme', readThemeStatus: 'read-theme-status',
22
22
  });
23
+ export const BLOG_MCP_RESOURCES = Object.freeze({
24
+ themeAuthoringContract: 'theme-authoring-contract',
25
+ });
23
26
  export const BLOG_MCP_PROMPTS = Object.freeze({
24
27
  reviewAndPublishPost: 'review-and-publish-post',
25
28
  moderatePendingComments: 'moderate-pending-comments',
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/contracts/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe;IAC9D,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB;IACvG,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY;IAClE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;IAChD,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAE,aAAa;IAClL,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc;IAC9G,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa;IACxE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc;IAC9G,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB;IAC5F,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB;IAC/F,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB;IACvE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB;IAC9E,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB;IACxH,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB;IACpE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB;CAClE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,oBAAoB,EAAE,yBAAyB;IAC/C,uBAAuB,EAAE,2BAA2B;IACpD,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,mBAAmB;IACpC,wBAAwB,EAAE,6BAA6B;IACvD,sBAAsB,EAAE,2BAA2B;IACnD,oBAAoB,EAAE,yBAAyB;IAC/C,uBAAuB,EAAE,6BAA6B;IACtD,uBAAuB,EAAE,6BAA6B;IACtD,0BAA0B,EAAE,gCAAgC;IAC5D,0BAA0B,EAAE,gCAAgC;IAC5D,2BAA2B,EAAE,iCAAiC;IAC9D,sBAAsB,EAAE,4BAA4B;IACpD,0BAA0B,EAAE,gCAAgC;IAC5D,2BAA2B,EAAE,gCAAgC;IAC7D,2BAA2B,EAAE,gCAAgC;CAC9D,CAAC,CAAC"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/contracts/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe;IAC9D,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB;IACvG,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY;IAClE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;IAChD,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAE,aAAa;IAClL,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc;IAC9G,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa;IACxE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc;IAC9G,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB;IAC5F,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB;IAC/F,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB;IACvE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB;IAC9E,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB;IACxH,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB;IACpE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB;CAClE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,sBAAsB,EAAE,0BAA0B;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,oBAAoB,EAAE,yBAAyB;IAC/C,uBAAuB,EAAE,2BAA2B;IACpD,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,mBAAmB;IACpC,wBAAwB,EAAE,6BAA6B;IACvD,sBAAsB,EAAE,2BAA2B;IACnD,oBAAoB,EAAE,yBAAyB;IAC/C,uBAAuB,EAAE,6BAA6B;IACtD,uBAAuB,EAAE,6BAA6B;IACtD,0BAA0B,EAAE,gCAAgC;IAC5D,0BAA0B,EAAE,gCAAgC;IAC5D,2BAA2B,EAAE,iCAAiC;IAC9D,sBAAsB,EAAE,4BAA4B;IACpD,0BAA0B,EAAE,gCAAgC;IAC5D,2BAA2B,EAAE,gCAAgC;IAC7D,2BAA2B,EAAE,gCAAgC;CAC9D,CAAC,CAAC"}
@@ -18,118 +18,170 @@ export declare function createBlogPrompts(): {
18
18
  themeId: string;
19
19
  displayName: string;
20
20
  description: string;
21
+ targetDirectory?: string | undefined;
22
+ gatewayOrigin?: string | undefined;
21
23
  }, {
22
24
  themeId: string;
23
25
  displayName: string;
24
26
  description: string;
27
+ targetDirectory?: string | undefined;
28
+ gatewayOrigin?: string | undefined;
25
29
  }>;
26
30
  "create-blog-theme-structure": import("@hile/mcp").McpPromptDefinition<{
27
31
  themeId: string;
28
32
  displayName: string;
29
33
  description: string;
34
+ targetDirectory?: string | undefined;
35
+ gatewayOrigin?: string | undefined;
30
36
  }, {
31
37
  themeId: string;
32
38
  displayName: string;
33
39
  description: string;
40
+ targetDirectory?: string | undefined;
41
+ gatewayOrigin?: string | undefined;
34
42
  }>;
35
43
  "create-blog-theme-runtime": import("@hile/mcp").McpPromptDefinition<{
36
44
  themeId: string;
37
45
  displayName: string;
38
46
  description: string;
47
+ targetDirectory?: string | undefined;
48
+ gatewayOrigin?: string | undefined;
39
49
  }, {
40
50
  themeId: string;
41
51
  displayName: string;
42
52
  description: string;
53
+ targetDirectory?: string | undefined;
54
+ gatewayOrigin?: string | undefined;
43
55
  }>;
44
56
  "create-blog-theme-shell": import("@hile/mcp").McpPromptDefinition<{
45
57
  themeId: string;
46
58
  displayName: string;
47
59
  description: string;
60
+ targetDirectory?: string | undefined;
61
+ gatewayOrigin?: string | undefined;
48
62
  }, {
49
63
  themeId: string;
50
64
  displayName: string;
51
65
  description: string;
66
+ targetDirectory?: string | undefined;
67
+ gatewayOrigin?: string | undefined;
52
68
  }>;
53
69
  "create-blog-theme-home-page": import("@hile/mcp").McpPromptDefinition<{
54
70
  themeId: string;
55
71
  displayName: string;
56
72
  description: string;
73
+ targetDirectory?: string | undefined;
74
+ gatewayOrigin?: string | undefined;
57
75
  }, {
58
76
  themeId: string;
59
77
  displayName: string;
60
78
  description: string;
79
+ targetDirectory?: string | undefined;
80
+ gatewayOrigin?: string | undefined;
61
81
  }>;
62
82
  "create-blog-theme-post-page": import("@hile/mcp").McpPromptDefinition<{
63
83
  themeId: string;
64
84
  displayName: string;
65
85
  description: string;
86
+ targetDirectory?: string | undefined;
87
+ gatewayOrigin?: string | undefined;
66
88
  }, {
67
89
  themeId: string;
68
90
  displayName: string;
69
91
  description: string;
92
+ targetDirectory?: string | undefined;
93
+ gatewayOrigin?: string | undefined;
70
94
  }>;
71
95
  "create-blog-theme-archive-page": import("@hile/mcp").McpPromptDefinition<{
72
96
  themeId: string;
73
97
  displayName: string;
74
98
  description: string;
99
+ targetDirectory?: string | undefined;
100
+ gatewayOrigin?: string | undefined;
75
101
  }, {
76
102
  themeId: string;
77
103
  displayName: string;
78
104
  description: string;
105
+ targetDirectory?: string | undefined;
106
+ gatewayOrigin?: string | undefined;
79
107
  }>;
80
108
  "create-blog-theme-content-page": import("@hile/mcp").McpPromptDefinition<{
81
109
  themeId: string;
82
110
  displayName: string;
83
111
  description: string;
112
+ targetDirectory?: string | undefined;
113
+ gatewayOrigin?: string | undefined;
84
114
  }, {
85
115
  themeId: string;
86
116
  displayName: string;
87
117
  description: string;
118
+ targetDirectory?: string | undefined;
119
+ gatewayOrigin?: string | undefined;
88
120
  }>;
89
121
  "create-blog-theme-category-page": import("@hile/mcp").McpPromptDefinition<{
90
122
  themeId: string;
91
123
  displayName: string;
92
124
  description: string;
125
+ targetDirectory?: string | undefined;
126
+ gatewayOrigin?: string | undefined;
93
127
  }, {
94
128
  themeId: string;
95
129
  displayName: string;
96
130
  description: string;
131
+ targetDirectory?: string | undefined;
132
+ gatewayOrigin?: string | undefined;
97
133
  }>;
98
134
  "create-blog-theme-tag-page": import("@hile/mcp").McpPromptDefinition<{
99
135
  themeId: string;
100
136
  displayName: string;
101
137
  description: string;
138
+ targetDirectory?: string | undefined;
139
+ gatewayOrigin?: string | undefined;
102
140
  }, {
103
141
  themeId: string;
104
142
  displayName: string;
105
143
  description: string;
144
+ targetDirectory?: string | undefined;
145
+ gatewayOrigin?: string | undefined;
106
146
  }>;
107
147
  "create-blog-theme-friends-page": import("@hile/mcp").McpPromptDefinition<{
108
148
  themeId: string;
109
149
  displayName: string;
110
150
  description: string;
151
+ targetDirectory?: string | undefined;
152
+ gatewayOrigin?: string | undefined;
111
153
  }, {
112
154
  themeId: string;
113
155
  displayName: string;
114
156
  description: string;
157
+ targetDirectory?: string | undefined;
158
+ gatewayOrigin?: string | undefined;
115
159
  }>;
116
160
  "create-blog-theme-interactions": import("@hile/mcp").McpPromptDefinition<{
117
161
  themeId: string;
118
162
  displayName: string;
119
163
  description: string;
164
+ targetDirectory?: string | undefined;
165
+ gatewayOrigin?: string | undefined;
120
166
  }, {
121
167
  themeId: string;
122
168
  displayName: string;
123
169
  description: string;
170
+ targetDirectory?: string | undefined;
171
+ gatewayOrigin?: string | undefined;
124
172
  }>;
125
173
  "create-blog-theme-verification": import("@hile/mcp").McpPromptDefinition<{
126
174
  themeId: string;
127
175
  displayName: string;
128
176
  description: string;
177
+ targetDirectory?: string | undefined;
178
+ gatewayOrigin?: string | undefined;
129
179
  }, {
130
180
  themeId: string;
131
181
  displayName: string;
132
182
  description: string;
183
+ targetDirectory?: string | undefined;
184
+ gatewayOrigin?: string | undefined;
133
185
  }>;
134
186
  };
135
187
  //# sourceMappingURL=blog-prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blog-prompts.d.ts","sourceRoot":"","sources":["../../src/mcp/blog-prompts.ts"],"names":[],"mappings":"AAqCA,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqChC"}
1
+ {"version":3,"file":"blog-prompts.d.ts","sourceRoot":"","sources":["../../src/mcp/blog-prompts.ts"],"names":[],"mappings":"AA0CA,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqChC"}
@@ -7,9 +7,14 @@ const postPromptInput = z.strictObject({ postId: z.uuid() });
7
7
  const commentPromptInput = z.strictObject({ postId: z.uuid().optional() });
8
8
  const themePromptInput = z.strictObject({ themeId: blogThemeIdSchema });
9
9
  const themeAuthoringPromptInput = z.strictObject({
10
- themeId: blogThemeIdSchema,
10
+ themeId: blogThemeIdSchema.refine((value) => value.length <= 50 && /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(value), 'Theme authoring requires lowercase kebab-case with at most 50 characters'),
11
11
  displayName: z.string().trim().min(1).max(100),
12
12
  description: z.string().trim().min(1).max(500),
13
+ targetDirectory: z.string().trim().min(1).max(1_024).regex(/^[^\u0000-\u001f\u007f]+$/).optional(),
14
+ gatewayOrigin: z.url({ protocol: /^https?$/ }).max(2_048).refine((value) => {
15
+ const url = new URL(value);
16
+ return !url.username && !url.password && url.pathname === '/' && !url.search && !url.hash;
17
+ }, 'Gateway Origin must not contain credentials, a path, query, or fragment').optional(),
13
18
  });
14
19
  export function createBlogPrompts() {
15
20
  return {
@@ -39,7 +44,7 @@ export function createBlogPrompts() {
39
44
  }
40
45
  function createBlogThemeAuthoringPrompts() {
41
46
  return {
42
- [BLOG_MCP_PROMPTS.createBlogTheme]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogTheme, '创建博客主题', '串联全部主题开发阶段,从零创建并验证一个可运行主题。', '从零构建并验证一个博客主题', createBlogThemeMessage, true),
47
+ [BLOG_MCP_PROMPTS.createBlogTheme]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogTheme, '创建博客主题', '串联全部主题开发阶段,从零创建并验证一个可运行主题。', '从零构建并验证一个博客主题', createBlogThemeMessage),
43
48
  [BLOG_MCP_PROMPTS.createBlogThemeStructure]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeStructure, '创建主题结构与配置', '创建主题包目录、构建配置、路由清单和包级开发说明。', '创建博客主题的文件结构与配置', createBlogThemeStructureMessage),
44
49
  [BLOG_MCP_PROMPTS.createBlogThemeRuntime]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeRuntime, '创建主题服务端运行时', '创建主题定义和唯一 Hile boot,并复用公共 Blog 主题运行时。', '创建博客主题的服务端定义与运行时', createBlogThemeRuntimeMessage),
45
50
  [BLOG_MCP_PROMPTS.createBlogThemeShell]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeShell, '创建主题公共壳层', '创建远程 UI Provider、导航、页头、页脚和主题样式。', '创建博客主题的公共页面壳层', createBlogThemeShellMessage),
@@ -51,7 +56,7 @@ function createBlogThemeAuthoringPrompts() {
51
56
  [BLOG_MCP_PROMPTS.createBlogThemeTagPage]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeTagPage, '创建标签页', '使用统一标签 ViewModel 实现标签文章列表。', '创建博客主题标签页', createBlogThemeTagPageMessage),
52
57
  [BLOG_MCP_PROMPTS.createBlogThemeFriendsPage]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeFriendsPage, '创建友情链接页', '使用统一友情链接 ViewModel 实现安全的站点目录。', '创建博客主题友情链接页', createBlogThemeFriendsPageMessage),
53
58
  [BLOG_MCP_PROMPTS.createBlogThemeInteractions]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeInteractions, '创建主题浏览器交互', '通过统一 Client API 实现搜索、评论等用户触发交互。', '创建博客主题浏览器交互', createBlogThemeInteractionsMessage),
54
- [BLOG_MCP_PROMPTS.createBlogThemeVerification]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeVerification, '验证博客主题', '闭环验证构建、RSC 产物、运行时发现、页面和交互。', '验证并修复博客主题', createBlogThemeVerificationMessage, true),
59
+ [BLOG_MCP_PROMPTS.createBlogThemeVerification]: themeAuthoringPrompt(BLOG_MCP_PROMPTS.createBlogThemeVerification, '验证博客主题', '闭环验证构建、RSC 产物、运行时发现、页面和交互。', '验证并修复博客主题', createBlogThemeVerificationMessage),
55
60
  };
56
61
  }
57
62
  function themeAuthoringPrompt(name, title, description, resultDescription, message, requiresWrite = false) {
@@ -1 +1 @@
1
- {"version":3,"file":"blog-prompts.js","sourceRoot":"","sources":["../../src/mcp/blog-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA6B,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iCAAiC,EACjC,kCAAkC,EAClC,iCAAiC,EACjC,iCAAiC,EACjC,8BAA8B,EAC9B,kCAAkC,EAClC,sBAAsB,EACtB,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,kCAAkC,GAEnC,MAAM,kCAAkC,CAAC;AAE1C,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7D,MAAM,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3E,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACxE,MAAM,yBAAyB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/C,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,eAAe,CAAC;YACvD,IAAI,EAAE,gBAAgB,CAAC,oBAAoB;YAC3C,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,wBAAwB;YACrC,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,EAAE;SAChE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CACtC,OAAO,EACP,gBAAgB,EAChB,2BAA2B,CAAC,MAAM,CAAC,CACpC,CAAC;QACF,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,EAAE,eAAe,CAAC;YAC1D,IAAI,EAAE,gBAAgB,CAAC,uBAAuB;YAC9C,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,4BAA4B;YACzC,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,uBAAuB,CAAC,EAAE;SAC9C,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CACtC,OAAO,EACP,sBAAsB,EACtB,8BAA8B,CAAC,MAAM,CAAC,CACvC,CAAC;QACF,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;YAClD,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,0BAA0B;YACvC,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,EAAE;SAChE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CACvC,OAAO,EACP,WAAW,EACX,sBAAsB,CAAC,OAAO,CAAC,CAChC,CAAC;QACF,GAAG,+BAA+B,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B;IACtC,OAAO;QACL,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,oBAAoB,CACtD,gBAAgB,CAAC,eAAe,EAChC,QAAQ,EACR,4BAA4B,EAC5B,eAAe,EACf,sBAAsB,EACtB,IAAI,CACL;QACD,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,EAAE,oBAAoB,CAC/D,gBAAgB,CAAC,wBAAwB,EACzC,WAAW,EACX,2BAA2B,EAC3B,gBAAgB,EAChB,+BAA+B,CAChC;QACD,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,oBAAoB,CAC7D,gBAAgB,CAAC,sBAAsB,EACvC,YAAY,EACZ,uCAAuC,EACvC,kBAAkB,EAClB,6BAA6B,CAC9B;QACD,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAC3D,gBAAgB,CAAC,oBAAoB,EACrC,UAAU,EACV,iCAAiC,EACjC,eAAe,EACf,2BAA2B,CAC5B;QACD,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,EAAE,oBAAoB,CAC9D,gBAAgB,CAAC,uBAAuB,EACxC,QAAQ,EACR,0BAA0B,EAC1B,UAAU,EACV,8BAA8B,CAC/B;QACD,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,EAAE,oBAAoB,CAC9D,gBAAgB,CAAC,uBAAuB,EACxC,SAAS,EACT,kCAAkC,EAClC,aAAa,EACb,8BAA8B,CAC/B;QACD,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,oBAAoB,CACjE,gBAAgB,CAAC,0BAA0B,EAC3C,SAAS,EACT,2BAA2B,EAC3B,aAAa,EACb,iCAAiC,CAClC;QACD,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,oBAAoB,CACjE,gBAAgB,CAAC,0BAA0B,EAC3C,SAAS,EACT,iCAAiC,EACjC,aAAa,EACb,iCAAiC,CAClC;QACD,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,EAAE,oBAAoB,CAClE,gBAAgB,CAAC,2BAA2B,EAC5C,OAAO,EACP,4BAA4B,EAC5B,WAAW,EACX,kCAAkC,CACnC;QACD,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,oBAAoB,CAC7D,gBAAgB,CAAC,sBAAsB,EACvC,OAAO,EACP,4BAA4B,EAC5B,WAAW,EACX,6BAA6B,CAC9B;QACD,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,oBAAoB,CACjE,gBAAgB,CAAC,0BAA0B,EAC3C,SAAS,EACT,+BAA+B,EAC/B,aAAa,EACb,iCAAiC,CAClC;QACD,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,EAAE,oBAAoB,CAClE,gBAAgB,CAAC,2BAA2B,EAC5C,WAAW,EACX,iCAAiC,EACjC,aAAa,EACb,kCAAkC,CACnC;QACD,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,EAAE,oBAAoB,CAClE,gBAAgB,CAAC,2BAA2B,EAC5C,QAAQ,EACR,4BAA4B,EAC5B,WAAW,EACX,kCAAkC,EAClC,IAAI,CACL;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAY,EACZ,KAAa,EACb,WAAmB,EACnB,iBAAyB,EACzB,OAAmD,EACnD,aAAa,GAAG,KAAK;IAErB,OAAO,eAAe,CAAC;QACrB,IAAI;QACJ,KAAK;QACL,WAAW;QACX,UAAU,EAAE,yBAAyB;QACrC,MAAM,EAAE;YACN,MAAM,EAAE,aAAa;gBACnB,CAAC,CAAC,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;gBAC7C,CAAC,CAAC,CAAC,mBAAmB,CAAC;SAC1B;KACF,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,YAAY,CAAC,OAA6B,EAAE,WAAmB,EAAE,IAAY;IACpF,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAChC,OAAO;QACL,WAAW;QACX,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,GAAG,oBAAoB,IAAI,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAc;IACjD,OAAO,QAAQ,MAAM;QACf,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;sHACiF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;wDAC3F,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;;aAEhF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;0BAClB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;8DACI,CAAC;AAC/D,CAAC;AAED,SAAS,8BAA8B,CAAC,MAA0B;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,OAAO;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,wCAAwC,MAAM;;;mBAGpE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,qBAAqB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;mCACvJ,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,OAAO,aAAa,OAAO;QACrB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;QACrF,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,OAAO;;WAEnD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;UACjC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,kCAAkC,CAAC;AAC9H,CAAC"}
1
+ {"version":3,"file":"blog-prompts.js","sourceRoot":"","sources":["../../src/mcp/blog-prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"blog-provider.d.ts","sourceRoot":"","sources":["../../src/mcp/blog-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAQnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,6CAepF"}
1
+ {"version":3,"file":"blog-provider.d.ts","sourceRoot":"","sources":["../../src/mcp/blog-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAQnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,6CAgBpF"}
@@ -8,6 +8,7 @@ import { createPageTools } from './page-tools.js';
8
8
  import { createTagTools } from './tag-tools.js';
9
9
  import { createThemeTools } from './theme-tools.js';
10
10
  import { createBlogPrompts } from './blog-prompts.js';
11
+ import { createBlogResources } from './blog-resources.js';
11
12
  export function createBlogMcpProvider(blog, themes) {
12
13
  return defineMcpProvider({
13
14
  id: BLOG_MCP_PROVIDER_ID,
@@ -21,6 +22,7 @@ export function createBlogMcpProvider(blog, themes) {
21
22
  ...createFriendLinkTools(blog),
22
23
  ...createThemeTools(themes),
23
24
  },
25
+ resources: createBlogResources(),
24
26
  prompts: createBlogPrompts(),
25
27
  });
26
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"blog-provider.js","sourceRoot":"","sources":["../../src/mcp/blog-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,UAAU,qBAAqB,CAAC,IAAqB,EAAE,MAAwB;IACnF,OAAO,iBAAiB,CAAC;QACvB,EAAE,EAAE,oBAAoB;QACxB,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE;YACL,GAAG,mBAAmB,CAAC,IAAI,CAAC;YAC5B,GAAG,cAAc,CAAC,IAAI,CAAC;YACvB,GAAG,eAAe,CAAC,IAAI,CAAC;YACxB,GAAG,eAAe,CAAC,IAAI,CAAC;YACxB,GAAG,kBAAkB,CAAC,IAAI,CAAC;YAC3B,GAAG,qBAAqB,CAAC,IAAI,CAAC;YAC9B,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5B;QACD,OAAO,EAAE,iBAAiB,EAAE;KAC7B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"blog-provider.js","sourceRoot":"","sources":["../../src/mcp/blog-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CAAC,IAAqB,EAAE,MAAwB;IACnF,OAAO,iBAAiB,CAAC;QACvB,EAAE,EAAE,oBAAoB;QACxB,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE;YACL,GAAG,mBAAmB,CAAC,IAAI,CAAC;YAC5B,GAAG,cAAc,CAAC,IAAI,CAAC;YACvB,GAAG,eAAe,CAAC,IAAI,CAAC;YACxB,GAAG,eAAe,CAAC,IAAI,CAAC;YACxB,GAAG,kBAAkB,CAAC,IAAI,CAAC;YAC3B,GAAG,qBAAqB,CAAC,IAAI,CAAC;YAC9B,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAC5B;QACD,SAAS,EAAE,mBAAmB,EAAE;QAChC,OAAO,EAAE,iBAAiB,EAAE;KAC7B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const BLOG_THEME_AUTHORING_CONTRACT_URI = "hile://blog/theme-authoring-contract";
2
+ export declare function createBlogResources(): {
3
+ "theme-authoring-contract": import("@hile/mcp").McpResourceDefinition<{
4
+ kind: "static";
5
+ name: "theme-authoring-contract";
6
+ uri: string;
7
+ mimeType: string;
8
+ access: {
9
+ scopes: string[];
10
+ };
11
+ }>;
12
+ };
13
+ //# sourceMappingURL=blog-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog-resources.d.ts","sourceRoot":"","sources":["../../src/mcp/blog-resources.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iCAAiC,yCAAyC,CAAC;AAsDxF,wBAAgB,mBAAmB;;;;;;;YAOnB,MAAM;;;EAYrB"}
@@ -0,0 +1,75 @@
1
+ import { defineMcpResource } from '@hile/mcp';
2
+ import { BLOG_MCP_READ_SCOPE, BLOG_MCP_RESOURCES, } from '../contracts/mcp.js';
3
+ export const BLOG_THEME_AUTHORING_CONTRACT_URI = 'hile://blog/theme-authoring-contract';
4
+ const contract = Object.freeze({
5
+ schemaVersion: 2,
6
+ packageNamePattern: 'zlooks-theme-<themeId>-server',
7
+ officialScopeReserved: '@zlooks.cn/*',
8
+ cli: Object.freeze({
9
+ create: 'zlooks theme create',
10
+ verify: 'zlooks theme verify --json',
11
+ }),
12
+ runtime: Object.freeze({
13
+ start: 'pnpm run start',
14
+ artifact: 'verified-production',
15
+ development: 'matching-development-gateway-only',
16
+ }),
17
+ routes: Object.freeze([
18
+ '/',
19
+ '/posts/[slug]',
20
+ '/archives',
21
+ '/pages/[slug]',
22
+ '/categories/[slug]',
23
+ '/tags/[slug]',
24
+ '/friends',
25
+ ]),
26
+ clientInteractions: Object.freeze([
27
+ 'searchPosts',
28
+ 'likePost',
29
+ 'unlikePost',
30
+ 'listComments',
31
+ 'createComment',
32
+ ]),
33
+ uiBoundaries: Object.freeze({
34
+ button: '@zlooks.cn/ui/button#ZlooksButton',
35
+ app: '@zlooks.cn/ui/app#useZlooksApp',
36
+ userAccess: '@zlooks.cn/ui/shell#ZlooksUserAccess',
37
+ themePreference: '@zlooks.cn/ui#useZlooksTheme',
38
+ navigation: '@zlooks.cn/ui/shell-provider#useZlooksNavigation',
39
+ sitePresentation: '@zlooks.cn/ui/site-config#useSitePresentation',
40
+ seo: '@zlooks.cn/ui/seo#ZlooksSeo',
41
+ }),
42
+ shellRequirements: Object.freeze(['user-access-states', 'confirmed-logout', 'light-dark-default', 'shared-navigation', 'site-legal']),
43
+ stages: Object.freeze([
44
+ 'PRECHECK',
45
+ 'SCAFFOLDED',
46
+ 'DESIGNED',
47
+ 'LOCAL_VERIFIED',
48
+ 'RUNTIME_VERIFIED',
49
+ ]),
50
+ optionalStages: Object.freeze(['FUNCTION_VERIFIED']),
51
+ completionStage: 'RUNTIME_VERIFIED',
52
+ guidanceOnly: 'When asked how to make a theme, explain the workflow and SDK boundaries without creating a project or running acceptance.',
53
+ completionRule: 'Actual theme creation completes after all required stages through RUNTIME_VERIFIED. The template is an editable starting point, not the final design. Authenticated content acceptance is optional and must not block authoring; unexecuted checks must not be reported as passed.',
54
+ });
55
+ export function createBlogResources() {
56
+ return {
57
+ [BLOG_MCP_RESOURCES.themeAuthoringContract]: defineMcpResource({
58
+ kind: 'static',
59
+ name: BLOG_MCP_RESOURCES.themeAuthoringContract,
60
+ uri: BLOG_THEME_AUTHORING_CONTRACT_URI,
61
+ mimeType: 'application/json',
62
+ access: { scopes: [BLOG_MCP_READ_SCOPE] },
63
+ }, (uri, context) => {
64
+ context.signal.throwIfAborted();
65
+ return {
66
+ contents: [{
67
+ uri: uri.toString(),
68
+ mimeType: 'application/json',
69
+ text: JSON.stringify(contract),
70
+ }],
71
+ };
72
+ }),
73
+ };
74
+ }
75
+ //# sourceMappingURL=blog-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog-resources.js","sourceRoot":"","sources":["../../src/mcp/blog-resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,iCAAiC,GAAG,sCAAsC,CAAC;AAExF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,aAAa,EAAE,CAAC;IAChB,kBAAkB,EAAE,+BAA+B;IACnD,qBAAqB,EAAE,cAAc;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,4BAA4B;KACrC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,qBAAqB;QAC/B,WAAW,EAAE,mCAAmC;KACjD,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,GAAG;QACH,eAAe;QACf,WAAW;QACX,eAAe;QACf,oBAAoB;QACpB,cAAc;QACd,UAAU;KACX,CAAC;IACF,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC;QAChC,aAAa;QACb,UAAU;QACV,YAAY;QACZ,cAAc;QACd,eAAe;KAChB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,mCAAmC;QAC3C,GAAG,EAAE,gCAAgC;QACrC,UAAU,EAAE,sCAAsC;QAClD,eAAe,EAAE,8BAA8B;QAC/C,UAAU,EAAE,kDAAkD;QAC9D,gBAAgB,EAAE,+CAA+C;QACjE,GAAG,EAAE,6BAA6B;KACnC,CAAC;IACF,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;IACrI,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,UAAU;QACV,YAAY;QACZ,UAAU;QACV,gBAAgB;QAChB,kBAAkB;KACnB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACpD,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,2HAA2H;IACzI,cAAc,EAAE,oRAAoR;CACrS,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,EAAE,iBAAiB,CAAC;YAC7D,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,kBAAkB,CAAC,sBAAsB;YAC/C,GAAG,EAAE,iCAAiC;YACtC,QAAQ,EAAE,kBAAkB;YAC5B,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,EAAE;SAC1C,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YAClB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO;gBACL,QAAQ,EAAE,CAAC;wBACT,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;wBACnB,QAAQ,EAAE,kBAAkB;wBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;qBAC/B,CAAC;aACH,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -2,6 +2,8 @@ export interface BlogThemeAuthoringInput {
2
2
  readonly themeId: string;
3
3
  readonly displayName: string;
4
4
  readonly description: string;
5
+ readonly targetDirectory?: string | undefined;
6
+ readonly gatewayOrigin?: string | undefined;
5
7
  }
6
8
  export declare function createBlogThemeMessage(input: BlogThemeAuthoringInput): string;
7
9
  export declare function createBlogThemeStructureMessage(input: BlogThemeAuthoringInput): string;
@@ -1 +1 @@
1
- {"version":3,"file":"blog-theme-authoring-prompt.d.ts","sourceRoot":"","sources":["../../src/mcp/blog-theme-authoring-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAkBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CA2B7E;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CA8BtF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAmBpF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAYlF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGrF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAKrF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGxF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGxF;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGzF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGpF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGxF;AAgBD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAYzF;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAczF"}
1
+ {"version":3,"file":"blog-theme-authoring-prompt.d.ts","sourceRoot":"","sources":["../../src/mcp/blog-theme-authoring-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAwCD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CA2C7E;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CA8BtF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAmBpF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAclF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGrF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAKrF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGxF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGxF;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGzF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGpF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAGxF;AAgBD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAYzF;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAezF"}
@@ -1,50 +1,84 @@
1
- import { BLOG_MCP_PROMPTS, BLOG_MCP_PROVIDER_ID } from '../contracts/mcp.js';
1
+ import { BLOG_MCP_PROMPTS, BLOG_MCP_PROVIDER_ID, BLOG_MCP_TOOLS } from '../contracts/mcp.js';
2
2
  function prompt(name) {
3
3
  return `${BLOG_MCP_PROVIDER_ID}.${name}`;
4
4
  }
5
5
  function packageName(themeId) {
6
- return `zlooks-blog-theme-${themeId}-server`;
6
+ return `zlooks-theme-${themeId}-server`;
7
7
  }
8
8
  function packageRoot(themeId) {
9
- return `blog-theme-${themeId}`;
9
+ return packageName(themeId);
10
10
  }
11
- function context(input) {
12
- return `主题 ID:${input.themeId}\n显示名:${input.displayName}\n描述:${input.description}\n包:${packageName(input.themeId)}\n目录:${packageRoot(input.themeId)}`;
11
+ function targetDirectory(input) {
12
+ return input.targetDirectory ?? packageRoot(input.themeId);
13
+ }
14
+ function shellArg(value) {
15
+ return `'${value.replaceAll("'", `'\"'\"'`)}'`;
13
16
  }
17
+ function context(input) {
18
+ return `主题 ID:${input.themeId}\n显示名:${JSON.stringify(input.displayName)}\n描述:${JSON.stringify(input.description)}\n包:${packageName(input.themeId)}\n目录:${JSON.stringify(targetDirectory(input))}\nGateway Origin:${input.gatewayOrigin ? JSON.stringify(input.gatewayOrigin) : '未提供'}`;
19
+ }
20
+ const sharedUiRequirements = `共享 UI 必须完整接入:
21
+ - ZlooksUiProvider、ZlooksShellProvider 和 ZlooksSiteConfigProvider 在远程 Client Boundary 内使用 Host 初始数据;不能在 hydration 后补请求初始化。
22
+ - 从 @zlooks.cn/ui/shell 使用 ZlooksUserAccess,保留 anonymous 登录方式、authenticated 头像/账户菜单和 unavailable 禁用态。onNavigate 使用 useRscNavigation().push;onLogout 使用 useRequest 向组件提供的 href 发起同源 POST,成功后 refresh。退出确认和失败反馈由共享组件处理,不自行解析 Session、硬编码认证路由或伪造登录态。
23
+ - 从 @zlooks.cn/ui 使用 useZlooksTheme,通过 Ant Design Segmented 实现 light/dark/default(浅色/深色/自动)三态并调用 setMode。UI SDK 不导出视觉切换按钮;主题不要另外维护 localStorage 或全局主题状态,也不能通过固定 Provider theme 使切换失效。
24
+ - 从 @zlooks.cn/ui/shell-provider 使用 useZlooksNavigation/useZlooksPathname 渲染主导航,合并 Blog navigationPages、归档和友链,按 href 去重且只标记最具体的当前项;不要用固定 Blog 链接替代 Host 提供的其他功能入口。
25
+ - 从 useSitePresentation 读取站点标识和 legal.registrations/legal.copyright,使用真实备案链接及版权;无数据时不编造。保留 ZlooksSeo、@zlooks.cn/ui/button、@zlooks.cn/ui/request 和 @zlooks.cn/ui/app 的对应职责。
26
+ - 用本地组件测试覆盖用户态三种状态、登录跳转、账户菜单、退出确认/失败/成功刷新、三态切换及跨页同步、共享导航和备案版权,不能仅检查 Provider 存在。真实登录与内容写交互属于可选验收,不阻塞主题制作。`;
27
+ const runtimeStartupRequirements = '默认执行 pnpm run start,连接实际 Registry 并运行 LOCAL_VERIFIED 已验证的生产构建。只有用户明确使用配套开发模式 Gateway 时才允许 pnpm run dev;不能把开发模式 React Flight 发送给生产模式 Gateway,也不能根据 localhost 地址推断 Gateway 是开发模式。';
28
+ const runtimeEvidenceRequirements = '以工具实际返回字段判断:status 对未切换的新主题应为 available,已选中的主题应为 active;instanceCount >= 1,且 buildId 必须与 LOCAL_VERIFIED 已验证的本地产物一致。conflicted/unavailable 不通过,selected/activating 只能有界等待后复查,fallback 不能作为新主题通过的证据;不存在独立的 healthy 或 buildValid 字段。满足这些条件才记录 RUNTIME_VERIFIED,不需要为验收主动切换主题。';
29
+ const authoringCompletionRequirements = '目标是让 Agent 知道如何制作主题。用户仅询问制作方法时,只提供步骤与边界,不执行创建或验收。用户要求实际创建时,模板不是最终成品:它提供功能基础,Agent 应按用户要求调整视觉与布局,保留 SDK 接口和本地回归。完成 PRECHECK、SCAFFOLDED、DESIGNED、LOCAL_VERIFIED、RUNTIME_VERIFIED 后可报告“主题制作完成”。FUNCTION_VERIFIED 是可选的真实内容验收;缺少登录态、测试内容、写操作授权或浏览器验收条件不阻塞主题制作,不得因此要求创建账号或测试文章,也不得声称未执行的验收已通过。';
14
30
  export function createBlogThemeMessage(input) {
15
- const args = JSON.stringify(input);
16
- return `请直接从零创建一个独立、可单独安装依赖、构建和部署的 Blog 主题项目,不要只给方案或代码片段。\n${context(input)}
17
-
18
- 按下面顺序逐个获取并执行 MCP Prompt;每次都传入相同参数 ${args}。前一步未落盘并通过其验证时,不得进入下一步:
19
- 1. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeStructure)}
20
- 2. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeRuntime)}
21
- 3. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeShell)}
22
- 4. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeHomePage)}
23
- 5. ${prompt(BLOG_MCP_PROMPTS.createBlogThemePostPage)}
24
- 6. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeArchivePage)}
25
- 7. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeContentPage)}
26
- 8. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeCategoryPage)}
27
- 9. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeTagPage)}
28
- 10. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeFriendsPage)}
29
- 11. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeInteractions)}
30
- 12. ${prompt(BLOG_MCP_PROMPTS.createBlogThemeVerification)}
31
-
32
- 执行规则:
33
- - 在用户指定的空目录中工作;未指定目录时,新建 ${packageRoot(input.themeId)}。不要假设主站源码、monorepo、workspace 包或 default 主题存在,也不要把它们的路径写进新项目。
34
- - 只根据已发布 npm 包的 metadata、类型声明和随包文档使用 @zlooks.cn/blog-theme;不得从主站 Git 仓库复制内部代码或引用 file:/link:/workspace: 依赖。
35
- - 严格按公开子入口分层:@zlooks.cn/blog-theme 根入口只用于主题定义和通用模型,/rsc 只用于 Server Component 数据加载,/runtime 只用于 Node/Hile boot,/client 只用于以 'use client' 开头的浏览器交互。主题项目不得绕过主题 SDK 直接依赖底层 @zlooks.cn/blog-client。
36
- - 每个阶段都检查当前文件状态,保留用户已有修改;使用测试驱动实现实际文件。
37
- - 主题只自由决定 JSXAnt Design 组合、交互和 CSS。数据、路由输入、ContextMicro、Registry、选择发布和生命周期必须使用 @zlooks.cn/blog-theme。
38
- - 不创建 public HTTP/Next/MCP 监听器,不直接访问 Blog 数据库、Redis、Registry 或 @zlooks.cn/blog-shared Micro 客户端。
39
- - 遇到缺少视觉决策时采用一个克制、可访问、响应式的明确方案继续实现;只有会改变业务语义或需要外部凭据时才停下来询问。
40
- - 最终必须留下可构建、可启动、能被 ${prompt('list-theme')} 发现的独立项目,并报告真实验证结果。若 @zlooks.cn/blog-theme 尚未发布到当前 npm Registry,立即报告这个外部依赖阻塞;不要退回主站源码路径。`;
31
+ return `请根据用户请求指导或执行独立 Blog 主题制作。下面已经包含完整工作流,不要再获取其他 create-blog-theme-* Prompt。\n${context(input)}
32
+
33
+ ${authoringCompletionRequirements}
34
+
35
+ 硬性边界:
36
+ - 第三方包名和默认目录固定为 ${packageName(input.themeId)};@zlooks.cn/* 是官方保留 scope,用户主题不得使用。模板中 antd 使用与 UI SDK 匹配的精确版本,其余依赖使用 ^版本号并保留 pnpm-lock.yaml;不得引用 workspace:、file:、link:、主站绝对路径或 default 主题源码。
37
+ - 主题必须保留七条路由:/、/posts/[slug]、/archives、/pages/[slug]、/categories/[slug]、/tags/[slug]、/friends。
38
+ - 服务端初始数据只用 @zlooks.cn/blog-theme/rsc;Node/Hile boot 只用 @zlooks.cn/blog-theme/runtime;浏览器交互只在 'use client' 文件中用 @zlooks.cn/blog-theme/client 的 createBlogThemeClient。
39
+ - 必须完整保留 searchPosts、likePost、unlikePost、listComments、createComment;评论表单只向 authenticated 用户显示。Markdown 使用 react-markdown 等结构化渲染,禁用 raw HTML,严禁 dangerouslySetInnerHTML。
40
+ - 所有按钮从 @zlooks.cn/ui/button 导入 ZlooksButton;需要主题化 message/notification/modal 时从 @zlooks.cn/ui/app 使用 useZlooksApp。不得从 Ant Design 的 Button directive barrel 或 root barrel 重新导入这两个能力。
41
+ - 不创建 public HTTP、Next 或 MCP listener,不直连 Blog 数据库、Redis、Registry、Micro 或底层 @zlooks.cn/blog-client。
42
+
43
+ ${sharedUiRequirements}
44
+
45
+ 用户要求实际创建时按以下状态机执行;必需阶段必须有真实证据,失败就留在当前阶段修复:
46
+
47
+ PRECHECK
48
+ 1. 确认目标路径不存在;若存在任何用户文件立即停止,绝不合并或覆盖。
49
+ 2. 执行 zlooks theme --help,确认存在 create 和 verify。若本机 zlooks 太旧,使用当前 npm Registry 中最新正式版 @zlooks.cn/cli 的对应命令;无法取得支持该命令的正式版本时报告依赖阻塞,不得手写一个猜测项目冒充脚手架。
50
+
51
+ SCAFFOLDED
52
+ 3. 使用结构化参数或以下已安全引用的命令执行:zlooks theme create ${input.themeId} ${shellArg(targetDirectory(input))} --display-name ${shellArg(input.displayName)} --description ${shellArg(input.description)}
53
+ 4. 进入目录后确认 package.json.name=${packageName(input.themeId)}private=false、唯一 bin、zlooks.kind=theme、React server condition、七条路由、唯一 bootSEO、完整交互和安全 Markdown 已由官方脚手架生成。AGENTS.md 不是主题成立条件,不要求创建。
54
+
55
+ DESIGNED
56
+ 5. 只修改生成项目中的 JSX、Ant Design 组合与 theme.css,使视觉明确体现 ${JSON.stringify(input.description)}。保留脚手架的 SDK 数据边界、全部路由、空状态、invalid/missing、SEO、Shell/Site Provider、响应式和键盘可访问性。不得删除或用静态占位替代真实功能。
57
+ 6. 首页必须使用 posts、latestPosts、categories、tags、sidebarPages、archive、recentComments;文章页必须使用 post、engagement、connections、comments、viewerStatus、sidebar。其余页面使用各自 ViewModel,不能伪造数据或计数。
58
+
59
+ LOCAL_VERIFIED
60
+ 7. 执行:zlooks theme verify . --json。该平台命令必须依次完成结构检查、pnpm install、test、typecheck、build、verify:rsc。只有 JSON 的 ok=true 且 stage=LOCAL_VERIFIED 才能继续;主题自己编写的测试不能替代该平台检查。
61
+ 8. 确认平台结果中的 artifact.verified 与 package.packed 均通过:平台直接调用 Hile 校验唯一 immutable build,并实际 npm pack 检查完整 bin、boot 和构建文件。若目录属于 Git 仓库,另运行 git diff --check;无 Git 不应阻塞主题制作。
62
+
63
+ RUNTIME_VERIFIED
64
+ 9. ${runtimeStartupRequirements}保留进程并等待 ready;启动失败、提前退出或只有 build 成功都不算可运行。
65
+ 10. 调用 ${prompt(BLOG_MCP_TOOLS.listThemes)},随后调用 ${prompt(BLOG_MCP_TOOLS.readThemeStatus)} 检查 ${input.themeId}。${runtimeEvidenceRequirements}不要调用 select-theme;切换属于独立的 ${prompt(BLOG_MCP_PROMPTS.switchBlogTheme)} 工作流和用户确认。
66
+
67
+ FUNCTION_VERIFIED(可选)
68
+ 11. 仅在用户要求真实内容验收时执行。在隔离测试环境或用户明确选中该主题后,通过真实 Gateway${input.gatewayOrigin ? ` ${input.gatewayOrigin}` : ''} 验证七条路由。动态路由从真实 list-post/list-page/list-category/list-tag 结果选择 slug;没有相应内容时记录该项未验证,不为制作主题补造内容。
69
+ 12. 按用户要求的范围检查 raw SSR 样式、hydration、窄屏、键盘焦点、导航、SEO 和浏览器交互。登录后的点赞、取消点赞、评论提交和退出不属于默认制作验收;只有另获明确授权才执行写操作。仅对实际完成的验收记录通过,其余标明未执行或不适用。
70
+ 13. 每次代码修复后从 zlooks theme verify . --json 重跑完整本地门禁,再重启并复验运行时。可选内容验收结果单独报告,不得把它变成制作完成的前置条件。
71
+
72
+ 实际创建后的报告逐项列出五个必需阶段的状态、实际命令/调用与关键结果;必需阶段未通过才报告“制作未完成”和原因。另列 FUNCTION_VERIFIED 的实际覆盖或“未执行(可选)”,不要将制作完成误写成所有真实内容行为已经验证。`;
41
73
  }
42
74
  export function createBlogThemeStructureMessage(input) {
43
75
  return `请直接创建主题的文件结构与构建配置。\n${context(input)}
44
76
 
77
+ 必须先执行官方确定性脚手架:
78
+ zlooks theme create ${input.themeId} ${shellArg(targetDirectory(input))} --display-name ${shellArg(input.displayName)} --description ${shellArg(input.description)}
79
+
45
80
  目标目录至少包含:
46
- ${packageRoot(input.themeId)}/
47
- AGENTS.md
81
+ ${targetDirectory(input)}/
48
82
  package.json
49
83
  hile-rsc.json
50
84
  tsconfig.json
@@ -56,19 +90,17 @@ ${packageRoot(input.themeId)}/
56
90
  src/plugin/blog-frame.tsx
57
91
  src/plugin/theme.css
58
92
  src/plugin/styles.d.ts
59
- test/theme-boundary.test.ts
60
- test/plugin/
93
+ test/theme-contract.test.ts
61
94
 
62
95
  逐项执行:
63
- 1. 先运行 pnpm view @zlooks.cn/blog-theme version peerDependencies dependencies exports engines --json pnpm view @zlooks.cn/service-command version peerDependencies dependencies exports engines --json,确认公共 SDK 与标准服务命令包在当前 npm Registry 可安装;再读取安装包导出的类型声明、package.json 和随包文档。必须实际确认根入口、./rsc、./runtime、./client 四个主题 export,以及 defineBlogThemecreateServiceBackedBlogThemeDataLoadercreateBlogThemeBootServicecreateBlogThemeClient、runServiceCommand 五个 API。404、兼容 tuple 未声明或任一入口/API 缺失时停止并报告,不得猜 API、绕过主题 SDK 改用底层 @zlooks.cn/blog-client 或引用主站源码。
64
- 2. 初始化独立 package Git 项目。package.json 默认使用名称 ${packageName(input.themeId)};用户使用自己的 npm scope 时只能变为 @scope/${packageName(input.themeId)},必须保留 zlooks- 前缀和 -server 后缀。设置 private=false、type=module、Node >=24、files=["dist", ".hile-rsc"],并将唯一 bin 声明为 ${packageName(input.themeId)} -> dist/command/index.js。声明 zlooks.kind=theme、description、dependsOn=[]、nodeConditions=["react-server"];主题不拥有数据库表,因此不得声明 zlooks.commands.db。提供 build:rsc、verify:rsc、build:runtime、build、dev、start、test、typecheck 脚本。所有依赖来自 npm 精确版本,不得出现 workspace:*、file: link:。
65
- 3. 根据 @zlooks.cn/blog-theme Hile RSC 包实际声明的 peerDependencies 安装完全兼容的 React/Hile tuple。生产 dependencies 只放主题源码直接导入的包;@hile/cli、@hile/rsc-build、TypeScript、类型和 Vitest 放 devDependencies。使用 pnpm install 生成项目自己的 pnpm-lock.yaml,绝不手工编辑。
66
- 4. tsconfig.json 负责 plugin/RSC 源码并排除 test、dist、.hile-rsc;tsconfig.runtime.json 只编译非 plugin 的 boot TypeScript 到 dist。它们必须自包含,不 extends 主站路径。不要新增自定义构建脚本。
96
+ 1. package.json 必须使用名称 ${packageName(input.themeId)}。@zlooks.cn/* 是官方保留 scope,第三方主题禁止使用;设置 private=false、type=module、Node >=24、files=["dist", ".hile-rsc"],唯一 bin ${packageName(input.themeId)} -> dist/command/index.js。声明 zlooks.kind=themedescriptiondependsOn=[]nodeConditions=["react-server"];不得声明 zlooks.commands.db。
97
+ 2. 保留脚手架的公开 SDK 和兼容 React/Hile tuple。模板中dependencies/devDependencies/peerDependencies antd 使用与 UI SDK 匹配的精确版本,其余依赖使用 ^版本号(例如 ^1.0.0),不得出现 workspace:*、file: link:,不得绕过主题 SDK 依赖底层 @zlooks.cn/blog-client。pnpm-lock.yaml 只能由 pnpm install 生成并须保留;版本范围不能替代实际安装版本的 typecheck、构建和 RSC 兼容性验证。
98
+ 3. AGENTS.md 对第三方主题不是必需文件;用户需要项目说明时可以创建 README,但 validator 不得以缺少 AGENTS.md 判定失败。
99
+ 4. tsconfig.json noEmit 检查全部 src 源码、test/**/*.tstest/**/*.tsx 和 vitest.config.ts,排除 node_modules、dist、.hile-rsc;tsconfig.runtime.json 只编译非 plugin 的 runtime TypeScript 到 dist,并排除 test。测试必须参与类型检查但不能进入生产编译或 tarball。它们必须自包含,不 extends 主站路径。不要新增自定义构建脚本。
67
100
  5. hile-rsc.json 的 pluginId 固定为 blog,entry 为 src/plugin/page.tsx,styles 必须包含 npm 导出 @zlooks.cn/ui/antd.css,使 Hile 将共享 Ant Design 静态样式作为一份构建级 immutable artifact 提前交给 Host;并完整声明 /、/posts/[slug]、/archives、/pages/[slug]、/categories/[slug]、/tags/[slug]、/friends 七条路由及对应导出。metadata 写入本主题展示信息,但不要伪造额外业务能力。
68
- 6. 创建项目 AGENTS.md,记录职责、非职责、公共路由、文件边界、依赖、Hile 生命周期、错误行为、验证命令和已知陷阱;它是当前设计地图,不是变更日志,也不继承主站私有规则。
69
- 7. test/theme-boundary.test.ts 必须约束:包可发布且不是 private;唯一 bin、files 和 zlooks 部署元数据符合上述协议且没有数据库命令;services 目录只有 blog-theme.boot.ts;没有主题本地 runtime 实现;页面通过 @zlooks.cn/blog-theme/rsc 获取包含 seo 的 ViewModel,并通过 @zlooks.cn/ui/seo 输出标准 head 标签;Client 交互只通过 @zlooks.cn/blog-theme/client;Server Component 和 boot 不导入 /client,Client Boundary 不导入 /runtime、/rsc、@hile/* 或底层 @zlooks.cn/blog-client。
101
+ 6. 保留 test/theme-contract.test.ts 的七条路由、唯一 boot、SDK 服务端/客户端边界和安全 Markdown 检查;保留 test/pages.test.tsx 的真实 SDK ViewModel 页面测试与 test/interactions.test.tsx 的交互测试,视觉调整时同步更新展示断言但不得删除功能断言。这些是本地回归,不替代 zlooks theme verify 的平台检查或 Gateway 功能验收。
70
102
 
71
- 本阶段不要实现页面视觉。完成后运行该包 typecheck;如果页面占位导致编译失败,创建最小合法导出,后续页面 Prompt 再替换。`;
103
+ 脚手架本身已经完整可构建和运行,禁止把页面或交互降级成占位。完成后执行 zlooks theme verify ${shellArg(targetDirectory(input))} --json,必须取得 LOCAL_VERIFIED。`;
72
104
  }
73
105
  export function createBlogThemeRuntimeMessage(input) {
74
106
  const displayName = JSON.stringify(input.displayName);
@@ -77,8 +109,8 @@ export function createBlogThemeRuntimeMessage(input) {
77
109
 
78
110
  只创建或修改以下服务端文件:
79
111
  - src/identity.ts:调用 defineBlogTheme({ id: '${input.themeId}', displayName: ${displayName}, description: ${description} });只有用户明确指定该主题为站点灾备默认时才设置 fallback=true。可在 query 中覆盖有真实展示需要的有界分页值。
80
- - src/command/index.ts:使用 @zlooks.cn/service-command 的 runServiceCommand,packageRoot 指向包根,requiresReactServer=true;它只注册标准 start 命令,不增加数据库命令,构建后必须与 package.json 的唯一 bin 对应。
81
- - src/services/blog-theme.boot.ts:这是 services 目录唯一文件和唯一环境边界。development 与 production start 都通过 Hile --env-file 加载同一个项目根 .env;使用 createBlogThemeBootService,传入 definition、指向 ../../.hile-rsc 的 artifactBuildRootREGISTRY_HOST/REGISTRY_PORT、由 NODE_ENV 计算的 development;HILE_ADVERTISE_HOST 是两种模式共用的可选覆盖值,有值时传入,没有时省略。
112
+ - src/command/index.ts:使用 @zlooks.cn/service-command 的 runServiceCommand,packageRoot 通过 fileURLToPath 指向包根,requiresReactServer=true;它只注册标准 start 命令,不增加数据库命令,构建后必须与 package.json 的唯一 bin 对应。
113
+ - src/services/blog-theme.boot.ts:这是 services 目录唯一文件和唯一环境边界。development 与 production start 都通过 Hile --env-file 加载由 zlooks setup 维护的机器级 ~/.zlooks.cn/.env,不创建项目内 .env;使用 createBlogThemeBootService,传入 definition、通过 fileURLToPath 指向 ../../.hile-rsc 的 artifactBuildRoot、包含 REGISTRY_HOST/REGISTRY_PORT 的 registryBootstrap、由 NODE_ENV === 'development' 计算的 development,以及两种模式共用的可选 advertiseHost。为默认导出增加 @hile/core ServiceRegisterProps<unknown> 显式类型,避免独立安装的声明生成引用 pnpm 内部路径。
82
114
 
83
115
  必须遵守:
84
116
  - 从 @zlooks.cn/blog-theme 导入 defineBlogTheme;从 @zlooks.cn/blog-theme/runtime 导入 createBlogThemeBootService。
@@ -88,28 +120,30 @@ export function createBlogThemeRuntimeMessage(input) {
88
120
  - 不在模块顶层调用 loadService;boot 默认导出 Hile service definition。
89
121
  - 服务端 boot 不得导入 @zlooks.cn/blog-theme/client;浏览器交互也不得导入 @zlooks.cn/blog-theme/runtime。
90
122
 
91
- 完成后运行该包 runtime typecheck,并运行 theme-boundary 测试确认只有一个 boot 文件。`;
123
+ 完成后运行 pnpm run typecheck,并运行 pnpm exec vitest run test/theme-contract.test.ts,确认只有一个 boot 文件。需要真实运行时先通过 zlooks theme verify . --json,再按以下规则启动:${runtimeStartupRequirements}`;
92
124
  }
93
125
  export function createBlogThemeShellMessage(input) {
94
126
  return `请直接实现 ${input.displayName} 的公共页面壳层,视觉必须体现“${input.description}”,不得复制 default 主题布局。\n${context(input)}
95
127
 
128
+ ${sharedUiRequirements}
129
+
96
130
  文件职责:
97
131
  - src/plugin/blog-frame.tsx:作为远程 Client Boundary,以 'use client' 开头;在该独立 RSC build 内依次组合 ZlooksUiProvider、ZlooksShellProvider(initialContext)、ZlooksSiteConfigProvider(initialConfig),再渲染主题自己的 Header、main 和 Footer。Gateway React Context 不会跨 build,不能省略这些 Provider。
98
132
  - src/plugin/theme.css:只放本主题布局、排版和响应式规则;优先使用 Ant Design 组件、props、布局 API 与语义 token,CSS 不得硬编码只适用于亮色模式的颜色。
99
133
  - src/plugin/styles.d.ts:声明 *.css。
100
134
  - 可拆分 header、footer、navigation 等纯主题文件,但不得把数据请求或生命周期放进去。
101
135
 
102
- 壳层输入只能来自 BlogThemeFrameModel:navigationPages、shell、site。site 是 Host 注入并由公共 SDK 验证的 site.presentation v2:identity 可提供 name、homeHref、logoUrl、faviconUrl、description,legal.registrations 是由 id、kind、number、可选 verificationUrl/iconUrl 组成的结构化备案数组,legal.copyright 是可选版权文案。主题可以决定是否及如何展示这些字段,但不得查询 Global Config、编造备案信息、恢复旧的 registration/registrationHref 字段、代理 favicon 资源或持久化副本;site.profile 只属于 Gateway 首页,不是 BlogThemeFrameModel 输入。shell.origin 是 Host 校验并注入的公共 Origin,只用于公共 URL、canonical 和展示语义,不得替代服务发现或发起跨服务请求。账户展示使用共享 Shell 能力,不解析 Session;导航路径统一位于 /blog 下。每个独立编译的主题只能拥有一层 ZlooksUiProvider,使用 App.useApp() 获取 message/notification/modal,不调用 Ant Design 静态反馈 API。
136
+ 壳层输入只能来自 BlogThemeFrameModel:navigationPages、shell、site。site 是 Host 注入并由公共 SDK 验证的 site.presentation v2:identity 可提供 name、homeHref、logoUrl、faviconUrl、description,legal.registrations 是由 id、kind、number、可选 verificationUrl/iconUrl 组成的结构化备案数组,legal.copyright 是可选版权文案。主题决定展示布局,但必须保留实际存在的站点标识、备案和版权,但不得查询 Global Config、编造备案信息、恢复旧的 registration/registrationHref 字段、代理 favicon 资源或持久化副本;site.profile 只属于 Gateway 首页,不是 BlogThemeFrameModel 输入。shell.origin 是 Host 校验并注入的公共 Origin,只用于公共 URL、canonical 和展示语义,不得替代服务发现或发起跨服务请求。账户展示使用共享 Shell 能力,不解析 Session;Blog 自有导航位于 /blog 下,共享导航保留 Host 给出的合法路径。每个独立编译的主题只能拥有一层 ZlooksUiProvider;从 @zlooks.cn/ui/app 使用 useZlooksApp 获取 message/notification/modal,不调用 Ant Design 静态反馈 API。
103
137
 
104
138
  实现可访问的 landmark、键盘导航、焦点态、窄屏布局和 light/dark/default 三态可读性。完成后为 Provider 组合、导航与主题模式写组件测试并运行。`;
105
139
  }
106
140
  export function createBlogThemeHomePageMessage(input) {
107
141
  return pageMessage(input, '/', 'data.home(props)', 'BlogHomePage', `
108
- 使用 model.frame、model.posts.items、model.posts.total、model.page、model.pageSize、model.categories、model.tags、model.sidebarPagesmodel.archive.months。首页列表、热门内容、分类、标签和归档月份必须来自这些真实值,不得制造文章、计数或分类。分页必须保留 /blog 路径和 page 查询参数。首页应有一个清晰的页面级 H1;文章卡标题从 H2 开始。为空结果提供真实空状态。`);
142
+ 使用 model.frame、model.posts.items、model.posts.total、model.page、model.pageSize、model.latestPosts、model.categories、model.tags、model.sidebarPagesmodel.archive.months 和 model.recentComments。首页列表、最新文章、分类、标签、归档月份和最新评论必须来自这些真实值,不得制造文章、计数或分类。分页必须保留 /blog 路径和 page 查询参数。首页应有一个清晰的页面级 H1;文章卡标题从 H2 开始。为空结果提供真实空状态。`);
109
143
  }
110
144
  export function createBlogThemePostPageMessage(input) {
111
145
  return pageMessage(input, '/posts/[slug]', 'data.post(props)', 'BlogPostPage', `
112
- 处理 model.kind=not-found 的 invalid/missing 状态;成功时使用 model.post、model.connections、model.comments、model.nextCommentCursor、model.viewerStatus。文章标题是页面唯一 H1,Markdown 正文只渲染 H2 及以下层级,不把标题再渲染一次。原始 HTML 保持禁用,外链使用 noopener noreferrer。若 Markdown 渲染库依赖客户端 React hooks,必须放入 'use client' 边界。
146
+ 处理 model.kind=not-found 的 invalid/missing 状态;成功时使用 model.post、model.engagement、model.connections、model.comments、model.nextCommentCursor、model.viewerStatus 和 model.sidebar。文章标题是页面唯一 H1,Markdown 正文只渲染 H2 及以下层级,不把标题再渲染一次。原始 HTML 保持禁用,外链使用 noopener noreferrer。若 Markdown 渲染库依赖客户端 React hooks,必须放入 'use client' 边界。
113
147
 
114
148
  上一篇/下一篇/相关文章和评论必须来自 ViewModel。评论框只对 authenticated 显示;anonymous 显示登录提示,unavailable 显示不可用提示。服务端授权仍由 Blog Server 负责,UI 状态不能替代权限检查。`);
115
149
  }
@@ -136,7 +170,7 @@ export function createBlogThemeFriendsPageMessage(input) {
136
170
  function pageMessage(input, route, loader, exportedPage, details) {
137
171
  return `请直接实现 ${input.displayName} 的 ${route} 页面。\n${context(input)}
138
172
 
139
- 在 src/plugin/page.tsx 中复用模块级 createServiceBackedBlogThemeDataLoader({ definition }),通过 ${loader} 获取统一、已验证、与传输无关的 ViewModel,并导出 ${exportedPage}(props: BlogThemeRouteProps)。每个成功模型都必须通过 @zlooks.cn/ui/seo 渲染 <ZlooksSeo seo={model.seo} />;受控 missing/invalid 页面使用 data.notFound(props, resource) 取得公共 noindex SEO,不得自己猜 canonical。页面及其组件不得导入 @hile/*、@zlooks.cn/blog-shared、loadService 或直接 Blog 客户端。${details}
173
+ 在 src/plugin/page.tsx 中复用模块级 createServiceBackedBlogThemeDataLoader({ definition }),通过 ${loader} 获取统一、已验证、与传输无关的 ViewModel,并导出 ${exportedPage}(props: BlogThemeRouteProps)。每个成功模型都必须通过 @zlooks.cn/ui/seo 渲染 <ZlooksSeo seo={model.seo} />;受控 missing/invalid 页面使用 data.notFound(props, resource) 取得公共 noindex SEO,不得自己猜 canonical。页面及其组件只允许从 @hile/rsc/client/navigation 使用 RscLink/useRscNavigation,不得导入其他 @hile/*、@zlooks.cn/blog-shared、loadService 或直接 Blog 客户端。${details}
140
174
 
141
175
  视觉结构和组件拆分由主题自由决定,但优先使用 Ant Design;Server Component 不访问 Typography.Title、Select.Option 等 compound Client 属性,需要交互时拆 focused Client Boundary。为正常、空数据、not-found/非法参数和关键响应式结构补测试,然后运行该包测试与 typecheck。`;
142
176
  }
@@ -144,8 +178,8 @@ export function createBlogThemeInteractionsMessage(input) {
144
178
  return `请直接实现 ${input.displayName} 所需的浏览器交互,并保持初始数据仍由 RSC ViewModel 提供。\n${context(input)}
145
179
 
146
180
  规则:
147
- 1. 只有搜索、评论翻页/排序、评论提交等用户触发交互可以从 @zlooks.cn/blog-theme/client 导入 createBlogThemeClient;不得绕过主题 SDK 直接依赖底层 @zlooks.cn/blog-client,也不得直接导入 @zlooks.cn/browser-api 或 @zlooks.cn/blog-shared。
148
- 2. 每个交互文件以 'use client' 开头并保持 focused boundary。Server Component、page.tsx 和 boot 不得导入 /client;Client Boundary 不得导入 @zlooks.cn/blog-theme/rsc、@zlooks.cn/blog-theme/runtime @hile/*。使用 @zlooks.cn/ui/request 的 useRequest 处理统一 Browser envelope、AbortSignal 和主题化错误;反馈通过 App.useApp()
181
+ 1. 搜索、点赞/取消点赞、评论翻页/排序和评论提交等用户触发交互从 @zlooks.cn/blog-theme/client 导入 createBlogThemeClient,并完整调用 searchPosts、likePost、unlikePost、listComments、createComment;不得绕过主题 SDK 直接依赖底层 @zlooks.cn/blog-client,也不得直接导入 @zlooks.cn/browser-api 或 @zlooks.cn/blog-shared。
182
+ 2. 每个交互文件以 'use client' 开头并保持 focused boundary。Server Component、page.tsx 和 boot 不得导入 /client;Client Boundary 不得导入 @zlooks.cn/blog-theme/rsc、@zlooks.cn/blog-theme/runtime 或除 @hile/rsc/client/navigation 之外的 @hile/*。使用 @zlooks.cn/ui/request 的 useRequest 处理统一 Browser envelope、AbortSignal 和主题化错误;额外反馈从 @zlooks.cn/ui/app 导入 useZlooksApp,不要从 antd root 导入 App。按钮固定从 @zlooks.cn/ui/button 导入 ZlooksButton,避开 Hile 不支持的 Button directive re-export
149
183
  3. 初始文章、页面、分类、标签、归档、友情链接与首屏评论禁止 hydration 后重新请求。
150
184
  4. 评论提交必须同步拒绝重复提交、卸载时 abort、成功后只在编辑器仍等于提交快照时清空;未登录和用户状态不可用时不渲染可提交表单。
151
185
  5. 搜索只使用真实 API 结果;输入、limit、游标和展示文本保持有界。任何 HTML/Markdown 预览禁用 raw HTML。
@@ -156,16 +190,17 @@ export function createBlogThemeInteractionsMessage(input) {
156
190
  export function createBlogThemeVerificationMessage(input) {
157
191
  return `请对 ${packageName(input.themeId)} 做最终闭环验证并直接修复发现的问题。\n${context(input)}
158
192
 
193
+ ${authoringCompletionRequirements}
194
+
195
+ ${sharedUiRequirements}
196
+
159
197
  按顺序执行:
160
- 1. 确认当前 Git 根就是独立主题项目,不位于主站 monorepo 的 packages 目录;检查 git diff,避免覆盖用户无关修改。services 只有 blog-theme.boot.ts,没有 src/runtime 实现,没有公开 listener、数据库/Redis/Registry/Micro 直连。
161
- 2. 重新执行 npm Registry 可用性检查和 pnpm install --frozen-lockfile;依赖中不得出现 workspace:*、file:、link: 或主站绝对路径。
162
- 3. 在项目根运行 pnpm test、pnpm typecheck、pnpm build、pnpm verify:rsc、pnpm pack --dry-run 和 git diff --check;确认包不是 private,唯一 bin 指向已构建的 dist/command/index.js,zlooks.kind=theme 且没有 zlooks.commands.db;确认 verify 输出 valid=true、pluginId=blog、七条路由存在。检查生成的浏览器 artifact:必须包含 /client 的交互实现,不得包含 @hile/*、/runtime 或 boot 模块;主题源码和直接依赖中不得出现 @zlooks.cn/blog-client。每次修复后从失败检查重新开始。
163
- 4. 明确报告发布版本和目标通道,但没有用户明确授权、npm 凭据和发布权限时不得执行发布。测试版本使用可按 SemVer 排序的 -test.N 预发布号并通过 npm publish --tag test 发布,不得用 +build.N 表达测试版本顺序;正式稳定版本进入 latestZlooks CLI 会先从当前机器环境对应的 test 或 latest dist-tag 查询准确版本、展示版本计划并取得用户确认,再用该准确版本安装;主题包不得要求直接安装 @test 或 @latest。
164
- 5. 用项目自己的 dev 脚本连接用户提供的 Registry 启动主题服务,确认 boot、runtime、application、data、logger ready,且进程使用新构建产物。没有 Registry 地址时停止在本地 build/verify 完成状态并准确报告。
165
- 6. 通过当前 MCP 连接调用 ${prompt('list-theme')},确认 ${input.themeId} 被发现;调用 ${prompt('read-theme-status')} 检查无 conflict、实例健康、build 与刚验证的产物一致。
166
- 7. 未得到用户明确确认不得切换当前主题。用户确认后才调用 ${prompt('select-theme')},随后调用 ${prompt('read-theme-selection')} 与 ${prompt('read-theme-status')} 验证修订和激活状态。
167
- 8. 通过用户提供的 Gateway Origin 实际请求 /blog、/blog/posts/<真实-slug>、/blog/archives、一个内容页、分类、标签和 /blog/friends;检查 HTTP、原始 SSR 样式、hydration warning、浏览器控制台、交互、暗色/亮色和窄屏。逐页检查 head 中只有一个有效 title、description、robots、absolute canonical、Open Graph 和 Twitter 集合;文章页还要核对真实封面及 published/modified 时间,缺失页面必须 noindex。没有 Origin 或真实内容 slug 时报告缺失输入,不得伪造验证。
168
-
169
- 最终报告必须列出创建文件、主题自由设计点、复用的公共能力、所有真实命令结果、运行 URL、发现/激活状态和任何未完成项。不得用“应该可用”代替验证。`;
198
+ 1. PRECHECK:确认当前根是独立主题项目且 package.json.name=${packageName(input.themeId)},不使用官方保留的 @zlooks.cn/* scope,不覆盖无关文件;依赖不得出现 workspace:*、file:、link: 或主站绝对路径。
199
+ 2. LOCAL_VERIFIED:在项目根运行 zlooks theme verify . --json。它必须依次执行结构检查、pnpm install、test、typecheck、build、verify:rsc;只有 ok=true stage=LOCAL_VERIFIED 才能继续。平台还必须直接校验真实 Hile 产物并执行 npm pack(artifact.verified 与 package.packed);仅当目录属于 Git 仓库时另运行 git diff --check。任何修复后都从平台验证重新开始。
200
+ 3. RUNTIME_VERIFIED:${runtimeStartupRequirements}等待 ready,然后调用 ${prompt(BLOG_MCP_TOOLS.listThemes)} ${prompt(BLOG_MCP_TOOLS.readThemeStatus)},检查 ${input.themeId}。${runtimeEvidenceRequirements}没有 Registry 或服务提前退出时只能报告未完成,不能把 build 当作运行证明。
201
+ 4. FUNCTION_VERIFIED(可选):仅在用户要求真实内容验收时执行,并单独记录覆盖范围。在隔离环境或用户通过独立 ${prompt(BLOG_MCP_PROMPTS.switchBlogTheme)} 工作流明确选中主题后,用真实 Gateway 检查用户要求的路由、SSR 样式、hydration、窄屏、导航或搜索。默认不验证登录后的行为;点赞、评论、退出等写交互需要另行明确授权。缺少身份、内容或浏览器条件时记录未验证,不阻塞主题制作,也不伪造 FUNCTION_VERIFIED
202
+ 5. 发布不属于验证。没有用户明确授权、npm 凭据和权限时不得 npm publish;如获授权,测试版使用 -test.N 并执行 npm publish --tag test。Zlooks CLI 必须先解析并展示准确版本,再按 test 或 latest 通道安装经用户确认的版本;稳定版使用 latest。
203
+
204
+ 最终报告逐项列出 PRECHECK、SCAFFOLDED、DESIGNED、LOCAL_VERIFIED、RUNTIME_VERIFIED 的证据;五个必需阶段通过即完成主题制作。FUNCTION_VERIFIED 单独列出实际覆盖或“未执行(可选)”;不得用“应该可用”代替已执行阶段的证据。`;
170
205
  }
171
206
  //# sourceMappingURL=blog-theme-authoring-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blog-theme-authoring-prompt.js","sourceRoot":"","sources":["../../src/mcp/blog-theme-authoring-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blog-theme-authoring-prompt.js","sourceRoot":"","sources":["../../src/mcp/blog-theme-authoring-prompt.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zlooks.cn/blog-server",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -69,5 +69,5 @@
69
69
  "typescript": "7.0.2",
70
70
  "vitest": "4.1.11"
71
71
  },
72
- "gitHead": "0aaee21087cc402608c0f13836a0fa204e6a402a"
72
+ "gitHead": "d0c3ea8bfcf3040e8f3556f328fb96baac3b4935"
73
73
  }