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.
Files changed (81) hide show
  1. package/README.md +107 -0
  2. package/bin/pda-kit-mcp.js +35 -0
  3. package/dist/file-reader.d.ts +83 -0
  4. package/dist/file-reader.d.ts.map +1 -0
  5. package/dist/file-reader.js +170 -0
  6. package/dist/file-reader.js.map +1 -0
  7. package/dist/http-entry.d.ts +12 -0
  8. package/dist/http-entry.d.ts.map +1 -0
  9. package/dist/http-entry.js +149 -0
  10. package/dist/http-entry.js.map +1 -0
  11. package/dist/http-server.d.ts +5 -0
  12. package/dist/http-server.d.ts.map +1 -0
  13. package/dist/http-server.js +114 -0
  14. package/dist/http-server.js.map +1 -0
  15. package/dist/index.d.ts +8 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +90 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/paths.d.ts +37 -0
  20. package/dist/paths.d.ts.map +1 -0
  21. package/dist/paths.js +52 -0
  22. package/dist/paths.js.map +1 -0
  23. package/dist/server.d.ts +12 -0
  24. package/dist/server.d.ts.map +1 -0
  25. package/dist/server.js +308 -0
  26. package/dist/server.js.map +1 -0
  27. package/dist/stdio-server.d.ts +8 -0
  28. package/dist/stdio-server.d.ts.map +1 -0
  29. package/dist/stdio-server.js +83 -0
  30. package/dist/stdio-server.js.map +1 -0
  31. package/dist/tools/generate-component.d.ts +54 -0
  32. package/dist/tools/generate-component.d.ts.map +1 -0
  33. package/dist/tools/generate-component.js +80 -0
  34. package/dist/tools/generate-component.js.map +1 -0
  35. package/dist/tools/get-component-spec.d.ts +70 -0
  36. package/dist/tools/get-component-spec.d.ts.map +1 -0
  37. package/dist/tools/get-component-spec.js +95 -0
  38. package/dist/tools/get-component-spec.js.map +1 -0
  39. package/dist/tools/get-global-rules.d.ts +42 -0
  40. package/dist/tools/get-global-rules.d.ts.map +1 -0
  41. package/dist/tools/get-global-rules.js +83 -0
  42. package/dist/tools/get-global-rules.js.map +1 -0
  43. package/dist/tools/list-components.d.ts +52 -0
  44. package/dist/tools/list-components.d.ts.map +1 -0
  45. package/dist/tools/list-components.js +104 -0
  46. package/dist/tools/list-components.js.map +1 -0
  47. package/dist/tools/search-components.d.ts +54 -0
  48. package/dist/tools/search-components.d.ts.map +1 -0
  49. package/dist/tools/search-components.js +124 -0
  50. package/dist/tools/search-components.js.map +1 -0
  51. package/dist/tools/validate-html.d.ts +43 -0
  52. package/dist/tools/validate-html.d.ts.map +1 -0
  53. package/dist/tools/validate-html.js +116 -0
  54. package/dist/tools/validate-html.js.map +1 -0
  55. package/package.json +59 -0
  56. package/spec-data/badge.md +461 -0
  57. package/spec-data/button.md +148 -0
  58. package/spec-data/camera.md +622 -0
  59. package/spec-data/dialog.md +419 -0
  60. package/spec-data/divider.md +208 -0
  61. package/spec-data/drawer.md +301 -0
  62. package/spec-data/empty-state.md +336 -0
  63. package/spec-data/home-page.md +352 -0
  64. package/spec-data/input-row.md +346 -0
  65. package/spec-data/layout-page.md +317 -0
  66. package/spec-data/list-item.md +128 -0
  67. package/spec-data/location-selector.md +630 -0
  68. package/spec-data/more-actions.md +427 -0
  69. package/spec-data/navbar.md +482 -0
  70. package/spec-data/photo-list.md +461 -0
  71. package/spec-data/picker-single.md +199 -0
  72. package/spec-data/picker.md +586 -0
  73. package/spec-data/scan-input.md +304 -0
  74. package/spec-data/section-heading.md +268 -0
  75. package/spec-data/selectable-list.md +331 -0
  76. package/spec-data/stepper.md +247 -0
  77. package/spec-data/tab-bar.md +254 -0
  78. package/spec-data/tab.md +349 -0
  79. package/spec-data/tag.md +363 -0
  80. package/spec-data/tooltip.md +202 -0
  81. 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,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PDA Kit MCP Server - STDIO 入口
4
+ *
5
+ * 用于本地 AI 客户端(Claude Desktop、Cursor 等)
6
+ */
7
+ export declare function startStdioServer(): Promise<void>;
8
+ //# sourceMappingURL=stdio-server.d.ts.map
@@ -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":"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"}
@@ -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"}