mcp-probe-kit 1.11.0 → 1.15.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 +215 -21
- package/build/index.js +21 -1
- package/build/schemas/index.d.ts +234 -0
- package/build/schemas/index.js +4 -0
- package/build/schemas/interview-tools.d.ts +72 -0
- package/build/schemas/interview-tools.js +64 -0
- package/build/schemas/orchestration-tools.d.ts +58 -0
- package/build/schemas/orchestration-tools.js +59 -0
- package/build/schemas/ui-ux-schemas.d.ts +248 -0
- package/build/schemas/ui-ux-schemas.js +147 -0
- package/build/tools/__tests__/start_ui.integration.test.d.ts +6 -0
- package/build/tools/__tests__/start_ui.integration.test.js +179 -0
- package/build/tools/__tests__/start_ui.property.test.d.ts +6 -0
- package/build/tools/__tests__/start_ui.property.test.js +263 -0
- package/build/tools/__tests__/start_ui.unit.test.d.ts +6 -0
- package/build/tools/__tests__/start_ui.unit.test.js +109 -0
- package/build/tools/ask_user.d.ts +17 -0
- package/build/tools/ask_user.js +124 -0
- package/build/tools/index.d.ts +7 -0
- package/build/tools/index.js +9 -0
- package/build/tools/init_component_catalog.d.ts +22 -0
- package/build/tools/init_component_catalog.js +809 -0
- package/build/tools/interview.d.ts +18 -0
- package/build/tools/interview.js +418 -0
- package/build/tools/render_ui.d.ts +22 -0
- package/build/tools/render_ui.js +384 -0
- package/build/tools/start_ralph.d.ts +16 -0
- package/build/tools/start_ralph.js +779 -0
- package/build/tools/start_ui.d.ts +25 -0
- package/build/tools/start_ui.js +299 -0
- package/build/tools/ui-ux-tools.d.ts +116 -0
- package/build/tools/ui-ux-tools.js +756 -0
- package/build/tools/ui-ux-tools.test.d.ts +6 -0
- package/build/tools/ui-ux-tools.test.js +132 -0
- package/build/utils/ascii-box-formatter.d.ts +29 -0
- package/build/utils/ascii-box-formatter.js +195 -0
- package/build/utils/bm25.d.ts +60 -0
- package/build/utils/bm25.js +139 -0
- package/build/utils/cache-manager.d.ts +65 -0
- package/build/utils/cache-manager.js +156 -0
- package/build/utils/design-docs-generator.d.ts +1 -0
- package/build/utils/design-docs-generator.js +1 -0
- package/build/utils/design-reasoning-engine.d.ts +158 -0
- package/build/utils/design-reasoning-engine.js +363 -0
- package/build/utils/design-system-json-formatter.d.ts +41 -0
- package/build/utils/design-system-json-formatter.js +165 -0
- package/build/utils/ui-data-loader.d.ts +56 -0
- package/build/utils/ui-data-loader.js +164 -0
- package/build/utils/ui-search-engine.d.ts +57 -0
- package/build/utils/ui-search-engine.js +123 -0
- package/build/utils/ui-sync.d.ts +13 -0
- package/build/utils/ui-sync.js +241 -0
- package/docs/BEST_PRACTICES.md +456 -6
- package/docs/HOW_TO_TRIGGER.md +195 -64
- package/docs/MCP-Probe-Kit-/344/275/277/347/224/250/346/211/213/345/206/214.html +158 -63
- package/docs/MCP-Probe-Kit-/344/275/277/347/224/250/346/211/213/345/206/214.md +872 -34
- package/package.json +18 -5
- package/docs/HOW_TO_TRIGGER.html +0 -243
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ask_user - 向用户提问工具
|
|
3
|
+
* 当 AI 需要更多信息时,可以主动向用户提问
|
|
4
|
+
*/
|
|
5
|
+
import { parseArgs } from "../utils/parseArgs.js";
|
|
6
|
+
export async function askUser(args) {
|
|
7
|
+
try {
|
|
8
|
+
// 解析参数
|
|
9
|
+
const parsed = parseArgs(args, {
|
|
10
|
+
primaryField: "question",
|
|
11
|
+
fieldAliases: {
|
|
12
|
+
question: ["q", "ask"],
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
const question = parsed.question;
|
|
16
|
+
const questions = parsed.questions;
|
|
17
|
+
const context = parsed.context;
|
|
18
|
+
const reason = parsed.reason;
|
|
19
|
+
if (!question && !questions) {
|
|
20
|
+
return {
|
|
21
|
+
content: [
|
|
22
|
+
{
|
|
23
|
+
type: "text",
|
|
24
|
+
text: `# ❓ 向用户提问工具
|
|
25
|
+
|
|
26
|
+
## 使用方法
|
|
27
|
+
|
|
28
|
+
### 单个问题
|
|
29
|
+
\`\`\`
|
|
30
|
+
ask_user "你希望支持哪些支付方式?"
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
### 多个问题
|
|
34
|
+
\`\`\`
|
|
35
|
+
ask_user --questions [
|
|
36
|
+
"目标用户是谁?",
|
|
37
|
+
"预期的并发量是多少?",
|
|
38
|
+
"有预算限制吗?"
|
|
39
|
+
]
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
### 带上下文的问题
|
|
43
|
+
\`\`\`
|
|
44
|
+
ask_user "是否需要支持移动端?" --context "当前只有 PC 端实现"
|
|
45
|
+
\`\`\`
|
|
46
|
+
|
|
47
|
+
## 使用场景
|
|
48
|
+
|
|
49
|
+
- 需求不明确时主动澄清
|
|
50
|
+
- 技术方案选择需要用户决策
|
|
51
|
+
- 发现潜在风险需要确认
|
|
52
|
+
- 需要补充业务背景信息
|
|
53
|
+
|
|
54
|
+
## 最佳实践
|
|
55
|
+
|
|
56
|
+
1. **问题要具体** - 避免过于宽泛的问题
|
|
57
|
+
2. **提供上下文** - 说明为什么要问这个问题
|
|
58
|
+
3. **给出选项** - 如果有明确的选项,列出来
|
|
59
|
+
4. **标注重要性** - 区分必答和可选问题`,
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const lines = [];
|
|
65
|
+
lines.push("# ❓ AI 需要向你确认一些信息");
|
|
66
|
+
lines.push("");
|
|
67
|
+
if (reason) {
|
|
68
|
+
lines.push(`**提问原因**: ${reason}`);
|
|
69
|
+
lines.push("");
|
|
70
|
+
}
|
|
71
|
+
if (context) {
|
|
72
|
+
lines.push("## 背景信息");
|
|
73
|
+
lines.push("");
|
|
74
|
+
lines.push(context);
|
|
75
|
+
lines.push("");
|
|
76
|
+
}
|
|
77
|
+
lines.push("## 问题");
|
|
78
|
+
lines.push("");
|
|
79
|
+
if (questions && questions.length > 0) {
|
|
80
|
+
// 多个问题
|
|
81
|
+
for (let i = 0; i < questions.length; i++) {
|
|
82
|
+
const q = questions[i];
|
|
83
|
+
const required = q.required !== false ? "**[必答]**" : "_[可选]_";
|
|
84
|
+
lines.push(`### ${i + 1}. ${q.question} ${required}`);
|
|
85
|
+
lines.push("");
|
|
86
|
+
if (q.context) {
|
|
87
|
+
lines.push(`_${q.context}_`);
|
|
88
|
+
lines.push("");
|
|
89
|
+
}
|
|
90
|
+
if (q.options && q.options.length > 0) {
|
|
91
|
+
lines.push("**可选项**:");
|
|
92
|
+
for (const option of q.options) {
|
|
93
|
+
lines.push(`- ${option}`);
|
|
94
|
+
}
|
|
95
|
+
lines.push("");
|
|
96
|
+
}
|
|
97
|
+
lines.push("**你的回答**: ");
|
|
98
|
+
lines.push("");
|
|
99
|
+
lines.push("---");
|
|
100
|
+
lines.push("");
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (question) {
|
|
104
|
+
// 单个问题
|
|
105
|
+
lines.push(`**${question}**`);
|
|
106
|
+
lines.push("");
|
|
107
|
+
lines.push("**你的回答**: ");
|
|
108
|
+
lines.push("");
|
|
109
|
+
}
|
|
110
|
+
lines.push("---");
|
|
111
|
+
lines.push("");
|
|
112
|
+
lines.push("💡 **提示**: 请回答上述问题,我会根据你的回答继续工作。");
|
|
113
|
+
return {
|
|
114
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
119
|
+
return {
|
|
120
|
+
content: [{ type: "text", text: `❌ 提问失败: ${errorMsg}` }],
|
|
121
|
+
isError: true,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
package/build/tools/index.d.ts
CHANGED
|
@@ -38,3 +38,10 @@ export { startOnboard } from "./start_onboard.js";
|
|
|
38
38
|
export { startApi } from "./start_api.js";
|
|
39
39
|
export { startDoc } from "./start_doc.js";
|
|
40
40
|
export { genSkill } from "./gen_skill.js";
|
|
41
|
+
export { startRalph } from "./start_ralph.js";
|
|
42
|
+
export { interview } from "./interview.js";
|
|
43
|
+
export { askUser } from "./ask_user.js";
|
|
44
|
+
export { uiDesignSystem, uiSearch, syncUiData } from "./ui-ux-tools.js";
|
|
45
|
+
export { initComponentCatalog } from "./init_component_catalog.js";
|
|
46
|
+
export { renderUi } from "./render_ui.js";
|
|
47
|
+
export { startUi } from "./start_ui.js";
|
package/build/tools/index.js
CHANGED
|
@@ -39,3 +39,12 @@ export { startOnboard } from "./start_onboard.js";
|
|
|
39
39
|
export { startApi } from "./start_api.js";
|
|
40
40
|
export { startDoc } from "./start_doc.js";
|
|
41
41
|
export { genSkill } from "./gen_skill.js";
|
|
42
|
+
export { startRalph } from "./start_ralph.js";
|
|
43
|
+
// 访谈工具
|
|
44
|
+
export { interview } from "./interview.js";
|
|
45
|
+
export { askUser } from "./ask_user.js";
|
|
46
|
+
// UI/UX Pro Max 工具
|
|
47
|
+
export { uiDesignSystem, uiSearch, syncUiData } from "./ui-ux-tools.js";
|
|
48
|
+
export { initComponentCatalog } from "./init_component_catalog.js";
|
|
49
|
+
export { renderUi } from "./render_ui.js";
|
|
50
|
+
export { startUi } from "./start_ui.js";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 初始化组件目录工具
|
|
3
|
+
*
|
|
4
|
+
* 基于设计系统规范生成组件目录
|
|
5
|
+
* 组件定义包含占位符,渲染时自动替换为实际值
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 初始化组件目录工具
|
|
9
|
+
*/
|
|
10
|
+
export declare function initComponentCatalog(args: any): Promise<{
|
|
11
|
+
content: {
|
|
12
|
+
type: string;
|
|
13
|
+
text: string;
|
|
14
|
+
}[];
|
|
15
|
+
isError: boolean;
|
|
16
|
+
} | {
|
|
17
|
+
content: {
|
|
18
|
+
type: string;
|
|
19
|
+
text: string;
|
|
20
|
+
}[];
|
|
21
|
+
isError?: undefined;
|
|
22
|
+
}>;
|