pda-kit-mcp-server 2.0.1
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 +107 -0
- package/bin/pda-kit-mcp.js +35 -0
- package/dist/file-reader.d.ts +83 -0
- package/dist/file-reader.d.ts.map +1 -0
- package/dist/file-reader.js +170 -0
- package/dist/file-reader.js.map +1 -0
- package/dist/http-entry.d.ts +12 -0
- package/dist/http-entry.d.ts.map +1 -0
- package/dist/http-entry.js +149 -0
- package/dist/http-entry.js.map +1 -0
- package/dist/http-server.d.ts +5 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +114 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +37 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +52 -0
- package/dist/paths.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +308 -0
- package/dist/server.js.map +1 -0
- package/dist/stdio-server.d.ts +8 -0
- package/dist/stdio-server.d.ts.map +1 -0
- package/dist/stdio-server.js +83 -0
- package/dist/stdio-server.js.map +1 -0
- package/dist/tools/generate-component.d.ts +54 -0
- package/dist/tools/generate-component.d.ts.map +1 -0
- package/dist/tools/generate-component.js +80 -0
- package/dist/tools/generate-component.js.map +1 -0
- package/dist/tools/get-component-spec.d.ts +70 -0
- package/dist/tools/get-component-spec.d.ts.map +1 -0
- package/dist/tools/get-component-spec.js +95 -0
- package/dist/tools/get-component-spec.js.map +1 -0
- package/dist/tools/get-global-rules.d.ts +42 -0
- package/dist/tools/get-global-rules.d.ts.map +1 -0
- package/dist/tools/get-global-rules.js +83 -0
- package/dist/tools/get-global-rules.js.map +1 -0
- package/dist/tools/list-components.d.ts +52 -0
- package/dist/tools/list-components.d.ts.map +1 -0
- package/dist/tools/list-components.js +104 -0
- package/dist/tools/list-components.js.map +1 -0
- package/dist/tools/search-components.d.ts +54 -0
- package/dist/tools/search-components.d.ts.map +1 -0
- package/dist/tools/search-components.js +124 -0
- package/dist/tools/search-components.js.map +1 -0
- package/dist/tools/validate-html.d.ts +43 -0
- package/dist/tools/validate-html.d.ts.map +1 -0
- package/dist/tools/validate-html.js +116 -0
- package/dist/tools/validate-html.js.map +1 -0
- package/package.json +59 -0
- package/spec-data/badge.md +461 -0
- package/spec-data/button.md +148 -0
- package/spec-data/camera.md +622 -0
- package/spec-data/dialog.md +419 -0
- package/spec-data/divider.md +208 -0
- package/spec-data/drawer.md +301 -0
- package/spec-data/empty-state.md +336 -0
- package/spec-data/home-page.md +352 -0
- package/spec-data/input-row.md +346 -0
- package/spec-data/layout-page.md +317 -0
- package/spec-data/list-item.md +128 -0
- package/spec-data/location-selector.md +630 -0
- package/spec-data/more-actions.md +427 -0
- package/spec-data/navbar.md +482 -0
- package/spec-data/photo-list.md +461 -0
- package/spec-data/picker-single.md +199 -0
- package/spec-data/picker.md +586 -0
- package/spec-data/scan-input.md +304 -0
- package/spec-data/section-heading.md +268 -0
- package/spec-data/selectable-list.md +331 -0
- package/spec-data/stepper.md +247 -0
- package/spec-data/tab-bar.md +254 -0
- package/spec-data/tab.md +349 -0
- package/spec-data/tag.md +363 -0
- package/spec-data/tooltip.md +202 -0
- package/spec-data/waybill-number.md +257 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-server.d.ts","sourceRoot":"","sources":["../src/stdio-server.ts"],"names":[],"mappings":";AACA;;;;GAIG;AA+EH,wBAAsB,gBAAgB,kBAIrC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* PDA Kit MCP Server - STDIO 入口
|
|
4
|
+
*
|
|
5
|
+
* 用于本地 AI 客户端(Claude Desktop、Cursor 等)
|
|
6
|
+
*/
|
|
7
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
8
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
9
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
+
import { getComponentSpecTool } from './tools/get-component-spec.js';
|
|
11
|
+
import { listComponentsTool } from './tools/list-components.js';
|
|
12
|
+
import { searchComponentsTool } from './tools/search-components.js';
|
|
13
|
+
import { validateHtmlTool } from './tools/validate-html.js';
|
|
14
|
+
import { generateComponentTool } from './tools/generate-component.js';
|
|
15
|
+
import { getGlobalRulesTool } from './tools/get-global-rules.js';
|
|
16
|
+
const tools = [
|
|
17
|
+
getComponentSpecTool,
|
|
18
|
+
listComponentsTool,
|
|
19
|
+
searchComponentsTool,
|
|
20
|
+
validateHtmlTool,
|
|
21
|
+
generateComponentTool,
|
|
22
|
+
getGlobalRulesTool,
|
|
23
|
+
];
|
|
24
|
+
const server = new Server({
|
|
25
|
+
name: 'pda-kit-mcp-server',
|
|
26
|
+
version: '2.0.0',
|
|
27
|
+
}, {
|
|
28
|
+
capabilities: {
|
|
29
|
+
tools: {},
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
33
|
+
return {
|
|
34
|
+
tools: tools.map((tool) => ({
|
|
35
|
+
name: tool.name,
|
|
36
|
+
description: tool.description,
|
|
37
|
+
inputSchema: tool.inputSchema,
|
|
38
|
+
})),
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
42
|
+
const { name, arguments: args } = request.params;
|
|
43
|
+
const tool = tools.find((t) => t.name === name);
|
|
44
|
+
if (!tool) {
|
|
45
|
+
throw new Error(`未知工具: ${name}`);
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const result = await tool.handler(args || {});
|
|
49
|
+
return {
|
|
50
|
+
content: [
|
|
51
|
+
{
|
|
52
|
+
type: 'text',
|
|
53
|
+
text: typeof result === 'string' ? result : JSON.stringify(result, null, 2),
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
60
|
+
return {
|
|
61
|
+
content: [
|
|
62
|
+
{
|
|
63
|
+
type: 'text',
|
|
64
|
+
text: JSON.stringify({ success: false, error: errorMessage }, null, 2),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
isError: true,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
export async function startStdioServer() {
|
|
72
|
+
const transport = new StdioServerTransport();
|
|
73
|
+
await server.connect(transport);
|
|
74
|
+
console.error('PDA Kit MCP Server running on stdio');
|
|
75
|
+
}
|
|
76
|
+
// 如果直接运行此文件
|
|
77
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
78
|
+
startStdioServer().catch((error) => {
|
|
79
|
+
console.error('Fatal error:', error);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=stdio-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-server.js","sourceRoot":"","sources":["../src/stdio-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: generate_component
|
|
3
|
+
*
|
|
4
|
+
* 基于 PDA Kit 规范生成组件代码
|
|
5
|
+
*/
|
|
6
|
+
export declare const generateComponentTool: {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: string;
|
|
11
|
+
properties: {
|
|
12
|
+
componentName: {
|
|
13
|
+
type: string;
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
props: {
|
|
17
|
+
type: string;
|
|
18
|
+
description: string;
|
|
19
|
+
default: {};
|
|
20
|
+
};
|
|
21
|
+
state: {
|
|
22
|
+
type: string;
|
|
23
|
+
enum: string[];
|
|
24
|
+
description: string;
|
|
25
|
+
default: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
required: string[];
|
|
29
|
+
};
|
|
30
|
+
handler: (args: {
|
|
31
|
+
componentName: string;
|
|
32
|
+
props?: Record<string, string>;
|
|
33
|
+
state?: string;
|
|
34
|
+
}) => Promise<{
|
|
35
|
+
success: boolean;
|
|
36
|
+
error: string;
|
|
37
|
+
componentName?: undefined;
|
|
38
|
+
state?: undefined;
|
|
39
|
+
html?: undefined;
|
|
40
|
+
css?: undefined;
|
|
41
|
+
fullExample?: undefined;
|
|
42
|
+
hint?: undefined;
|
|
43
|
+
} | {
|
|
44
|
+
success: boolean;
|
|
45
|
+
componentName: string;
|
|
46
|
+
state: string;
|
|
47
|
+
html: string;
|
|
48
|
+
css: string;
|
|
49
|
+
fullExample: string;
|
|
50
|
+
hint: string;
|
|
51
|
+
error?: undefined;
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=generate-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-component.d.ts","sourceRoot":"","sources":["../../src/tools/generate-component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;oBAwBV;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;;;;;;;;;;;;;;;;;;;CA6DF,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: generate_component
|
|
3
|
+
*
|
|
4
|
+
* 基于 PDA Kit 规范生成组件代码
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
10
|
+
export const generateComponentTool = {
|
|
11
|
+
name: 'generate_component',
|
|
12
|
+
description: '基于 PDA Kit 规范生成符合标准的组件 HTML 代码',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
componentName: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: '组件名称,如 scan-input, navbar 等',
|
|
19
|
+
},
|
|
20
|
+
props: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
description: '组件属性',
|
|
23
|
+
default: {},
|
|
24
|
+
},
|
|
25
|
+
state: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
enum: ['default', 'focused', 'success', 'error', 'disabled'],
|
|
28
|
+
description: '组件状态',
|
|
29
|
+
default: 'default',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
required: ['componentName'],
|
|
33
|
+
},
|
|
34
|
+
handler: async (args) => {
|
|
35
|
+
const { componentName, props = {}, state = 'default' } = args;
|
|
36
|
+
// 获取 PDA Kit 根目录
|
|
37
|
+
const pdaKitRoot = process.env.PDA_KIT_ROOT || join(__dirname, '../../..');
|
|
38
|
+
const specPath = join(pdaKitRoot, 'PDAKit-规范', 'components', `${componentName}.md`);
|
|
39
|
+
try {
|
|
40
|
+
const content = readFileSync(specPath, 'utf-8');
|
|
41
|
+
// 提取 HTML 示例
|
|
42
|
+
const htmlMatch = content.match(/```html\n([\s\S]*?)\n```/);
|
|
43
|
+
if (!htmlMatch) {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
error: `组件 ${componentName} 没有找到 HTML 示例`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
let html = htmlMatch[1];
|
|
50
|
+
// 替换 props
|
|
51
|
+
Object.entries(props).forEach(([key, value]) => {
|
|
52
|
+
html = html.replace(new RegExp(`{{${key}}}`, 'g'), value);
|
|
53
|
+
});
|
|
54
|
+
// 根据状态添加类名
|
|
55
|
+
if (state !== 'default') {
|
|
56
|
+
html = html.replace(/class="([^"]*)"/, `class="$1 ${state}"`);
|
|
57
|
+
}
|
|
58
|
+
// 提取 CSS
|
|
59
|
+
const cssMatch = content.match(/```css\n([\s\S]*?)\n```/);
|
|
60
|
+
const css = cssMatch ? cssMatch[1] : '';
|
|
61
|
+
return {
|
|
62
|
+
success: true,
|
|
63
|
+
componentName,
|
|
64
|
+
state,
|
|
65
|
+
html,
|
|
66
|
+
css,
|
|
67
|
+
fullExample: `<style>\n${css}\n</style>\n\n${html}`,
|
|
68
|
+
hint: '使用 validate_html 验证生成的代码',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
error: '生成失败: ' +
|
|
75
|
+
(error instanceof Error ? error.message : String(error)),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=generate-component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-component.js","sourceRoot":"","sources":["../../src/tools/generate-component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_component_spec
|
|
3
|
+
*
|
|
4
|
+
* 获取指定组件的规范文档
|
|
5
|
+
*/
|
|
6
|
+
export declare const getComponentSpecTool: {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: string;
|
|
11
|
+
properties: {
|
|
12
|
+
componentName: {
|
|
13
|
+
type: string;
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
format: {
|
|
17
|
+
type: string;
|
|
18
|
+
enum: string[];
|
|
19
|
+
description: string;
|
|
20
|
+
default: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
required: string[];
|
|
24
|
+
};
|
|
25
|
+
handler: (args: {
|
|
26
|
+
componentName: string;
|
|
27
|
+
format?: string;
|
|
28
|
+
}) => Promise<{
|
|
29
|
+
success: boolean;
|
|
30
|
+
componentName: string;
|
|
31
|
+
summary: string;
|
|
32
|
+
fullPath: string;
|
|
33
|
+
tokens?: undefined;
|
|
34
|
+
content?: undefined;
|
|
35
|
+
error?: undefined;
|
|
36
|
+
suggestions?: undefined;
|
|
37
|
+
hint?: undefined;
|
|
38
|
+
} | {
|
|
39
|
+
success: boolean;
|
|
40
|
+
componentName: string;
|
|
41
|
+
tokens: string;
|
|
42
|
+
summary?: undefined;
|
|
43
|
+
fullPath?: undefined;
|
|
44
|
+
content?: undefined;
|
|
45
|
+
error?: undefined;
|
|
46
|
+
suggestions?: undefined;
|
|
47
|
+
hint?: undefined;
|
|
48
|
+
} | {
|
|
49
|
+
success: boolean;
|
|
50
|
+
componentName: string;
|
|
51
|
+
content: string;
|
|
52
|
+
fullPath: string;
|
|
53
|
+
summary?: undefined;
|
|
54
|
+
tokens?: undefined;
|
|
55
|
+
error?: undefined;
|
|
56
|
+
suggestions?: undefined;
|
|
57
|
+
hint?: undefined;
|
|
58
|
+
} | {
|
|
59
|
+
success: boolean;
|
|
60
|
+
error: string;
|
|
61
|
+
suggestions: string[];
|
|
62
|
+
hint: string;
|
|
63
|
+
componentName?: undefined;
|
|
64
|
+
summary?: undefined;
|
|
65
|
+
fullPath?: undefined;
|
|
66
|
+
tokens?: undefined;
|
|
67
|
+
content?: undefined;
|
|
68
|
+
}>;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=get-component-spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-component-spec.d.ts","sourceRoot":"","sources":["../../src/tools/get-component-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;oBAmBT;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CjE,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_component_spec
|
|
3
|
+
*
|
|
4
|
+
* 获取指定组件的规范文档
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
10
|
+
// 获取规范数据目录
|
|
11
|
+
function getSpecDir() {
|
|
12
|
+
// 优先使用环境变量(npm 包模式)
|
|
13
|
+
if (process.env.PDA_KIT_SPEC_PATH) {
|
|
14
|
+
return process.env.PDA_KIT_SPEC_PATH;
|
|
15
|
+
}
|
|
16
|
+
// 回退到本地开发模式
|
|
17
|
+
return join(__dirname, '../../../..', 'PDAKit-规范', 'components');
|
|
18
|
+
}
|
|
19
|
+
export const getComponentSpecTool = {
|
|
20
|
+
name: 'get_component_spec',
|
|
21
|
+
description: '获取 PDA Kit 组件的详细规范文档,包括尺寸、颜色、状态、使用示例等',
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
componentName: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: '组件名称,如 scan-input, navbar, button 等',
|
|
28
|
+
},
|
|
29
|
+
format: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
enum: ['full', 'summary', 'tokens'],
|
|
32
|
+
description: '返回格式:完整文档、摘要或仅 Token',
|
|
33
|
+
default: 'full',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
required: ['componentName'],
|
|
37
|
+
},
|
|
38
|
+
handler: async (args) => {
|
|
39
|
+
const { componentName, format = 'full' } = args;
|
|
40
|
+
const specDir = getSpecDir();
|
|
41
|
+
const specPath = join(specDir, `${componentName}.md`);
|
|
42
|
+
try {
|
|
43
|
+
const content = readFileSync(specPath, 'utf-8');
|
|
44
|
+
if (format === 'summary') {
|
|
45
|
+
const lines = content.split('\n');
|
|
46
|
+
const summary = lines.slice(0, 50).join('\n');
|
|
47
|
+
return {
|
|
48
|
+
success: true,
|
|
49
|
+
componentName,
|
|
50
|
+
summary,
|
|
51
|
+
fullPath: specPath,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (format === 'tokens') {
|
|
55
|
+
const tokenMatch = content.match(/tokens:[\s\S]*?(?=\n---|\n#|$)/);
|
|
56
|
+
return {
|
|
57
|
+
success: true,
|
|
58
|
+
componentName,
|
|
59
|
+
tokens: tokenMatch ? tokenMatch[0] : '未找到 Token 定义',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
success: true,
|
|
64
|
+
componentName,
|
|
65
|
+
content,
|
|
66
|
+
fullPath: specPath,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const suggestions = getSimilarComponents(componentName);
|
|
71
|
+
return {
|
|
72
|
+
success: false,
|
|
73
|
+
error: `组件 "${componentName}" 不存在`,
|
|
74
|
+
suggestions,
|
|
75
|
+
hint: '使用 list_components 查看所有可用组件',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
function getSimilarComponents(name) {
|
|
81
|
+
const commonComponents = [
|
|
82
|
+
'scan-input',
|
|
83
|
+
'navbar',
|
|
84
|
+
'button',
|
|
85
|
+
'input-row',
|
|
86
|
+
'photo-list',
|
|
87
|
+
'camera',
|
|
88
|
+
'more-actions',
|
|
89
|
+
'dialog',
|
|
90
|
+
'tab-bar',
|
|
91
|
+
'location-selector',
|
|
92
|
+
];
|
|
93
|
+
return commonComponents.filter((c) => c.includes(name.toLowerCase()) || name.toLowerCase().includes(c));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=get-component-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-component-spec.js","sourceRoot":"","sources":["../../src/tools/get-component-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,WAAW;AACX,SAAS,UAAU;IACjB,oBAAoB;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACvC,CAAC;IACD,YAAY;IACZ,OAAO,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,uCAAuC;IACpD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;aACnD;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;gBACnC,WAAW,EAAE,sBAAsB;gBACnC,OAAO,EAAE,MAAM;aAChB;SACF;QACD,QAAQ,EAAE,CAAC,eAAe,CAAC;KAC5B;IACD,OAAO,EAAE,KAAK,EAAE,IAAgD,EAAE,EAAE;QAClE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;QAEhD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,KAAK,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEhD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,aAAa;oBACb,OAAO;oBACP,QAAQ,EAAE,QAAQ;iBACnB,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBACnE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,aAAa;oBACb,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;iBACpD,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,aAAa;gBACb,OAAO;gBACP,QAAQ,EAAE,QAAQ;aACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,OAAO,aAAa,OAAO;gBAClC,WAAW;gBACX,IAAI,EAAE,6BAA6B;aACpC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,gBAAgB,GAAG;QACvB,YAAY;QACZ,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,cAAc;QACd,QAAQ;QACR,SAAS;QACT,mBAAmB;KACpB,CAAC;IAEF,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_global_rules
|
|
3
|
+
*
|
|
4
|
+
* 获取 PDA Kit 全局硬性约束规则
|
|
5
|
+
*/
|
|
6
|
+
export declare const getGlobalRulesTool: {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: string;
|
|
11
|
+
properties: {
|
|
12
|
+
section: {
|
|
13
|
+
type: string;
|
|
14
|
+
enum: string[];
|
|
15
|
+
description: string;
|
|
16
|
+
default: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
handler: (args: {
|
|
21
|
+
section?: string;
|
|
22
|
+
}) => Promise<{
|
|
23
|
+
success: boolean;
|
|
24
|
+
section: string;
|
|
25
|
+
content: string;
|
|
26
|
+
summary: string;
|
|
27
|
+
error?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
success: boolean;
|
|
30
|
+
section: string;
|
|
31
|
+
content: string;
|
|
32
|
+
summary?: undefined;
|
|
33
|
+
error?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
success: boolean;
|
|
36
|
+
error: string;
|
|
37
|
+
section?: undefined;
|
|
38
|
+
content?: undefined;
|
|
39
|
+
summary?: undefined;
|
|
40
|
+
}>;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=get-global-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-global-rules.d.ts","sourceRoot":"","sources":["../../src/tools/get-global-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;oBAcP;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;CAoC3C,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_global_rules
|
|
3
|
+
*
|
|
4
|
+
* 获取 PDA Kit 全局硬性约束规则
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
10
|
+
export const getGlobalRulesTool = {
|
|
11
|
+
name: 'get_global_rules',
|
|
12
|
+
description: '获取 PDA Kit 全局硬性约束规则(GLOBAL_RULES.md)',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
section: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
enum: ['all', 'layout', 'animation', 'radius', 'icon', 'workflow'],
|
|
19
|
+
description: '规则章节',
|
|
20
|
+
default: 'all',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
handler: async (args) => {
|
|
25
|
+
const { section = 'all' } = args;
|
|
26
|
+
// 获取 PDA Kit 根目录
|
|
27
|
+
const pdaKitRoot = process.env.PDA_KIT_ROOT || join(__dirname, '../../..');
|
|
28
|
+
const rulesPath = join(pdaKitRoot, 'GLOBAL_RULES.md');
|
|
29
|
+
try {
|
|
30
|
+
const content = readFileSync(rulesPath, 'utf-8');
|
|
31
|
+
if (section === 'all') {
|
|
32
|
+
return {
|
|
33
|
+
success: true,
|
|
34
|
+
section: 'all',
|
|
35
|
+
content,
|
|
36
|
+
summary: extractSummary(content),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// 提取特定章节
|
|
40
|
+
const sectionContent = extractSection(content, section);
|
|
41
|
+
return {
|
|
42
|
+
success: true,
|
|
43
|
+
section,
|
|
44
|
+
content: sectionContent,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return {
|
|
49
|
+
success: false,
|
|
50
|
+
error: '读取全局规则失败: ' +
|
|
51
|
+
(error instanceof Error ? error.message : String(error)),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
// 提取摘要
|
|
57
|
+
function extractSummary(content) {
|
|
58
|
+
const lines = content.split('\n');
|
|
59
|
+
const summaryLines = [];
|
|
60
|
+
for (const line of lines) {
|
|
61
|
+
if (line.startsWith('## ')) {
|
|
62
|
+
summaryLines.push(line.replace('## ', ''));
|
|
63
|
+
}
|
|
64
|
+
if (summaryLines.length >= 5)
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
return summaryLines.join('\n');
|
|
68
|
+
}
|
|
69
|
+
// 提取特定章节
|
|
70
|
+
function extractSection(content, section) {
|
|
71
|
+
const sectionMap = {
|
|
72
|
+
layout: '全屏沙箱骨架',
|
|
73
|
+
animation: '动效与过渡彻底熔断',
|
|
74
|
+
radius: '严硬性锁定圆角规制',
|
|
75
|
+
icon: '严禁混用分级图标库',
|
|
76
|
+
workflow: 'AI 双阶推理工作流',
|
|
77
|
+
};
|
|
78
|
+
const sectionTitle = sectionMap[section] || section;
|
|
79
|
+
const regex = new RegExp(`## ${sectionTitle}[\s\S]*?(?=## |$)`);
|
|
80
|
+
const match = content.match(regex);
|
|
81
|
+
return match ? match[0] : `未找到 ${section} 章节`;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=get-global-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-global-rules.js","sourceRoot":"","sources":["../../src/tools/get-global-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: list_components
|
|
3
|
+
*
|
|
4
|
+
* 列出所有可用的 PDA Kit 组件
|
|
5
|
+
*/
|
|
6
|
+
export declare const listComponentsTool: {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: string;
|
|
11
|
+
properties: {
|
|
12
|
+
category: {
|
|
13
|
+
type: string;
|
|
14
|
+
enum: string[];
|
|
15
|
+
description: string;
|
|
16
|
+
default: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
handler: (args: {
|
|
21
|
+
category?: string;
|
|
22
|
+
}) => Promise<{
|
|
23
|
+
success: boolean;
|
|
24
|
+
total: number;
|
|
25
|
+
category: string;
|
|
26
|
+
grouped: Record<string, {
|
|
27
|
+
name: string;
|
|
28
|
+
displayName: string;
|
|
29
|
+
category: string;
|
|
30
|
+
version: string;
|
|
31
|
+
description: string;
|
|
32
|
+
}[]>;
|
|
33
|
+
components: {
|
|
34
|
+
name: string;
|
|
35
|
+
displayName: string;
|
|
36
|
+
category: string;
|
|
37
|
+
version: string;
|
|
38
|
+
description: string;
|
|
39
|
+
}[];
|
|
40
|
+
hint: string;
|
|
41
|
+
error?: undefined;
|
|
42
|
+
} | {
|
|
43
|
+
success: boolean;
|
|
44
|
+
error: string;
|
|
45
|
+
total?: undefined;
|
|
46
|
+
category?: undefined;
|
|
47
|
+
grouped?: undefined;
|
|
48
|
+
components?: undefined;
|
|
49
|
+
hint?: undefined;
|
|
50
|
+
}>;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=list-components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-components.d.ts","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;oBAcP;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsD5C,CAAC"}
|