@cloudglab/zentao-cli 0.1.3

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 (187) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/MCP_ZENTAO_REBUILD_PLAN.md +505 -0
  3. package/README.md +319 -0
  4. package/dist/api/bug.d.ts +32 -0
  5. package/dist/api/bug.js +85 -0
  6. package/dist/api/bug.js.map +1 -0
  7. package/dist/api/build.d.ts +31 -0
  8. package/dist/api/build.js +21 -0
  9. package/dist/api/build.js.map +1 -0
  10. package/dist/api/comment.d.ts +20 -0
  11. package/dist/api/comment.js +47 -0
  12. package/dist/api/comment.js.map +1 -0
  13. package/dist/api/development-context.d.ts +14 -0
  14. package/dist/api/development-context.js +35 -0
  15. package/dist/api/development-context.js.map +1 -0
  16. package/dist/api/execution.d.ts +46 -0
  17. package/dist/api/execution.js +47 -0
  18. package/dist/api/execution.js.map +1 -0
  19. package/dist/api/index.d.ts +43 -0
  20. package/dist/api/index.js +46 -0
  21. package/dist/api/index.js.map +1 -0
  22. package/dist/api/plan.d.ts +18 -0
  23. package/dist/api/plan.js +33 -0
  24. package/dist/api/plan.js.map +1 -0
  25. package/dist/api/product.d.ts +7 -0
  26. package/dist/api/product.js +14 -0
  27. package/dist/api/product.js.map +1 -0
  28. package/dist/api/program.d.ts +7 -0
  29. package/dist/api/program.js +14 -0
  30. package/dist/api/program.js.map +1 -0
  31. package/dist/api/project.d.ts +8 -0
  32. package/dist/api/project.js +15 -0
  33. package/dist/api/project.js.map +1 -0
  34. package/dist/api/relation.d.ts +17 -0
  35. package/dist/api/relation.js +66 -0
  36. package/dist/api/relation.js.map +1 -0
  37. package/dist/api/release.d.ts +6 -0
  38. package/dist/api/release.js +11 -0
  39. package/dist/api/release.js.map +1 -0
  40. package/dist/api/search.d.ts +17 -0
  41. package/dist/api/search.js +168 -0
  42. package/dist/api/search.js.map +1 -0
  43. package/dist/api/statistics.d.ts +13 -0
  44. package/dist/api/statistics.js +67 -0
  45. package/dist/api/statistics.js.map +1 -0
  46. package/dist/api/story.d.ts +14 -0
  47. package/dist/api/story.js +23 -0
  48. package/dist/api/story.js.map +1 -0
  49. package/dist/api/task.d.ts +17 -0
  50. package/dist/api/task.js +37 -0
  51. package/dist/api/task.js.map +1 -0
  52. package/dist/api/testcase.d.ts +51 -0
  53. package/dist/api/testcase.js +31 -0
  54. package/dist/api/testcase.js.map +1 -0
  55. package/dist/api/testtask.d.ts +41 -0
  56. package/dist/api/testtask.js +34 -0
  57. package/dist/api/testtask.js.map +1 -0
  58. package/dist/api/user.d.ts +6 -0
  59. package/dist/api/user.js +9 -0
  60. package/dist/api/user.js.map +1 -0
  61. package/dist/bin/zentao-dev.d.ts +2 -0
  62. package/dist/bin/zentao-dev.js +8 -0
  63. package/dist/bin/zentao-dev.js.map +1 -0
  64. package/dist/bin/zentao-pm.d.ts +2 -0
  65. package/dist/bin/zentao-pm.js +8 -0
  66. package/dist/bin/zentao-pm.js.map +1 -0
  67. package/dist/bin/zentao-qa.d.ts +2 -0
  68. package/dist/bin/zentao-qa.js +8 -0
  69. package/dist/bin/zentao-qa.js.map +1 -0
  70. package/dist/bin/zentao.d.ts +2 -0
  71. package/dist/bin/zentao.js +8 -0
  72. package/dist/bin/zentao.js.map +1 -0
  73. package/dist/cli.d.ts +1 -0
  74. package/dist/cli.js +74 -0
  75. package/dist/cli.js.map +1 -0
  76. package/dist/core/api-provider.d.ts +3 -0
  77. package/dist/core/api-provider.js +17 -0
  78. package/dist/core/api-provider.js.map +1 -0
  79. package/dist/core/auth.d.ts +13 -0
  80. package/dist/core/auth.js +90 -0
  81. package/dist/core/auth.js.map +1 -0
  82. package/dist/core/cli-registry.d.ts +18 -0
  83. package/dist/core/cli-registry.js +128 -0
  84. package/dist/core/cli-registry.js.map +1 -0
  85. package/dist/core/config.d.ts +7 -0
  86. package/dist/core/config.js +58 -0
  87. package/dist/core/config.js.map +1 -0
  88. package/dist/core/http.d.ts +12 -0
  89. package/dist/core/http.js +50 -0
  90. package/dist/core/http.js.map +1 -0
  91. package/dist/core/list-result.d.ts +14 -0
  92. package/dist/core/list-result.js +59 -0
  93. package/dist/core/list-result.js.map +1 -0
  94. package/dist/core/pagination.d.ts +9 -0
  95. package/dist/core/pagination.js +12 -0
  96. package/dist/core/pagination.js.map +1 -0
  97. package/dist/core/roles.d.ts +4 -0
  98. package/dist/core/roles.js +13 -0
  99. package/dist/core/roles.js.map +1 -0
  100. package/dist/core/tool-registry.d.ts +3 -0
  101. package/dist/core/tool-registry.js +77 -0
  102. package/dist/core/tool-registry.js.map +1 -0
  103. package/dist/core/write-guard.d.ts +25 -0
  104. package/dist/core/write-guard.js +53 -0
  105. package/dist/core/write-guard.js.map +1 -0
  106. package/dist/index.d.ts +3 -0
  107. package/dist/index.js +3 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/tools/bug.d.ts +2 -0
  110. package/dist/tools/bug.js +41 -0
  111. package/dist/tools/bug.js.map +1 -0
  112. package/dist/tools/build.d.ts +2 -0
  113. package/dist/tools/build.js +8 -0
  114. package/dist/tools/build.js.map +1 -0
  115. package/dist/tools/comment.d.ts +2 -0
  116. package/dist/tools/comment.js +23 -0
  117. package/dist/tools/comment.js.map +1 -0
  118. package/dist/tools/context.d.ts +2 -0
  119. package/dist/tools/context.js +11 -0
  120. package/dist/tools/context.js.map +1 -0
  121. package/dist/tools/execution.d.ts +2 -0
  122. package/dist/tools/execution.js +21 -0
  123. package/dist/tools/execution.js.map +1 -0
  124. package/dist/tools/init.d.ts +2 -0
  125. package/dist/tools/init.js +28 -0
  126. package/dist/tools/init.js.map +1 -0
  127. package/dist/tools/phase3a.d.ts +4 -0
  128. package/dist/tools/phase3a.js +123 -0
  129. package/dist/tools/phase3a.js.map +1 -0
  130. package/dist/tools/phase3b.d.ts +5 -0
  131. package/dist/tools/phase3b.js +161 -0
  132. package/dist/tools/phase3b.js.map +1 -0
  133. package/dist/tools/plan.d.ts +2 -0
  134. package/dist/tools/plan.js +14 -0
  135. package/dist/tools/plan.js.map +1 -0
  136. package/dist/tools/product.d.ts +2 -0
  137. package/dist/tools/product.js +10 -0
  138. package/dist/tools/product.js.map +1 -0
  139. package/dist/tools/profile.d.ts +2 -0
  140. package/dist/tools/profile.js +6 -0
  141. package/dist/tools/profile.js.map +1 -0
  142. package/dist/tools/program.d.ts +2 -0
  143. package/dist/tools/program.js +8 -0
  144. package/dist/tools/program.js.map +1 -0
  145. package/dist/tools/project.d.ts +2 -0
  146. package/dist/tools/project.js +13 -0
  147. package/dist/tools/project.js.map +1 -0
  148. package/dist/tools/relation.d.ts +2 -0
  149. package/dist/tools/relation.js +13 -0
  150. package/dist/tools/relation.js.map +1 -0
  151. package/dist/tools/release.d.ts +2 -0
  152. package/dist/tools/release.js +7 -0
  153. package/dist/tools/release.js.map +1 -0
  154. package/dist/tools/search.d.ts +2 -0
  155. package/dist/tools/search.js +18 -0
  156. package/dist/tools/search.js.map +1 -0
  157. package/dist/tools/shared.d.ts +2 -0
  158. package/dist/tools/shared.js +11 -0
  159. package/dist/tools/shared.js.map +1 -0
  160. package/dist/tools/statistics.d.ts +2 -0
  161. package/dist/tools/statistics.js +10 -0
  162. package/dist/tools/statistics.js.map +1 -0
  163. package/dist/tools/story.d.ts +2 -0
  164. package/dist/tools/story.js +14 -0
  165. package/dist/tools/story.js.map +1 -0
  166. package/dist/tools/task.d.ts +2 -0
  167. package/dist/tools/task.js +48 -0
  168. package/dist/tools/task.js.map +1 -0
  169. package/dist/tools/testcase.d.ts +2 -0
  170. package/dist/tools/testcase.js +16 -0
  171. package/dist/tools/testcase.js.map +1 -0
  172. package/dist/tools/testtask.d.ts +2 -0
  173. package/dist/tools/testtask.js +14 -0
  174. package/dist/tools/testtask.js.map +1 -0
  175. package/dist/types/common.d.ts +15 -0
  176. package/dist/types/common.js +2 -0
  177. package/dist/types/common.js.map +1 -0
  178. package/dist/types/zentao.d.ts +42 -0
  179. package/dist/types/zentao.js +2 -0
  180. package/dist/types/zentao.js.map +1 -0
  181. package/dist/utils/json.d.ts +2 -0
  182. package/dist/utils/json.js +27 -0
  183. package/dist/utils/json.js.map +1 -0
  184. package/dist/version.d.ts +1 -0
  185. package/dist/version.js +2 -0
  186. package/dist/version.js.map +1 -0
  187. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase3b.js","sourceRoot":"","sources":["../../src/tools/phase3b.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerPlanTools(server: CliRegistry): void;
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerPlanTools(server) {
5
+ server.tool('getProductPlans', {
6
+ productId: z.number().int().positive(),
7
+ branch: z.string().optional(),
8
+ status: z.string().optional(),
9
+ query: z.string().optional().describe('禅道 18.5 REST v1 支持的计划搜索关键字'),
10
+ order: z.string().optional().describe('排序字段,例如 id_desc'),
11
+ }, async (input) => jsonResult(await getApi().plan.getProductPlans(input)));
12
+ server.tool('getPlanDetail', { planId: z.number().int().positive() }, async ({ planId }) => jsonResult(await getApi().plan.getPlanDetail(planId)));
13
+ }
14
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/tools/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACzD,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5E,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerProductTools(server: CliRegistry): void;
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerProductTools(server) {
5
+ server.tool('getProducts', {}, async () => jsonResult(await getApi().product.getProducts()));
6
+ server.tool('getProductDetail', {
7
+ productId: z.number().int().positive().describe('禅道产品 ID。若用户问的是业务产品的线上/客户反馈/售后/生产问题,不要先用业务产品名找禅道产品;应固定查询“市场和售后问题跟踪”产品,再按 Bug 模块匹配真实业务产品。'),
8
+ }, async ({ productId }) => jsonResult(await getApi().product.getProductDetail(productId)));
9
+ }
10
+ //# sourceMappingURL=product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/tools/product.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,MAAM,CAAC,IAAI,CACT,aAAa,EACb,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC7D,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yFAAyF,CAAC;KAC3I,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CACxF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerProfileTools(server: CliRegistry): void;
@@ -0,0 +1,6 @@
1
+ import { getApi } from '../core/api-provider.js';
2
+ import { jsonResult } from './shared.js';
3
+ export function registerProfileTools(server) {
4
+ server.tool('getMyProfile', {}, async () => jsonResult(await getApi().user.getMyProfile()));
5
+ }
6
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/tools/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerProgramTools(server: CliRegistry): void;
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerProgramTools(server) {
5
+ server.tool('getPrograms', { order: z.string().optional() }, async ({ order }) => jsonResult(await getApi().program.getPrograms(order)));
6
+ server.tool('getProgramDetail', { programId: z.number().int().positive() }, async ({ programId }) => jsonResult(await getApi().program.getProgramDetail(programId)));
7
+ }
8
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/tools/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzI,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvK,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerProjectTools(server: CliRegistry): void;
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerProjectTools(server) {
5
+ server.tool('getProjects', {
6
+ page: z.number().int().positive().optional(),
7
+ limit: z.number().int().positive().max(100).optional(),
8
+ }, async (input) => jsonResult(await getApi().project.getProjects(input)));
9
+ server.tool('getProjectDetail', {
10
+ projectId: z.number().int().positive(),
11
+ }, async ({ projectId }) => jsonResult(await getApi().project.getProjectDetail(projectId)));
12
+ }
13
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/tools/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,MAAM,CAAC,IAAI,CACT,aAAa,EACb;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KACvD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CACvE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACvC,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CACxF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerRelationTools(server: CliRegistry): void;
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerRelationTools(server) {
5
+ server.tool('getStoryRelatedBugs', {
6
+ storyId: z.number().int().positive(),
7
+ productId: z.number().int().positive().optional().describe('可选。若 story 详情没有直接返回 bugs,则用产品 Bug 列表兜底过滤。'),
8
+ }, async ({ storyId, productId }) => jsonResult(await getApi().relation.getStoryRelatedBugs(storyId, productId)));
9
+ server.tool('getBugRelatedStory', {
10
+ bugId: z.number().int().positive(),
11
+ }, async ({ bugId }) => jsonResult(await getApi().relation.getBugRelatedStory(bugId)));
12
+ }
13
+ //# sourceMappingURL=relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/tools/relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,qBAAqB,CAAC,MAAmB;IACvD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACxG,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAC9G,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACnC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CACnF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerReleaseTools(server: CliRegistry): void;
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerReleaseTools(server) {
5
+ server.tool('getProjectReleases', { projectId: z.number().int().positive() }, async ({ projectId }) => jsonResult(await getApi().release.getProjectReleases(projectId)));
6
+ }
7
+ //# sourceMappingURL=release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/tools/release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3K,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerSearchTools(server: CliRegistry): void;
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerSearchTools(server) {
5
+ server.tool('searchStories', {
6
+ keyword: z.string().min(1),
7
+ productId: z.number().int().positive().optional(),
8
+ limit: z.number().int().positive().max(100).optional().default(20),
9
+ deepSearch: z.boolean().optional().default(false),
10
+ }, async (input) => jsonResult(await getApi().search.searchStories(input)));
11
+ server.tool('searchStoriesByProductName', {
12
+ productName: z.string().min(1),
13
+ keyword: z.string().min(1),
14
+ limit: z.number().int().positive().max(100).optional().default(10),
15
+ deepSearch: z.boolean().optional().default(false),
16
+ }, async ({ productName, keyword, limit, deepSearch }) => jsonResult(await getApi().search.searchStoriesByProductName(productName, keyword, { limit, deepSearch })));
17
+ }
18
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;QAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAClD,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5E,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;QACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAClD,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACvK,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { JsonContentResult } from '../types/common.js';
2
+ export declare function jsonResult(value: unknown): JsonContentResult;
@@ -0,0 +1,11 @@
1
+ export function jsonResult(value) {
2
+ return {
3
+ content: [
4
+ {
5
+ type: 'text',
6
+ text: JSON.stringify(value, null, 2),
7
+ },
8
+ ],
9
+ };
10
+ }
11
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerStatisticsTools(server: CliRegistry): void;
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerStatisticsTools(server) {
5
+ server.tool('getMyTaskStatistics', {}, async () => jsonResult(await getApi().statistics.getMyTaskStatistics()));
6
+ server.tool('getMyBugStatistics', {
7
+ productId: z.number().int().positive().optional().describe('可选。禅道产品 ID。不传时统计跨所有产品指派给我的 Bug;传入时收窄到指定产品。'),
8
+ }, async ({ productId }) => jsonResult(await getApi().statistics.getMyBugStatistics(productId)));
9
+ }
10
+ //# sourceMappingURL=statistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/tools/statistics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,uBAAuB,CAAC,MAAmB;IACzD,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAEhH,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACzG,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAC7F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerStoryTools(server: CliRegistry): void;
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerStoryTools(server) {
5
+ server.tool('getProductStories', {
6
+ productId: z.number().int().positive(),
7
+ page: z.number().int().positive().optional(),
8
+ limit: z.number().int().positive().max(100).optional(),
9
+ }, async (input) => jsonResult(await getApi().story.getProductStories(input)));
10
+ server.tool('getStoryDetail', {
11
+ storyId: z.number().int().positive(),
12
+ }, async ({ storyId }) => jsonResult(await getApi().story.getStoryDetail(storyId)));
13
+ }
14
+ //# sourceMappingURL=story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/tools/story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAAC,MAAmB;IACpD,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KACvD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAC3E,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACrC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAChF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerTaskTools(server: CliRegistry): void;
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { previewOrAssertWriteAllowed } from '../core/write-guard.js';
4
+ import { jsonResult } from './shared.js';
5
+ export function registerTaskTools(server) {
6
+ server.tool('getMyTasks', {
7
+ status: z.enum(['wait', 'doing', 'done', 'cancel', 'closed', 'all']).optional().default('all'),
8
+ page: z.number().int().positive().optional(),
9
+ limit: z.number().int().positive().max(100).optional(),
10
+ }, async (input) => jsonResult(await getApi().task.getMyTasks(input)));
11
+ server.tool('getTaskDetail', {
12
+ taskId: z.number().int().positive(),
13
+ }, async ({ taskId }) => jsonResult(await getApi().task.getTaskDetail(taskId)));
14
+ server.tool('updateTask', {
15
+ taskId: z.number().int().positive(),
16
+ name: z.string().optional(),
17
+ status: z.string().optional(),
18
+ assignedTo: z.string().optional(),
19
+ estimate: z.number().optional(),
20
+ consumed: z.number().optional(),
21
+ left: z.number().optional(),
22
+ deadline: z.string().optional(),
23
+ comment: z.string().optional(),
24
+ confirm: z.boolean().optional().default(false),
25
+ }, async ({ taskId, confirm, ...update }) => {
26
+ const payload = { taskId, update };
27
+ const preview = previewOrAssertWriteAllowed({ action: 'updateTask', confirm, payload });
28
+ if (preview)
29
+ return jsonResult(preview);
30
+ return jsonResult(await getApi().task.updateTask(taskId, update));
31
+ });
32
+ server.tool('finishTask', {
33
+ taskId: z.number().int().positive(),
34
+ currentConsumed: z.number().nonnegative().describe('本次消耗工时。禅道 18.5 /tasks/{id}/finish 必填'),
35
+ realStarted: z.string().min(1).describe('实际开始时间或日期。禅道 18.5 /tasks/{id}/finish 必填'),
36
+ finishedDate: z.string().min(1).describe('完成时间或日期。禅道 18.5 /tasks/{id}/finish 必填'),
37
+ assignedTo: z.string().optional(),
38
+ comment: z.string().optional(),
39
+ confirm: z.boolean().optional().default(false),
40
+ }, async ({ taskId, confirm, ...update }) => {
41
+ const payload = { taskId, update };
42
+ const preview = previewOrAssertWriteAllowed({ action: 'finishTask', confirm, payload });
43
+ if (preview)
44
+ return jsonResult(preview);
45
+ return jsonResult(await getApi().task.finishTask(taskId, update));
46
+ });
47
+ }
48
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/tools/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerTestCaseTools(server: CliRegistry): void;
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerTestCaseTools(server) {
5
+ server.tool('getProductTestCases', {
6
+ productId: z.number().int().positive(),
7
+ page: z.number().int().positive().optional(),
8
+ limit: z.number().int().positive().max(100).optional(),
9
+ status: z.string().optional(),
10
+ moduleId: z.number().int().positive().optional(),
11
+ }, async (input) => jsonResult(await getApi().testcase.getProductTestCases(input)));
12
+ server.tool('getTestCaseDetail', {
13
+ testCaseId: z.number().int().positive(),
14
+ }, async ({ testCaseId }) => jsonResult(await getApi().testcase.getTestCaseDetail(testCaseId)));
15
+ }
16
+ //# sourceMappingURL=testcase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testcase.js","sourceRoot":"","sources":["../../src/tools/testcase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,qBAAqB,CAAC,MAAmB;IACvD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACjD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAChF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACxC,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAC5F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CliRegistry } from '../core/cli-registry.js';
2
+ export declare function registerTestTaskTools(server: CliRegistry): void;
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { getApi } from '../core/api-provider.js';
3
+ import { jsonResult } from './shared.js';
4
+ export function registerTestTaskTools(server) {
5
+ server.tool('getTestTasks', {
6
+ productId: z.number().int().positive(),
7
+ page: z.number().int().positive().optional(),
8
+ limit: z.number().int().positive().max(100).optional(),
9
+ }, async (input) => jsonResult(await getApi().testtask.getTestTasks(input)));
10
+ server.tool('getTestTaskDetail', {
11
+ testTaskId: z.number().int().positive(),
12
+ }, async ({ testTaskId }) => jsonResult(await getApi().testtask.getTestTaskDetail(testTaskId)));
13
+ }
14
+ //# sourceMappingURL=testtask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testtask.js","sourceRoot":"","sources":["../../src/tools/testtask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,qBAAqB,CAAC,MAAmB;IACvD,MAAM,CAAC,IAAI,CACT,cAAc,EACd;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KACvD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CACzE,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACxC,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAC5F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type Role = 'full' | 'dev' | 'pm' | 'qa';
2
+ export interface ZentaoConfig {
3
+ url: string;
4
+ username: string;
5
+ password: string;
6
+ apiVersion: string;
7
+ apiBaseUrl?: string;
8
+ }
9
+ export interface JsonContentResult {
10
+ [key: string]: unknown;
11
+ content: Array<{
12
+ type: 'text';
13
+ text: string;
14
+ }>;
15
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ export interface ZentaoListResponse<T> {
2
+ page?: number;
3
+ total?: number;
4
+ limit?: number;
5
+ [key: string]: unknown;
6
+ data?: T[];
7
+ }
8
+ export interface ZentaoTask {
9
+ id: number;
10
+ name: string;
11
+ status?: string;
12
+ assignedTo?: unknown;
13
+ execution?: number;
14
+ story?: number;
15
+ [key: string]: unknown;
16
+ }
17
+ export interface ZentaoBug {
18
+ id: number;
19
+ title: string;
20
+ status?: string;
21
+ assignedTo?: unknown;
22
+ execution?: number;
23
+ product?: number;
24
+ [key: string]: unknown;
25
+ }
26
+ export interface ZentaoStory {
27
+ id: number;
28
+ title: string;
29
+ status?: string;
30
+ product?: number;
31
+ [key: string]: unknown;
32
+ }
33
+ export interface ZentaoExecution {
34
+ id: number;
35
+ name: string;
36
+ status?: string;
37
+ products?: Array<{
38
+ id: number;
39
+ name: string;
40
+ }>;
41
+ [key: string]: unknown;
42
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=zentao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zentao.js","sourceRoot":"","sources":["../../src/types/zentao.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function sanitizeJsonLikeResponse(data: unknown): unknown;
2
+ export declare function asRecord(value: unknown): Record<string, unknown>;
@@ -0,0 +1,27 @@
1
+ export function sanitizeJsonLikeResponse(data) {
2
+ if (typeof data === 'object' && data !== null)
3
+ return data;
4
+ if (typeof data !== 'string') {
5
+ throw new Error(`响应格式不支持: ${typeof data}`);
6
+ }
7
+ const objectIndex = data.indexOf('{');
8
+ const arrayIndex = data.indexOf('[');
9
+ let startIndex = -1;
10
+ if (objectIndex >= 0 && arrayIndex >= 0)
11
+ startIndex = Math.min(objectIndex, arrayIndex);
12
+ else if (objectIndex >= 0)
13
+ startIndex = objectIndex;
14
+ else
15
+ startIndex = arrayIndex;
16
+ if (startIndex < 0) {
17
+ throw new Error(`响应中未找到 JSON: ${data.slice(0, 300)}`);
18
+ }
19
+ return JSON.parse(data.slice(startIndex).trim());
20
+ }
21
+ export function asRecord(value) {
22
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
23
+ return value;
24
+ }
25
+ throw new Error(`期望对象响应,实际为: ${typeof value}`);
26
+ }
27
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,wBAAwB,CAAC,IAAa;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE3D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,WAAW,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC;QAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SACnF,IAAI,WAAW,IAAI,CAAC;QAAE,UAAU,GAAG,WAAW,CAAC;;QAC/C,UAAU,GAAG,UAAU,CAAC;IAE7B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAY,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,KAAgC,CAAC;IAC1C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const CLI_VERSION = "0.1.3";
@@ -0,0 +1,2 @@
1
+ export const CLI_VERSION = '0.1.3';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@cloudglab/zentao-cli",
3
+ "version": "0.1.3",
4
+ "description": "ZenTao CLI rebuilt for ZenTao 18.5 REST v1 API",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/cloudglab/zentao-cli.git"
8
+ },
9
+ "type": "module",
10
+ "main": "dist/index.js",
11
+ "types": "dist/index.d.ts",
12
+ "bin": {
13
+ "zentao": "dist/bin/zentao.js",
14
+ "zentao-cli": "dist/bin/zentao.js",
15
+ "zentao-dev": "dist/bin/zentao-dev.js",
16
+ "zentao-pm": "dist/bin/zentao-pm.js",
17
+ "zentao-qa": "dist/bin/zentao-qa.js"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "README.md",
22
+ "CHANGELOG.md",
23
+ "MCP_ZENTAO_REBUILD_PLAN.md"
24
+ ],
25
+ "scripts": {
26
+ "build": "rm -rf dist && tsc -p tsconfig.json",
27
+ "dev": "tsx src/bin/zentao.ts",
28
+ "lint": "oxlint src",
29
+ "typecheck": "tsc -p tsconfig.json --noEmit"
30
+ },
31
+ "dependencies": {
32
+ "axios": "^1.13.2",
33
+ "zod": "^3.22.4"
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "^20.19.25",
37
+ "oxlint": "^1.31.0",
38
+ "tsx": "^4.20.6",
39
+ "typescript": "^5.9.3"
40
+ },
41
+ "engines": {
42
+ "node": ">=16.0.0"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "packageManager": "pnpm@10.24.0"
48
+ }