@xihe-lab/tapd-mcp-server 1.0.6 → 1.4.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 +56 -7
- package/dist/integration-test.d.ts +10 -0
- package/dist/integration-test.d.ts.map +1 -0
- package/dist/integration-test.js +117 -0
- package/dist/integration-test.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -4
- package/dist/server.js.map +1 -1
- package/dist/tapd-client.d.ts +65 -1
- package/dist/tapd-client.d.ts.map +1 -1
- package/dist/tapd-client.js +135 -28
- package/dist/tapd-client.js.map +1 -1
- package/dist/tools/attachment.d.ts +3 -0
- package/dist/tools/attachment.d.ts.map +1 -0
- package/dist/tools/attachment.js +99 -0
- package/dist/tools/attachment.js.map +1 -0
- package/dist/tools/board.d.ts +3 -0
- package/dist/tools/board.d.ts.map +1 -0
- package/dist/tools/board.js +98 -0
- package/dist/tools/board.js.map +1 -0
- package/dist/tools/bug.d.ts.map +1 -1
- package/dist/tools/bug.js +386 -7
- package/dist/tools/bug.js.map +1 -1
- package/dist/tools/changes.d.ts +3 -0
- package/dist/tools/changes.d.ts.map +1 -0
- package/dist/tools/changes.js +73 -0
- package/dist/tools/changes.js.map +1 -0
- package/dist/tools/comment.d.ts.map +1 -1
- package/dist/tools/comment.js +53 -3
- package/dist/tools/comment.js.map +1 -1
- package/dist/tools/custom-fields.d.ts +3 -0
- package/dist/tools/custom-fields.d.ts.map +1 -0
- package/dist/tools/custom-fields.js +105 -0
- package/dist/tools/custom-fields.js.map +1 -0
- package/dist/tools/image.d.ts +3 -0
- package/dist/tools/image.d.ts.map +1 -0
- package/dist/tools/image.js +23 -0
- package/dist/tools/image.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +26 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/iteration.d.ts.map +1 -1
- package/dist/tools/iteration.js +99 -6
- package/dist/tools/iteration.js.map +1 -1
- package/dist/tools/mini-comment.d.ts +3 -0
- package/dist/tools/mini-comment.d.ts.map +1 -0
- package/dist/tools/mini-comment.js +74 -0
- package/dist/tools/mini-comment.js.map +1 -0
- package/dist/tools/mini-item.d.ts +3 -0
- package/dist/tools/mini-item.d.ts.map +1 -0
- package/dist/tools/mini-item.js +166 -0
- package/dist/tools/mini-item.js.map +1 -0
- package/dist/tools/mini-workspace.d.ts +3 -0
- package/dist/tools/mini-workspace.d.ts.map +1 -0
- package/dist/tools/mini-workspace.js +43 -0
- package/dist/tools/mini-workspace.js.map +1 -0
- package/dist/tools/program.d.ts +3 -0
- package/dist/tools/program.d.ts.map +1 -0
- package/dist/tools/program.js +27 -0
- package/dist/tools/program.js.map +1 -0
- package/dist/tools/relations.d.ts +3 -0
- package/dist/tools/relations.d.ts.map +1 -0
- package/dist/tools/relations.js +68 -0
- package/dist/tools/relations.js.map +1 -0
- package/dist/tools/release.d.ts.map +1 -1
- package/dist/tools/release.js +228 -2
- package/dist/tools/release.js.map +1 -1
- package/dist/tools/report.d.ts +3 -0
- package/dist/tools/report.d.ts.map +1 -0
- package/dist/tools/report.js +38 -0
- package/dist/tools/report.js.map +1 -0
- package/dist/tools/settings.d.ts.map +1 -1
- package/dist/tools/settings.js +384 -18
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/source.d.ts +3 -0
- package/dist/tools/source.d.ts.map +1 -0
- package/dist/tools/source.js +69 -0
- package/dist/tools/source.js.map +1 -0
- package/dist/tools/story.d.ts.map +1 -1
- package/dist/tools/story.js +650 -144
- package/dist/tools/story.js.map +1 -1
- package/dist/tools/task.d.ts.map +1 -1
- package/dist/tools/task.js +109 -11
- package/dist/tools/task.js.map +1 -1
- package/dist/tools/test.d.ts.map +1 -1
- package/dist/tools/test.js +546 -26
- package/dist/tools/test.js.map +1 -1
- package/dist/tools/timesheet.d.ts.map +1 -1
- package/dist/tools/timesheet.js +72 -11
- package/dist/tools/timesheet.js.map +1 -1
- package/dist/tools/user.d.ts.map +1 -1
- package/dist/tools/user.js +37 -4
- package/dist/tools/user.js.map +1 -1
- package/dist/tools/utility.d.ts +3 -0
- package/dist/tools/utility.d.ts.map +1 -0
- package/dist/tools/utility.js +132 -0
- package/dist/tools/utility.js.map +1 -0
- package/dist/tools/wiki.d.ts.map +1 -1
- package/dist/tools/wiki.js +205 -2
- package/dist/tools/wiki.js.map +1 -1
- package/dist/tools/workflow.d.ts.map +1 -1
- package/dist/tools/workflow.js +92 -6
- package/dist/tools/workflow.js.map +1 -1
- package/dist/tools/workspace.d.ts.map +1 -1
- package/dist/tools/workspace.js +94 -4
- package/dist/tools/workspace.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { TapdClient } from '../tapd-client.js';
|
|
3
|
+
export const changeTools = [
|
|
4
|
+
{
|
|
5
|
+
name: "tapd_get_story_changes",
|
|
6
|
+
description: "Get story change history",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
9
|
+
story_id: z.string().optional().describe("Story ID"),
|
|
10
|
+
limit: z.number().optional().describe("Number of results to return, max 200"),
|
|
11
|
+
page: z.number().optional().describe("Page number, default 1"),
|
|
12
|
+
order: z.string().optional().describe("Sort order, e.g., 'created desc'"),
|
|
13
|
+
fields: z.string().optional().describe("Comma-separated list of fields to return"),
|
|
14
|
+
}),
|
|
15
|
+
handler: async (client, params) => {
|
|
16
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
17
|
+
if (!workspaceId) {
|
|
18
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
19
|
+
}
|
|
20
|
+
return client.get("/story_changes", { ...params, workspace_id: workspaceId });
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "tapd_get_story_changes_count",
|
|
25
|
+
description: "Get the count of story changes",
|
|
26
|
+
inputSchema: z.object({
|
|
27
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
28
|
+
story_id: z.string().optional().describe("Story ID"),
|
|
29
|
+
}),
|
|
30
|
+
handler: async (client, params) => {
|
|
31
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
32
|
+
if (!workspaceId) {
|
|
33
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
34
|
+
}
|
|
35
|
+
return client.get("/story_changes/count", { ...params, workspace_id: workspaceId });
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "tapd_get_task_changes",
|
|
40
|
+
description: "Get task change history",
|
|
41
|
+
inputSchema: z.object({
|
|
42
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
43
|
+
task_id: z.string().optional().describe("Task ID"),
|
|
44
|
+
limit: z.number().optional().describe("Number of results to return, max 200"),
|
|
45
|
+
page: z.number().optional().describe("Page number, default 1"),
|
|
46
|
+
order: z.string().optional().describe("Sort order, e.g., 'created desc'"),
|
|
47
|
+
fields: z.string().optional().describe("Comma-separated list of fields to return"),
|
|
48
|
+
}),
|
|
49
|
+
handler: async (client, params) => {
|
|
50
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
51
|
+
if (!workspaceId) {
|
|
52
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
53
|
+
}
|
|
54
|
+
return client.get("/task_changes", { ...params, workspace_id: workspaceId });
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "tapd_get_task_changes_count",
|
|
59
|
+
description: "Get the count of task changes",
|
|
60
|
+
inputSchema: z.object({
|
|
61
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
62
|
+
task_id: z.string().optional().describe("Task ID"),
|
|
63
|
+
}),
|
|
64
|
+
handler: async (client, params) => {
|
|
65
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
66
|
+
if (!workspaceId) {
|
|
67
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
68
|
+
}
|
|
69
|
+
return client.get("/task_changes/count", { ...params, workspace_id: workspaceId });
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
//# sourceMappingURL=changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/tools/changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../src/tools/comment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,YAAY,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../src/tools/comment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,YAAY,EAAE,OAAO,EAyFjC,CAAC"}
|
package/dist/tools/comment.js
CHANGED
|
@@ -5,23 +5,33 @@ export const commentTools = [
|
|
|
5
5
|
name: "tapd_get_comments",
|
|
6
6
|
description: "Get comments from TAPD for stories, bugs, or tasks",
|
|
7
7
|
inputSchema: z.object({
|
|
8
|
-
workspace_id: z.number().describe(
|
|
8
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
9
|
+
id: z.string().optional().describe("Comment ID, supports multiple IDs"),
|
|
9
10
|
entry_type: z.string().optional().describe("Entity type: story, bug, or task"),
|
|
10
11
|
entry_id: z.string().optional().describe("Entity ID to get comments for"),
|
|
12
|
+
author: z.string().optional().describe("Comment author"),
|
|
13
|
+
created: z.string().optional().describe("Creation time, supports time query"),
|
|
14
|
+
modified: z.string().optional().describe("Last modified time, supports time query"),
|
|
15
|
+
reply_id: z.string().optional().describe("Reply comment ID"),
|
|
16
|
+
root_id: z.string().optional().describe("Root comment ID for replies"),
|
|
11
17
|
limit: z.number().optional().describe("Number of results to return, max 200"),
|
|
12
18
|
page: z.number().optional().describe("Page number, default 1"),
|
|
13
19
|
order: z.string().optional().describe("Sort order, e.g., 'created desc'"),
|
|
14
20
|
fields: z.string().optional().describe("Comma-separated list of fields to return"),
|
|
15
21
|
}),
|
|
16
22
|
handler: async (client, params) => {
|
|
17
|
-
|
|
23
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
24
|
+
if (!workspaceId) {
|
|
25
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
26
|
+
}
|
|
27
|
+
return client.get("/comments", { ...params, workspace_id: workspaceId });
|
|
18
28
|
},
|
|
19
29
|
},
|
|
20
30
|
{
|
|
21
31
|
name: "tapd_create_comment",
|
|
22
32
|
description: "Create a new comment on a story, bug, or task",
|
|
23
33
|
inputSchema: z.object({
|
|
24
|
-
workspace_id: z.number().describe(
|
|
34
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
25
35
|
entry_type: z.string().describe("Entity type: bug, bug_remark, stories, or tasks"),
|
|
26
36
|
entry_id: z.string().describe("Entity ID to comment on"),
|
|
27
37
|
description: z.string().describe("Comment content"),
|
|
@@ -32,12 +42,52 @@ export const commentTools = [
|
|
|
32
42
|
reply_id: z.string().optional().describe("Comment ID being replied to"),
|
|
33
43
|
}),
|
|
34
44
|
handler: async (client, params) => {
|
|
45
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
46
|
+
if (!workspaceId) {
|
|
47
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
48
|
+
}
|
|
35
49
|
const finalParams = {
|
|
36
50
|
...params,
|
|
51
|
+
workspace_id: workspaceId,
|
|
37
52
|
author: params.author ?? TapdClient.getNickName(),
|
|
38
53
|
};
|
|
39
54
|
return client.post("/comments", finalParams);
|
|
40
55
|
},
|
|
41
56
|
},
|
|
57
|
+
{
|
|
58
|
+
name: "tapd_get_comments_count",
|
|
59
|
+
description: "获取评论数量",
|
|
60
|
+
inputSchema: z.object({
|
|
61
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
62
|
+
entry_type: z.string().optional().describe("对象类型: story, bug, or task"),
|
|
63
|
+
entry_id: z.string().optional().describe("对象ID"),
|
|
64
|
+
author: z.string().optional().describe("评论作者"),
|
|
65
|
+
created: z.string().optional().describe("创建时间"),
|
|
66
|
+
}),
|
|
67
|
+
handler: async (client, params) => {
|
|
68
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
69
|
+
if (!workspaceId) {
|
|
70
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
71
|
+
}
|
|
72
|
+
return client.get("/comments/count", { ...params, workspace_id: workspaceId });
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "tapd_update_comment",
|
|
77
|
+
description: "更新评论",
|
|
78
|
+
inputSchema: z.object({
|
|
79
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
80
|
+
id: z.string().describe("评论ID (必填)"),
|
|
81
|
+
description: z.string().optional().describe("评论内容"),
|
|
82
|
+
author: z.string().optional().describe("作者"),
|
|
83
|
+
}),
|
|
84
|
+
handler: async (client, params) => {
|
|
85
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
86
|
+
if (!workspaceId) {
|
|
87
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
88
|
+
}
|
|
89
|
+
return client.post("/comments", { ...params, workspace_id: workspaceId });
|
|
90
|
+
},
|
|
91
|
+
},
|
|
42
92
|
];
|
|
43
93
|
//# sourceMappingURL=comment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/tools/comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,oDAAoD;QACjE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/tools/comment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/tools/custom-fields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,gBAAgB,EAAE,OAAO,EAqGrC,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { TapdClient } from '../tapd-client.js';
|
|
3
|
+
export const customFieldTools = [
|
|
4
|
+
{
|
|
5
|
+
name: "tapd_get_story_custom_fields",
|
|
6
|
+
description: "Get story custom fields settings",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
9
|
+
workitem_type_id: z.string().optional().describe("Work item type ID"),
|
|
10
|
+
}),
|
|
11
|
+
handler: async (client, params) => {
|
|
12
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
13
|
+
if (!workspaceId) {
|
|
14
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
15
|
+
}
|
|
16
|
+
return client.get("/stories/custom_fields_settings", { ...params, workspace_id: workspaceId });
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: "tapd_get_bug_custom_fields",
|
|
21
|
+
description: "Get bug custom fields settings",
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
24
|
+
workitem_type_id: z.string().optional().describe("Work item type ID"),
|
|
25
|
+
}),
|
|
26
|
+
handler: async (client, params) => {
|
|
27
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
28
|
+
if (!workspaceId) {
|
|
29
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
30
|
+
}
|
|
31
|
+
return client.get("/bugs/custom_fields_settings", { ...params, workspace_id: workspaceId });
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "tapd_get_task_custom_fields",
|
|
36
|
+
description: "Get task custom fields settings",
|
|
37
|
+
inputSchema: z.object({
|
|
38
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
39
|
+
}),
|
|
40
|
+
handler: async (client, params) => {
|
|
41
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
42
|
+
if (!workspaceId) {
|
|
43
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
44
|
+
}
|
|
45
|
+
return client.get("/tasks/custom_fields_settings", { ...params, workspace_id: workspaceId });
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "tapd_get_test_case_custom_fields",
|
|
50
|
+
description: "Get test case custom fields settings",
|
|
51
|
+
inputSchema: z.object({
|
|
52
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
53
|
+
}),
|
|
54
|
+
handler: async (client, params) => {
|
|
55
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
56
|
+
if (!workspaceId) {
|
|
57
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
58
|
+
}
|
|
59
|
+
return client.get("/tcases/custom_fields_settings", { ...params, workspace_id: workspaceId });
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "tapd_get_iteration_custom_fields",
|
|
64
|
+
description: "Get iteration custom fields settings",
|
|
65
|
+
inputSchema: z.object({
|
|
66
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
67
|
+
}),
|
|
68
|
+
handler: async (client, params) => {
|
|
69
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
70
|
+
if (!workspaceId) {
|
|
71
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
72
|
+
}
|
|
73
|
+
return client.get("/iterations/custom_fields_settings", { ...params, workspace_id: workspaceId });
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "tapd_get_task_fields_info",
|
|
78
|
+
description: "Get task fields information",
|
|
79
|
+
inputSchema: z.object({
|
|
80
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
81
|
+
}),
|
|
82
|
+
handler: async (client, params) => {
|
|
83
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
84
|
+
if (!workspaceId) {
|
|
85
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
86
|
+
}
|
|
87
|
+
return client.get("/tasks/get_fields_info", { ...params, workspace_id: workspaceId });
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "tapd_get_test_case_fields_info",
|
|
92
|
+
description: "Get test case fields information",
|
|
93
|
+
inputSchema: z.object({
|
|
94
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
95
|
+
}),
|
|
96
|
+
handler: async (client, params) => {
|
|
97
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
98
|
+
if (!workspaceId) {
|
|
99
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
100
|
+
}
|
|
101
|
+
return client.get("/tcases/get_fields_info", { ...params, workspace_id: workspaceId });
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
//# sourceMappingURL=custom-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-fields.js","sourceRoot":"","sources":["../../src/tools/custom-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/tools/image.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,UAAU,EAAE,OAAO,EAmB/B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { TapdClient } from '../tapd-client.js';
|
|
3
|
+
export const imageTools = [
|
|
4
|
+
{
|
|
5
|
+
name: 'tapd_get_image_url',
|
|
6
|
+
description: '将 TAPD 图片相对路径转换为临时下载 URL(有效期 300s)。用于需求描述中的 /tfl/ 图片路径。',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
9
|
+
image_path: z.string().describe('图片相对路径,如 /tfl/captures/2025/04/xxx.png'),
|
|
10
|
+
}),
|
|
11
|
+
handler: async (client, params) => {
|
|
12
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
13
|
+
if (!workspaceId) {
|
|
14
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
15
|
+
}
|
|
16
|
+
return client.get('/files/get_image', {
|
|
17
|
+
workspace_id: workspaceId,
|
|
18
|
+
image_path: params.image_path,
|
|
19
|
+
});
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
//# sourceMappingURL=image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/tools/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,UAAU,GAAc;IACnC;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,yDAAyD;QACtE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;SAC1E,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,UAAU,CAAC,qBAAqB,EAAE,CAAC;YAC9E,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;YACvG,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE;gBACpC,YAAY,EAAE,WAAW;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA6B3C,eAAO,MAAM,QAAQ,EAAE,OAAO,EA2B7B,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -11,6 +11,19 @@ import { settingsTools } from './settings.js';
|
|
|
11
11
|
import { testTools } from './test.js';
|
|
12
12
|
import { wikiTools } from './wiki.js';
|
|
13
13
|
import { releaseTools } from './release.js';
|
|
14
|
+
import { attachmentTools } from './attachment.js';
|
|
15
|
+
import { miniItemTools } from './mini-item.js';
|
|
16
|
+
import { miniWorkspaceTools } from './mini-workspace.js';
|
|
17
|
+
import { miniCommentTools } from './mini-comment.js';
|
|
18
|
+
import { changeTools } from './changes.js';
|
|
19
|
+
import { customFieldTools } from './custom-fields.js';
|
|
20
|
+
import { relationTools } from './relations.js';
|
|
21
|
+
import { boardTools } from './board.js';
|
|
22
|
+
import { sourceTools } from './source.js';
|
|
23
|
+
import { programTools } from './program.js';
|
|
24
|
+
import { reportTools } from './report.js';
|
|
25
|
+
import { utilityTools } from './utility.js';
|
|
26
|
+
import { imageTools } from './image.js';
|
|
14
27
|
export const allTools = [
|
|
15
28
|
...workspaceTools,
|
|
16
29
|
...iterationTools,
|
|
@@ -25,5 +38,18 @@ export const allTools = [
|
|
|
25
38
|
...testTools,
|
|
26
39
|
...wikiTools,
|
|
27
40
|
...releaseTools,
|
|
41
|
+
...attachmentTools,
|
|
42
|
+
...miniItemTools,
|
|
43
|
+
...miniWorkspaceTools,
|
|
44
|
+
...miniCommentTools,
|
|
45
|
+
...changeTools,
|
|
46
|
+
...customFieldTools,
|
|
47
|
+
...relationTools,
|
|
48
|
+
...boardTools,
|
|
49
|
+
...sourceTools,
|
|
50
|
+
...programTools,
|
|
51
|
+
...reportTools,
|
|
52
|
+
...utilityTools,
|
|
53
|
+
...imageTools,
|
|
28
54
|
];
|
|
29
55
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,GAAG,cAAc;IACjB,GAAG,cAAc;IACjB,GAAG,SAAS;IACZ,GAAG,UAAU;IACb,GAAG,QAAQ;IACX,GAAG,SAAS;IACZ,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,aAAa;IAChB,GAAG,SAAS;IACZ,GAAG,SAAS;IACZ,GAAG,YAAY;IACf,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,kBAAkB;IACrB,GAAG,gBAAgB;IACnB,GAAG,WAAW;IACd,GAAG,gBAAgB;IACnB,GAAG,aAAa;IAChB,GAAG,UAAU;IACb,GAAG,WAAW;IACd,GAAG,YAAY;IACf,GAAG,WAAW;IACd,GAAG,YAAY;IACf,GAAG,UAAU;CACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iteration.d.ts","sourceRoot":"","sources":["../../src/tools/iteration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,cAAc,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"iteration.d.ts","sourceRoot":"","sources":["../../src/tools/iteration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,cAAc,EAAE,OAAO,EA0LnC,CAAC"}
|
package/dist/tools/iteration.js
CHANGED
|
@@ -5,9 +5,10 @@ export const iterationTools = [
|
|
|
5
5
|
name: "tapd_get_iterations",
|
|
6
6
|
description: "Get iterations with optional filters",
|
|
7
7
|
inputSchema: z.object({
|
|
8
|
-
workspace_id: z.number().describe(
|
|
8
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
9
9
|
id: z.string().optional().describe("Iteration ID, supports multi-ID query"),
|
|
10
10
|
name: z.string().optional().describe("Iteration title, supports fuzzy matching"),
|
|
11
|
+
description: z.string().optional().describe("Iteration description"),
|
|
11
12
|
status: z.string().optional().describe("Status: open/done or custom Chinese status"),
|
|
12
13
|
startdate: z.string().optional().describe("Start date, supports time query"),
|
|
13
14
|
enddate: z.string().optional().describe("End date, supports time query"),
|
|
@@ -18,20 +19,25 @@ export const iterationTools = [
|
|
|
18
19
|
workitem_type_id: z.string().optional().describe("Iteration category"),
|
|
19
20
|
plan_app_id: z.string().optional().describe("Plan application ID"),
|
|
20
21
|
locker: z.string().optional().describe("Locked by user"),
|
|
22
|
+
custom_field_one: z.string().optional().describe("Custom field 1 (supports 1-200)"),
|
|
21
23
|
limit: z.number().optional().describe("Return count limit, default 30, max 200"),
|
|
22
24
|
page: z.number().optional().describe("Page number, default 1"),
|
|
23
25
|
order: z.string().optional().describe("Sort order"),
|
|
24
26
|
fields: z.string().optional().describe("Specify return fields"),
|
|
25
27
|
}),
|
|
26
28
|
handler: async (client, params) => {
|
|
27
|
-
|
|
29
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
30
|
+
if (!workspaceId) {
|
|
31
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
32
|
+
}
|
|
33
|
+
return client.get("/iterations", { ...params, workspace_id: workspaceId });
|
|
28
34
|
},
|
|
29
35
|
},
|
|
30
36
|
{
|
|
31
37
|
name: "tapd_create_iteration",
|
|
32
38
|
description: "Create a new iteration",
|
|
33
39
|
inputSchema: z.object({
|
|
34
|
-
workspace_id: z.number().describe(
|
|
40
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
35
41
|
name: z.string().describe("Iteration name"),
|
|
36
42
|
startdate: z.string().optional().describe("Start date"),
|
|
37
43
|
enddate: z.string().optional().describe("End date"),
|
|
@@ -40,10 +46,19 @@ export const iterationTools = [
|
|
|
40
46
|
creator: z.string().optional().describe("Creator (defaults to TAPD_NICK_NAME env, required by API)"),
|
|
41
47
|
workitem_type_id: z.string().optional().describe("Iteration category"),
|
|
42
48
|
plan_app_id: z.string().optional().describe("Plan application ID"),
|
|
49
|
+
entity_type: z.string().optional().describe("Entity type: iteration or release (default: iteration)"),
|
|
50
|
+
parent_id: z.string().optional().describe("Parent plan ID (for iteration under release)"),
|
|
51
|
+
label: z.string().optional().describe("Label, multiple labels separated by |"),
|
|
52
|
+
custom_field_one: z.string().optional().describe("Custom field 1 (supports 1-200)"),
|
|
43
53
|
}),
|
|
44
54
|
handler: async (client, params) => {
|
|
55
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
56
|
+
if (!workspaceId) {
|
|
57
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
58
|
+
}
|
|
45
59
|
const finalParams = {
|
|
46
60
|
...params,
|
|
61
|
+
workspace_id: workspaceId,
|
|
47
62
|
creator: params.creator ?? TapdClient.getNickName(),
|
|
48
63
|
};
|
|
49
64
|
return client.post("/iterations", finalParams);
|
|
@@ -54,19 +69,26 @@ export const iterationTools = [
|
|
|
54
69
|
description: "Update an existing iteration",
|
|
55
70
|
inputSchema: z.object({
|
|
56
71
|
id: z.string().describe("Iteration ID"),
|
|
57
|
-
workspace_id: z.number().describe(
|
|
72
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
58
73
|
name: z.string().optional().describe("Iteration name"),
|
|
59
74
|
startdate: z.string().optional().describe("Start date"),
|
|
60
75
|
enddate: z.string().optional().describe("End date"),
|
|
61
76
|
description: z.string().optional().describe("Iteration description"),
|
|
62
77
|
status: z.string().optional().describe("Status: open/done"),
|
|
78
|
+
label: z.string().optional().describe("Label, multiple labels separated by |"),
|
|
63
79
|
current_user: z.string().optional().describe("Current user for operation (defaults to TAPD_NICK_NAME env, required by API)"),
|
|
64
80
|
workitem_type_id: z.string().optional().describe("Iteration category"),
|
|
65
81
|
plan_app_id: z.string().optional().describe("Plan application ID"),
|
|
82
|
+
custom_field_one: z.string().optional().describe("Custom field 1 (supports 1-200)"),
|
|
66
83
|
}),
|
|
67
84
|
handler: async (client, params) => {
|
|
85
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
86
|
+
if (!workspaceId) {
|
|
87
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
88
|
+
}
|
|
68
89
|
const finalParams = {
|
|
69
90
|
...params,
|
|
91
|
+
workspace_id: workspaceId,
|
|
70
92
|
current_user: params.current_user ?? TapdClient.getNickName(),
|
|
71
93
|
};
|
|
72
94
|
return client.post("/iterations", finalParams);
|
|
@@ -76,7 +98,7 @@ export const iterationTools = [
|
|
|
76
98
|
name: "tapd_get_iteration_count",
|
|
77
99
|
description: "Get count of iterations matching filters",
|
|
78
100
|
inputSchema: z.object({
|
|
79
|
-
workspace_id: z.number().describe(
|
|
101
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
80
102
|
name: z.string().optional().describe("Iteration title, supports fuzzy matching"),
|
|
81
103
|
status: z.string().optional().describe("Status: open/done or custom Chinese status"),
|
|
82
104
|
startdate: z.string().optional().describe("Start date, supports time query"),
|
|
@@ -88,9 +110,80 @@ export const iterationTools = [
|
|
|
88
110
|
workitem_type_id: z.string().optional().describe("Iteration category"),
|
|
89
111
|
plan_app_id: z.string().optional().describe("Plan application ID"),
|
|
90
112
|
locker: z.string().optional().describe("Locked by user"),
|
|
113
|
+
custom_field_one: z.string().optional().describe("Custom field 1 (supports 1-200)"),
|
|
114
|
+
}),
|
|
115
|
+
handler: async (client, params) => {
|
|
116
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
117
|
+
if (!workspaceId) {
|
|
118
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
119
|
+
}
|
|
120
|
+
return client.get("/iterations/count", { ...params, workspace_id: workspaceId });
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
// 迭代变更历史
|
|
124
|
+
{
|
|
125
|
+
name: "tapd_get_iteration_changes",
|
|
126
|
+
description: "获取迭代变更历史",
|
|
127
|
+
inputSchema: z.object({
|
|
128
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
129
|
+
iteration_id: z.string().optional().describe("迭代ID"),
|
|
130
|
+
field: z.string().optional().describe("变更字段"),
|
|
131
|
+
user: z.string().optional().describe("变更人"),
|
|
132
|
+
created: z.string().optional().describe("创建时间"),
|
|
133
|
+
limit: z.number().optional().describe("返回数量,默认30,最大200"),
|
|
134
|
+
page: z.number().optional().describe("页码,默认1"),
|
|
135
|
+
order: z.string().optional().describe("排序"),
|
|
136
|
+
fields: z.string().optional().describe("返回字段"),
|
|
91
137
|
}),
|
|
92
138
|
handler: async (client, params) => {
|
|
93
|
-
|
|
139
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
140
|
+
if (!workspaceId) {
|
|
141
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
142
|
+
}
|
|
143
|
+
return client.get("/iterations/changes", { ...params, workspace_id: workspaceId });
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
// 锁定/解锁
|
|
147
|
+
{
|
|
148
|
+
name: "tapd_lock_iteration",
|
|
149
|
+
description: "锁定迭代",
|
|
150
|
+
inputSchema: z.object({
|
|
151
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
152
|
+
id: z.string().describe("迭代ID (必填)"),
|
|
153
|
+
current_user: z.string().optional().describe("操作人(默认当前用户)"),
|
|
154
|
+
}),
|
|
155
|
+
handler: async (client, params) => {
|
|
156
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
157
|
+
if (!workspaceId) {
|
|
158
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
159
|
+
}
|
|
160
|
+
const finalParams = {
|
|
161
|
+
...params,
|
|
162
|
+
workspace_id: workspaceId,
|
|
163
|
+
current_user: params.current_user ?? TapdClient.getNickName(),
|
|
164
|
+
};
|
|
165
|
+
return client.post("/iterations/lock", finalParams);
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: "tapd_unlock_iteration",
|
|
170
|
+
description: "解锁迭代",
|
|
171
|
+
inputSchema: z.object({
|
|
172
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
173
|
+
id: z.string().describe("迭代ID (必填)"),
|
|
174
|
+
current_user: z.string().optional().describe("操作人(默认当前用户)"),
|
|
175
|
+
}),
|
|
176
|
+
handler: async (client, params) => {
|
|
177
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
178
|
+
if (!workspaceId) {
|
|
179
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
180
|
+
}
|
|
181
|
+
const finalParams = {
|
|
182
|
+
...params,
|
|
183
|
+
workspace_id: workspaceId,
|
|
184
|
+
current_user: params.current_user ?? TapdClient.getNickName(),
|
|
185
|
+
};
|
|
186
|
+
return client.post("/iterations/unlock", finalParams);
|
|
94
187
|
},
|
|
95
188
|
},
|
|
96
189
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iteration.js","sourceRoot":"","sources":["../../src/tools/iteration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"iteration.js","sourceRoot":"","sources":["../../src/tools/iteration.ts"],"names":[],"mappings":"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"}
|