@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 +0,0 @@
1
- {"version":3,"file":"sops.js","sourceRoot":"","sources":["../../../src/api/routes/sops.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 addTaskNoteTool: Tool;
4
- export declare function handleAddTaskNote(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=add-task-note.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-task-note.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/add-task-note.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,eAAe,EAAE,IAiB7B,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,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,CA8B7D"}
@@ -1,46 +0,0 @@
1
- export const addTaskNoteTool = {
2
- name: 'add_task_note',
3
- description: '为任务添加备注或记录',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {
7
- task_id: {
8
- type: 'string',
9
- description: '任务ID',
10
- },
11
- note: {
12
- type: 'string',
13
- description: '备注内容',
14
- },
15
- },
16
- required: ['task_id', 'note'],
17
- },
18
- };
19
- export async function handleAddTaskNote(args, context) {
20
- const taskId = args.task_id;
21
- const note = args.note;
22
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}/history`, {
23
- method: 'POST',
24
- headers: {
25
- 'Content-Type': 'application/json',
26
- 'Authorization': `Bearer ${context.token}`,
27
- },
28
- body: JSON.stringify({ note }),
29
- });
30
- if (!response.ok) {
31
- const error = await response.json();
32
- throw new Error(error.error || 'Failed to add note');
33
- }
34
- const result = await response.json();
35
- const history = result.data;
36
- return {
37
- content: [{
38
- type: 'text',
39
- text: `备注已添加!📝
40
- 任务ID: ${taskId}
41
- 时间: ${history.changed_at}
42
- 内容: ${note}`,
43
- }],
44
- };
45
- }
46
- //# sourceMappingURL=add-task-note.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-task-note.js","sourceRoot":"","sources":["../../../src/mcp/tools/add-task-note.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;KAC9B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAiB,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;IAEjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc,MAAM,UAAU,EAAE;QAC/E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;SAC3C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;KAC/B,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,oBAAoB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA2B,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAE5B,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;QACJ,MAAM;MACR,OAAO,CAAC,UAAU;MAClB,IAAI,EAAE;aACP,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 approveTaskTool: Tool;
4
- export declare function handleApproveTask(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=approve-task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approve-task.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/approve-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,eAAe,EAAE,IAyB7B,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,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,CAmC7D"}
@@ -1,59 +0,0 @@
1
- export const approveTaskTool = {
2
- name: 'approve_task',
3
- description: `验收通过,完成任务。
4
-
5
- 仅在人工验收通过后调用此工具,将任务状态改为 done 并记录实际完成时间。
6
-
7
- 调用时机:
8
- - 用户明确表示"验收通过"、"没问题"、"可以了"、"确认完成"等
9
- - 任务当前状态应为 review(待验收)
10
-
11
- 状态流转:review → done`,
12
- inputSchema: {
13
- type: 'object',
14
- properties: {
15
- task_id: {
16
- type: 'string',
17
- description: '任务ID',
18
- },
19
- comment: {
20
- type: 'string',
21
- description: '验收备注(可选,会记录到历史)',
22
- },
23
- },
24
- required: ['task_id'],
25
- },
26
- };
27
- export async function handleApproveTask(args, context) {
28
- const taskId = args.task_id;
29
- const comment = args.comment;
30
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}`, {
31
- method: 'PUT',
32
- headers: {
33
- 'Content-Type': 'application/json',
34
- 'Authorization': `Bearer ${context.token}`,
35
- },
36
- body: JSON.stringify({
37
- status: 'done',
38
- reason: comment || '验收通过',
39
- }),
40
- });
41
- if (!response.ok) {
42
- const error = await response.json();
43
- throw new Error(error.error || 'Failed to approve task');
44
- }
45
- const result = await response.json();
46
- const task = result.data;
47
- return {
48
- content: [{
49
- type: 'text',
50
- text: `任务验收通过!🎉
51
- ID: ${task.id}
52
- 标题: ${task.title}
53
- 状态: ${task.status}(已完成)
54
- 完成时间: ${task.actual_end || '已记录'}
55
- ${comment ? `验收备注: ${comment}` : ''}`,
56
- }],
57
- };
58
- }
59
- //# sourceMappingURL=approve-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approve-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/approve-task.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE;;;;;;;;mBAQI;IACjB,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,iBAAiB;aAC/B;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,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,MAAM;YACd,MAAM,EAAE,OAAO,IAAI,MAAM;SAC1B,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,wBAAwB,CAAC,CAAC;IAC3D,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;QACT,IAAI,CAAC,UAAU,IAAI,KAAK;EAC9B,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;aAChC,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 archiveVersionTool: Tool;
4
- export declare function handleArchiveVersion(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=archive-version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archive-version.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/archive-version.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,kBAAkB,EAAE,IAsBhC,CAAC;AAUF,wBAAsB,oBAAoB,CACxC,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,CA2B7D"}
@@ -1,57 +0,0 @@
1
- import { readFileSync, existsSync } from 'fs';
2
- import { join } from 'path';
3
- export const archiveVersionTool = {
4
- name: 'archive_version',
5
- description: `归档版本(标记删除并页面不再显示)。
6
-
7
- 【效果】
8
- - 版本标记为已归档
9
- - 该版本下的所有任务都会被软删除
10
- - 归档后版本和任务不再在列表中显示`,
11
- inputSchema: {
12
- type: 'object',
13
- properties: {
14
- version_id: {
15
- type: 'string',
16
- description: '版本ID',
17
- },
18
- path: {
19
- type: 'string',
20
- description: '项目路径(可选,默认当前目录)',
21
- },
22
- },
23
- required: ['version_id'],
24
- },
25
- };
26
- function getProjectConfig(projectPath) {
27
- const configPath = join(projectPath, '.omt.json');
28
- if (!existsSync(configPath)) {
29
- throw new Error('项目未初始化。请先运行 init_project');
30
- }
31
- return JSON.parse(readFileSync(configPath, 'utf-8'));
32
- }
33
- export async function handleArchiveVersion(args, context) {
34
- const versionId = args.version_id;
35
- const response = await fetch(`${context.serverUrl}/api/versions/${versionId}/archive`, {
36
- method: 'POST',
37
- headers: {
38
- 'Content-Type': 'application/json',
39
- 'Authorization': `Bearer ${context.token}`,
40
- },
41
- });
42
- if (!response.ok) {
43
- const error = await response.json();
44
- throw new Error(error.error || 'Failed to archive version');
45
- }
46
- const result = await response.json();
47
- const data = result.data;
48
- return {
49
- content: [{
50
- type: 'text',
51
- text: `版本已归档!📦
52
- 版本名称: ${data.name}
53
- 已归档任务数: ${data.tasks_archived}`,
54
- }],
55
- };
56
- }
57
- //# sourceMappingURL=archive-version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archive-version.js","sourceRoot":"","sources":["../../../src/mcp/tools/archive-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,MAAM,CAAC,MAAM,kBAAkB,GAAS;IACtC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE;;;;;mBAKI;IACjB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAoB,CAAC;IAE5C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,iBAAiB,SAAS,UAAU,EAAE;QACrF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;SAC3C;KACF,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,EAAwD,CAAC;IAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;QACJ,IAAI,CAAC,IAAI;UACP,IAAI,CAAC,cAAc,EAAE;aAC1B,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 assignTaskTool: Tool;
4
- export declare function handleAssignTask(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=assign-task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assign-task.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/assign-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,IAqB5B,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,CAiC7D"}
@@ -1,53 +0,0 @@
1
- export const assignTaskTool = {
2
- name: 'assign_task',
3
- description: '分配或变更任务负责人',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {
7
- task_id: {
8
- type: 'string',
9
- description: '任务ID',
10
- },
11
- assignee_id: {
12
- type: 'string',
13
- description: '新负责人ID',
14
- },
15
- reason: {
16
- type: 'string',
17
- description: '变更原因(可选)',
18
- },
19
- },
20
- required: ['task_id', 'assignee_id'],
21
- },
22
- };
23
- export async function handleAssignTask(args, context) {
24
- const taskId = args.task_id;
25
- const assigneeId = args.assignee_id;
26
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}`, {
27
- method: 'PUT',
28
- headers: {
29
- 'Content-Type': 'application/json',
30
- 'Authorization': `Bearer ${context.token}`,
31
- },
32
- body: JSON.stringify({
33
- assignee_id: assigneeId,
34
- reason: args.reason || '负责人变更'
35
- }),
36
- });
37
- if (!response.ok) {
38
- const error = await response.json();
39
- throw new Error(error.error || 'Failed to assign task');
40
- }
41
- const result = await response.json();
42
- const task = result.data;
43
- return {
44
- content: [{
45
- type: 'text',
46
- text: `任务已分配!
47
- ID: ${task.id}
48
- 标题: ${task.title}
49
- 新负责人ID: ${task.assignee_id}`,
50
- }],
51
- };
52
- }
53
- //# sourceMappingURL=assign-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assign-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/assign-task.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACtB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,UAAU;aACxB;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;KACrC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAiB,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAqB,CAAC;IAE9C,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,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO;SAC/B,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,uBAAuB,CAAC,CAAC;IAC1D,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;UACN,IAAI,CAAC,WAAW,EAAE;aACvB,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 createSOPTool: Tool;
4
- export declare function handleCreateSOP(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=create-sop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-sop.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/create-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,IA8C3B,CAAC;AAEF,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,CA6C7D"}
@@ -1,90 +0,0 @@
1
- import { existsSync, readFileSync } from 'fs';
2
- import { join } from 'path';
3
- export const createSOPTool = {
4
- name: 'create_sop',
5
- description: `创建 SOP(技能/智能体),存储到项目的 .omt/sops/ 目录。
6
-
7
- 【SOP 内容】
8
- - 规则:执行任务时必须遵循的基本原则
9
- - 流程:执行任务的标准步骤
10
- - 强制:必须完成的事项
11
- - 禁止:不允许做的事情
12
- - 经验:任务完成后 AI 自动总结的经验
13
-
14
- 【存储】SOP 以 Markdown 文件形式存储,支持 Git 版本管理`,
15
- inputSchema: {
16
- type: 'object',
17
- properties: {
18
- name: {
19
- type: 'string',
20
- description: 'SOP 名称',
21
- },
22
- description: {
23
- type: 'string',
24
- description: 'SOP 描述(可选)',
25
- },
26
- rules: {
27
- type: 'string',
28
- description: '执行任务时必须遵循的基本原则',
29
- },
30
- workflow: {
31
- type: 'string',
32
- description: '执行任务的标准步骤',
33
- },
34
- required: {
35
- type: 'string',
36
- description: '必须完成的事项',
37
- },
38
- forbidden: {
39
- type: 'string',
40
- description: '不允许做的事情',
41
- },
42
- path: {
43
- type: 'string',
44
- description: '项目路径(可选,默认当前目录)',
45
- },
46
- },
47
- required: ['name'],
48
- },
49
- };
50
- export async function handleCreateSOP(args, context) {
51
- const projectPath = args.path || process.cwd();
52
- const configPath = join(projectPath, '.omt.json');
53
- if (!existsSync(configPath)) {
54
- throw new Error('项目未初始化。请先运行 init_project');
55
- }
56
- const config = JSON.parse(readFileSync(configPath, 'utf-8'));
57
- const response = await fetch(`${context.serverUrl}/api/sops`, {
58
- method: 'POST',
59
- headers: {
60
- 'Content-Type': 'application/json',
61
- 'Authorization': `Bearer ${context.token}`,
62
- },
63
- body: JSON.stringify({
64
- project_id: config.project_id,
65
- project_path: projectPath,
66
- name: args.name,
67
- description: args.description,
68
- rules: args.rules,
69
- workflow: args.workflow,
70
- required: args.required,
71
- forbidden: args.forbidden,
72
- }),
73
- });
74
- if (!response.ok) {
75
- const error = await response.json();
76
- throw new Error(error.error || 'Failed to create SOP');
77
- }
78
- const result = await response.json();
79
- const sop = result.data;
80
- return {
81
- content: [{
82
- type: 'text',
83
- text: `SOP 创建成功!📚
84
- ID: ${sop.id}
85
- 名称: ${sop.name}
86
- 存储位置: .omt/sops/${sop.id}.md`,
87
- }],
88
- };
89
- }
90
- //# sourceMappingURL=create-sop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-sop.js","sourceRoot":"","sources":["../../../src/mcp/tools/create-sop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAa,YAAY,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE;;;;;;;;;sCASuB;IACpC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACtB;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,YAAY;aAC1B;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gBAAgB;aAC9B;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,WAAW;aACzB;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,SAAS;aACvB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,SAAS;aACvB;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,WAAW,GAAI,IAAI,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAkB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE;QAC5D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;SAC3C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,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,sBAAsB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAmB,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;IAExB,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;MACN,GAAG,CAAC,EAAE;MACN,GAAG,CAAC,IAAI;kBACI,GAAG,CAAC,EAAE,KAAK;aACxB,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 getMyTasksTool: Tool;
4
- export declare function handleGetMyTasks(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=get-my-tasks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-my-tasks.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-my-tasks.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,IAa5B,CAAC;AAgDF,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,CAwC7D"}
@@ -1,88 +0,0 @@
1
- export const getMyTasksTool = {
2
- name: 'get_my_tasks',
3
- description: '获取当前用户负责的所有任务',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {
7
- status: {
8
- type: 'string',
9
- enum: ['todo', 'in_progress', 'blocked', 'review', 'done', 'cancelled'],
10
- description: '按状态筛选(可选)',
11
- },
12
- },
13
- },
14
- };
15
- function formatMyTasks(tasks) {
16
- if (tasks.length === 0) {
17
- return '你当前没有负责的任务。';
18
- }
19
- const statusEmoji = {
20
- todo: '📋',
21
- in_progress: '🔄',
22
- blocked: '🚫',
23
- review: '👀',
24
- done: '✅',
25
- cancelled: '❌',
26
- };
27
- // 先按 sort_order 排序,再按状态分组
28
- const sortedTasks = [...tasks].sort((a, b) => a.sort_order - b.sort_order);
29
- const grouped = {};
30
- for (const task of sortedTasks) {
31
- if (!grouped[task.status]) {
32
- grouped[task.status] = [];
33
- }
34
- grouped[task.status].push(task);
35
- }
36
- const statusOrder = ['in_progress', 'blocked', 'review', 'todo', 'done', 'cancelled'];
37
- const lines = [`你负责的任务 (共 ${tasks.length} 个):\n`];
38
- for (const status of statusOrder) {
39
- const statusTasks = grouped[status];
40
- if (!statusTasks || statusTasks.length === 0)
41
- continue;
42
- const emoji = statusEmoji[status] || '📌';
43
- lines.push(`\n${emoji} ${status.toUpperCase()} (${statusTasks.length})`);
44
- lines.push('─'.repeat(30));
45
- for (const task of statusTasks) {
46
- lines.push(` • ${task.title}`);
47
- lines.push(` ID: ${task.id}`);
48
- lines.push(` ${task.due_date ? `截止: ${task.due_date}` : ''}`);
49
- }
50
- }
51
- return lines.join('\n');
52
- }
53
- export async function handleGetMyTasks(args, context) {
54
- // 先获取当前用户
55
- const meResponse = await fetch(`${context.serverUrl}/api/users/me`, {
56
- headers: {
57
- 'Authorization': `Bearer ${context.token}`,
58
- },
59
- });
60
- if (!meResponse.ok) {
61
- throw new Error('Failed to get current user');
62
- }
63
- const meResult = await meResponse.json();
64
- const userId = meResult.data.id;
65
- // 获取用户的任务
66
- const params = new URLSearchParams();
67
- params.append('assignee_id', userId);
68
- if (args.status)
69
- params.append('status', args.status);
70
- const response = await fetch(`${context.serverUrl}/api/tasks?${params}`, {
71
- headers: {
72
- 'Authorization': `Bearer ${context.token}`,
73
- },
74
- });
75
- if (!response.ok) {
76
- const error = await response.json();
77
- throw new Error(error.error || 'Failed to get tasks');
78
- }
79
- const result = await response.json();
80
- const tasks = result.data;
81
- return {
82
- content: [{
83
- type: 'text',
84
- text: formatMyTasks(tasks),
85
- }],
86
- };
87
- }
88
- //# sourceMappingURL=get-my-tasks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-my-tasks.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-my-tasks.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-next-task.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-next-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,eAAe,EAAE,IAO7B,CAAC;AAuCF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,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,CA4D7D"}
@@ -1,84 +0,0 @@
1
- export const getNextTaskTool = {
2
- name: 'get_next_task',
3
- description: '获取下一个要做的任务。如果有正在进行的任务则返回当前任务,否则返回排序中的下一个待办任务',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {},
7
- },
8
- };
9
- function formatNextTask(currentTasks, nextTask) {
10
- const lines = [];
11
- if (currentTasks.length > 0) {
12
- lines.push(`🔄 当前正在进行的任务 (${currentTasks.length} 个):\n`);
13
- for (const task of currentTasks) {
14
- lines.push(` • ${task.title}`);
15
- lines.push(` ID: ${task.id}`);
16
- lines.push(` ${task.due_date ? `截止: ${task.due_date}` : ''}`);
17
- lines.push('');
18
- }
19
- if (nextTask) {
20
- lines.push(`\n📋 完成后的下一个任务:`);
21
- lines.push(` • ${nextTask.title}`);
22
- lines.push(` ID: ${nextTask.id}`);
23
- lines.push(` ${nextTask.due_date ? `截止: ${nextTask.due_date}` : ''}`);
24
- }
25
- return lines.join('\n');
26
- }
27
- if (nextTask) {
28
- lines.push(`📋 下一个任务:\n`);
29
- lines.push(` • ${nextTask.title}`);
30
- lines.push(` ID: ${nextTask.id}`);
31
- lines.push(` 状态: ${nextTask.status}`);
32
- lines.push(` ${nextTask.due_date ? `截止: ${nextTask.due_date}` : ''}`);
33
- lines.push(`\n💡 使用 activate_task 开始这个任务`);
34
- return lines.join('\n');
35
- }
36
- return '✅ 没有待办任务了!所有任务都已完成或没有分配给你的任务。';
37
- }
38
- export async function handleGetNextTask(_args, context) {
39
- const meResponse = await fetch(`${context.serverUrl}/api/users/me`, {
40
- headers: {
41
- 'Authorization': `Bearer ${context.token}`,
42
- },
43
- });
44
- if (!meResponse.ok) {
45
- throw new Error('Failed to get current user');
46
- }
47
- const meResult = await meResponse.json();
48
- const userId = meResult.data.id;
49
- const params = new URLSearchParams();
50
- params.append('assignee_id', userId);
51
- const response = await fetch(`${context.serverUrl}/api/tasks?${params}`, {
52
- headers: {
53
- 'Authorization': `Bearer ${context.token}`,
54
- },
55
- });
56
- if (!response.ok) {
57
- const error = await response.json();
58
- throw new Error(error.error || 'Failed to get tasks');
59
- }
60
- const result = await response.json();
61
- const allTasks = result.data;
62
- allTasks.sort((a, b) => a.sort_order - b.sort_order);
63
- const currentTasks = allTasks.filter(t => t.status === 'in_progress');
64
- let nextTask = null;
65
- const topLevelTasks = allTasks.filter(t => t.parent_id === null);
66
- const nextTopLevel = topLevelTasks.find(t => t.status === 'planned');
67
- if (nextTopLevel) {
68
- const children = allTasks.filter(t => t.parent_id === nextTopLevel.id &&
69
- t.status !== 'done');
70
- if (children.length > 0) {
71
- nextTask = children.find(t => t.status === 'planned') || children[0];
72
- }
73
- else {
74
- nextTask = nextTopLevel;
75
- }
76
- }
77
- return {
78
- content: [{
79
- type: 'text',
80
- text: formatNextTask(currentTasks, nextTask),
81
- }],
82
- };
83
- }
84
- //# sourceMappingURL=get-next-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-next-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-next-task.ts"],"names":[],"mappings":"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"}