@cvtoolman/pingcode-cli 0.2.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.
Files changed (141) hide show
  1. package/dist/cli/client.d.ts +6 -0
  2. package/dist/cli/client.d.ts.map +1 -0
  3. package/dist/cli/client.js +13 -0
  4. package/dist/cli/client.js.map +1 -0
  5. package/dist/cli/commands/auth.d.ts +3 -0
  6. package/dist/cli/commands/auth.d.ts.map +1 -0
  7. package/dist/cli/commands/auth.js +108 -0
  8. package/dist/cli/commands/auth.js.map +1 -0
  9. package/dist/cli/commands/project.d.ts +3 -0
  10. package/dist/cli/commands/project.d.ts.map +1 -0
  11. package/dist/cli/commands/project.js +54 -0
  12. package/dist/cli/commands/project.js.map +1 -0
  13. package/dist/cli/commands/sprint.d.ts +3 -0
  14. package/dist/cli/commands/sprint.d.ts.map +1 -0
  15. package/dist/cli/commands/sprint.js +44 -0
  16. package/dist/cli/commands/sprint.js.map +1 -0
  17. package/dist/cli/commands/user.d.ts +3 -0
  18. package/dist/cli/commands/user.d.ts.map +1 -0
  19. package/dist/cli/commands/user.js +20 -0
  20. package/dist/cli/commands/user.js.map +1 -0
  21. package/dist/cli/commands/wiki.d.ts +3 -0
  22. package/dist/cli/commands/wiki.d.ts.map +1 -0
  23. package/dist/cli/commands/wiki.js +105 -0
  24. package/dist/cli/commands/wiki.js.map +1 -0
  25. package/dist/cli/commands/work-item.d.ts +3 -0
  26. package/dist/cli/commands/work-item.d.ts.map +1 -0
  27. package/dist/cli/commands/work-item.js +116 -0
  28. package/dist/cli/commands/work-item.js.map +1 -0
  29. package/dist/cli/config-store.d.ts +25 -0
  30. package/dist/cli/config-store.d.ts.map +1 -0
  31. package/dist/cli/config-store.js +55 -0
  32. package/dist/cli/config-store.js.map +1 -0
  33. package/dist/cli/index.d.ts +6 -0
  34. package/dist/cli/index.d.ts.map +1 -0
  35. package/dist/cli/index.js +54 -0
  36. package/dist/cli/index.js.map +1 -0
  37. package/dist/cli/output.d.ts +7 -0
  38. package/dist/cli/output.d.ts.map +1 -0
  39. package/dist/cli/output.js +29 -0
  40. package/dist/cli/output.js.map +1 -0
  41. package/dist/cli/setup.d.ts +26 -0
  42. package/dist/cli/setup.d.ts.map +1 -0
  43. package/dist/cli/setup.js +216 -0
  44. package/dist/cli/setup.js.map +1 -0
  45. package/dist/client/api/comments.d.ts +12 -0
  46. package/dist/client/api/comments.d.ts.map +1 -0
  47. package/dist/client/api/comments.js +37 -0
  48. package/dist/client/api/comments.js.map +1 -0
  49. package/dist/client/api/deliverables.d.ts +14 -0
  50. package/dist/client/api/deliverables.d.ts.map +1 -0
  51. package/dist/client/api/deliverables.js +38 -0
  52. package/dist/client/api/deliverables.js.map +1 -0
  53. package/dist/client/api/myself.d.ts +10 -0
  54. package/dist/client/api/myself.d.ts.map +1 -0
  55. package/dist/client/api/myself.js +13 -0
  56. package/dist/client/api/myself.js.map +1 -0
  57. package/dist/client/api/sprints.d.ts +15 -0
  58. package/dist/client/api/sprints.d.ts.map +1 -0
  59. package/dist/client/api/sprints.js +64 -0
  60. package/dist/client/api/sprints.js.map +1 -0
  61. package/dist/client/api/stories.d.ts +17 -0
  62. package/dist/client/api/stories.d.ts.map +1 -0
  63. package/dist/client/api/stories.js +54 -0
  64. package/dist/client/api/stories.js.map +1 -0
  65. package/dist/client/api/wiki.d.ts +25 -0
  66. package/dist/client/api/wiki.d.ts.map +1 -0
  67. package/dist/client/api/wiki.js +90 -0
  68. package/dist/client/api/wiki.js.map +1 -0
  69. package/dist/client/api/work-items.d.ts +27 -0
  70. package/dist/client/api/work-items.d.ts.map +1 -0
  71. package/dist/client/api/work-items.js +141 -0
  72. package/dist/client/api/work-items.js.map +1 -0
  73. package/dist/client/auth.d.ts +30 -0
  74. package/dist/client/auth.d.ts.map +1 -0
  75. package/dist/client/auth.js +159 -0
  76. package/dist/client/auth.js.map +1 -0
  77. package/dist/client/client.d.ts +46 -0
  78. package/dist/client/client.d.ts.map +1 -0
  79. package/dist/client/client.js +157 -0
  80. package/dist/client/client.js.map +1 -0
  81. package/dist/client/errors.d.ts +15 -0
  82. package/dist/client/errors.d.ts.map +1 -0
  83. package/dist/client/errors.js +26 -0
  84. package/dist/client/errors.js.map +1 -0
  85. package/dist/client/index.d.ts +16 -0
  86. package/dist/client/index.d.ts.map +1 -0
  87. package/dist/client/index.js +15 -0
  88. package/dist/client/index.js.map +1 -0
  89. package/dist/client/token-store.d.ts +12 -0
  90. package/dist/client/token-store.d.ts.map +1 -0
  91. package/dist/client/token-store.js +38 -0
  92. package/dist/client/token-store.js.map +1 -0
  93. package/dist/client/types.d.ts +176 -0
  94. package/dist/client/types.d.ts.map +1 -0
  95. package/dist/client/types.js +5 -0
  96. package/dist/client/types.js.map +1 -0
  97. package/dist/server/format.d.ts +7 -0
  98. package/dist/server/format.d.ts.map +1 -0
  99. package/dist/server/format.js +60 -0
  100. package/dist/server/format.js.map +1 -0
  101. package/dist/server/index.d.ts +6 -0
  102. package/dist/server/index.d.ts.map +1 -0
  103. package/dist/server/index.js +51 -0
  104. package/dist/server/index.js.map +1 -0
  105. package/dist/server/tools/comment-tools.d.ts +4 -0
  106. package/dist/server/tools/comment-tools.d.ts.map +1 -0
  107. package/dist/server/tools/comment-tools.js +55 -0
  108. package/dist/server/tools/comment-tools.js.map +1 -0
  109. package/dist/server/tools/deliverable-tools.d.ts +4 -0
  110. package/dist/server/tools/deliverable-tools.d.ts.map +1 -0
  111. package/dist/server/tools/deliverable-tools.js +59 -0
  112. package/dist/server/tools/deliverable-tools.js.map +1 -0
  113. package/dist/server/tools/product-tools.d.ts +4 -0
  114. package/dist/server/tools/product-tools.d.ts.map +1 -0
  115. package/dist/server/tools/product-tools.js +30 -0
  116. package/dist/server/tools/product-tools.js.map +1 -0
  117. package/dist/server/tools/project-tools.d.ts +4 -0
  118. package/dist/server/tools/project-tools.d.ts.map +1 -0
  119. package/dist/server/tools/project-tools.js +44 -0
  120. package/dist/server/tools/project-tools.js.map +1 -0
  121. package/dist/server/tools/sprint-tools.d.ts +4 -0
  122. package/dist/server/tools/sprint-tools.d.ts.map +1 -0
  123. package/dist/server/tools/sprint-tools.js +69 -0
  124. package/dist/server/tools/sprint-tools.js.map +1 -0
  125. package/dist/server/tools/story-tools.d.ts +4 -0
  126. package/dist/server/tools/story-tools.d.ts.map +1 -0
  127. package/dist/server/tools/story-tools.js +55 -0
  128. package/dist/server/tools/story-tools.js.map +1 -0
  129. package/dist/server/tools/user-tools.d.ts +4 -0
  130. package/dist/server/tools/user-tools.d.ts.map +1 -0
  131. package/dist/server/tools/user-tools.js +41 -0
  132. package/dist/server/tools/user-tools.js.map +1 -0
  133. package/dist/server/tools/wiki-tools.d.ts +4 -0
  134. package/dist/server/tools/wiki-tools.d.ts.map +1 -0
  135. package/dist/server/tools/wiki-tools.js +171 -0
  136. package/dist/server/tools/wiki-tools.js.map +1 -0
  137. package/dist/server/tools/work-item-tools.d.ts +4 -0
  138. package/dist/server/tools/work-item-tools.d.ts.map +1 -0
  139. package/dist/server/tools/work-item-tools.js +180 -0
  140. package/dist/server/tools/work-item-tools.js.map +1 -0
  141. package/package.json +32 -0
@@ -0,0 +1,176 @@
1
+ /**
2
+ * PingCode 公共类型定义
3
+ */
4
+ /** 分页响应 */
5
+ export interface PaginatedResponse<T = any> {
6
+ page_size: number;
7
+ page_index: number;
8
+ total: number;
9
+ values: T[];
10
+ }
11
+ /** 分页参数 */
12
+ export interface PaginationParams {
13
+ pageIndex?: number;
14
+ pageSize?: number;
15
+ }
16
+ /** 响应格式 */
17
+ export type ResponseFormat = 'json' | 'markdown';
18
+ /** 令牌数据(持久化) */
19
+ export interface TokenData {
20
+ access_token: string;
21
+ refresh_token?: string;
22
+ expires_at?: number;
23
+ auth_mode: string;
24
+ updated_at: number;
25
+ }
26
+ /** 令牌响应(API 返回) */
27
+ export interface TokenResponse {
28
+ access_token: string;
29
+ refresh_token?: string;
30
+ expires_in?: number;
31
+ }
32
+ /** 需求列表查询参数 */
33
+ export interface ListStoriesOptions extends PaginationParams {
34
+ productId?: string;
35
+ storyType?: string;
36
+ statusId?: string;
37
+ priority?: string;
38
+ query?: string;
39
+ }
40
+ /** 工作项列表查询参数 */
41
+ export interface ListWorkItemsOptions extends PaginationParams {
42
+ projectIds?: string;
43
+ identifier?: string;
44
+ assigneeIds?: string;
45
+ priorityIds?: string;
46
+ sprintIds?: string;
47
+ participantId?: string;
48
+ keywords?: string;
49
+ }
50
+ /** 创建工作项参数 */
51
+ export interface CreateWorkItemOptions {
52
+ projectId: string;
53
+ title: string;
54
+ typeId: string;
55
+ description?: string;
56
+ assigneeId?: string;
57
+ stateId?: string;
58
+ priorityId?: string;
59
+ parentId?: string;
60
+ sprintId?: string;
61
+ startAt?: number;
62
+ endAt?: number;
63
+ properties?: Record<string, any>;
64
+ }
65
+ /** 更新工作项参数 */
66
+ export interface UpdateWorkItemOptions {
67
+ title?: string;
68
+ description?: string;
69
+ assigneeId?: string;
70
+ stateId?: string;
71
+ priorityId?: string;
72
+ parentId?: string;
73
+ startAt?: number;
74
+ endAt?: number;
75
+ properties?: Record<string, any>;
76
+ phaseId?: string;
77
+ storyPoints?: number;
78
+ estimatedWorkload?: number;
79
+ remainingWorkload?: number;
80
+ }
81
+ /** 迭代列表查询参数 */
82
+ export interface ListSprintsOptions extends PaginationParams {
83
+ projectId: string;
84
+ name?: string;
85
+ status?: string;
86
+ createdBetween?: string;
87
+ updatedBetween?: string;
88
+ }
89
+ /** 创建迭代参数 */
90
+ export interface CreateSprintOptions {
91
+ projectId: string;
92
+ name: string;
93
+ startAt: number;
94
+ endAt: number;
95
+ assigneeId: string;
96
+ description?: string;
97
+ status?: string;
98
+ categoryIds?: string[];
99
+ }
100
+ /** 更新迭代参数 */
101
+ export interface UpdateSprintOptions {
102
+ name?: string;
103
+ startAt?: number;
104
+ endAt?: number;
105
+ assigneeId?: string;
106
+ description?: string;
107
+ status?: string;
108
+ categoryIds?: string[];
109
+ }
110
+ /** 创建交付目标参数 */
111
+ export interface CreateDeliverableOptions {
112
+ workItemId: string;
113
+ name: string;
114
+ contentType: string;
115
+ content: Record<string, any>;
116
+ }
117
+ /** 更新交付目标参数 */
118
+ export interface UpdateDeliverableOptions {
119
+ workItemId?: string;
120
+ name?: string;
121
+ contentType?: string;
122
+ content?: Record<string, any>;
123
+ }
124
+ /** 创建 Wiki 空间参数 */
125
+ export interface CreateSpaceOptions {
126
+ name: string;
127
+ identifier: string;
128
+ scopeType?: string;
129
+ description?: string;
130
+ visibility?: string;
131
+ }
132
+ /** 更新 Wiki 空间参数 */
133
+ export interface UpdateSpaceOptions {
134
+ name?: string;
135
+ description?: string;
136
+ visibility?: string;
137
+ }
138
+ /** 创建 Wiki 页面参数 */
139
+ export interface CreatePageOptions {
140
+ spaceId: string;
141
+ name: string;
142
+ content: string;
143
+ formatType?: string;
144
+ parentId?: string;
145
+ }
146
+ /** 创建评论参数 */
147
+ export interface CreateCommentOptions {
148
+ principalType: string;
149
+ content: string;
150
+ principalId?: string;
151
+ reviewId?: string;
152
+ createdAt?: number;
153
+ createdBy?: string;
154
+ }
155
+ /** PingCodeClient 构造参数 */
156
+ export interface PingCodeClientOptions {
157
+ apiRoot?: string;
158
+ clientId?: string;
159
+ clientSecret?: string;
160
+ orgId?: string;
161
+ productId?: string;
162
+ code?: string;
163
+ refreshToken?: string;
164
+ authMode?: 'client' | 'user';
165
+ }
166
+ /** PingCodeAuth 构造参数 */
167
+ export interface PingCodeAuthOptions {
168
+ clientId?: string;
169
+ clientSecret?: string;
170
+ apiRoot?: string;
171
+ code?: string;
172
+ refreshToken?: string;
173
+ tokenFile?: string;
174
+ authMode?: 'client' | 'user';
175
+ }
176
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * PingCode 公共类型定义
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 响应格式化工具
3
+ */
4
+ import type { ResponseFormat } from '../client/types.js';
5
+ export declare function formatResponse(data: any, format?: ResponseFormat, includeMetadata?: boolean): any;
6
+ export declare function formatErrorMessage(error: Error | unknown, context: string): string;
7
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/server/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,GAAE,cAA2B,EAAE,eAAe,UAAO,GAAG,GAAG,CAyC1G;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAelF"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * 响应格式化工具
3
+ */
4
+ export function formatResponse(data, format = 'markdown', includeMetadata = true) {
5
+ if (format === 'json') {
6
+ return typeof data === 'object' && data !== null ? data : { data };
7
+ }
8
+ // Markdown 格式
9
+ if (typeof data === 'object' && data !== null && !Array.isArray(data)) {
10
+ if ('items' in data && Array.isArray(data.items)) {
11
+ const items = data.items;
12
+ if (!items.length)
13
+ return '无数据';
14
+ const headers = Object.keys(items[0]);
15
+ if (!headers.length)
16
+ return '无数据';
17
+ let md = '| ' + headers.join(' | ') + ' |\n';
18
+ md += '| ' + headers.map(() => '---').join(' | ') + ' |\n';
19
+ for (const item of items.slice(0, 20)) {
20
+ const row = headers.map(h => {
21
+ let v = String(item[h] ?? '');
22
+ if (v.length > 50)
23
+ v = v.slice(0, 47) + '...';
24
+ return v;
25
+ });
26
+ md += '| ' + row.join(' | ') + ' |\n';
27
+ }
28
+ if (includeMetadata && 'total' in data) {
29
+ md += `\n**共 ${data.total} 条记录**`;
30
+ if (data.has_more)
31
+ md += ` (还有更多,请使用 offset=${data.next_offset ?? 0} 继续获取)`;
32
+ }
33
+ return md;
34
+ }
35
+ // 单个对象
36
+ return Object.entries(data)
37
+ .filter(([, v]) => v !== null && v !== undefined)
38
+ .map(([k, v]) => `- **${k}**: ${v}`)
39
+ .join('\n');
40
+ }
41
+ if (Array.isArray(data)) {
42
+ return data.length ? data.map(item => `- ${item}`).join('\n') : '无数据';
43
+ }
44
+ return String(data);
45
+ }
46
+ export function formatErrorMessage(error, context) {
47
+ const msg = error instanceof Error ? error.message : String(error);
48
+ if (msg.includes('未初始化') || msg.includes('未认证'))
49
+ return `${context}失败: ${msg}\n\n请检查:\n1. PINGCODE_API_ROOT 环境变量是否正确\n2. access_token 是否有效\n3. 网络连接是否正常`;
50
+ if (msg.includes('401') || msg.includes('认证失败'))
51
+ return `${context}失败: 认证失败\n\n请检查:\n1. access_token 是否过期\n2. 重新运行授权流程获取新 token`;
52
+ if (msg.includes('403') || msg.includes('权限'))
53
+ return `${context}失败: 权限不足\n\n请检查:\n1. 当前用户是否有操作权限\n2. API 密钥是否具有相应权限`;
54
+ if (msg.includes('404') || msg.includes('不存在'))
55
+ return `${context}失败: 资源不存在\n\n请检查:\n1. 提供的 ID 是否正确\n2. 资源是否已被删除`;
56
+ if (msg.includes('500') || msg.includes('服务器错误'))
57
+ return `${context}失败: 服务器错误\n\n请稍后重试,如问题持续请联系 PingCode 支持`;
58
+ return `${context}失败: ${msg}`;
59
+ }
60
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/server/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PingCode MCP Server 入口
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AACA;;GAEG"}
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PingCode MCP Server 入口
4
+ */
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
7
+ import { PingCodeClient } from '../client/index.js';
8
+ import { registerProductTools } from './tools/product-tools.js';
9
+ import { registerProjectTools } from './tools/project-tools.js';
10
+ import { registerStoryTools } from './tools/story-tools.js';
11
+ import { registerWorkItemTools } from './tools/work-item-tools.js';
12
+ import { registerSprintTools } from './tools/sprint-tools.js';
13
+ import { registerDeliverableTools } from './tools/deliverable-tools.js';
14
+ import { registerWikiTools } from './tools/wiki-tools.js';
15
+ import { registerUserTools } from './tools/user-tools.js';
16
+ import { registerCommentTools } from './tools/comment-tools.js';
17
+ const server = new McpServer({ name: 'PingCode MCP Server', version: '0.1.0' });
18
+ let client;
19
+ function ensureClient() {
20
+ if (!client)
21
+ throw new Error('PingCode 客户端未初始化');
22
+ return client;
23
+ }
24
+ // 健康检查
25
+ server.tool('pingcode_ping', '检查服务是否运行', {}, async () => ({
26
+ content: [{ type: 'text', text: 'Pong! PingCode MCP Server is running' }],
27
+ }));
28
+ // 注册所有工具
29
+ registerProductTools(server, ensureClient);
30
+ registerProjectTools(server, ensureClient);
31
+ registerStoryTools(server, ensureClient);
32
+ registerWorkItemTools(server, ensureClient);
33
+ registerSprintTools(server, ensureClient);
34
+ registerDeliverableTools(server, ensureClient);
35
+ registerWikiTools(server, ensureClient);
36
+ registerUserTools(server, ensureClient);
37
+ registerCommentTools(server, ensureClient);
38
+ async function main() {
39
+ try {
40
+ client = new PingCodeClient();
41
+ await client.initSubApis();
42
+ console.error('PingCode 客户端初始化成功');
43
+ }
44
+ catch (e) {
45
+ console.error(`PingCode 客户端初始化失败: ${e.message}`);
46
+ }
47
+ const transport = new StdioServerTransport();
48
+ await server.connect(transport);
49
+ }
50
+ main().catch(console.error);
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAChF,IAAI,MAAsB,CAAC;AAE3B,SAAS,YAAY;IACnB,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,OAAO;AACP,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;CAC1E,CAAC,CAAC,CAAC;AAEJ,SAAS;AACT,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC3C,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC3C,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACzC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC5C,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC1C,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/C,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACxC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACxC,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QAC9B,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { PingCodeClient } from '../../client/index.js';
3
+ export declare function registerCommentTools(server: McpServer, getClient: () => PingCodeClient): void;
4
+ //# sourceMappingURL=comment-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/comment-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QA0CtF"}
@@ -0,0 +1,55 @@
1
+ import { z } from 'zod';
2
+ import { formatResponse, formatErrorMessage } from '../format.js';
3
+ export function registerCommentTools(server, getClient) {
4
+ server.tool('pingcode_list_work_item_comments', '获取工作项评论列表', {
5
+ work_item_id: z.string(),
6
+ page_index: z.number().int().min(0).default(0),
7
+ page_size: z.number().int().min(1).max(100).default(30),
8
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
9
+ }, async (params) => {
10
+ try {
11
+ const data = await getClient().workItems.listWorkItemComments(params.work_item_id, params.page_index, params.page_size);
12
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
13
+ }
14
+ catch (e) {
15
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '获取工作项评论列表') }], isError: true };
16
+ }
17
+ });
18
+ server.tool('pingcode_add_work_item_comment', '添加工作项评论', {
19
+ work_item_id: z.string(), content: z.string(), parent_id: z.string().optional(),
20
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
21
+ }, async (params) => {
22
+ try {
23
+ const data = await getClient().workItems.addWorkItemComment(params.work_item_id, params.content, params.parent_id);
24
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
25
+ }
26
+ catch (e) {
27
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '添加工作项评论') }], isError: true };
28
+ }
29
+ });
30
+ server.tool('pingcode_update_work_item_comment', '更新工作项评论', {
31
+ work_item_id: z.string(), comment_id: z.string(), content: z.string(),
32
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
33
+ }, async (params) => {
34
+ try {
35
+ const data = await getClient().workItems.updateWorkItemComment(params.work_item_id, params.comment_id, params.content);
36
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
37
+ }
38
+ catch (e) {
39
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '更新工作项评论') }], isError: true };
40
+ }
41
+ });
42
+ server.tool('pingcode_delete_work_item_comment', '删除工作项评论', {
43
+ work_item_id: z.string(), comment_id: z.string(),
44
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
45
+ }, async (params) => {
46
+ try {
47
+ const data = await getClient().workItems.deleteWorkItemComment(params.work_item_id, params.comment_id);
48
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
49
+ }
50
+ catch (e) {
51
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '删除工作项评论') }], isError: true };
52
+ }
53
+ });
54
+ }
55
+ //# sourceMappingURL=comment-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-tools.js","sourceRoot":"","sources":["../../../src/server/tools/comment-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { PingCodeClient } from '../../client/index.js';
3
+ export declare function registerDeliverableTools(server: McpServer, getClient: () => PingCodeClient): void;
4
+ //# sourceMappingURL=deliverable-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliverable-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/deliverable-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QA8C1F"}
@@ -0,0 +1,59 @@
1
+ import { z } from 'zod';
2
+ import { formatResponse, formatErrorMessage } from '../format.js';
3
+ export function registerDeliverableTools(server, getClient) {
4
+ server.tool('pingcode_list_deliverables', '获取交付目标列表', {
5
+ work_item_id: z.string(), page_index: z.number().int().min(0).default(0),
6
+ page_size: z.number().int().min(1).max(100).default(30),
7
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
8
+ }, async (params) => {
9
+ try {
10
+ const data = await getClient().deliverables.listDeliverables(params.work_item_id, params.page_index, params.page_size);
11
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
12
+ }
13
+ catch (e) {
14
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '获取交付目标列表') }], isError: true };
15
+ }
16
+ });
17
+ server.tool('pingcode_create_deliverable', '创建交付目标', {
18
+ work_item_id: z.string(), name: z.string(), content_type: z.string(), content: z.record(z.any()),
19
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
20
+ }, async (params) => {
21
+ try {
22
+ const data = await getClient().deliverables.createDeliverable({
23
+ workItemId: params.work_item_id, name: params.name, contentType: params.content_type, content: params.content,
24
+ });
25
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
26
+ }
27
+ catch (e) {
28
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '创建交付目标') }], isError: true };
29
+ }
30
+ });
31
+ server.tool('pingcode_update_deliverable', '更新交付目标', {
32
+ deliverable_id: z.string(), work_item_id: z.string().optional(), name: z.string().optional(),
33
+ content_type: z.string().optional(), content: z.record(z.any()).optional(),
34
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
35
+ }, async (params) => {
36
+ try {
37
+ const data = await getClient().deliverables.updateDeliverable(params.deliverable_id, {
38
+ workItemId: params.work_item_id, name: params.name, contentType: params.content_type, content: params.content,
39
+ });
40
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
41
+ }
42
+ catch (e) {
43
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '更新交付目标') }], isError: true };
44
+ }
45
+ });
46
+ server.tool('pingcode_delete_deliverable', '删除交付目标', {
47
+ deliverable_id: z.string(),
48
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
49
+ }, async (params) => {
50
+ try {
51
+ const data = await getClient().deliverables.deleteDeliverable(params.deliverable_id);
52
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
53
+ }
54
+ catch (e) {
55
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '删除交付目标') }], isError: true };
56
+ }
57
+ });
58
+ }
59
+ //# sourceMappingURL=deliverable-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliverable-tools.js","sourceRoot":"","sources":["../../../src/server/tools/deliverable-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { PingCodeClient } from '../../client/index.js';
3
+ export declare function registerProductTools(server: McpServer, getClient: () => PingCodeClient): void;
4
+ //# sourceMappingURL=product-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/product-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAqBtF"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ import { formatResponse, formatErrorMessage } from '../format.js';
3
+ export function registerProductTools(server, getClient) {
4
+ server.tool('pingcode_list_products', '获取产品列表', {
5
+ page_index: z.number().int().min(0).default(0),
6
+ page_size: z.number().int().min(1).max(100).default(30),
7
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
8
+ }, async (params) => {
9
+ try {
10
+ const data = await getClient().listProducts(params.page_index, params.page_size);
11
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
12
+ }
13
+ catch (e) {
14
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '获取产品列表') }], isError: true };
15
+ }
16
+ });
17
+ server.tool('pingcode_get_product', '获取单个产品详情', {
18
+ product_id: z.string(),
19
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
20
+ }, async (params) => {
21
+ try {
22
+ const data = await getClient().getProduct(params.product_id);
23
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
24
+ }
25
+ catch (e) {
26
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '获取产品详情') }], isError: true };
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=product-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-tools.js","sourceRoot":"","sources":["../../../src/server/tools/product-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAA+B;IACrF,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,EAAE;QAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;KAClE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAAC,CAAC;IAC/G,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,EAAE;QAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;KAClE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAAC,CAAC;IAC/G,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { PingCodeClient } from '../../client/index.js';
3
+ export declare function registerProjectTools(server: McpServer, getClient: () => PingCodeClient): void;
4
+ //# sourceMappingURL=project-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/project-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAiCtF"}
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { formatResponse, formatErrorMessage } from '../format.js';
3
+ export function registerProjectTools(server, getClient) {
4
+ server.tool('pingcode_list_projects', '获取项目列表', {
5
+ page_index: z.number().int().min(0).default(0),
6
+ page_size: z.number().int().min(1).max(100).default(30),
7
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
8
+ }, async (params) => {
9
+ try {
10
+ const data = await getClient().listProjects(params.page_index, params.page_size);
11
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
12
+ }
13
+ catch (e) {
14
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '获取项目列表') }], isError: true };
15
+ }
16
+ });
17
+ server.tool('pingcode_get_project', '获取单个项目详情', {
18
+ project_id: z.string(),
19
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
20
+ }, async (params) => {
21
+ try {
22
+ const data = await getClient().getProject(params.project_id);
23
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
24
+ }
25
+ catch (e) {
26
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '获取项目详情') }], isError: true };
27
+ }
28
+ });
29
+ server.tool('pingcode_list_project_members', '获取项目成员列表', {
30
+ project_id: z.string(),
31
+ page_index: z.number().int().min(0).default(0),
32
+ page_size: z.number().int().min(1).max(100).default(30),
33
+ response_format: z.enum(['json', 'markdown']).default('markdown'),
34
+ }, async (params) => {
35
+ try {
36
+ const data = await getClient().listProjectMembers(params.project_id, params.page_index, params.page_size);
37
+ return { content: [{ type: 'text', text: String(formatResponse(data, params.response_format)) }] };
38
+ }
39
+ catch (e) {
40
+ return { content: [{ type: 'text', text: formatErrorMessage(e, '获取项目成员列表') }], isError: true };
41
+ }
42
+ });
43
+ }
44
+ //# sourceMappingURL=project-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../../src/server/tools/project-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { PingCodeClient } from '../../client/index.js';
3
+ export declare function registerSprintTools(server: McpServer, getClient: () => PingCodeClient): void;
4
+ //# sourceMappingURL=sprint-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/sprint-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,QAwDrF"}