mcp-probe-kit 1.6.0 → 1.8.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.
@@ -113,6 +113,39 @@ ${code || "请提供需要审查的代码"}
113
113
 
114
114
  ---
115
115
 
116
+ ---
117
+
118
+ ## 📤 输出格式要求
119
+
120
+ 请严格按以下 JSON 格式输出审查结果:
121
+
122
+ \`\`\`json
123
+ {
124
+ "summary": "代码整体评价(一句话)",
125
+ "score": 85,
126
+ "issues": [
127
+ {
128
+ "severity": "critical|high|medium|low",
129
+ "category": "quality|security|performance|style",
130
+ "file": "文件路径(如有)",
131
+ "line": 10,
132
+ "code": "问题代码片段",
133
+ "message": "问题描述",
134
+ "suggestion": "修复建议",
135
+ "fix_example": "修复示例代码"
136
+ }
137
+ ],
138
+ "highlights": ["做得好的地方1", "做得好的地方2"]
139
+ }
140
+ \`\`\`
141
+
142
+ ## ⚠️ 边界约束
143
+
144
+ - ❌ 仅分析,不自动修改源代码
145
+ - ❌ 不执行代码或 shell 命令
146
+ - ❌ 不做业务逻辑正确性判断(只关注代码质量)
147
+ - ✅ 输出结构化问题清单和改进建议
148
+
116
149
  现在请开始代码审查,生成详细的审查报告。`;
117
150
  return {
118
151
  content: [
@@ -546,6 +546,15 @@ const user: User = {
546
546
 
547
547
  ---
548
548
 
549
+ ---
550
+
551
+ ## ⚠️ 边界约束
552
+
553
+ - ❌ 仅输出转换后代码,不自动替换源文件
554
+ - ❌ 不执行代码或命令
555
+ - ✅ 保持功能等价,不改变业务逻辑
556
+ - ✅ 输出完整可用的转换代码
557
+
549
558
  现在请根据需求进行代码转换,提供:
550
559
  1. 转换后的完整代码
551
560
  2. 关键变更说明
@@ -53,6 +53,47 @@ ${context || "请提供相关代码或场景描述"}
53
53
  - TimeoutError → 检查异步操作和网络请求
54
54
  - MemoryError → 检查内存泄漏和资源释放
55
55
 
56
+ ---
57
+
58
+ ## 📤 输出格式要求
59
+
60
+ 请严格按以下 JSON 格式输出分析结果:
61
+
62
+ \`\`\`json
63
+ {
64
+ "error_analysis": {
65
+ "type": "错误类型(SyntaxError/TypeError/LogicError等)",
66
+ "severity": "critical|high|medium|low",
67
+ "root_cause": "根本原因分析"
68
+ },
69
+ "possible_causes": [
70
+ {
71
+ "probability": "high|medium|low",
72
+ "description": "可能原因描述",
73
+ "evidence": "支持证据"
74
+ }
75
+ ],
76
+ "debug_strategy": [
77
+ {
78
+ "step": 1,
79
+ "action": "调试步骤描述",
80
+ "expected_result": "预期结果"
81
+ }
82
+ ],
83
+ "solutions": {
84
+ "quick_fix": "临时解决方案",
85
+ "root_fix": "根本解决方案",
86
+ "prevention": "预防措施"
87
+ }
88
+ }
89
+ \`\`\`
90
+
91
+ ## ⚠️ 边界约束
92
+
93
+ - ❌ 仅分析和建议,不自动修改代码
94
+ - ❌ 不执行代码或命令
95
+ - ✅ 输出结构化调试策略和解决方案
96
+
56
97
  现在请按照上述步骤分析错误并提供具体的调试方案。`;
57
98
  return {
58
99
  content: [
@@ -0,0 +1,29 @@
1
+ /**
2
+ * design2code - 设计稿转代码工具
3
+ *
4
+ * 功能:
5
+ * 1. 根据设计稿图片生成页面代码(支持图片 URL 或 base64)
6
+ * 2. 根据设计稿描述生成页面代码
7
+ * 3. 将 HTML 转换为 Vue/React 组件
8
+ * 4. 1:1 还原设计稿布局和样式
9
+ */
10
+ export declare function design2code(args: any): Promise<{
11
+ content: ({
12
+ type: string;
13
+ text: string;
14
+ data?: undefined;
15
+ mimeType?: undefined;
16
+ } | {
17
+ type: string;
18
+ data: any;
19
+ mimeType: any;
20
+ text?: undefined;
21
+ })[];
22
+ isError?: undefined;
23
+ } | {
24
+ content: {
25
+ type: string;
26
+ text: string;
27
+ }[];
28
+ isError: boolean;
29
+ }>;
@@ -0,0 +1,409 @@
1
+ /**
2
+ * design2code - 设计稿转代码工具
3
+ *
4
+ * 功能:
5
+ * 1. 根据设计稿图片生成页面代码(支持图片 URL 或 base64)
6
+ * 2. 根据设计稿描述生成页面代码
7
+ * 3. 将 HTML 转换为 Vue/React 组件
8
+ * 4. 1:1 还原设计稿布局和样式
9
+ */
10
+ const PROMPT_TEMPLATE = `# 🎨 设计稿转代码指南
11
+
12
+ ## 📋 任务信息
13
+
14
+ {task_info}
15
+
16
+ ---
17
+
18
+ ## 🎯 转换目标
19
+
20
+ **目标框架**: {framework}
21
+ **样式方案**: {style_solution}
22
+ **组件类型**: {component_type}
23
+
24
+ ---
25
+
26
+ ## 📐 设计还原要求
27
+
28
+ ### 1. 布局还原(Layout)
29
+ - ✅ 使用 Flexbox/Grid 实现响应式布局
30
+ - ✅ 严格按照设计稿的间距、对齐方式
31
+ - ✅ 保持元素的相对位置和层级关系
32
+ - ✅ 考虑不同屏幕尺寸的适配
33
+
34
+ ### 2. 样式还原(Styling)
35
+ - ✅ 精确还原颜色值(使用设计稿中的色值)
36
+ - ✅ 还原字体大小、行高、字重
37
+ - ✅ 还原圆角、阴影、边框等细节
38
+ - ✅ 还原动画和过渡效果
39
+
40
+ ### 3. 交互还原(Interaction)
41
+ - ✅ 实现 hover、active、focus 等状态
42
+ - ✅ 添加点击、滚动等交互效果
43
+ - ✅ 实现表单验证和反馈
44
+ - ✅ 添加加载状态和错误处理
45
+
46
+ ### 4. 响应式设计(Responsive)
47
+ - ✅ 移动端适配(< 768px)
48
+ - ✅ 平板适配(768px - 1024px)
49
+ - ✅ 桌面端适配(> 1024px)
50
+ - ✅ 使用媒体查询或响应式单位
51
+
52
+ ---
53
+
54
+ ## 🛠️ 技术实现
55
+
56
+ ### React 实现要点
57
+ \`\`\`typescript
58
+ // 1. 使用 TypeScript 定义 Props
59
+ interface ComponentProps {
60
+ // 定义属性类型
61
+ }
62
+
63
+ // 2. 使用 Hooks 管理状态
64
+ const [state, setState] = useState()
65
+
66
+ // 3. 使用 CSS Modules 或 Tailwind CSS
67
+ import styles from './Component.module.css'
68
+
69
+ // 4. 组件拆分原则
70
+ // - 单一职责
71
+ // - 可复用性
72
+ // - 性能优化(memo, useMemo, useCallback)
73
+ \`\`\`
74
+
75
+ ### Vue 3 实现要点
76
+ \`\`\`vue
77
+ <script setup lang="ts">
78
+ // 1. 使用 Composition API
79
+ import { ref, computed, onMounted } from 'vue'
80
+
81
+ // 2. 定义 Props 和 Emits
82
+ interface Props {
83
+ // 定义属性类型
84
+ }
85
+ const props = defineProps<Props>()
86
+ const emit = defineEmits<{
87
+ // 定义事件类型
88
+ }>()
89
+
90
+ // 3. 响应式状态管理
91
+ const state = ref()
92
+
93
+ // 4. 生命周期钩子
94
+ onMounted(() => {
95
+ // 初始化逻辑
96
+ })
97
+ </script>
98
+
99
+ <template>
100
+ <!-- 模板内容 -->
101
+ </template>
102
+
103
+ <style scoped>
104
+ /* 样式内容 */
105
+ </style>
106
+ \`\`\`
107
+
108
+ ---
109
+
110
+ ## 🎨 样式方案选择
111
+
112
+ ### Tailwind CSS(推荐)
113
+ \`\`\`jsx
114
+ <div className="flex items-center justify-between p-4 bg-white rounded-lg shadow-md">
115
+ <h2 className="text-xl font-bold text-gray-900">标题</h2>
116
+ <button className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
117
+ 按钮
118
+ </button>
119
+ </div>
120
+ \`\`\`
121
+
122
+ ### CSS Modules
123
+ \`\`\`css
124
+ .container {
125
+ display: flex;
126
+ align-items: center;
127
+ justify-content: space-between;
128
+ padding: 1rem;
129
+ background: white;
130
+ border-radius: 0.5rem;
131
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
132
+ }
133
+ \`\`\`
134
+
135
+ ### Styled Components
136
+ \`\`\`typescript
137
+ const Container = styled.div\`
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: space-between;
141
+ padding: 1rem;
142
+ background: white;
143
+ border-radius: 0.5rem;
144
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
145
+ \`;
146
+ \`\`\`
147
+
148
+ ---
149
+
150
+ ## 📦 组件结构
151
+
152
+ ### 页面级组件(Page Component)
153
+ \`\`\`
154
+ src/pages/
155
+ ├── HomePage/
156
+ │ ├── index.tsx # 页面主文件
157
+ │ ├── components/ # 页面专用组件
158
+ │ │ ├── Header.tsx
159
+ │ │ ├── Hero.tsx
160
+ │ │ └── Footer.tsx
161
+ │ ├── hooks/ # 页面专用 Hooks
162
+ │ │ └── usePageData.ts
163
+ │ ├── types.ts # 类型定义
164
+ │ └── styles.module.css # 样式文件
165
+ \`\`\`
166
+
167
+ ### 通用组件(Common Component)
168
+ \`\`\`
169
+ src/components/
170
+ ├── Button/
171
+ │ ├── index.tsx
172
+ │ ├── Button.test.tsx
173
+ │ └── styles.module.css
174
+ ├── Input/
175
+ └── Card/
176
+ \`\`\`
177
+
178
+ ---
179
+
180
+ ## ✅ 代码质量要求
181
+
182
+ ### 1. TypeScript 类型安全
183
+ - ✅ 所有 Props 都有类型定义
184
+ - ✅ 事件处理函数有类型注解
185
+ - ✅ API 响应有类型定义
186
+
187
+ ### 2. 可访问性(A11y)
188
+ - ✅ 使用语义化 HTML 标签
189
+ - ✅ 添加 ARIA 属性
190
+ - ✅ 键盘导航支持
191
+ - ✅ 屏幕阅读器友好
192
+
193
+ ### 3. 性能优化
194
+ - ✅ 图片懒加载
195
+ - ✅ 代码分割
196
+ - ✅ 避免不必要的重渲染
197
+ - ✅ 使用虚拟滚动(长列表)
198
+
199
+ ### 4. 代码规范
200
+ - ✅ 遵循 ESLint 规则
201
+ - ✅ 统一的命名规范
202
+ - ✅ 添加必要的注释
203
+ - ✅ 组件拆分合理
204
+
205
+ ---
206
+
207
+ ## 📝 输出内容
208
+
209
+ 请生成以下内容:
210
+
211
+ ### 1. 组件代码
212
+ - 完整的组件实现
213
+ - TypeScript 类型定义
214
+ - 样式文件
215
+
216
+ ### 2. 使用示例
217
+ - 组件的使用方法
218
+ - Props 说明
219
+ - 常见场景示例
220
+
221
+ ### 3. 注意事项
222
+ - 浏览器兼容性
223
+ - 性能优化建议
224
+ - 可能的改进方向
225
+
226
+ ---
227
+
228
+ ## 🎯 开始转换
229
+
230
+ {conversion_guide}
231
+
232
+ ---
233
+
234
+ ## ⚠️ 边界约束
235
+
236
+ - ❌ 仅输出组件代码,不自动创建文件
237
+ - ❌ 不执行代码或命令
238
+ - ✅ 默认输出与项目一致的框架与样式方案
239
+ - ✅ 1:1 还原设计稿布局和样式
240
+
241
+ ---
242
+
243
+ *工具: MCP Probe Kit - design2code*
244
+ `;
245
+ export async function design2code(args) {
246
+ try {
247
+ const input = args?.input;
248
+ const framework = args?.framework || "vue";
249
+ const styleSolution = args?.style_solution || "tailwind";
250
+ const componentType = args?.component_type || "page";
251
+ if (!input) {
252
+ throw new Error("缺少必填参数: input(设计稿图片 URL/base64、设计稿描述或 HTML 代码)");
253
+ }
254
+ // 判断输入类型
255
+ const isImageUrl = /^https?:\/\/.+\.(jpg|jpeg|png|gif|webp|svg)/i.test(input.trim());
256
+ const isBase64Image = /^data:image\/(png|jpeg|jpg|gif|webp|svg);base64,/.test(input.trim());
257
+ const isHTML = input.trim().startsWith("<");
258
+ let taskInfo = "";
259
+ let conversionGuide = "";
260
+ if (isImageUrl || isBase64Image) {
261
+ // 图片转换模式
262
+ const imageType = isImageUrl ? "图片 URL" : "Base64 图片";
263
+ taskInfo = `**输入类型**: 设计稿图片\n**图片来源**: ${imageType}\n${isImageUrl ? `**图片地址**: ${input}` : "**图片**: [Base64 编码图片]"}`;
264
+ conversionGuide = `### 设计稿图片分析步骤
265
+
266
+ 1. **视觉分析**
267
+ - 仔细观察设计稿的整体布局
268
+ - 识别页面的主要区域(导航栏、内容区、侧边栏、底部等)
269
+ - 分析颜色方案、字体、间距等设计规范
270
+ - 识别重复使用的设计模式和组件
271
+
272
+ 2. **元素识别**
273
+ - 标题、段落、按钮、输入框等基础元素
274
+ - 卡片、列表、表格等容器组件
275
+ - 图标、图片、背景等视觉元素
276
+ - 导航菜单、下拉框、弹窗等交互组件
277
+
278
+ 3. **布局还原**
279
+ - 使用 Flexbox/Grid 实现主体布局
280
+ - 精确测量元素间距和尺寸
281
+ - 实现响应式断点设计
282
+ - 保持视觉层次和对齐关系
283
+
284
+ 4. **样式还原**
285
+ - 提取颜色值(主色、辅助色、文字色、背景色)
286
+ - 还原字体大小、行高、字重
287
+ - 实现圆角、阴影、边框等细节
288
+ - 添加 hover、active 等交互状态
289
+
290
+ 5. **组件化开发**
291
+ - 将设计稿拆分为可复用组件
292
+ - 使用 ${framework === "vue" ? "Vue 3 Composition API" : "React Hooks"}
293
+ - 添加 TypeScript 类型定义
294
+ - 实现组件间的数据传递
295
+
296
+ 6. **交互实现**
297
+ - 添加点击、滚动等事件处理
298
+ - 实现表单验证和提交
299
+ - 添加加载状态和错误处理
300
+ - 实现动画和过渡效果
301
+
302
+ 7. **响应式适配**
303
+ - 移动端布局调整(< 768px)
304
+ - 平板端优化(768px - 1024px)
305
+ - 桌面端完整展示(> 1024px)
306
+ - 使用媒体查询或响应式单位
307
+
308
+ **注意事项**:
309
+ - 如果图片中有文字,请尽量识别并使用真实文本而非图片
310
+ - 图标优先使用 SVG 或图标库(如 Heroicons、Lucide)
311
+ - 图片资源使用占位符,并注明实际使用时需要替换
312
+ - 保持代码的可维护性和可扩展性`;
313
+ }
314
+ else if (isHTML) {
315
+ // HTML 转换模式
316
+ taskInfo = `**输入类型**: HTML 代码转换\n**源代码**:\n\`\`\`html\n${input}\n\`\`\``;
317
+ conversionGuide = `### HTML 转换步骤
318
+
319
+ 1. **分析 HTML 结构**
320
+ - 识别语义化标签
321
+ - 提取 class 和 id
322
+ - 分析嵌套层级
323
+
324
+ 2. **转换为组件**
325
+ - 将 HTML 转换为 ${framework === "vue" ? "Vue 模板" : "JSX"}
326
+ - 提取可复用的子组件
327
+ - 添加 TypeScript 类型
328
+
329
+ 3. **样式迁移**
330
+ - 将内联样式转换为 ${styleSolution}
331
+ - 提取公共样式变量
332
+ - 优化样式结构
333
+
334
+ 4. **添加交互逻辑**
335
+ - 识别需要状态管理的部分
336
+ - 添加事件处理
337
+ - 实现表单验证
338
+
339
+ 5. **优化和完善**
340
+ - 添加响应式设计
341
+ - 优化性能
342
+ - 添加可访问性支持`;
343
+ }
344
+ else {
345
+ // 设计稿描述模式
346
+ taskInfo = `**输入类型**: 设计稿描述\n**设计需求**:\n${input}`;
347
+ conversionGuide = `### 设计稿实现步骤
348
+
349
+ 1. **理解设计需求**
350
+ - 分析页面布局结构
351
+ - 识别设计元素和组件
352
+ - 确定交互流程
353
+
354
+ 2. **规划组件结构**
355
+ - 划分页面区域(Header、Main、Footer)
356
+ - 识别可复用组件
357
+ - 设计组件层级关系
358
+
359
+ 3. **实现布局**
360
+ - 使用 Flexbox/Grid 布局
361
+ - 实现响应式设计
362
+ - 确保跨浏览器兼容
363
+
364
+ 4. **实现样式**
365
+ - 还原设计稿的视觉效果
366
+ - 使用 ${styleSolution} 编写样式
367
+ - 添加动画和过渡效果
368
+
369
+ 5. **实现交互**
370
+ - 添加状态管理
371
+ - 实现用户交互
372
+ - 添加数据获取逻辑
373
+
374
+ 6. **测试和优化**
375
+ - 测试不同屏幕尺寸
376
+ - 优化性能
377
+ - 确保可访问性`;
378
+ }
379
+ const guide = PROMPT_TEMPLATE
380
+ .replace(/{task_info}/g, taskInfo)
381
+ .replace(/{framework}/g, framework === "vue" ? "Vue 3 + TypeScript" : "React + TypeScript")
382
+ .replace(/{style_solution}/g, styleSolution === "tailwind" ? "Tailwind CSS" : styleSolution === "css-modules" ? "CSS Modules" : "Styled Components")
383
+ .replace(/{component_type}/g, componentType === "page" ? "页面组件" : "通用组件")
384
+ .replace(/{conversion_guide}/g, conversionGuide);
385
+ // 如果是图片输入,添加图片内容
386
+ if (isImageUrl || isBase64Image) {
387
+ return {
388
+ content: [
389
+ { type: "text", text: guide },
390
+ {
391
+ type: "image",
392
+ data: isBase64Image ? input.split(',')[1] : input,
393
+ mimeType: isBase64Image ? input.match(/data:image\/([^;]+);/)?.[1] || "png" : "image/png"
394
+ }
395
+ ],
396
+ };
397
+ }
398
+ return {
399
+ content: [{ type: "text", text: guide }],
400
+ };
401
+ }
402
+ catch (error) {
403
+ const errorMsg = error instanceof Error ? error.message : String(error);
404
+ return {
405
+ content: [{ type: "text", text: `❌ 错误: ${errorMsg}` }],
406
+ isError: true,
407
+ };
408
+ }
409
+ }
@@ -171,15 +171,47 @@ const PROMPT_TEMPLATE = `# 工作量估算指南
171
171
 
172
172
  ---
173
173
 
174
- ## 估算检查清单
175
-
176
- - [ ] 任务已分解为标准活动
177
- - [ ] 复杂度已评估
178
- - [ ] 三点估算已完成
179
- - [ ] 故事点已确定
180
- - [ ] 风险已识别
181
- - [ ] 置信度已评估
182
- - [ ] 大任务已建议拆分
174
+ ## 📤 输出格式要求
175
+
176
+ 请严格按以下 JSON 格式输出估算结果:
177
+
178
+ \`\`\`json
179
+ {
180
+ "summary": "任务估算总结(一句话)",
181
+ "estimate": {
182
+ "story_points": 5,
183
+ "hours": { "optimistic": 4, "expected": 8, "pessimistic": 16 },
184
+ "confidence": "high|medium|low"
185
+ },
186
+ "complexity": {
187
+ "code_volume": { "score": 3, "reason": "中等代码量" },
188
+ "technical_difficulty": { "score": 4, "reason": "涉及新技术" },
189
+ "dependency": { "score": 2, "reason": "依赖较少" },
190
+ "testing": { "score": 3, "reason": "需要集成测试" }
191
+ },
192
+ "breakdown": [
193
+ { "activity": "需求理解", "hours": 1 },
194
+ { "activity": "设计", "hours": 2 },
195
+ { "activity": "编码", "hours": 4 },
196
+ { "activity": "测试", "hours": 2 }
197
+ ],
198
+ "risks": [
199
+ {
200
+ "type": "technical|dependency|requirement",
201
+ "description": "风险描述",
202
+ "impact": "high|medium|low",
203
+ "mitigation": "缓解措施"
204
+ }
205
+ ],
206
+ "split_suggestion": ["子任务1", "子任务2"]
207
+ }
208
+ \`\`\`
209
+
210
+ ## ⚠️ 边界约束
211
+
212
+ - ❌ 仅估算,不执行任何开发工作
213
+ - ❌ 估算基于静态分析,实际可能有偏差
214
+ - ✅ 输出结构化估算结果和风险分析
183
215
 
184
216
  ---
185
217
 
@@ -339,6 +339,14 @@ export const config = {
339
339
 
340
340
  ---
341
341
 
342
+ ---
343
+
344
+ ## ⚠️ 边界约束
345
+
346
+ - ❌ 仅输出代码解释,不修改代码
347
+ - ❌ 不执行代码或命令
348
+ - ✅ 输出结构化的代码解释和原理分析
349
+
342
350
  现在请为提供的代码生成详细解释,包括:
343
351
  1. 整体功能概述
344
352
  2. 逐行代码说明
@@ -247,6 +247,50 @@ describe('[功能描述]', () => {
247
247
 
248
248
  ---
249
249
 
250
+ ## 📤 输出格式要求
251
+
252
+ 请严格按以下 JSON 格式输出修复指南:
253
+
254
+ \`\`\`json
255
+ {
256
+ "bug_summary": "Bug 简述(一句话)",
257
+ "analysis": {
258
+ "error_type": "错误类型",
259
+ "direct_cause": "直接原因",
260
+ "root_cause": "根本原因",
261
+ "affected_scope": "影响范围"
262
+ },
263
+ "location": {
264
+ "file": "问题文件路径",
265
+ "line": 42,
266
+ "function": "问题函数名",
267
+ "code_snippet": "问题代码片段"
268
+ },
269
+ "fix_plan": {
270
+ "chosen_solution": "选择的修复方案",
271
+ "reason": "选择理由",
272
+ "steps": [
273
+ { "step": 1, "action": "修复步骤", "file": "文件", "change": "变更内容" }
274
+ ],
275
+ "code_before": "修改前代码",
276
+ "code_after": "修改后代码"
277
+ },
278
+ "verification": {
279
+ "test_cases": ["测试用例1", "测试用例2"],
280
+ "manual_checks": ["手动验证项1", "手动验证项2"]
281
+ }
282
+ }
283
+ \`\`\`
284
+
285
+ ## ⚠️ 边界约束
286
+
287
+ - ❌ 仅提供修复指南,不保证自动修改代码
288
+ - ❌ 不执行代码或命令
289
+ - ✅ 输出结构化修复方案和验证步骤
290
+ - 💡 如需自动修复,可配合 fix 工具应用 patch
291
+
292
+ ---
293
+
250
294
  *指南版本: 1.0.0*
251
295
  *工具: MCP Probe Kit - fix_bug*
252
296
  `;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * gen_skill - 生成 Agent Skills 文档
3
+ */
4
+ export declare function genSkill(args: any): Promise<{
5
+ content: {
6
+ type: string;
7
+ text: string;
8
+ }[];
9
+ isError?: undefined;
10
+ } | {
11
+ content: {
12
+ type: string;
13
+ text: string;
14
+ }[];
15
+ isError: boolean;
16
+ }>;