@xihe-lab/tapd-core 2.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/LICENSE +190 -0
  2. package/dist/advisor/advisor.test.d.ts +2 -0
  3. package/dist/advisor/advisor.test.d.ts.map +1 -0
  4. package/dist/advisor/advisor.test.js +102 -0
  5. package/dist/advisor/advisor.test.js.map +1 -0
  6. package/dist/advisor/index.d.ts +19 -0
  7. package/dist/advisor/index.d.ts.map +1 -0
  8. package/dist/advisor/index.js +240 -0
  9. package/dist/advisor/index.js.map +1 -0
  10. package/dist/config/config.d.ts +43 -0
  11. package/dist/config/config.d.ts.map +1 -0
  12. package/dist/config/config.js +221 -0
  13. package/dist/config/config.js.map +1 -0
  14. package/dist/config/config.test.d.ts +2 -0
  15. package/dist/config/config.test.d.ts.map +1 -0
  16. package/dist/config/config.test.js +229 -0
  17. package/dist/config/config.test.js.map +1 -0
  18. package/dist/index.d.ts +11 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +10 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/registry/cli-meta.d.ts +4 -0
  23. package/dist/registry/cli-meta.d.ts.map +1 -0
  24. package/dist/registry/cli-meta.js +104 -0
  25. package/dist/registry/cli-meta.js.map +1 -0
  26. package/dist/registry/debug-commands.d.ts +2 -0
  27. package/dist/registry/debug-commands.d.ts.map +1 -0
  28. package/dist/registry/debug-commands.js +47 -0
  29. package/dist/registry/debug-commands.js.map +1 -0
  30. package/dist/registry/derive-command.d.ts +6 -0
  31. package/dist/registry/derive-command.d.ts.map +1 -0
  32. package/dist/registry/derive-command.js +69 -0
  33. package/dist/registry/derive-command.js.map +1 -0
  34. package/dist/registry/long-id-guard.d.ts +3 -0
  35. package/dist/registry/long-id-guard.d.ts.map +1 -0
  36. package/dist/registry/long-id-guard.js +39 -0
  37. package/dist/registry/long-id-guard.js.map +1 -0
  38. package/dist/registry/long-id-guard.test.d.ts +2 -0
  39. package/dist/registry/long-id-guard.test.d.ts.map +1 -0
  40. package/dist/registry/long-id-guard.test.js +224 -0
  41. package/dist/registry/long-id-guard.test.js.map +1 -0
  42. package/dist/registry/registry.d.ts +43 -0
  43. package/dist/registry/registry.d.ts.map +1 -0
  44. package/dist/registry/registry.js +131 -0
  45. package/dist/registry/registry.js.map +1 -0
  46. package/dist/registry/registry.test.d.ts +2 -0
  47. package/dist/registry/registry.test.d.ts.map +1 -0
  48. package/dist/registry/registry.test.js +220 -0
  49. package/dist/registry/registry.test.js.map +1 -0
  50. package/dist/registry/richtext-manifests.generated.d.ts +3 -0
  51. package/dist/registry/richtext-manifests.generated.d.ts.map +1 -0
  52. package/dist/registry/richtext-manifests.generated.js +98 -0
  53. package/dist/registry/richtext-manifests.generated.js.map +1 -0
  54. package/dist/registry/richtext.d.ts +6 -0
  55. package/dist/registry/richtext.d.ts.map +1 -0
  56. package/dist/registry/richtext.js +64 -0
  57. package/dist/registry/richtext.js.map +1 -0
  58. package/dist/registry/richtext.test.d.ts +2 -0
  59. package/dist/registry/richtext.test.d.ts.map +1 -0
  60. package/dist/registry/richtext.test.js +210 -0
  61. package/dist/registry/richtext.test.js.map +1 -0
  62. package/dist/registry/write-policy.d.ts +3 -0
  63. package/dist/registry/write-policy.d.ts.map +1 -0
  64. package/dist/registry/write-policy.js +5 -0
  65. package/dist/registry/write-policy.js.map +1 -0
  66. package/dist/schema/export.d.ts +12 -0
  67. package/dist/schema/export.d.ts.map +1 -0
  68. package/dist/schema/export.js +39 -0
  69. package/dist/schema/export.js.map +1 -0
  70. package/dist/schema/export.test.d.ts +2 -0
  71. package/dist/schema/export.test.d.ts.map +1 -0
  72. package/dist/schema/export.test.js +68 -0
  73. package/dist/schema/export.test.js.map +1 -0
  74. package/dist/sdk-routes.d.ts +9 -0
  75. package/dist/sdk-routes.d.ts.map +1 -0
  76. package/dist/sdk-routes.js +148 -0
  77. package/dist/sdk-routes.js.map +1 -0
  78. package/dist/tapd-client.d.ts +99 -0
  79. package/dist/tapd-client.d.ts.map +1 -0
  80. package/dist/tapd-client.js +252 -0
  81. package/dist/tapd-client.js.map +1 -0
  82. package/dist/tools/attachment.d.ts +3 -0
  83. package/dist/tools/attachment.d.ts.map +1 -0
  84. package/dist/tools/attachment.js +99 -0
  85. package/dist/tools/attachment.js.map +1 -0
  86. package/dist/tools/board.d.ts +3 -0
  87. package/dist/tools/board.d.ts.map +1 -0
  88. package/dist/tools/board.js +98 -0
  89. package/dist/tools/board.js.map +1 -0
  90. package/dist/tools/bug.d.ts +3 -0
  91. package/dist/tools/bug.d.ts.map +1 -0
  92. package/dist/tools/bug.js +619 -0
  93. package/dist/tools/bug.js.map +1 -0
  94. package/dist/tools/changes.d.ts +3 -0
  95. package/dist/tools/changes.d.ts.map +1 -0
  96. package/dist/tools/changes.js +73 -0
  97. package/dist/tools/changes.js.map +1 -0
  98. package/dist/tools/comment.d.ts +3 -0
  99. package/dist/tools/comment.d.ts.map +1 -0
  100. package/dist/tools/comment.js +93 -0
  101. package/dist/tools/comment.js.map +1 -0
  102. package/dist/tools/custom-fields.d.ts +3 -0
  103. package/dist/tools/custom-fields.d.ts.map +1 -0
  104. package/dist/tools/custom-fields.js +105 -0
  105. package/dist/tools/custom-fields.js.map +1 -0
  106. package/dist/tools/image.d.ts +3 -0
  107. package/dist/tools/image.d.ts.map +1 -0
  108. package/dist/tools/image.js +23 -0
  109. package/dist/tools/image.js.map +1 -0
  110. package/dist/tools/index.d.ts +3 -0
  111. package/dist/tools/index.d.ts.map +1 -0
  112. package/dist/tools/index.js +55 -0
  113. package/dist/tools/index.js.map +1 -0
  114. package/dist/tools/iteration.d.ts +3 -0
  115. package/dist/tools/iteration.d.ts.map +1 -0
  116. package/dist/tools/iteration.js +190 -0
  117. package/dist/tools/iteration.js.map +1 -0
  118. package/dist/tools/md-to-html.test.d.ts +2 -0
  119. package/dist/tools/md-to-html.test.d.ts.map +1 -0
  120. package/dist/tools/md-to-html.test.js +125 -0
  121. package/dist/tools/md-to-html.test.js.map +1 -0
  122. package/dist/tools/mini-comment.d.ts +3 -0
  123. package/dist/tools/mini-comment.d.ts.map +1 -0
  124. package/dist/tools/mini-comment.js +74 -0
  125. package/dist/tools/mini-comment.js.map +1 -0
  126. package/dist/tools/mini-item.d.ts +3 -0
  127. package/dist/tools/mini-item.d.ts.map +1 -0
  128. package/dist/tools/mini-item.js +166 -0
  129. package/dist/tools/mini-item.js.map +1 -0
  130. package/dist/tools/mini-workspace.d.ts +3 -0
  131. package/dist/tools/mini-workspace.d.ts.map +1 -0
  132. package/dist/tools/mini-workspace.js +43 -0
  133. package/dist/tools/mini-workspace.js.map +1 -0
  134. package/dist/tools/program.d.ts +3 -0
  135. package/dist/tools/program.d.ts.map +1 -0
  136. package/dist/tools/program.js +27 -0
  137. package/dist/tools/program.js.map +1 -0
  138. package/dist/tools/relations.d.ts +3 -0
  139. package/dist/tools/relations.d.ts.map +1 -0
  140. package/dist/tools/relations.js +68 -0
  141. package/dist/tools/relations.js.map +1 -0
  142. package/dist/tools/release.d.ts +3 -0
  143. package/dist/tools/release.d.ts.map +1 -0
  144. package/dist/tools/release.js +250 -0
  145. package/dist/tools/release.js.map +1 -0
  146. package/dist/tools/report.d.ts +3 -0
  147. package/dist/tools/report.d.ts.map +1 -0
  148. package/dist/tools/report.js +38 -0
  149. package/dist/tools/report.js.map +1 -0
  150. package/dist/tools/settings.d.ts +3 -0
  151. package/dist/tools/settings.d.ts.map +1 -0
  152. package/dist/tools/settings.js +409 -0
  153. package/dist/tools/settings.js.map +1 -0
  154. package/dist/tools/source.d.ts +3 -0
  155. package/dist/tools/source.d.ts.map +1 -0
  156. package/dist/tools/source.js +69 -0
  157. package/dist/tools/source.js.map +1 -0
  158. package/dist/tools/story.d.ts +3 -0
  159. package/dist/tools/story.d.ts.map +1 -0
  160. package/dist/tools/story.js +680 -0
  161. package/dist/tools/story.js.map +1 -0
  162. package/dist/tools/task.d.ts +3 -0
  163. package/dist/tools/task.d.ts.map +1 -0
  164. package/dist/tools/task.js +267 -0
  165. package/dist/tools/task.js.map +1 -0
  166. package/dist/tools/test.d.ts +3 -0
  167. package/dist/tools/test.d.ts.map +1 -0
  168. package/dist/tools/test.js +564 -0
  169. package/dist/tools/test.js.map +1 -0
  170. package/dist/tools/timesheet.d.ts +3 -0
  171. package/dist/tools/timesheet.d.ts.map +1 -0
  172. package/dist/tools/timesheet.js +118 -0
  173. package/dist/tools/timesheet.js.map +1 -0
  174. package/dist/tools/user.d.ts +3 -0
  175. package/dist/tools/user.d.ts.map +1 -0
  176. package/dist/tools/user.js +57 -0
  177. package/dist/tools/user.js.map +1 -0
  178. package/dist/tools/utility.d.ts +3 -0
  179. package/dist/tools/utility.d.ts.map +1 -0
  180. package/dist/tools/utility.js +165 -0
  181. package/dist/tools/utility.js.map +1 -0
  182. package/dist/tools/wiki.d.ts +3 -0
  183. package/dist/tools/wiki.d.ts.map +1 -0
  184. package/dist/tools/wiki.js +227 -0
  185. package/dist/tools/wiki.js.map +1 -0
  186. package/dist/tools/workflow.d.ts +3 -0
  187. package/dist/tools/workflow.d.ts.map +1 -0
  188. package/dist/tools/workflow.js +116 -0
  189. package/dist/tools/workflow.js.map +1 -0
  190. package/dist/tools/workspace.d.ts +3 -0
  191. package/dist/tools/workspace.d.ts.map +1 -0
  192. package/dist/tools/workspace.js +137 -0
  193. package/dist/tools/workspace.js.map +1 -0
  194. package/dist/tools/zz-acceptance-echo.d.ts +3 -0
  195. package/dist/tools/zz-acceptance-echo.d.ts.map +1 -0
  196. package/dist/tools/zz-acceptance-echo.js +9 -0
  197. package/dist/tools/zz-acceptance-echo.js.map +1 -0
  198. package/dist/types.d.ts +34 -0
  199. package/dist/types.d.ts.map +1 -0
  200. package/dist/types.js +2 -0
  201. package/dist/types.js.map +1 -0
  202. package/package.json +49 -0
@@ -0,0 +1,118 @@
1
+ import { z } from 'zod';
2
+ import { TapdClient } from '../tapd-client.js';
3
+ export const timesheetTools = [
4
+ {
5
+ name: "tapd_get_timesheets",
6
+ description: "Get timesheet records from TAPD",
7
+ inputSchema: z.object({
8
+ workspace_id: z.number().optional().describe("项目ID(可省略,使用默认配置)"),
9
+ id: z.string().optional().describe('Timesheet ID, supports multiple IDs;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
10
+ entity_type: z.string().optional().describe("Entity type: story, task, or bug"),
11
+ entity_id: z.string().optional().describe('Entity ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
12
+ timespent: z.string().optional().describe("Hours spent"),
13
+ spentdate: z.string().optional().describe("Spent date, supports time query"),
14
+ modified: z.string().optional().describe("Last modified time, supports time query"),
15
+ owner: z.string().optional().describe("Timesheet owner"),
16
+ created: z.string().optional().describe("Creation time, supports time query"),
17
+ memo: z.string().optional().describe("Work description"),
18
+ is_delete: z.number().optional().describe("Is deleted: 0-active (default), 1-deleted"),
19
+ workflow_step: z.string().optional().describe("Workflow step name"),
20
+ relation_type: z.string().optional().describe("Relation type: entity or workflow"),
21
+ include_parent_story_timesheet: z.number().optional().describe("Include parent story timesheet: 0-no, 1-yes"),
22
+ limit: z.number().optional().describe("Number of results to return, max 200"),
23
+ page: z.number().optional().describe("Page number, default 1"),
24
+ order: z.string().optional().describe("Sort order, e.g., 'created desc'"),
25
+ fields: z.string().optional().describe("Comma-separated list of fields to return"),
26
+ }),
27
+ handler: async (client, params) => {
28
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
29
+ if (!workspaceId) {
30
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
31
+ }
32
+ return client.get("/timesheets", { ...params, workspace_id: workspaceId });
33
+ },
34
+ },
35
+ {
36
+ name: "tapd_create_timesheet",
37
+ description: "Create a new timesheet entry",
38
+ inputSchema: z.object({
39
+ workspace_id: z.number().optional().describe("项目ID(可省略,使用默认配置)"),
40
+ owner: z.string().optional().describe("Owner (defaults to TAPD_NICK_NAME env)"),
41
+ entity_type: z.string().describe("Type: story, task, or bug"),
42
+ entity_id: z.string().describe('ID of the story, bug, or task;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
43
+ spentdate: z.string().describe("Date of work (YYYY-MM-DD)"),
44
+ timespent: z.number().describe("Hours spent"),
45
+ memo: z.string().optional().describe("Work description"),
46
+ timeremain: z.string().optional().describe("Remaining hours"),
47
+ cc: z.string().optional().describe("Copy to users, separated by |"),
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
+ const finalParams = {
55
+ ...params,
56
+ workspace_id: workspaceId,
57
+ owner: params.owner ?? TapdClient.getNickName(),
58
+ };
59
+ return client.post("/timesheets", finalParams);
60
+ },
61
+ },
62
+ {
63
+ name: "tapd_get_timesheet_count",
64
+ description: "Get the count of timesheet records matching criteria",
65
+ inputSchema: z.object({
66
+ workspace_id: z.number().optional().describe("项目ID(可省略,使用默认配置)"),
67
+ entity_type: z.string().optional().describe("Entity type: story, task, or bug"),
68
+ entity_id: z.string().optional().describe('Entity ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
69
+ owner: z.string().optional().describe("Timesheet owner"),
70
+ spentdate: z.string().optional().describe("Spent date, supports time query"),
71
+ created: z.string().optional().describe("Creation time, supports time query"),
72
+ modified: z.string().optional().describe("Last modified time, supports time query"),
73
+ is_delete: z.number().optional().describe("Is deleted"),
74
+ }),
75
+ handler: async (client, params) => {
76
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
77
+ if (!workspaceId) {
78
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
79
+ }
80
+ return client.get("/timesheets/count", { ...params, workspace_id: workspaceId });
81
+ },
82
+ },
83
+ {
84
+ name: "tapd_update_timesheet",
85
+ description: "更新工时记录",
86
+ inputSchema: z.object({
87
+ workspace_id: z.number().optional().describe("项目ID(可省略,使用默认配置)"),
88
+ id: z.string().describe('工时记录ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
89
+ timespent: z.number().optional().describe("工时"),
90
+ memo: z.string().optional().describe("工作描述"),
91
+ spentdate: z.string().optional().describe("工作日期 YYYY-MM-DD"),
92
+ timeremain: z.string().optional().describe("剩余工时"),
93
+ }),
94
+ handler: async (client, params) => {
95
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
96
+ if (!workspaceId) {
97
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
98
+ }
99
+ return client.post("/timesheets", { ...params, workspace_id: workspaceId });
100
+ },
101
+ },
102
+ {
103
+ name: "tapd_delete_timesheets",
104
+ description: "删除工时记录",
105
+ inputSchema: z.object({
106
+ workspace_id: z.number().optional().describe("项目ID(可省略,使用默认配置)"),
107
+ id: z.string().describe('工时记录ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
108
+ }),
109
+ handler: async (client, params) => {
110
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
111
+ if (!workspaceId) {
112
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
113
+ }
114
+ return client.post("/timesheets/delete", { ...params, workspace_id: workspaceId });
115
+ },
116
+ },
117
+ ];
118
+ //# sourceMappingURL=timesheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timesheet.js","sourceRoot":"","sources":["../../src/tools/timesheet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDef } from '../types.js';
2
+ export declare const userTools: ToolDef[];
3
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/tools/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,SAAS,EAAE,OAAO,EAqD9B,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ import { TapdClient } from '../tapd-client.js';
3
+ export const userTools = [
4
+ {
5
+ name: "tapd_get_personal_setting",
6
+ description: "Get personal settings for the current user",
7
+ inputSchema: z.object({
8
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
9
+ nick: z.string().describe("用户唯一标识 (必填)"),
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("/users/get_personal_setting", { ...params, workspace_id: workspaceId });
17
+ },
18
+ },
19
+ {
20
+ name: "tapd_get_roles",
21
+ description: "Get role list for a workspace",
22
+ inputSchema: z.object({
23
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
24
+ }),
25
+ handler: async (client, params) => {
26
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
27
+ if (!workspaceId) {
28
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
29
+ }
30
+ return client.get("/roles", { ...params, workspace_id: workspaceId });
31
+ },
32
+ },
33
+ {
34
+ name: "tapd_get_third_user_mapping",
35
+ description: "获取第三方用户映射",
36
+ inputSchema: z.object({
37
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
38
+ third_type: z.string().optional().describe("第三方类型"),
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("/users/third_user_mapping", { ...params, workspace_id: workspaceId });
46
+ },
47
+ },
48
+ {
49
+ name: "tapd_get_current_user",
50
+ description: "获取当前认证用户的信息",
51
+ inputSchema: z.object({}),
52
+ handler: async (client) => {
53
+ return client.get("/users/info");
54
+ },
55
+ },
56
+ ];
57
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/tools/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;SACzC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,MAAM,EAAE,EAAE;YAC5C,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,6BAA6B,EAAE,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7F,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACjE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,MAAM,EAAE,EAAE;YAC5C,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,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QACxE,CAAC;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,WAAW;QACxB,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,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;SACpD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,MAAM,EAAE,EAAE;YAC5C,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,2BAA2B,EAAE,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3F,CAAC;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,MAAkB,EAAE,EAAE;YACpC,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDef } from '../types.js';
2
+ export declare const utilityTools: ToolDef[];
3
+ //# sourceMappingURL=utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/tools/utility.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiG3C,eAAO,MAAM,YAAY,EAAE,OAAO,EAwFjC,CAAC"}
@@ -0,0 +1,165 @@
1
+ import { z } from 'zod';
2
+ import MarkdownIt from 'markdown-it';
3
+ import TurndownService from 'turndown';
4
+ import { gfm } from 'turndown-plugin-gfm';
5
+ import { TapdClient } from '../tapd-client.js';
6
+ const markdownIt = new MarkdownIt({ html: false, breaks: true });
7
+ const turndown = new TurndownService({ headingStyle: 'atx', codeBlockStyle: 'fenced' });
8
+ turndown.use(gfm);
9
+ const mdToHtmlSchema = z.object({
10
+ content: z.string().describe('Markdown 内容'),
11
+ });
12
+ const htmlToMdSchema = z.object({
13
+ html: z.string().describe('TAPD 富文本 HTML(description/comment 等)'),
14
+ });
15
+ // eslint-disable-next-line @typescript-eslint/require-await
16
+ const mdToHtmlHandler = async (_client, params) => {
17
+ return { html: markdownIt.render(params.content) };
18
+ };
19
+ // eslint-disable-next-line @typescript-eslint/require-await
20
+ const htmlToMdHandler = async (_client, params) => {
21
+ return { markdown: turndown.turndown(params.html) };
22
+ };
23
+ const shortToLongIdSchema = z.object({
24
+ short_id: z.string().describe('短 ID(纯数字,≤9 位);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
25
+ workspace_id: z.union([z.string(), z.number()]).describe('项目 ID'),
26
+ is_cloud: z.boolean().optional().default(true).describe('是否云环境(默认 true)'),
27
+ });
28
+ // eslint-disable-next-line @typescript-eslint/require-await
29
+ const shortToLongIdHandler = async (_client, params) => {
30
+ const result = TapdClient.toLongId(params.short_id, params.workspace_id, params.is_cloud);
31
+ return {
32
+ short_id: params.short_id,
33
+ workspace_id: params.workspace_id,
34
+ long_id: result,
35
+ is_converted: result !== params.short_id,
36
+ };
37
+ };
38
+ /**
39
+ * Run promises with limited concurrency
40
+ */
41
+ async function runWithConcurrency(tasks, maxConcurrency) {
42
+ const results = [];
43
+ const executing = [];
44
+ for (const task of tasks) {
45
+ const promise = task().then(result => {
46
+ results.push(result);
47
+ });
48
+ executing.push(promise);
49
+ if (executing.length >= maxConcurrency) {
50
+ await Promise.race(executing);
51
+ // Remove completed promises
52
+ for (let i = executing.length - 1; i >= 0; i--) {
53
+ const p = executing[i];
54
+ const settled = await Promise.race([p, Promise.resolve('pending')]);
55
+ if (settled !== 'pending') {
56
+ void executing.splice(i, 1);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ await Promise.all(executing);
62
+ return results;
63
+ }
64
+ const batchFetchStoriesSchema = z.object({
65
+ ids: z.array(z.string()).describe('需求 ID 列表(支持短 ID 和长 ID)'),
66
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
67
+ fields: z.string().optional().describe('返回字段'),
68
+ max_workers: z.number().optional().default(3).describe('最大并发数(默认 3)'),
69
+ });
70
+ const batchFetchBugsSchema = z.object({
71
+ ids: z.array(z.string()).describe('缺陷 ID 列表(支持短 ID 和长 ID)'),
72
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
73
+ fields: z.string().optional().describe('返回字段'),
74
+ max_workers: z.number().optional().default(3).describe('最大并发数(默认 3)'),
75
+ });
76
+ const batchFetchTasksSchema = z.object({
77
+ ids: z.array(z.string()).describe('任务 ID 列表(支持短 ID 和长 ID)'),
78
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
79
+ fields: z.string().optional().describe('返回字段'),
80
+ max_workers: z.number().optional().default(3).describe('最大并发数(默认 3)'),
81
+ });
82
+ export const utilityTools = [
83
+ {
84
+ name: 'tapd_md_to_html',
85
+ description: '将 Markdown 转为 TAPD 富文本 HTML(description/comment 字段专用),模型产 md 省 token,先转再传。',
86
+ inputSchema: mdToHtmlSchema,
87
+ handler: mdToHtmlHandler,
88
+ },
89
+ {
90
+ name: 'tapd_html_to_md',
91
+ description: '将 TAPD 富文本 HTML 转为 Markdown(读取 description/comment 后消费专用),HTML 转 md 省 input token。',
92
+ inputSchema: htmlToMdSchema,
93
+ handler: htmlToMdHandler,
94
+ },
95
+ {
96
+ name: 'tapd_short_to_long_id',
97
+ description: '将短 ID 转换为长 ID。规则:纯数字且 ≤9 位视为短 ID,云环境前缀 "11",补零到 9 位拼接 workspace_id。',
98
+ inputSchema: shortToLongIdSchema,
99
+ handler: shortToLongIdHandler,
100
+ },
101
+ {
102
+ name: 'tapd_batch_fetch_stories',
103
+ description: '批量并发获取多个需求详情。支持短 ID 自动转换,默认并发数为 3。',
104
+ inputSchema: batchFetchStoriesSchema,
105
+ handler: async (client, params) => {
106
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
107
+ if (!workspaceId) {
108
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
109
+ }
110
+ const maxConcurrency = params.max_workers ?? 3;
111
+ const tasks = params.ids.map(id => () => {
112
+ const longId = TapdClient.toLongId(id, workspaceId);
113
+ return client.get('/stories', {
114
+ workspace_id: workspaceId,
115
+ id: longId,
116
+ ...(params.fields ? { fields: params.fields } : {}),
117
+ });
118
+ });
119
+ return runWithConcurrency(tasks, maxConcurrency);
120
+ },
121
+ },
122
+ {
123
+ name: 'tapd_batch_fetch_bugs',
124
+ description: '批量并发获取多个缺陷详情。支持短 ID 自动转换,默认并发数为 3。',
125
+ inputSchema: batchFetchBugsSchema,
126
+ handler: async (client, params) => {
127
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
128
+ if (!workspaceId) {
129
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
130
+ }
131
+ const maxConcurrency = params.max_workers ?? 3;
132
+ const tasks = params.ids.map(id => () => {
133
+ const longId = TapdClient.toLongId(id, workspaceId);
134
+ return client.get('/bugs', {
135
+ workspace_id: workspaceId,
136
+ id: longId,
137
+ ...(params.fields ? { fields: params.fields } : {}),
138
+ });
139
+ });
140
+ return runWithConcurrency(tasks, maxConcurrency);
141
+ },
142
+ },
143
+ {
144
+ name: 'tapd_batch_fetch_tasks',
145
+ description: '批量并发获取多个任务详情。支持短 ID 自动转换,默认并发数为 3。',
146
+ inputSchema: batchFetchTasksSchema,
147
+ handler: async (client, params) => {
148
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
149
+ if (!workspaceId) {
150
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
151
+ }
152
+ const maxConcurrency = params.max_workers ?? 3;
153
+ const tasks = params.ids.map(id => () => {
154
+ const longId = TapdClient.toLongId(id, workspaceId);
155
+ return client.get('/tasks', {
156
+ workspace_id: workspaceId,
157
+ id: longId,
158
+ ...(params.fields ? { fields: params.fields } : {}),
159
+ });
160
+ });
161
+ return runWithConcurrency(tasks, maxConcurrency);
162
+ },
163
+ },
164
+ ];
165
+ //# sourceMappingURL=utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/tools/utility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDef } from '../types.js';
2
+ export declare const wikiTools: ToolDef[];
3
+ //# sourceMappingURL=wiki.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki.d.ts","sourceRoot":"","sources":["../../src/tools/wiki.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,SAAS,EAAE,OAAO,EA+N9B,CAAC"}
@@ -0,0 +1,227 @@
1
+ import { z } from 'zod';
2
+ import { TapdClient } from '../tapd-client.js';
3
+ export const wikiTools = [
4
+ {
5
+ name: "tapd_get_wikis",
6
+ description: "Get wiki pages from TAPD",
7
+ inputSchema: z.object({
8
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
9
+ id: z.string().optional().describe('Wiki ID, supports multiple IDs;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
10
+ name: z.string().optional().describe("Wiki page name, supports fuzzy matching"),
11
+ creator: z.string().optional().describe("Creator name"),
12
+ modifier: z.string().optional().describe("Last modifier name"),
13
+ note: z.string().optional().describe("Note/remark"),
14
+ view_count: z.string().optional().describe("View count"),
15
+ created: z.string().optional().describe("Creation time, supports time query"),
16
+ modified: z.string().optional().describe("Last modified time, supports time query"),
17
+ status: z.string().optional().describe("Status of the wiki page"),
18
+ category_id: z.string().optional().describe('Category ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
19
+ limit: z.number().optional().describe("Number of results to return, max 200"),
20
+ page: z.number().optional().describe("Page number, default 1"),
21
+ order: z.string().optional().describe("Sort order, e.g., 'created desc'"),
22
+ fields: z.string().optional().describe("Comma-separated list of fields to return"),
23
+ }),
24
+ handler: async (client, params) => {
25
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
26
+ if (!workspaceId) {
27
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
28
+ }
29
+ return client.get("/tapd_wikis", { ...params, workspace_id: workspaceId });
30
+ },
31
+ },
32
+ {
33
+ name: "tapd_create_wiki",
34
+ description: "Create a new wiki page in TAPD",
35
+ inputSchema: z.object({
36
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
37
+ name: z.string().describe("Wiki page title"),
38
+ creator: z.string().optional().describe("Creator name (defaults to TAPD_NICK_NAME env)"),
39
+ description: z.string().optional().describe("Rich text content"),
40
+ markdown_description: z.string().optional().describe("Markdown content"),
41
+ note: z.string().optional().describe("Note/remark"),
42
+ parent_wiki_id: z.string().optional().describe('Parent wiki ID for nested pages;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
43
+ }),
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
+ }
49
+ const creator = params.creator ?? process.env.TAPD_NICK_NAME;
50
+ if (!creator) {
51
+ throw new Error("creator is required. Set TAPD_NICK_NAME environment variable or provide creator parameter.");
52
+ }
53
+ return client.post("/tapd_wikis", {
54
+ ...params,
55
+ workspace_id: workspaceId,
56
+ creator,
57
+ });
58
+ },
59
+ },
60
+ {
61
+ name: "tapd_update_wiki",
62
+ description: "Update an existing wiki page in TAPD",
63
+ inputSchema: z.object({
64
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
65
+ id: z.string().describe('Wiki ID (required);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
66
+ name: z.string().optional().describe("Wiki page title"),
67
+ modifier: z.string().optional().describe("Modifier name (defaults to TAPD_NICK_NAME env)"),
68
+ description: z.string().optional().describe("Rich text content"),
69
+ markdown_description: z.string().optional().describe("Markdown content"),
70
+ note: z.string().optional().describe("Note/remark"),
71
+ parent_wiki_id: z.string().optional().describe('Parent wiki ID for nested pages;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
72
+ }),
73
+ handler: async (client, params) => {
74
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
75
+ if (!workspaceId) {
76
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
77
+ }
78
+ const modifier = params.modifier ?? process.env.TAPD_NICK_NAME;
79
+ if (!modifier) {
80
+ throw new Error("modifier is required. Set TAPD_NICK_NAME environment variable or provide modifier parameter.");
81
+ }
82
+ return client.post("/tapd_wikis", {
83
+ ...params,
84
+ workspace_id: workspaceId,
85
+ modifier,
86
+ });
87
+ },
88
+ },
89
+ {
90
+ name: "tapd_get_wiki_count",
91
+ description: "Get the count of wiki pages matching filters",
92
+ inputSchema: z.object({
93
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
94
+ id: z.string().optional().describe('Wiki ID, supports multiple IDs;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
95
+ name: z.string().optional().describe("Wiki page name, supports fuzzy matching"),
96
+ creator: z.string().optional().describe("Creator name"),
97
+ modifier: z.string().optional().describe("Last modifier name"),
98
+ note: z.string().optional().describe("Note/remark"),
99
+ view_count: z.string().optional().describe("View count"),
100
+ created: z.string().optional().describe("Creation time, supports time query"),
101
+ modified: z.string().optional().describe("Last modified time, supports time query"),
102
+ status: z.string().optional().describe("Status of the wiki page"),
103
+ category_id: z.string().optional().describe('Category ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
104
+ }),
105
+ handler: async (client, params) => {
106
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
107
+ if (!workspaceId) {
108
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
109
+ }
110
+ return client.get("/tapd_wikis/count", { ...params, workspace_id: workspaceId });
111
+ },
112
+ },
113
+ {
114
+ name: "tapd_get_wiki_attachments_count",
115
+ description: "Get the count of wiki attachments",
116
+ inputSchema: z.object({
117
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
118
+ wiki_id: z.string().optional().describe('Wiki ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
119
+ }),
120
+ handler: async (client, params) => {
121
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
122
+ if (!workspaceId) {
123
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
124
+ }
125
+ return client.get("/tapd_wikis_attachments/count", { ...params, workspace_id: workspaceId });
126
+ },
127
+ },
128
+ {
129
+ name: "tapd_get_wiki_drawios",
130
+ description: "Get DrawIO data from wiki pages",
131
+ inputSchema: z.object({
132
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
133
+ id: z.string().optional().describe('Wiki ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
134
+ }),
135
+ handler: async (client, params) => {
136
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
137
+ if (!workspaceId) {
138
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
139
+ }
140
+ return client.get("/tapd_wikis_drawios", { ...params, workspace_id: workspaceId });
141
+ },
142
+ },
143
+ {
144
+ name: "tapd_get_wiki_entity_permissions",
145
+ description: "Get entity permissions of wiki pages",
146
+ inputSchema: z.object({
147
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
148
+ id: z.string().optional().describe('Wiki ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
149
+ }),
150
+ handler: async (client, params) => {
151
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
152
+ if (!workspaceId) {
153
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
154
+ }
155
+ return client.get("/tapd_wikis_entity_permissions", { ...params, workspace_id: workspaceId });
156
+ },
157
+ },
158
+ {
159
+ name: "tapd_get_wiki_followers",
160
+ description: "Get followers of wiki pages",
161
+ inputSchema: z.object({
162
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
163
+ wiki_id: z.string().optional().describe('Wiki ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
164
+ user: z.string().optional().describe("User name"),
165
+ limit: z.number().optional().describe("Number of results to return, max 200"),
166
+ page: z.number().optional().describe("Page number, default 1"),
167
+ }),
168
+ handler: async (client, params) => {
169
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
170
+ if (!workspaceId) {
171
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
172
+ }
173
+ return client.get("/tapd_wikis_followers", { ...params, workspace_id: workspaceId });
174
+ },
175
+ },
176
+ {
177
+ name: "tapd_get_wiki_followers_count",
178
+ description: "Get the count of wiki followers",
179
+ inputSchema: z.object({
180
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
181
+ wiki_id: z.string().optional().describe('Wiki ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
182
+ user: z.string().optional().describe("User name"),
183
+ }),
184
+ handler: async (client, params) => {
185
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
186
+ if (!workspaceId) {
187
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
188
+ }
189
+ return client.get("/tapd_wikis_followers/count", { ...params, workspace_id: workspaceId });
190
+ },
191
+ },
192
+ {
193
+ name: "tapd_get_wiki_tags",
194
+ description: "Get tags of wiki pages",
195
+ inputSchema: z.object({
196
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
197
+ wiki_id: z.string().optional().describe('Wiki ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
198
+ name: z.string().optional().describe("Tag name"),
199
+ limit: z.number().optional().describe("Number of results to return, max 200"),
200
+ page: z.number().optional().describe("Page number, default 1"),
201
+ }),
202
+ handler: async (client, params) => {
203
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
204
+ if (!workspaceId) {
205
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
206
+ }
207
+ return client.get("/tapd_wikis_tags", { ...params, workspace_id: workspaceId });
208
+ },
209
+ },
210
+ {
211
+ name: "tapd_get_wiki_tags_count",
212
+ description: "Get the count of wiki tags",
213
+ inputSchema: z.object({
214
+ workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
215
+ wiki_id: z.string().optional().describe('Wiki ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
216
+ name: z.string().optional().describe("Tag name"),
217
+ }),
218
+ handler: async (client, params) => {
219
+ const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
220
+ if (!workspaceId) {
221
+ throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
222
+ }
223
+ return client.get("/tapd_wikis_tags/count", { ...params, workspace_id: workspaceId });
224
+ },
225
+ },
226
+ ];
227
+ //# sourceMappingURL=wiki.js.map