@qq33357486/oh-my-task 1.4.0 → 1.4.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 (251) hide show
  1. package/README.md +121 -236
  2. package/dist/__tests__/auth-admin.test.d.ts +2 -0
  3. package/dist/__tests__/auth-admin.test.d.ts.map +1 -0
  4. package/dist/__tests__/auth-admin.test.js +440 -0
  5. package/dist/__tests__/auth-admin.test.js.map +1 -0
  6. package/dist/__tests__/auth-login-logout.test.d.ts +2 -0
  7. package/dist/__tests__/auth-login-logout.test.d.ts.map +1 -0
  8. package/dist/__tests__/auth-login-logout.test.js +400 -0
  9. package/dist/__tests__/auth-login-logout.test.js.map +1 -0
  10. package/dist/__tests__/auth-password.test.d.ts +2 -0
  11. package/dist/__tests__/auth-password.test.d.ts.map +1 -0
  12. package/dist/__tests__/auth-password.test.js +419 -0
  13. package/dist/__tests__/auth-password.test.js.map +1 -0
  14. package/dist/__tests__/auth-register.test.d.ts +2 -0
  15. package/dist/__tests__/auth-register.test.d.ts.map +1 -0
  16. package/dist/__tests__/auth-register.test.js +379 -0
  17. package/dist/__tests__/auth-register.test.js.map +1 -0
  18. package/dist/__tests__/auth-tokens.test.d.ts +2 -0
  19. package/dist/__tests__/auth-tokens.test.d.ts.map +1 -0
  20. package/dist/__tests__/auth-tokens.test.js +392 -0
  21. package/dist/__tests__/auth-tokens.test.js.map +1 -0
  22. package/dist/__tests__/db-schema.test.d.ts +2 -0
  23. package/dist/__tests__/db-schema.test.d.ts.map +1 -0
  24. package/dist/__tests__/db-schema.test.js +245 -0
  25. package/dist/__tests__/db-schema.test.js.map +1 -0
  26. package/dist/__tests__/express-server.test.d.ts +2 -0
  27. package/dist/__tests__/express-server.test.d.ts.map +1 -0
  28. package/dist/__tests__/express-server.test.js +119 -0
  29. package/dist/__tests__/express-server.test.js.map +1 -0
  30. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts +2 -0
  31. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts.map +1 -0
  32. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js +270 -0
  33. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js.map +1 -0
  34. package/dist/__tests__/mcp/mcp-tools.test.d.ts +2 -0
  35. package/dist/__tests__/mcp/mcp-tools.test.d.ts.map +1 -0
  36. package/dist/__tests__/mcp/mcp-tools.test.js +547 -0
  37. package/dist/__tests__/mcp/mcp-tools.test.js.map +1 -0
  38. package/dist/__tests__/projects.test.d.ts +2 -0
  39. package/dist/__tests__/projects.test.d.ts.map +1 -0
  40. package/dist/__tests__/projects.test.js +406 -0
  41. package/dist/__tests__/projects.test.js.map +1 -0
  42. package/dist/__tests__/schedule.test.d.ts +2 -0
  43. package/dist/__tests__/schedule.test.d.ts.map +1 -0
  44. package/dist/__tests__/schedule.test.js +587 -0
  45. package/dist/__tests__/schedule.test.js.map +1 -0
  46. package/dist/__tests__/tasks-crud.test.d.ts +2 -0
  47. package/dist/__tests__/tasks-crud.test.d.ts.map +1 -0
  48. package/dist/__tests__/tasks-crud.test.js +606 -0
  49. package/dist/__tests__/tasks-crud.test.js.map +1 -0
  50. package/dist/__tests__/tasks-lifecycle.test.d.ts +2 -0
  51. package/dist/__tests__/tasks-lifecycle.test.d.ts.map +1 -0
  52. package/dist/__tests__/tasks-lifecycle.test.js +712 -0
  53. package/dist/__tests__/tasks-lifecycle.test.js.map +1 -0
  54. package/dist/__tests__/versions.test.d.ts +2 -0
  55. package/dist/__tests__/versions.test.d.ts.map +1 -0
  56. package/dist/__tests__/versions.test.js +613 -0
  57. package/dist/__tests__/versions.test.js.map +1 -0
  58. package/dist/api/middleware/auth.d.ts +1 -2
  59. package/dist/api/middleware/auth.d.ts.map +1 -1
  60. package/dist/api/middleware/auth.js +5 -12
  61. package/dist/api/middleware/auth.js.map +1 -1
  62. package/dist/api/middleware/captcha.d.ts +8 -0
  63. package/dist/api/middleware/captcha.d.ts.map +1 -1
  64. package/dist/api/middleware/captcha.js +29 -4
  65. package/dist/api/middleware/captcha.js.map +1 -1
  66. package/dist/api/middleware/ownerCheck.d.ts +0 -5
  67. package/dist/api/middleware/ownerCheck.d.ts.map +1 -1
  68. package/dist/api/middleware/ownerCheck.js +15 -49
  69. package/dist/api/middleware/ownerCheck.js.map +1 -1
  70. package/dist/api/routes/{sops.d.ts → admin.d.ts} +1 -1
  71. package/dist/api/routes/admin.d.ts.map +1 -0
  72. package/dist/api/routes/admin.js +20 -0
  73. package/dist/api/routes/admin.js.map +1 -0
  74. package/dist/api/routes/auth.d.ts.map +1 -1
  75. package/dist/api/routes/auth.js +65 -14
  76. package/dist/api/routes/auth.js.map +1 -1
  77. package/dist/api/routes/config.d.ts.map +1 -1
  78. package/dist/api/routes/config.js +6 -1
  79. package/dist/api/routes/config.js.map +1 -1
  80. package/dist/api/routes/projects.d.ts.map +1 -1
  81. package/dist/api/routes/projects.js +29 -18
  82. package/dist/api/routes/projects.js.map +1 -1
  83. package/dist/api/routes/tasks.d.ts.map +1 -1
  84. package/dist/api/routes/tasks.js +79 -104
  85. package/dist/api/routes/tasks.js.map +1 -1
  86. package/dist/api/routes/tokens.d.ts.map +1 -1
  87. package/dist/api/routes/tokens.js +11 -8
  88. package/dist/api/routes/tokens.js.map +1 -1
  89. package/dist/api/routes/users.d.ts.map +1 -1
  90. package/dist/api/routes/users.js +7 -59
  91. package/dist/api/routes/users.js.map +1 -1
  92. package/dist/api/routes/versions.d.ts.map +1 -1
  93. package/dist/api/routes/versions.js +63 -34
  94. package/dist/api/routes/versions.js.map +1 -1
  95. package/dist/api/server.d.ts.map +1 -1
  96. package/dist/api/server.js +23 -14
  97. package/dist/api/server.js.map +1 -1
  98. package/dist/db/connection.d.ts.map +1 -1
  99. package/dist/db/connection.js +40 -118
  100. package/dist/db/connection.js.map +1 -1
  101. package/dist/mcp/server.d.ts.map +1 -1
  102. package/dist/mcp/server.js +15 -64
  103. package/dist/mcp/server.js.map +1 -1
  104. package/dist/mcp/tools/activate-task.d.ts.map +1 -1
  105. package/dist/mcp/tools/activate-task.js +3 -17
  106. package/dist/mcp/tools/activate-task.js.map +1 -1
  107. package/dist/mcp/tools/{get-next-task.d.ts → auto-schedule.d.ts} +3 -3
  108. package/dist/mcp/tools/auto-schedule.d.ts.map +1 -0
  109. package/dist/mcp/tools/auto-schedule.js +59 -0
  110. package/dist/mcp/tools/auto-schedule.js.map +1 -0
  111. package/dist/mcp/tools/complete-task.d.ts.map +1 -1
  112. package/dist/mcp/tools/complete-task.js +2 -12
  113. package/dist/mcp/tools/complete-task.js.map +1 -1
  114. package/dist/mcp/tools/create-task.d.ts.map +1 -1
  115. package/dist/mcp/tools/create-task.js +33 -38
  116. package/dist/mcp/tools/create-task.js.map +1 -1
  117. package/dist/mcp/tools/create-version.d.ts.map +1 -1
  118. package/dist/mcp/tools/create-version.js +2 -17
  119. package/dist/mcp/tools/create-version.js.map +1 -1
  120. package/dist/mcp/tools/{get-task-context.d.ts → get-current-task.d.ts} +3 -3
  121. package/dist/mcp/tools/get-current-task.d.ts.map +1 -0
  122. package/dist/mcp/tools/get-current-task.js +85 -0
  123. package/dist/mcp/tools/get-current-task.js.map +1 -0
  124. package/dist/mcp/tools/get-task.d.ts.map +1 -1
  125. package/dist/mcp/tools/get-task.js +7 -12
  126. package/dist/mcp/tools/get-task.js.map +1 -1
  127. package/dist/mcp/tools/init-project.d.ts +0 -2
  128. package/dist/mcp/tools/init-project.d.ts.map +1 -1
  129. package/dist/mcp/tools/init-project.js +39 -75
  130. package/dist/mcp/tools/init-project.js.map +1 -1
  131. package/dist/mcp/tools/list-tasks.d.ts.map +1 -1
  132. package/dist/mcp/tools/list-tasks.js +8 -33
  133. package/dist/mcp/tools/list-tasks.js.map +1 -1
  134. package/dist/mcp/tools/list-versions.d.ts.map +1 -1
  135. package/dist/mcp/tools/list-versions.js +16 -25
  136. package/dist/mcp/tools/list-versions.js.map +1 -1
  137. package/dist/mcp/tools/utils/config.js +1 -1
  138. package/dist/mcp/tools/utils/config.js.map +1 -1
  139. package/dist/services/admin.service.d.ts +27 -0
  140. package/dist/services/admin.service.d.ts.map +1 -0
  141. package/dist/services/admin.service.js +88 -0
  142. package/dist/services/admin.service.js.map +1 -0
  143. package/dist/services/config.service.d.ts +1 -0
  144. package/dist/services/config.service.d.ts.map +1 -1
  145. package/dist/services/config.service.js +7 -0
  146. package/dist/services/config.service.js.map +1 -1
  147. package/dist/services/project.service.d.ts +7 -7
  148. package/dist/services/project.service.d.ts.map +1 -1
  149. package/dist/services/project.service.js +47 -40
  150. package/dist/services/project.service.js.map +1 -1
  151. package/dist/services/schedule.service.d.ts +6 -0
  152. package/dist/services/schedule.service.d.ts.map +1 -1
  153. package/dist/services/schedule.service.js +36 -12
  154. package/dist/services/schedule.service.js.map +1 -1
  155. package/dist/services/task.service.d.ts +6 -18
  156. package/dist/services/task.service.d.ts.map +1 -1
  157. package/dist/services/task.service.js +161 -194
  158. package/dist/services/task.service.js.map +1 -1
  159. package/dist/services/token.service.d.ts +1 -0
  160. package/dist/services/token.service.d.ts.map +1 -1
  161. package/dist/services/token.service.js +5 -2
  162. package/dist/services/token.service.js.map +1 -1
  163. package/dist/services/user.service.d.ts +0 -32
  164. package/dist/services/user.service.d.ts.map +1 -1
  165. package/dist/services/user.service.js +13 -110
  166. package/dist/services/user.service.js.map +1 -1
  167. package/dist/services/version.service.d.ts +26 -8
  168. package/dist/services/version.service.d.ts.map +1 -1
  169. package/dist/services/version.service.js +149 -41
  170. package/dist/services/version.service.js.map +1 -1
  171. package/dist/types/index.d.ts +17 -60
  172. package/dist/types/index.d.ts.map +1 -1
  173. package/package.json +4 -13
  174. package/src/db/schema.sql +113 -70
  175. package/dist/api/routes/sops.d.ts.map +0 -1
  176. package/dist/api/routes/sops.js +0 -155
  177. package/dist/api/routes/sops.js.map +0 -1
  178. package/dist/mcp/tools/add-task-note.d.ts +0 -10
  179. package/dist/mcp/tools/add-task-note.d.ts.map +0 -1
  180. package/dist/mcp/tools/add-task-note.js +0 -46
  181. package/dist/mcp/tools/add-task-note.js.map +0 -1
  182. package/dist/mcp/tools/approve-task.d.ts +0 -10
  183. package/dist/mcp/tools/approve-task.d.ts.map +0 -1
  184. package/dist/mcp/tools/approve-task.js +0 -59
  185. package/dist/mcp/tools/approve-task.js.map +0 -1
  186. package/dist/mcp/tools/archive-version.d.ts +0 -10
  187. package/dist/mcp/tools/archive-version.d.ts.map +0 -1
  188. package/dist/mcp/tools/archive-version.js +0 -57
  189. package/dist/mcp/tools/archive-version.js.map +0 -1
  190. package/dist/mcp/tools/assign-task.d.ts +0 -10
  191. package/dist/mcp/tools/assign-task.d.ts.map +0 -1
  192. package/dist/mcp/tools/assign-task.js +0 -53
  193. package/dist/mcp/tools/assign-task.js.map +0 -1
  194. package/dist/mcp/tools/create-sop.d.ts +0 -10
  195. package/dist/mcp/tools/create-sop.d.ts.map +0 -1
  196. package/dist/mcp/tools/create-sop.js +0 -90
  197. package/dist/mcp/tools/create-sop.js.map +0 -1
  198. package/dist/mcp/tools/get-my-tasks.d.ts +0 -10
  199. package/dist/mcp/tools/get-my-tasks.d.ts.map +0 -1
  200. package/dist/mcp/tools/get-my-tasks.js +0 -88
  201. package/dist/mcp/tools/get-my-tasks.js.map +0 -1
  202. package/dist/mcp/tools/get-next-task.d.ts.map +0 -1
  203. package/dist/mcp/tools/get-next-task.js +0 -84
  204. package/dist/mcp/tools/get-next-task.js.map +0 -1
  205. package/dist/mcp/tools/get-sop.d.ts +0 -10
  206. package/dist/mcp/tools/get-sop.d.ts.map +0 -1
  207. package/dist/mcp/tools/get-sop.js +0 -67
  208. package/dist/mcp/tools/get-sop.js.map +0 -1
  209. package/dist/mcp/tools/get-task-context.d.ts.map +0 -1
  210. package/dist/mcp/tools/get-task-context.js +0 -114
  211. package/dist/mcp/tools/get-task-context.js.map +0 -1
  212. package/dist/mcp/tools/helpers.d.ts +0 -10
  213. package/dist/mcp/tools/helpers.d.ts.map +0 -1
  214. package/dist/mcp/tools/helpers.js +0 -17
  215. package/dist/mcp/tools/helpers.js.map +0 -1
  216. package/dist/mcp/tools/list-sops.d.ts +0 -10
  217. package/dist/mcp/tools/list-sops.d.ts.map +0 -1
  218. package/dist/mcp/tools/list-sops.js +0 -57
  219. package/dist/mcp/tools/list-sops.js.map +0 -1
  220. package/dist/mcp/tools/reject-task.d.ts +0 -10
  221. package/dist/mcp/tools/reject-task.d.ts.map +0 -1
  222. package/dist/mcp/tools/reject-task.js +0 -63
  223. package/dist/mcp/tools/reject-task.js.map +0 -1
  224. package/dist/mcp/tools/reschedule.d.ts +0 -17
  225. package/dist/mcp/tools/reschedule.d.ts.map +0 -1
  226. package/dist/mcp/tools/reschedule.js +0 -107
  227. package/dist/mcp/tools/reschedule.js.map +0 -1
  228. package/dist/mcp/tools/start-task.d.ts +0 -10
  229. package/dist/mcp/tools/start-task.d.ts.map +0 -1
  230. package/dist/mcp/tools/start-task.js +0 -42
  231. package/dist/mcp/tools/start-task.js.map +0 -1
  232. package/dist/mcp/tools/submit-for-review.d.ts +0 -10
  233. package/dist/mcp/tools/submit-for-review.d.ts.map +0 -1
  234. package/dist/mcp/tools/submit-for-review.js +0 -64
  235. package/dist/mcp/tools/submit-for-review.js.map +0 -1
  236. package/dist/mcp/tools/update-sop.d.ts +0 -10
  237. package/dist/mcp/tools/update-sop.d.ts.map +0 -1
  238. package/dist/mcp/tools/update-sop.js +0 -113
  239. package/dist/mcp/tools/update-sop.js.map +0 -1
  240. package/dist/mcp/tools/update-task-doc.d.ts +0 -10
  241. package/dist/mcp/tools/update-task-doc.d.ts.map +0 -1
  242. package/dist/mcp/tools/update-task-doc.js +0 -70
  243. package/dist/mcp/tools/update-task-doc.js.map +0 -1
  244. package/dist/mcp/tools/update-task.d.ts +0 -10
  245. package/dist/mcp/tools/update-task.d.ts.map +0 -1
  246. package/dist/mcp/tools/update-task.js +0 -106
  247. package/dist/mcp/tools/update-task.js.map +0 -1
  248. package/dist/services/sop.service.d.ts +0 -53
  249. package/dist/services/sop.service.d.ts.map +0 -1
  250. package/dist/services/sop.service.js +0 -275
  251. package/dist/services/sop.service.js.map +0 -1
@@ -1,64 +0,0 @@
1
- export const submitForReviewTool = {
2
- name: 'submit_for_review',
3
- description: `提交任务进行验收。
4
-
5
- ⚠️ 重要:AI 完成编码/实现后必须调用此工具,将任务状态改为 review(待验收)。
6
- 不要直接将任务状态设为 done,done 状态仅在人工验收通过后由 approve_task 工具设置。
7
-
8
- 调用时机:
9
- - AI 完成了任务的编码/实现工作
10
- - 代码已通过基本验证(编译通过、无明显错误)
11
- - 等待人工验收确认
12
-
13
- 状态流转:in_progress → review`,
14
- inputSchema: {
15
- type: 'object',
16
- properties: {
17
- task_id: {
18
- type: 'string',
19
- description: '任务ID',
20
- },
21
- summary: {
22
- type: 'string',
23
- description: '完成工作的简要总结(可选,会记录到历史)',
24
- },
25
- },
26
- required: ['task_id'],
27
- },
28
- };
29
- export async function handleSubmitForReview(args, context) {
30
- const taskId = args.task_id;
31
- const summary = args.summary;
32
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}`, {
33
- method: 'PUT',
34
- headers: {
35
- 'Content-Type': 'application/json',
36
- 'Authorization': `Bearer ${context.token}`,
37
- },
38
- body: JSON.stringify({
39
- status: 'review',
40
- reason: summary || '任务已完成,提交验收',
41
- }),
42
- });
43
- if (!response.ok) {
44
- const error = await response.json();
45
- throw new Error(error.error || 'Failed to submit task for review');
46
- }
47
- const result = await response.json();
48
- const task = result.data;
49
- return {
50
- content: [{
51
- type: 'text',
52
- text: `任务已提交验收!📋
53
- ID: ${task.id}
54
- 标题: ${task.title}
55
- 状态: ${task.status}(待验收)
56
- ${summary ? `工作总结: ${summary}` : ''}
57
-
58
- 等待人工验收:
59
- - 验收通过 → 使用 approve_task
60
- - 验收不通过 → 使用 reject_task`,
61
- }],
62
- };
63
- }
64
- //# sourceMappingURL=submit-for-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submit-for-review.js","sourceRoot":"","sources":["../../../src/mcp/tools/submit-for-review.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE;;;;;;;;;;0BAUW;IACxB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sBAAsB;aACpC;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAiB,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAA6B,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc,MAAM,EAAE,EAAE;QACvE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;SAC3C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,OAAO,IAAI,YAAY;SAChC,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,kCAAkC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAoB,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;MACN,IAAI,CAAC,EAAE;MACP,IAAI,CAAC,KAAK;MACV,IAAI,CAAC,MAAM;EACf,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;;;;yBAIV;aACpB,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import type { McpContext } from './utils/config.js';
3
- export declare const updateSOPTool: Tool;
4
- export declare function handleUpdateSOP(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=update-sop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-sop.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/update-sop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,aAAa,EAAE,IAqD3B,CAAC;AAUF,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA+C7D"}
@@ -1,113 +0,0 @@
1
- import { readFileSync, existsSync } from 'fs';
2
- import { join } from 'path';
3
- export const updateSOPTool = {
4
- name: 'update_sop',
5
- description: `更新 SOP 内容。
6
-
7
- 【追加经验】
8
- 使用 append_experience 参数可以在现有经验后追加新内容,而不是覆盖。
9
- 这在任务完成后 AI 分析执行过程时非常有用。`,
10
- inputSchema: {
11
- type: 'object',
12
- properties: {
13
- sop_id: {
14
- type: 'string',
15
- description: 'SOP ID',
16
- },
17
- name: {
18
- type: 'string',
19
- description: '新名称(可选)',
20
- },
21
- description: {
22
- type: 'string',
23
- description: '新描述(可选)',
24
- },
25
- rules: {
26
- type: 'string',
27
- description: '新规则内容(可选)',
28
- },
29
- workflow: {
30
- type: 'string',
31
- description: '新流程内容(可选)',
32
- },
33
- required: {
34
- type: 'string',
35
- description: '新强制内容(可选)',
36
- },
37
- forbidden: {
38
- type: 'string',
39
- description: '新禁止内容(可选)',
40
- },
41
- experience: {
42
- type: 'string',
43
- description: '新经验内容(可选,会覆盖现有经验)',
44
- },
45
- append_experience: {
46
- type: 'string',
47
- description: '追加到现有经验后面的内容(可选)',
48
- },
49
- path: {
50
- type: 'string',
51
- description: '项目路径(可选,默认当前目录)',
52
- },
53
- },
54
- required: ['sop_id'],
55
- },
56
- };
57
- function getProjectConfig(projectPath) {
58
- const configPath = join(projectPath, '.omt.json');
59
- if (!existsSync(configPath)) {
60
- throw new Error('项目未初始化。请先运行 init_project');
61
- }
62
- return JSON.parse(readFileSync(configPath, 'utf-8'));
63
- }
64
- export async function handleUpdateSOP(args, context) {
65
- const sopId = args.sop_id;
66
- const projectPath = args.path || process.cwd();
67
- const config = getProjectConfig(projectPath);
68
- const body = {
69
- project_path: projectPath,
70
- };
71
- if (args.name !== undefined)
72
- body.name = args.name;
73
- if (args.description !== undefined)
74
- body.description = args.description;
75
- if (args.rules !== undefined)
76
- body.rules = args.rules;
77
- if (args.workflow !== undefined)
78
- body.workflow = args.workflow;
79
- if (args.required !== undefined)
80
- body.required = args.required;
81
- if (args.forbidden !== undefined)
82
- body.forbidden = args.forbidden;
83
- if (args.experience !== undefined)
84
- body.experience = args.experience;
85
- if (args.append_experience !== undefined)
86
- body.append_experience = args.append_experience;
87
- const response = await fetch(`${context.serverUrl}/api/sops/${sopId}`, {
88
- method: 'PUT',
89
- headers: {
90
- 'Content-Type': 'application/json',
91
- 'Authorization': `Bearer ${context.token}`,
92
- },
93
- body: JSON.stringify(body),
94
- });
95
- if (!response.ok) {
96
- const error = await response.json();
97
- throw new Error(error.error || 'Failed to update SOP');
98
- }
99
- const result = await response.json();
100
- const sop = result.data;
101
- const changes = Object.keys(body).filter(k => k !== 'project_path').join(', ');
102
- return {
103
- content: [{
104
- type: 'text',
105
- text: `SOP 更新成功!📚
106
- ID: ${sop.id}
107
- 名称: ${sop.name}
108
- 更新字段: ${changes || '无变更'}
109
- ${args.append_experience ? `\n经验已追加到 .omt/sops/${sop.id}.md` : ''}`,
110
- }],
111
- };
112
- }
113
- //# sourceMappingURL=update-sop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-sop.js","sourceRoot":"","sources":["../../../src/mcp/tools/update-sop.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import type { McpContext } from './utils/config.js';
3
- export declare const updateTaskDocTool: Tool;
4
- export declare function handleUpdateTaskDoc(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=update-task-doc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-task-doc.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/update-task-doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,iBAAiB,EAAE,IA0B/B,CAAC;AAQF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAwC7D"}
@@ -1,70 +0,0 @@
1
- export const updateTaskDocTool = {
2
- name: 'update_task_doc',
3
- description: '更新任务的阶段文档(需求/设计/当前情况)。支持覆盖或追加模式。',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {
7
- task_id: {
8
- type: 'string',
9
- description: '任务ID',
10
- },
11
- doc_type: {
12
- type: 'string',
13
- enum: ['requirement', 'design', 'status'],
14
- description: '文档类型:requirement=需求文档, design=设计文档, status=当前情况',
15
- },
16
- content: {
17
- type: 'string',
18
- description: '文档内容(Markdown 格式)',
19
- },
20
- append: {
21
- type: 'boolean',
22
- description: '是否追加模式(默认 false,覆盖原内容)',
23
- },
24
- },
25
- required: ['task_id', 'doc_type', 'content'],
26
- },
27
- };
28
- const DOC_TYPE_NAMES = {
29
- requirement: '需求文档',
30
- design: '设计文档',
31
- status: '当前情况',
32
- };
33
- export async function handleUpdateTaskDoc(args, context) {
34
- const taskId = args.task_id;
35
- const docType = args.doc_type;
36
- const content = args.content;
37
- const append = args.append ?? false;
38
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}/doc`, {
39
- method: 'PUT',
40
- headers: {
41
- 'Content-Type': 'application/json',
42
- 'Authorization': `Bearer ${context.token}`,
43
- },
44
- body: JSON.stringify({
45
- doc_type: docType,
46
- content,
47
- append,
48
- }),
49
- });
50
- if (!response.ok) {
51
- const error = await response.json();
52
- throw new Error(error.error || 'Failed to update task doc');
53
- }
54
- const result = await response.json();
55
- const task = result.data;
56
- const docTypeName = DOC_TYPE_NAMES[docType] || docType;
57
- const mode = append ? '追加' : '更新';
58
- return {
59
- content: [{
60
- type: 'text',
61
- text: `✅ ${docTypeName}已${mode}!
62
-
63
- 任务: ${task.title}
64
- 文档类型: ${docTypeName}
65
- 操作: ${mode}
66
- 更新时间: ${task.updated_at}`,
67
- }],
68
- };
69
- }
70
- //# sourceMappingURL=update-task-doc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-task-doc.js","sourceRoot":"","sources":["../../../src/mcp/tools/update-task-doc.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBACzC,WAAW,EAAE,iDAAiD;aAC/D;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mBAAmB;aACjC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,wBAAwB;aACtC;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;KAC7C;CACF,CAAC;AAEF,MAAM,cAAc,GAA2B;IAC7C,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAiB,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAkB,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,MAAM,GAAI,IAAI,CAAC,MAAkB,IAAI,KAAK,CAAC;IAEjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc,MAAM,MAAM,EAAE;QAC3E,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;SAC3C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,MAAM;SACP,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAoB,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAElC,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,KAAK,WAAW,IAAI,IAAI;;MAE9B,IAAI,CAAC,KAAK;QACR,WAAW;MACb,IAAI;QACF,IAAI,CAAC,UAAU,EAAE;aACpB,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import type { McpContext } from './utils/config.js';
3
- export declare const updateTaskTool: Tool;
4
- export declare function handleUpdateTask(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=update-task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-task.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/update-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,cAAc,EAAE,IA0D5B,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2C7D"}
@@ -1,106 +0,0 @@
1
- export const updateTaskTool = {
2
- name: 'update_task',
3
- description: '更新任务信息,包括状态、标题、描述、负责人等',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {
7
- task_id: {
8
- type: 'string',
9
- description: '任务ID',
10
- },
11
- title: {
12
- type: 'string',
13
- description: '新标题(可选)',
14
- },
15
- description: {
16
- type: 'string',
17
- description: '新描述(可选)',
18
- },
19
- status: {
20
- type: 'string',
21
- enum: ['todo', 'in_progress', 'blocked', 'review', 'done', 'cancelled'],
22
- description: `任务状态(可选):
23
- - todo: 待办,初始状态
24
- - in_progress: 进行中,正在执行
25
- - blocked: 阻塞,等待外部依赖
26
- - review: 待验收(AI完成编码后应使用 submit_for_review 工具)
27
- - done: 已完成(仅在人工验收通过后使用 approve_task 工具)
28
- - cancelled: 已取消
29
-
30
- ⚠️ 注意:请使用专门的工具来变更状态:
31
- - 开始任务 → start_task
32
- - 提交验收 → submit_for_review
33
- - 验收通过 → approve_task
34
- - 验收不通过 → reject_task`,
35
- },
36
- assignee_id: {
37
- type: 'string',
38
- description: '新负责人ID(可选)',
39
- },
40
- estimated_days: {
41
- type: 'number',
42
- description: '新预估工时(天)(可选)',
43
- },
44
- start_date: {
45
- type: 'string',
46
- description: '新开始日期,格式 YYYY-MM-DD(可选)',
47
- },
48
- due_date: {
49
- type: 'string',
50
- description: '新截止日期,格式 YYYY-MM-DD(可选)',
51
- },
52
- reason: {
53
- type: 'string',
54
- description: '变更原因,会记录到历史(可选)',
55
- },
56
- },
57
- required: ['task_id'],
58
- },
59
- };
60
- export async function handleUpdateTask(args, context) {
61
- const taskId = args.task_id;
62
- const body = {};
63
- if (args.title !== undefined)
64
- body.title = args.title;
65
- if (args.description !== undefined)
66
- body.description = args.description;
67
- if (args.status !== undefined)
68
- body.status = args.status;
69
- if (args.assignee_id !== undefined)
70
- body.assignee_id = args.assignee_id;
71
- if (args.estimated_days !== undefined)
72
- body.estimated_days = args.estimated_days;
73
- if (args.start_date !== undefined)
74
- body.start_date = args.start_date;
75
- if (args.due_date !== undefined)
76
- body.due_date = args.due_date;
77
- if (args.reason !== undefined)
78
- body.reason = args.reason;
79
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}`, {
80
- method: 'PUT',
81
- headers: {
82
- 'Content-Type': 'application/json',
83
- 'Authorization': `Bearer ${context.token}`,
84
- },
85
- body: JSON.stringify(body),
86
- });
87
- if (!response.ok) {
88
- const error = await response.json();
89
- throw new Error(error.error || 'Failed to update task');
90
- }
91
- const result = await response.json();
92
- const task = result.data;
93
- const changes = Object.keys(body).filter(k => k !== 'reason').join(', ');
94
- return {
95
- content: [{
96
- type: 'text',
97
- text: `任务更新成功!
98
- ID: ${task.id}
99
- 标题: ${task.title}
100
- 状态: ${task.status}
101
- 更新字段: ${changes || '无变更'}
102
- ${args.reason ? `变更原因: ${args.reason}` : ''}`,
103
- }],
104
- };
105
- }
106
- //# sourceMappingURL=update-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/update-task.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- import type { SOP } from '../types/index.js';
2
- /**
3
- * 创建 SOP 参数
4
- */
5
- export interface CreateSOPParams {
6
- project_id: string;
7
- project_path: string;
8
- name: string;
9
- description?: string;
10
- rules?: string;
11
- workflow?: string;
12
- required?: string;
13
- forbidden?: string;
14
- experience?: string;
15
- }
16
- /**
17
- * 更新 SOP 参数
18
- */
19
- export interface UpdateSOPParams {
20
- name?: string;
21
- description?: string;
22
- rules?: string;
23
- workflow?: string;
24
- required?: string;
25
- forbidden?: string;
26
- experience?: string;
27
- append_experience?: string;
28
- }
29
- /**
30
- * 获取项目的所有 SOP(验证归属)
31
- */
32
- export declare function listSOPs(projectId: string, projectPath: string, userId?: string): SOP[];
33
- /**
34
- * 根据 ID 获取 SOP(验证归属)
35
- */
36
- export declare function getSOPById(id: string, projectPath: string, userId?: string): SOP | null;
37
- /**
38
- * 创建 SOP
39
- */
40
- export declare function createSOP(params: CreateSOPParams): SOP;
41
- /**
42
- * 更新 SOP
43
- */
44
- export declare function updateSOP(id: string, params: UpdateSOPParams, projectPath: string): SOP | null;
45
- /**
46
- * 删除 SOP
47
- */
48
- export declare function deleteSOP(id: string, projectPath: string): boolean;
49
- /**
50
- * 获取 SOP 的使用次数
51
- */
52
- export declare function getSOPUsageCount(sopId: string): number;
53
- //# sourceMappingURL=sop.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sop.service.d.ts","sourceRoot":"","sources":["../../src/services/sop.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAmG7C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,CAqCvF;AAcD;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAqDvF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,GAAG,CA0BtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CA0B9F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAkBlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtD"}