@zentao-hub/mcp 0.3.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/.env.example +13 -0
- package/LICENSE +21 -0
- package/README.md +231 -0
- package/README.zh-CN.md +225 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/bugs.d.ts +2 -0
- package/dist/tools/bugs.js +387 -0
- package/dist/tools/bugs.js.map +1 -0
- package/dist/tools/builds.d.ts +2 -0
- package/dist/tools/builds.js +54 -0
- package/dist/tools/builds.js.map +1 -0
- package/dist/tools/cases.d.ts +2 -0
- package/dist/tools/cases.js +121 -0
- package/dist/tools/cases.js.map +1 -0
- package/dist/tools/docs.d.ts +2 -0
- package/dist/tools/docs.js +75 -0
- package/dist/tools/docs.js.map +1 -0
- package/dist/tools/efforts.d.ts +2 -0
- package/dist/tools/efforts.js +65 -0
- package/dist/tools/efforts.js.map +1 -0
- package/dist/tools/executions.d.ts +2 -0
- package/dist/tools/executions.js +118 -0
- package/dist/tools/executions.js.map +1 -0
- package/dist/tools/helpers.d.ts +36 -0
- package/dist/tools/helpers.js +255 -0
- package/dist/tools/helpers.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.js +44 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/issues.d.ts +2 -0
- package/dist/tools/issues.js +89 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/products.d.ts +2 -0
- package/dist/tools/products.js +110 -0
- package/dist/tools/products.js.map +1 -0
- package/dist/tools/programs.d.ts +2 -0
- package/dist/tools/programs.js +46 -0
- package/dist/tools/programs.js.map +1 -0
- package/dist/tools/projects.d.ts +2 -0
- package/dist/tools/projects.js +80 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/releases.d.ts +2 -0
- package/dist/tools/releases.js +46 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/repos.d.ts +2 -0
- package/dist/tools/repos.js +42 -0
- package/dist/tools/repos.js.map +1 -0
- package/dist/tools/request.d.ts +2 -0
- package/dist/tools/request.js +41 -0
- package/dist/tools/request.js.map +1 -0
- package/dist/tools/risks.d.ts +2 -0
- package/dist/tools/risks.js +69 -0
- package/dist/tools/risks.js.map +1 -0
- package/dist/tools/stories.d.ts +2 -0
- package/dist/tools/stories.js +153 -0
- package/dist/tools/stories.js.map +1 -0
- package/dist/tools/tasks.d.ts +2 -0
- package/dist/tools/tasks.js +205 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/testreports.d.ts +2 -0
- package/dist/tools/testreports.js +47 -0
- package/dist/tools/testreports.js.map +1 -0
- package/dist/tools/todos.d.ts +2 -0
- package/dist/tools/todos.js +70 -0
- package/dist/tools/todos.js.map +1 -0
- package/dist/tools/users.d.ts +2 -0
- package/dist/tools/users.js +59 -0
- package/dist/tools/users.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { defineTool, extractList, extractTotal, paginationShape, pickDefined, } from "./helpers.js";
|
|
3
|
+
export function buildDocTools(ctx) {
|
|
4
|
+
const { client } = ctx;
|
|
5
|
+
return {
|
|
6
|
+
list_doclibs: defineTool({
|
|
7
|
+
description: "List document libraries (top-level grouping for ZenTao docs).",
|
|
8
|
+
schema: z.object({
|
|
9
|
+
type: z.enum(["product", "project", "execution", "custom", "all"]).optional(),
|
|
10
|
+
...paginationShape,
|
|
11
|
+
}),
|
|
12
|
+
handler: async (args) => {
|
|
13
|
+
const payload = await client.docs.listLibs({
|
|
14
|
+
type: args.type,
|
|
15
|
+
limit: args.limit ?? 20,
|
|
16
|
+
page: args.page,
|
|
17
|
+
});
|
|
18
|
+
return { total: extractTotal(payload) ?? extractList(payload).length, doclibs: extractList(payload) };
|
|
19
|
+
},
|
|
20
|
+
}),
|
|
21
|
+
list_doclib_docs: defineTool({
|
|
22
|
+
description: "List docs in one library.",
|
|
23
|
+
schema: z.object({
|
|
24
|
+
doclibId: z.number().int().positive(),
|
|
25
|
+
...paginationShape,
|
|
26
|
+
}),
|
|
27
|
+
handler: async (args) => {
|
|
28
|
+
const payload = await client.docs.listByLib(args.doclibId, {
|
|
29
|
+
limit: args.limit ?? 20,
|
|
30
|
+
page: args.page,
|
|
31
|
+
});
|
|
32
|
+
return { total: extractTotal(payload) ?? extractList(payload).length, docs: extractList(payload) };
|
|
33
|
+
},
|
|
34
|
+
}),
|
|
35
|
+
get_doc: defineTool({
|
|
36
|
+
description: "Fetch a doc's full content.",
|
|
37
|
+
schema: z.object({ docId: z.number().int().positive() }),
|
|
38
|
+
handler: async (args) => client.docs.get(args.docId),
|
|
39
|
+
}),
|
|
40
|
+
create_doc: defineTool({
|
|
41
|
+
description: "Create a new doc inside a library.",
|
|
42
|
+
schema: z.object({
|
|
43
|
+
doclibId: z.number().int().positive(),
|
|
44
|
+
title: z.string().min(1),
|
|
45
|
+
type: z.enum(["html", "markdown", "text", "url"]).optional(),
|
|
46
|
+
content: z.string().optional(),
|
|
47
|
+
keywords: z.string().optional(),
|
|
48
|
+
module: z.number().int().optional(),
|
|
49
|
+
}),
|
|
50
|
+
handler: async (args) => {
|
|
51
|
+
const { doclibId, ...rest } = args;
|
|
52
|
+
return client.docs.create(doclibId, pickDefined(rest));
|
|
53
|
+
},
|
|
54
|
+
}),
|
|
55
|
+
update_doc: defineTool({
|
|
56
|
+
description: "Update an existing doc.",
|
|
57
|
+
schema: z.object({
|
|
58
|
+
docId: z.number().int().positive(),
|
|
59
|
+
title: z.string().optional(),
|
|
60
|
+
content: z.string().optional(),
|
|
61
|
+
keywords: z.string().optional(),
|
|
62
|
+
}),
|
|
63
|
+
handler: async (args) => {
|
|
64
|
+
const { docId, ...rest } = args;
|
|
65
|
+
return client.docs.update(docId, pickDefined(rest));
|
|
66
|
+
},
|
|
67
|
+
}),
|
|
68
|
+
delete_doc: defineTool({
|
|
69
|
+
description: "Delete a doc. Irreversible.",
|
|
70
|
+
schema: z.object({ docId: z.number().int().positive() }),
|
|
71
|
+
handler: async (args) => client.docs.delete(args.docId),
|
|
72
|
+
}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { defineTool, extractList, extractTotal, paginationShape, pickDefined, } from "./helpers.js";
|
|
3
|
+
const EFFORT_OBJECT_TYPES = ["task", "bug", "story", "case", "todo"];
|
|
4
|
+
export function buildEffortTools(ctx) {
|
|
5
|
+
const { client } = ctx;
|
|
6
|
+
return {
|
|
7
|
+
log_effort: defineTool({
|
|
8
|
+
description: "Log effort (work hours) against a task / bug / story / case / todo. Records who worked, how long, and what was done. ZenTao rolls these up into the entity's consumed time.",
|
|
9
|
+
schema: z.object({
|
|
10
|
+
objectType: z.enum(EFFORT_OBJECT_TYPES),
|
|
11
|
+
objectId: z.number().int().positive().describe("ID of the task / bug / story / case / todo being worked on."),
|
|
12
|
+
date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).describe("Work date YYYY-MM-DD."),
|
|
13
|
+
consumed: z.number().positive().describe("Hours spent."),
|
|
14
|
+
left: z.number().nonnegative().optional().describe("Remaining hours estimate (relevant for tasks)."),
|
|
15
|
+
work: z.string().min(1).describe("Description of what was done."),
|
|
16
|
+
begin: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).optional().describe("Start time HH:MM[:SS]."),
|
|
17
|
+
end: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).optional().describe("End time HH:MM[:SS]."),
|
|
18
|
+
}),
|
|
19
|
+
handler: async (args) => client.efforts.create(pickDefined(args)),
|
|
20
|
+
}),
|
|
21
|
+
list_efforts: defineTool({
|
|
22
|
+
description: "List effort entries (work logs) visible to the authenticated user.",
|
|
23
|
+
schema: z.object({
|
|
24
|
+
account: z.string().optional().describe("Filter by user account."),
|
|
25
|
+
date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe("Specific date."),
|
|
26
|
+
objectType: z.enum(EFFORT_OBJECT_TYPES).optional(),
|
|
27
|
+
objectId: z.number().int().positive().optional(),
|
|
28
|
+
...paginationShape,
|
|
29
|
+
}),
|
|
30
|
+
handler: async (args) => {
|
|
31
|
+
const payload = await client.efforts.list({
|
|
32
|
+
account: args.account,
|
|
33
|
+
date: args.date,
|
|
34
|
+
objectType: args.objectType,
|
|
35
|
+
objectId: args.objectId,
|
|
36
|
+
limit: args.limit ?? 50,
|
|
37
|
+
page: args.page,
|
|
38
|
+
});
|
|
39
|
+
return { total: extractTotal(payload) ?? extractList(payload).length, efforts: extractList(payload) };
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
update_effort: defineTool({
|
|
43
|
+
description: "Edit a previously-logged effort entry.",
|
|
44
|
+
schema: z.object({
|
|
45
|
+
effortId: z.number().int().positive(),
|
|
46
|
+
date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
|
|
47
|
+
consumed: z.number().positive().optional(),
|
|
48
|
+
left: z.number().nonnegative().optional(),
|
|
49
|
+
work: z.string().optional(),
|
|
50
|
+
begin: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).optional(),
|
|
51
|
+
end: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).optional(),
|
|
52
|
+
}),
|
|
53
|
+
handler: async (args) => {
|
|
54
|
+
const { effortId, ...rest } = args;
|
|
55
|
+
return client.efforts.update(effortId, pickDefined(rest));
|
|
56
|
+
},
|
|
57
|
+
}),
|
|
58
|
+
delete_effort: defineTool({
|
|
59
|
+
description: "Delete an effort entry. Irreversible.",
|
|
60
|
+
schema: z.object({ effortId: z.number().int().positive() }),
|
|
61
|
+
handler: async (args) => client.efforts.delete(args.effortId),
|
|
62
|
+
}),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=efforts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"efforts.js","sourceRoot":"","sources":["../../src/tools/efforts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { EXECUTION_SUMMARY_KEYS, STORY_SUMMARY_KEYS, TASK_SUMMARY_KEYS, defineTool, extractList, extractTotal, paginationShape, pickDefined, summarize, } from "./helpers.js";
|
|
3
|
+
const EXECUTION_TYPES = ["sprint", "stage", "kanban"];
|
|
4
|
+
export function buildExecutionTools(ctx) {
|
|
5
|
+
const { client } = ctx;
|
|
6
|
+
return {
|
|
7
|
+
list_executions: defineTool({
|
|
8
|
+
description: "List executions visible to the user (across projects). For project-scoped view use list_project_executions.",
|
|
9
|
+
schema: z.object({
|
|
10
|
+
status: z.enum(["wait", "doing", "suspended", "closed", "all"]).optional(),
|
|
11
|
+
...paginationShape,
|
|
12
|
+
}),
|
|
13
|
+
handler: async (args) => {
|
|
14
|
+
const payload = await client.executions.list({
|
|
15
|
+
status: args.status,
|
|
16
|
+
limit: args.limit ?? 20,
|
|
17
|
+
page: args.page,
|
|
18
|
+
});
|
|
19
|
+
const executions = extractList(payload).map((e) => summarize(e, EXECUTION_SUMMARY_KEYS));
|
|
20
|
+
return { total: extractTotal(payload) ?? executions.length, executions };
|
|
21
|
+
},
|
|
22
|
+
}),
|
|
23
|
+
get_execution: defineTool({
|
|
24
|
+
description: "Fetch full details of an execution (sprint / iteration / kanban).",
|
|
25
|
+
schema: z.object({ executionId: z.number().int().positive() }),
|
|
26
|
+
handler: async (args) => client.executions.get(args.executionId),
|
|
27
|
+
}),
|
|
28
|
+
create_execution: defineTool({
|
|
29
|
+
description: "Create a new execution inside a project.",
|
|
30
|
+
schema: z.object({
|
|
31
|
+
project: z.number().int().positive().describe("Parent project ID."),
|
|
32
|
+
name: z.string().min(1),
|
|
33
|
+
code: z.string().optional(),
|
|
34
|
+
type: z.enum(EXECUTION_TYPES).optional(),
|
|
35
|
+
begin: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
|
|
36
|
+
end: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
|
|
37
|
+
PM: z.string().optional(),
|
|
38
|
+
desc: z.string().optional(),
|
|
39
|
+
products: z.array(z.number().int().positive()).optional(),
|
|
40
|
+
}),
|
|
41
|
+
handler: async (args) => client.executions.create(pickDefined(args)),
|
|
42
|
+
}),
|
|
43
|
+
update_execution: defineTool({
|
|
44
|
+
description: "Update an execution's fields.",
|
|
45
|
+
schema: z.object({
|
|
46
|
+
executionId: z.number().int().positive(),
|
|
47
|
+
name: z.string().optional(),
|
|
48
|
+
begin: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
|
|
49
|
+
end: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
|
|
50
|
+
PM: z.string().optional(),
|
|
51
|
+
desc: z.string().optional(),
|
|
52
|
+
status: z.enum(["wait", "doing", "suspended", "closed"]).optional(),
|
|
53
|
+
}),
|
|
54
|
+
handler: async (args) => {
|
|
55
|
+
const { executionId, ...rest } = args;
|
|
56
|
+
return client.executions.update(executionId, pickDefined(rest));
|
|
57
|
+
},
|
|
58
|
+
}),
|
|
59
|
+
start_execution: defineTool({
|
|
60
|
+
description: "Start an execution (status wait → doing).",
|
|
61
|
+
schema: z.object({
|
|
62
|
+
executionId: z.number().int().positive(),
|
|
63
|
+
comment: z.string().optional(),
|
|
64
|
+
}),
|
|
65
|
+
handler: async (args) => client.executions.start(args.executionId, pickDefined({ comment: args.comment })),
|
|
66
|
+
}),
|
|
67
|
+
close_execution: defineTool({
|
|
68
|
+
description: "Close an execution.",
|
|
69
|
+
schema: z.object({
|
|
70
|
+
executionId: z.number().int().positive(),
|
|
71
|
+
comment: z.string().optional(),
|
|
72
|
+
}),
|
|
73
|
+
handler: async (args) => client.executions.close(args.executionId, pickDefined({ comment: args.comment })),
|
|
74
|
+
}),
|
|
75
|
+
delete_execution: defineTool({
|
|
76
|
+
description: "Delete an execution. Irreversible.",
|
|
77
|
+
schema: z.object({ executionId: z.number().int().positive() }),
|
|
78
|
+
handler: async (args) => client.executions.delete(args.executionId),
|
|
79
|
+
}),
|
|
80
|
+
list_execution_tasks: defineTool({
|
|
81
|
+
description: "List tasks inside an execution.",
|
|
82
|
+
schema: z.object({
|
|
83
|
+
executionId: z.number().int().positive(),
|
|
84
|
+
status: z.enum(["wait", "doing", "done", "pause", "cancel", "closed", "all"]).optional(),
|
|
85
|
+
assignedTo: z.string().optional(),
|
|
86
|
+
...paginationShape,
|
|
87
|
+
}),
|
|
88
|
+
handler: async (args) => {
|
|
89
|
+
const payload = await client.executions.listTasks(args.executionId, {
|
|
90
|
+
status: args.status,
|
|
91
|
+
assignedTo: args.assignedTo,
|
|
92
|
+
limit: args.limit ?? 20,
|
|
93
|
+
page: args.page,
|
|
94
|
+
});
|
|
95
|
+
const tasks = extractList(payload).map((t) => summarize(t, TASK_SUMMARY_KEYS));
|
|
96
|
+
return { total: extractTotal(payload) ?? tasks.length, tasks };
|
|
97
|
+
},
|
|
98
|
+
}),
|
|
99
|
+
list_execution_stories: defineTool({
|
|
100
|
+
description: "List stories planned into an execution.",
|
|
101
|
+
schema: z.object({ executionId: z.number().int().positive(), ...paginationShape }),
|
|
102
|
+
handler: async (args) => {
|
|
103
|
+
const payload = await client.executions.listStories(args.executionId, {
|
|
104
|
+
limit: args.limit ?? 20,
|
|
105
|
+
page: args.page,
|
|
106
|
+
});
|
|
107
|
+
const stories = extractList(payload).map((s) => summarize(s, STORY_SUMMARY_KEYS));
|
|
108
|
+
return { total: extractTotal(payload) ?? stories.length, stories };
|
|
109
|
+
},
|
|
110
|
+
}),
|
|
111
|
+
list_execution_team: defineTool({
|
|
112
|
+
description: "List the team members assigned to an execution.",
|
|
113
|
+
schema: z.object({ executionId: z.number().int().positive() }),
|
|
114
|
+
handler: async (args) => client.executions.listTeam(args.executionId),
|
|
115
|
+
}),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=executions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executions.js","sourceRoot":"","sources":["../../src/tools/executions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EAIjB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CAAC,GAAmB;IACrD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACvB,OAAO;QACL,eAAe,EAAE,UAAU,CAAC;YAC1B,WAAW,EAAE,6GAA6G;YAC1H,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC1E,GAAG,eAAe;aACnB,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;oBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;gBACjG,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;YAC3E,CAAC;SACF,CAAC;QAEF,aAAa,EAAE,UAAU,CAAC;YACxB,WAAW,EAAE,mEAAmE;YAChF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;SACjE,CAAC;QAEF,gBAAgB,EAAE,UAAU,CAAC;YAC3B,WAAW,EAAE,0CAA0C;YACvD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;gBACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;gBACzD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;gBACvD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC3B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;aAC1D,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACrE,CAAC;QAEF,gBAAgB,EAAE,UAAU,CAAC;YAC3B,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;gBACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;gBACzD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;gBACvD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;aACpE,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;gBACtC,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC;SACF,CAAC;QAEF,eAAe,EAAE,UAAU,CAAC;YAC1B,WAAW,EAAE,2CAA2C;YACxD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;gBACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SACpF,CAAC;QAEF,eAAe,EAAE,UAAU,CAAC;YAC1B,WAAW,EAAE,qBAAqB;YAClC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;gBACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SACpF,CAAC;QAEF,gBAAgB,EAAE,UAAU,CAAC;YAC3B,WAAW,EAAE,oCAAoC;YACjD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;SACpE,CAAC;QAEF,oBAAoB,EAAE,UAAU,CAAC;YAC/B,WAAW,EAAE,iCAAiC;YAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;gBACxC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACxF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACjC,GAAG,eAAe;aACnB,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;oBAClE,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;oBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBACvF,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;YACjE,CAAC;SACF,CAAC;QAEF,sBAAsB,EAAE,UAAU,CAAC;YACjC,WAAW,EAAE,yCAAyC;YACtD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,eAAe,EAAE,CAAC;YAClF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;oBACpE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;oBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBAC1F,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrE,CAAC;SACF,CAAC;QAEF,mBAAmB,EAAE,UAAU,CAAC;YAC9B,WAAW,EAAE,iDAAiD;YAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;SACtE,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { ZentaoClient } from "@zentao-hub/sdk";
|
|
3
|
+
export type Json = Record<string, unknown>;
|
|
4
|
+
export interface ToolDef {
|
|
5
|
+
description: string;
|
|
6
|
+
schema: z.ZodObject<z.ZodRawShape>;
|
|
7
|
+
handler: (args: Record<string, unknown>) => Promise<unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface ToolFactoryCtx {
|
|
10
|
+
client: ZentaoClient;
|
|
11
|
+
}
|
|
12
|
+
export declare function defineTool<S extends z.ZodObject<z.ZodRawShape>>(def: {
|
|
13
|
+
description: string;
|
|
14
|
+
schema: S;
|
|
15
|
+
handler: (args: z.infer<S>) => Promise<unknown>;
|
|
16
|
+
}): ToolDef;
|
|
17
|
+
export declare function sanitizeFilename(s: string): string;
|
|
18
|
+
export declare function normalizeFileList(field: unknown): Json[];
|
|
19
|
+
export declare function extractList(payload: unknown): unknown[];
|
|
20
|
+
export declare function extractTotal(payload: unknown): number | undefined;
|
|
21
|
+
export declare function summarize(obj: Json, keys: readonly string[]): Json;
|
|
22
|
+
export declare const BUG_SUMMARY_KEYS: readonly ["id", "title", "product", "project", "execution", "status", "severity", "pri", "type", "openedBy", "openedDate", "assignedTo", "assignedDate", "resolvedBy", "resolvedDate", "resolution", "resolvedBuild", "closedBy", "closedDate"];
|
|
23
|
+
export declare const PRODUCT_SUMMARY_KEYS: readonly ["id", "name", "code", "status", "line", "type", "parent", "program", "PO", "QD", "RD"];
|
|
24
|
+
export declare const PROJECT_SUMMARY_KEYS: readonly ["id", "name", "code", "type", "status", "model", "begin", "end", "PM", "openedBy", "openedDate", "parent", "vision"];
|
|
25
|
+
export declare const EXECUTION_SUMMARY_KEYS: readonly ["id", "name", "code", "type", "status", "project", "begin", "end", "PM", "openedBy", "openedDate", "parent", "progress"];
|
|
26
|
+
export declare const STORY_SUMMARY_KEYS: readonly ["id", "title", "product", "branch", "module", "plan", "source", "status", "stage", "pri", "estimate", "openedBy", "openedDate", "assignedTo", "assignedDate", "reviewedBy", "closedBy", "closedDate", "closedReason"];
|
|
27
|
+
export declare const TASK_SUMMARY_KEYS: readonly ["id", "name", "execution", "project", "module", "type", "status", "pri", "estimate", "consumed", "left", "deadline", "openedBy", "openedDate", "assignedTo", "assignedDate", "finishedBy", "finishedDate", "closedBy", "closedDate"];
|
|
28
|
+
export declare const CASE_SUMMARY_KEYS: readonly ["id", "title", "product", "branch", "module", "type", "stage", "status", "pri", "story", "openedBy", "openedDate", "lastRunner", "lastRunDate", "lastRunResult"];
|
|
29
|
+
export declare const BUILD_SUMMARY_KEYS: readonly ["id", "name", "product", "branch", "project", "execution", "date", "scmPath", "filePath", "builder"];
|
|
30
|
+
export declare const RELEASE_SUMMARY_KEYS: readonly ["id", "name", "product", "branch", "build", "marker", "date", "status"];
|
|
31
|
+
export declare const USER_SUMMARY_KEYS: readonly ["id", "account", "realname", "role", "dept", "email", "phone", "status"];
|
|
32
|
+
export declare function pickDefined<T extends Json>(obj: T): Partial<T>;
|
|
33
|
+
export declare const paginationShape: {
|
|
34
|
+
readonly limit: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
readonly page: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
};
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function defineTool(def) {
|
|
3
|
+
return def;
|
|
4
|
+
}
|
|
5
|
+
export function sanitizeFilename(s) {
|
|
6
|
+
return (s
|
|
7
|
+
.replace(/[\\\/?%*:|"<>]/g, "_")
|
|
8
|
+
.replace(/[\x00-\x1f]+/g, "_")
|
|
9
|
+
.replace(/\s+/g, "_")
|
|
10
|
+
.replace(/^\.+/, "_")
|
|
11
|
+
.slice(0, 200) || "_");
|
|
12
|
+
}
|
|
13
|
+
export function normalizeFileList(field) {
|
|
14
|
+
if (Array.isArray(field))
|
|
15
|
+
return field;
|
|
16
|
+
if (field && typeof field === "object") {
|
|
17
|
+
return Object.values(field);
|
|
18
|
+
}
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
export function extractList(payload) {
|
|
22
|
+
if (Array.isArray(payload))
|
|
23
|
+
return payload;
|
|
24
|
+
if (payload && typeof payload === "object") {
|
|
25
|
+
const obj = payload;
|
|
26
|
+
for (const key of [
|
|
27
|
+
"bugs",
|
|
28
|
+
"products",
|
|
29
|
+
"projects",
|
|
30
|
+
"programs",
|
|
31
|
+
"executions",
|
|
32
|
+
"stories",
|
|
33
|
+
"tasks",
|
|
34
|
+
"cases",
|
|
35
|
+
"results",
|
|
36
|
+
"builds",
|
|
37
|
+
"releases",
|
|
38
|
+
"repos",
|
|
39
|
+
"branches",
|
|
40
|
+
"users",
|
|
41
|
+
"departments",
|
|
42
|
+
"docs",
|
|
43
|
+
"doclibs",
|
|
44
|
+
"modules",
|
|
45
|
+
"plans",
|
|
46
|
+
"team",
|
|
47
|
+
"actions",
|
|
48
|
+
"history",
|
|
49
|
+
"comments",
|
|
50
|
+
"issues",
|
|
51
|
+
"risks",
|
|
52
|
+
"todos",
|
|
53
|
+
"effort",
|
|
54
|
+
"data",
|
|
55
|
+
"list",
|
|
56
|
+
]) {
|
|
57
|
+
const v = obj[key];
|
|
58
|
+
if (Array.isArray(v))
|
|
59
|
+
return v;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
export function extractTotal(payload) {
|
|
65
|
+
if (payload && typeof payload === "object") {
|
|
66
|
+
const t = payload.total;
|
|
67
|
+
if (typeof t === "number")
|
|
68
|
+
return t;
|
|
69
|
+
if (typeof t === "string" && /^\d+$/.test(t))
|
|
70
|
+
return Number(t);
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
export function summarize(obj, keys) {
|
|
75
|
+
const out = {};
|
|
76
|
+
for (const k of keys)
|
|
77
|
+
if (k in obj)
|
|
78
|
+
out[k] = obj[k];
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
export const BUG_SUMMARY_KEYS = [
|
|
82
|
+
"id",
|
|
83
|
+
"title",
|
|
84
|
+
"product",
|
|
85
|
+
"project",
|
|
86
|
+
"execution",
|
|
87
|
+
"status",
|
|
88
|
+
"severity",
|
|
89
|
+
"pri",
|
|
90
|
+
"type",
|
|
91
|
+
"openedBy",
|
|
92
|
+
"openedDate",
|
|
93
|
+
"assignedTo",
|
|
94
|
+
"assignedDate",
|
|
95
|
+
"resolvedBy",
|
|
96
|
+
"resolvedDate",
|
|
97
|
+
"resolution",
|
|
98
|
+
"resolvedBuild",
|
|
99
|
+
"closedBy",
|
|
100
|
+
"closedDate",
|
|
101
|
+
];
|
|
102
|
+
export const PRODUCT_SUMMARY_KEYS = [
|
|
103
|
+
"id",
|
|
104
|
+
"name",
|
|
105
|
+
"code",
|
|
106
|
+
"status",
|
|
107
|
+
"line",
|
|
108
|
+
"type",
|
|
109
|
+
"parent",
|
|
110
|
+
"program",
|
|
111
|
+
"PO",
|
|
112
|
+
"QD",
|
|
113
|
+
"RD",
|
|
114
|
+
];
|
|
115
|
+
export const PROJECT_SUMMARY_KEYS = [
|
|
116
|
+
"id",
|
|
117
|
+
"name",
|
|
118
|
+
"code",
|
|
119
|
+
"type",
|
|
120
|
+
"status",
|
|
121
|
+
"model",
|
|
122
|
+
"begin",
|
|
123
|
+
"end",
|
|
124
|
+
"PM",
|
|
125
|
+
"openedBy",
|
|
126
|
+
"openedDate",
|
|
127
|
+
"parent",
|
|
128
|
+
"vision",
|
|
129
|
+
];
|
|
130
|
+
export const EXECUTION_SUMMARY_KEYS = [
|
|
131
|
+
"id",
|
|
132
|
+
"name",
|
|
133
|
+
"code",
|
|
134
|
+
"type",
|
|
135
|
+
"status",
|
|
136
|
+
"project",
|
|
137
|
+
"begin",
|
|
138
|
+
"end",
|
|
139
|
+
"PM",
|
|
140
|
+
"openedBy",
|
|
141
|
+
"openedDate",
|
|
142
|
+
"parent",
|
|
143
|
+
"progress",
|
|
144
|
+
];
|
|
145
|
+
export const STORY_SUMMARY_KEYS = [
|
|
146
|
+
"id",
|
|
147
|
+
"title",
|
|
148
|
+
"product",
|
|
149
|
+
"branch",
|
|
150
|
+
"module",
|
|
151
|
+
"plan",
|
|
152
|
+
"source",
|
|
153
|
+
"status",
|
|
154
|
+
"stage",
|
|
155
|
+
"pri",
|
|
156
|
+
"estimate",
|
|
157
|
+
"openedBy",
|
|
158
|
+
"openedDate",
|
|
159
|
+
"assignedTo",
|
|
160
|
+
"assignedDate",
|
|
161
|
+
"reviewedBy",
|
|
162
|
+
"closedBy",
|
|
163
|
+
"closedDate",
|
|
164
|
+
"closedReason",
|
|
165
|
+
];
|
|
166
|
+
export const TASK_SUMMARY_KEYS = [
|
|
167
|
+
"id",
|
|
168
|
+
"name",
|
|
169
|
+
"execution",
|
|
170
|
+
"project",
|
|
171
|
+
"module",
|
|
172
|
+
"type",
|
|
173
|
+
"status",
|
|
174
|
+
"pri",
|
|
175
|
+
"estimate",
|
|
176
|
+
"consumed",
|
|
177
|
+
"left",
|
|
178
|
+
"deadline",
|
|
179
|
+
"openedBy",
|
|
180
|
+
"openedDate",
|
|
181
|
+
"assignedTo",
|
|
182
|
+
"assignedDate",
|
|
183
|
+
"finishedBy",
|
|
184
|
+
"finishedDate",
|
|
185
|
+
"closedBy",
|
|
186
|
+
"closedDate",
|
|
187
|
+
];
|
|
188
|
+
export const CASE_SUMMARY_KEYS = [
|
|
189
|
+
"id",
|
|
190
|
+
"title",
|
|
191
|
+
"product",
|
|
192
|
+
"branch",
|
|
193
|
+
"module",
|
|
194
|
+
"type",
|
|
195
|
+
"stage",
|
|
196
|
+
"status",
|
|
197
|
+
"pri",
|
|
198
|
+
"story",
|
|
199
|
+
"openedBy",
|
|
200
|
+
"openedDate",
|
|
201
|
+
"lastRunner",
|
|
202
|
+
"lastRunDate",
|
|
203
|
+
"lastRunResult",
|
|
204
|
+
];
|
|
205
|
+
export const BUILD_SUMMARY_KEYS = [
|
|
206
|
+
"id",
|
|
207
|
+
"name",
|
|
208
|
+
"product",
|
|
209
|
+
"branch",
|
|
210
|
+
"project",
|
|
211
|
+
"execution",
|
|
212
|
+
"date",
|
|
213
|
+
"scmPath",
|
|
214
|
+
"filePath",
|
|
215
|
+
"builder",
|
|
216
|
+
];
|
|
217
|
+
export const RELEASE_SUMMARY_KEYS = [
|
|
218
|
+
"id",
|
|
219
|
+
"name",
|
|
220
|
+
"product",
|
|
221
|
+
"branch",
|
|
222
|
+
"build",
|
|
223
|
+
"marker",
|
|
224
|
+
"date",
|
|
225
|
+
"status",
|
|
226
|
+
];
|
|
227
|
+
export const USER_SUMMARY_KEYS = [
|
|
228
|
+
"id",
|
|
229
|
+
"account",
|
|
230
|
+
"realname",
|
|
231
|
+
"role",
|
|
232
|
+
"dept",
|
|
233
|
+
"email",
|
|
234
|
+
"phone",
|
|
235
|
+
"status",
|
|
236
|
+
];
|
|
237
|
+
export function pickDefined(obj) {
|
|
238
|
+
const out = {};
|
|
239
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
240
|
+
if (v !== undefined)
|
|
241
|
+
out[k] = v;
|
|
242
|
+
}
|
|
243
|
+
return out;
|
|
244
|
+
}
|
|
245
|
+
export const paginationShape = {
|
|
246
|
+
limit: z
|
|
247
|
+
.number()
|
|
248
|
+
.int()
|
|
249
|
+
.min(1)
|
|
250
|
+
.max(200)
|
|
251
|
+
.optional()
|
|
252
|
+
.describe("Page size, default 20."),
|
|
253
|
+
page: z.number().int().min(1).optional().describe("1-based page number."),
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { buildBugTools } from "./bugs.js";
|
|
2
|
+
import { buildBuildTools } from "./builds.js";
|
|
3
|
+
import { buildCaseTools } from "./cases.js";
|
|
4
|
+
import { buildDocTools } from "./docs.js";
|
|
5
|
+
import { buildEffortTools } from "./efforts.js";
|
|
6
|
+
import { buildExecutionTools } from "./executions.js";
|
|
7
|
+
import { buildIssueTools } from "./issues.js";
|
|
8
|
+
import { buildProductTools } from "./products.js";
|
|
9
|
+
import { buildProgramTools } from "./programs.js";
|
|
10
|
+
import { buildProjectTools } from "./projects.js";
|
|
11
|
+
import { buildReleaseTools } from "./releases.js";
|
|
12
|
+
import { buildRepoTools } from "./repos.js";
|
|
13
|
+
import { buildRequestTools } from "./request.js";
|
|
14
|
+
import { buildRiskTools } from "./risks.js";
|
|
15
|
+
import { buildStoryTools } from "./stories.js";
|
|
16
|
+
import { buildTaskTools } from "./tasks.js";
|
|
17
|
+
import { buildTestReportTools } from "./testreports.js";
|
|
18
|
+
import { buildTodoTools } from "./todos.js";
|
|
19
|
+
import { buildUserTools } from "./users.js";
|
|
20
|
+
export function buildTools(client) {
|
|
21
|
+
const ctx = { client };
|
|
22
|
+
return {
|
|
23
|
+
...buildUserTools(ctx),
|
|
24
|
+
...buildProductTools(ctx),
|
|
25
|
+
...buildProjectTools(ctx),
|
|
26
|
+
...buildProgramTools(ctx),
|
|
27
|
+
...buildExecutionTools(ctx),
|
|
28
|
+
...buildStoryTools(ctx),
|
|
29
|
+
...buildTaskTools(ctx),
|
|
30
|
+
...buildBugTools(ctx),
|
|
31
|
+
...buildCaseTools(ctx),
|
|
32
|
+
...buildTestReportTools(ctx),
|
|
33
|
+
...buildBuildTools(ctx),
|
|
34
|
+
...buildReleaseTools(ctx),
|
|
35
|
+
...buildRepoTools(ctx),
|
|
36
|
+
...buildDocTools(ctx),
|
|
37
|
+
...buildEffortTools(ctx),
|
|
38
|
+
...buildTodoTools(ctx),
|
|
39
|
+
...buildIssueTools(ctx),
|
|
40
|
+
...buildRiskTools(ctx),
|
|
41
|
+
...buildRequestTools(ctx),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,MAAM,GAAG,GAAmB,EAAE,MAAM,EAAE,CAAC;IACvC,OAAO;QACL,GAAG,cAAc,CAAC,GAAG,CAAC;QACtB,GAAG,iBAAiB,CAAC,GAAG,CAAC;QACzB,GAAG,iBAAiB,CAAC,GAAG,CAAC;QACzB,GAAG,iBAAiB,CAAC,GAAG,CAAC;QACzB,GAAG,mBAAmB,CAAC,GAAG,CAAC;QAC3B,GAAG,eAAe,CAAC,GAAG,CAAC;QACvB,GAAG,cAAc,CAAC,GAAG,CAAC;QACtB,GAAG,aAAa,CAAC,GAAG,CAAC;QACrB,GAAG,cAAc,CAAC,GAAG,CAAC;QACtB,GAAG,oBAAoB,CAAC,GAAG,CAAC;QAC5B,GAAG,eAAe,CAAC,GAAG,CAAC;QACvB,GAAG,iBAAiB,CAAC,GAAG,CAAC;QACzB,GAAG,cAAc,CAAC,GAAG,CAAC;QACtB,GAAG,aAAa,CAAC,GAAG,CAAC;QACrB,GAAG,gBAAgB,CAAC,GAAG,CAAC;QACxB,GAAG,cAAc,CAAC,GAAG,CAAC;QACtB,GAAG,eAAe,CAAC,GAAG,CAAC;QACvB,GAAG,cAAc,CAAC,GAAG,CAAC;QACtB,GAAG,iBAAiB,CAAC,GAAG,CAAC;KAC1B,CAAC;AACJ,CAAC"}
|