@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,10 +0,0 @@
1
- import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import type { McpContext } from './utils/config.js';
3
- export declare const getSOPTool: Tool;
4
- export declare function handleGetSOP(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=get-sop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-sop.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-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,UAAU,EAAE,IAiBxB,CAAC;AAUF,wBAAsB,YAAY,CAChC,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,CA0C7D"}
@@ -1,67 +0,0 @@
1
- import { readFileSync, existsSync } from 'fs';
2
- import { join } from 'path';
3
- export const getSOPTool = {
4
- name: 'get_sop',
5
- description: '获取 SOP 详情,包含所有规则、流程、强制、禁止和经验内容',
6
- inputSchema: {
7
- type: 'object',
8
- properties: {
9
- sop_id: {
10
- type: 'string',
11
- description: 'SOP ID',
12
- },
13
- path: {
14
- type: 'string',
15
- description: '项目路径(可选,默认当前目录)',
16
- },
17
- },
18
- required: ['sop_id'],
19
- },
20
- };
21
- function getProjectConfig(projectPath) {
22
- const configPath = join(projectPath, '.omt.json');
23
- if (!existsSync(configPath)) {
24
- throw new Error('项目未初始化。请先运行 init_project');
25
- }
26
- return JSON.parse(readFileSync(configPath, 'utf-8'));
27
- }
28
- export async function handleGetSOP(args, context) {
29
- const sopId = args.sop_id;
30
- const projectPath = args.path || process.cwd();
31
- const config = getProjectConfig(projectPath);
32
- const response = await fetch(`${context.serverUrl}/api/sops/${sopId}?project_path=${encodeURIComponent(projectPath)}`, {
33
- headers: {
34
- 'Authorization': `Bearer ${context.token}`,
35
- },
36
- });
37
- if (!response.ok) {
38
- const error = await response.json();
39
- throw new Error(error.error || 'Failed to get SOP');
40
- }
41
- const result = await response.json();
42
- const sop = result.data;
43
- return {
44
- content: [{
45
- type: 'text',
46
- text: `📚 SOP: ${sop.name}
47
- ID: ${sop.id}
48
- ${sop.description ? `描述: ${sop.description}` : ''}
49
-
50
- ## 规则
51
- ${sop.rules || '(未设置)'}
52
-
53
- ## 流程
54
- ${sop.workflow || '(未设置)'}
55
-
56
- ## 强制
57
- ${sop.required || '(未设置)'}
58
-
59
- ## 禁止
60
- ${sop.forbidden || '(未设置)'}
61
-
62
- ## 经验
63
- ${sop.experience || '(暂无经验积累)'}`,
64
- }],
65
- };
66
- }
67
- //# sourceMappingURL=get-sop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-sop.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-sop.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,UAAU,GAAS;IAC9B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,gCAAgC;IAC7C,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACtB;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;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,YAAY,CAChC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAgB,CAAC;IACpC,MAAM,WAAW,GAAI,IAAI,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,aAAa,KAAK,iBAAiB,kBAAkB,CAAC,WAAW,CAAC,EAAE,EAAE;QACrH,OAAO,EAAE;YACP,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,mBAAmB,CAAC,CAAC;IACtD,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,WAAW,GAAG,CAAC,IAAI;MACzB,GAAG,CAAC,EAAE;EACV,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAG/C,GAAG,CAAC,KAAK,IAAI,OAAO;;;EAGpB,GAAG,CAAC,QAAQ,IAAI,OAAO;;;EAGvB,GAAG,CAAC,QAAQ,IAAI,OAAO;;;EAGvB,GAAG,CAAC,SAAS,IAAI,OAAO;;;EAGxB,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE;aAC3B,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-task-context.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-task-context.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,kBAAkB,EAAE,IAiBhC,CAAC;AAgFF,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,114 +0,0 @@
1
- export const getTaskContextTool = {
2
- name: 'get_task_context',
3
- description: '获取任务完整上下文(用于断点续传)。一次性返回任务的基本信息、需求文档、设计文档、当前情况、最近历史和子任务摘要。',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {
7
- task_id: {
8
- type: 'string',
9
- description: '任务ID',
10
- },
11
- history_limit: {
12
- type: 'number',
13
- description: '返回的历史记录条数,默认 5',
14
- },
15
- },
16
- required: ['task_id'],
17
- },
18
- };
19
- const STATUS_EMOJI = {
20
- planned: '📋',
21
- in_progress: '🔄',
22
- done: '✅',
23
- };
24
- function formatContext(ctx) {
25
- const emoji = STATUS_EMOJI[ctx.status] || '📌';
26
- let output = `# 任务上下文:${ctx.title}
27
-
28
- ## 📌 基本信息
29
- | 项目 | 值 |
30
- |------|-----|
31
- | ID | ${ctx.id} |
32
- | 状态 | ${emoji} ${ctx.status} |
33
- | 负责人 | ${ctx.assignee?.name || '未分配'} |
34
- | 开始日期 | ${ctx.start_date || '-'} |
35
- | 截止日期 | ${ctx.due_date || '-'} |
36
- | 预估工时 | ${ctx.estimated_days ? `${ctx.estimated_days} 天` : '-'} |
37
- | 实际开始 | ${ctx.actual_start || '-'} |
38
- | 实际完成 | ${ctx.actual_end || '-'} |
39
- `;
40
- output += `\n## 📋 需求文档\n`;
41
- if (ctx.requirement_doc) {
42
- output += ctx.requirement_doc + '\n';
43
- }
44
- else {
45
- output += '_暂无需求文档,使用 update_task_doc 添加_\n';
46
- }
47
- output += `\n## 🎨 设计文档\n`;
48
- if (ctx.design_doc) {
49
- output += ctx.design_doc + '\n';
50
- }
51
- else {
52
- output += '_暂无设计文档,使用 update_task_doc 添加_\n';
53
- }
54
- output += `\n## 📍 当前情况\n`;
55
- if (ctx.current_status) {
56
- output += ctx.current_status + '\n';
57
- }
58
- else {
59
- output += '_暂无当前情况记录,使用 update_task_doc 添加_\n';
60
- }
61
- output += `\n## 📜 最近历史\n`;
62
- if (ctx.recent_history.length > 0) {
63
- output += '| 时间 | 操作 | 内容 |\n|------|------|------|\n';
64
- for (const h of ctx.recent_history) {
65
- const time = h.changed_at.substring(0, 16).replace('T', ' ');
66
- const action = h.action === 'noted' ? '备注' :
67
- h.action === 'status_changed' ? '状态变更' :
68
- h.action === 'created' ? '创建' :
69
- h.action === 'assigned' ? '分配' : '更新';
70
- const content = h.action === 'noted' ? h.new_value :
71
- h.action === 'status_changed' ? `${h.old_value} → ${h.new_value}` :
72
- h.field ? `${h.field}: ${h.old_value || '-'} → ${h.new_value || '-'}` : '-';
73
- output += `| ${time} | ${action} | ${content} |\n`;
74
- }
75
- }
76
- else {
77
- output += '_暂无历史记录_\n';
78
- }
79
- output += `\n## 📂 子任务 (${ctx.children_summary.done}/${ctx.children_summary.total} 完成)\n`;
80
- if (ctx.children_summary.children.length > 0) {
81
- for (const child of ctx.children_summary.children) {
82
- const childEmoji = STATUS_EMOJI[child.status] || '📌';
83
- const marker = child.status === 'done' ? '[x]' :
84
- child.status === 'in_progress' ? '[→]' : '[ ]';
85
- output += `- ${marker} ${childEmoji} ${child.title}\n`;
86
- }
87
- }
88
- else {
89
- output += '_暂无子任务_\n';
90
- }
91
- return output;
92
- }
93
- export async function handleGetTaskContext(args, context) {
94
- const taskId = args.task_id;
95
- const historyLimit = args.history_limit || 5;
96
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}/context?history_limit=${historyLimit}`, {
97
- headers: {
98
- 'Authorization': `Bearer ${context.token}`,
99
- },
100
- });
101
- if (!response.ok) {
102
- const error = await response.json();
103
- throw new Error(error.error || 'Failed to get task context');
104
- }
105
- const result = await response.json();
106
- const ctx = result.data;
107
- return {
108
- content: [{
109
- type: 'text',
110
- text: formatContext(ctx),
111
- }],
112
- };
113
- }
114
- //# sourceMappingURL=get-task-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-task-context.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-task-context.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 helpersTool: Tool;
4
- export declare function handleHelpers(_args: Record<string, unknown>, _context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,IAOzB,CAAC;AAEF,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAO7D"}
@@ -1,17 +0,0 @@
1
- export const helpersTool = {
2
- name: 'helpers',
3
- description: '辅助工具(内部使用)',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {},
7
- },
8
- };
9
- export async function handleHelpers(_args, _context) {
10
- return {
11
- content: [{
12
- type: 'text',
13
- text: 'Helper functions for MCP tools',
14
- }],
15
- };
16
- }
17
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/mcp/tools/helpers.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;KACf;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAA8B,EAC9B,QAAoB;IAEpB,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,gCAAgC;aACvC,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 listSOPsTool: Tool;
4
- export declare function handleListSOPs(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=list-sops.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-sops.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list-sops.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,YAAY,EAAE,IAY1B,CAAC;AAUF,wBAAsB,cAAc,CAClC,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,CAuC7D"}
@@ -1,57 +0,0 @@
1
- import { readFileSync, existsSync } from 'fs';
2
- import { join } from 'path';
3
- export const listSOPsTool = {
4
- name: 'list_sops',
5
- description: '列出项目中的所有 SOP(技能/智能体)',
6
- inputSchema: {
7
- type: 'object',
8
- properties: {
9
- path: {
10
- type: 'string',
11
- description: '项目路径(可选,默认当前目录)',
12
- },
13
- },
14
- },
15
- };
16
- function getProjectConfig(projectPath) {
17
- const configPath = join(projectPath, '.omt.json');
18
- if (!existsSync(configPath)) {
19
- throw new Error('项目未初始化。请先运行 init_project');
20
- }
21
- return JSON.parse(readFileSync(configPath, 'utf-8'));
22
- }
23
- export async function handleListSOPs(args, context) {
24
- const projectPath = args.path || process.cwd();
25
- const config = getProjectConfig(projectPath);
26
- const response = await fetch(`${context.serverUrl}/api/sops?project_id=${config.project_id}&project_path=${encodeURIComponent(projectPath)}`, {
27
- headers: {
28
- 'Authorization': `Bearer ${context.token}`,
29
- },
30
- });
31
- if (!response.ok) {
32
- const error = await response.json();
33
- throw new Error(error.error || 'Failed to list SOPs');
34
- }
35
- const result = await response.json();
36
- const sops = result.data;
37
- if (sops.length === 0) {
38
- return {
39
- content: [{
40
- type: 'text',
41
- text: '项目中暂无 SOP。使用 create_sop 创建第一个 SOP。',
42
- }],
43
- };
44
- }
45
- const lines = sops.map((sop, index) => {
46
- return `${index + 1}. 📚 ${sop.name}
47
- ID: ${sop.id}
48
- ${sop.description ? `描述: ${sop.description}` : ''}`;
49
- });
50
- return {
51
- content: [{
52
- type: 'text',
53
- text: `找到 ${sops.length} 个 SOP:\n\n${lines.join('\n\n')}`,
54
- }],
55
- };
56
- }
57
- //# sourceMappingURL=list-sops.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-sops.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-sops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAe,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;KACF;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,cAAc,CAClC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,WAAW,GAAI,IAAI,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,wBAAwB,MAAM,CAAC,UAAU,iBAAiB,kBAAkB,CAAC,WAAW,CAAC,EAAE,EAAE;QAC5I,OAAO,EAAE;YACP,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,qBAAqB,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAqB,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oCAAoC;iBAC3C,CAAC;SACH,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACpC,OAAO,GAAG,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI;SAC9B,GAAG,CAAC,EAAE;KACV,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,cAAc,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;aAC1D,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 rejectTaskTool: Tool;
4
- export declare function handleRejectTask(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=reject-task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reject-task.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/reject-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,IAyB5B,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,CAwC7D"}
@@ -1,63 +0,0 @@
1
- export const rejectTaskTool = {
2
- name: 'reject_task',
3
- description: `验收不通过,打回任务。
4
-
5
- 人工验收不通过时调用此工具,将任务状态改回 in_progress,需要继续修改。
6
-
7
- 调用时机:
8
- - 用户表示"验收不通过"、"有问题"、"需要修改"、"不对"等
9
- - 任务当前状态应为 review(待验收)
10
-
11
- 状态流转:review → in_progress`,
12
- inputSchema: {
13
- type: 'object',
14
- properties: {
15
- task_id: {
16
- type: 'string',
17
- description: '任务ID',
18
- },
19
- reason: {
20
- type: 'string',
21
- description: '不通过原因(必填,会记录到历史,方便了解需要修改什么)',
22
- },
23
- },
24
- required: ['task_id', 'reason'],
25
- },
26
- };
27
- export async function handleRejectTask(args, context) {
28
- const taskId = args.task_id;
29
- const reason = args.reason;
30
- if (!reason) {
31
- throw new Error('reason is required - 请说明验收不通过的原因');
32
- }
33
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}`, {
34
- method: 'PUT',
35
- headers: {
36
- 'Content-Type': 'application/json',
37
- 'Authorization': `Bearer ${context.token}`,
38
- },
39
- body: JSON.stringify({
40
- status: 'in_progress',
41
- reason: `验收不通过: ${reason}`,
42
- }),
43
- });
44
- if (!response.ok) {
45
- const error = await response.json();
46
- throw new Error(error.error || 'Failed to reject task');
47
- }
48
- const result = await response.json();
49
- const task = result.data;
50
- return {
51
- content: [{
52
- type: 'text',
53
- text: `任务已打回,需要继续修改。🔄
54
- ID: ${task.id}
55
- 标题: ${task.title}
56
- 状态: ${task.status}(进行中)
57
- 不通过原因: ${reason}
58
-
59
- 请根据反馈继续修改,完成后再次使用 submit_for_review 提交验收。`,
60
- }],
61
- };
62
- }
63
- //# sourceMappingURL=reject-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reject-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/reject-task.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE;;;;;;;;0BAQW;IACxB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6BAA6B;aAC3C;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;KAChC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAiB,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;IAErC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,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,aAAa;YACrB,MAAM,EAAE,UAAU,MAAM,EAAE;SAC3B,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;MACV,IAAI,CAAC,MAAM;SACR,MAAM;;0CAE2B;aACrC,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import type { McpContext } from './utils/config.js';
3
- export declare const rescheduleTool: Tool;
4
- export declare const autoScheduleTool: Tool;
5
- export declare function handleReschedule(args: Record<string, unknown>, context: McpContext): Promise<{
6
- content: Array<{
7
- type: string;
8
- text: string;
9
- }>;
10
- }>;
11
- export declare function handleAutoSchedule(args: Record<string, unknown>, context: McpContext): Promise<{
12
- content: Array<{
13
- type: string;
14
- text: string;
15
- }>;
16
- }>;
17
- //# sourceMappingURL=reschedule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reschedule.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/reschedule.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,cAAc,EAAE,IAiB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAiB9B,CAAC;AAmBF,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;AAED,wBAAsB,kBAAkB,CACtC,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,CAqC7D"}
@@ -1,107 +0,0 @@
1
- import { readFileSync, existsSync } from 'fs';
2
- import { join } from 'path';
3
- export const rescheduleTool = {
4
- name: 'reschedule',
5
- description: '重新排期:调整任务开始日期,自动顺延后续任务',
6
- inputSchema: {
7
- type: 'object',
8
- properties: {
9
- task_id: {
10
- type: 'string',
11
- description: '任务ID',
12
- },
13
- new_start_date: {
14
- type: 'string',
15
- description: '新的开始日期,格式 YYYY-MM-DD',
16
- },
17
- },
18
- required: ['task_id', 'new_start_date'],
19
- },
20
- };
21
- export const autoScheduleTool = {
22
- name: 'auto_schedule',
23
- description: '自动排期:为项目中的任务自动分配日期',
24
- inputSchema: {
25
- type: 'object',
26
- properties: {
27
- start_date: {
28
- type: 'string',
29
- description: '排期开始日期,格式 YYYY-MM-DD',
30
- },
31
- path: {
32
- type: 'string',
33
- description: '项目路径(可选,默认当前目录)',
34
- },
35
- },
36
- required: ['start_date'],
37
- },
38
- };
39
- function getProjectConfig(projectPath) {
40
- const configPath = join(projectPath, '.omt.json');
41
- if (!existsSync(configPath)) {
42
- throw new Error('项目未初始化。请先运行 init_project');
43
- }
44
- return JSON.parse(readFileSync(configPath, 'utf-8'));
45
- }
46
- export async function handleReschedule(args, context) {
47
- const taskId = args.task_id;
48
- const newStartDate = args.new_start_date;
49
- const response = await fetch(`${context.serverUrl}/api/schedule/reschedule`, {
50
- method: 'POST',
51
- headers: {
52
- 'Content-Type': 'application/json',
53
- 'Authorization': `Bearer ${context.token}`,
54
- },
55
- body: JSON.stringify({ task_id: taskId, new_start_date: newStartDate }),
56
- });
57
- if (!response.ok) {
58
- const error = await response.json();
59
- throw new Error(error.error || 'Failed to reschedule');
60
- }
61
- const result = await response.json();
62
- const changes = result.data.changes;
63
- const lines = [`排期调整完成!共影响 ${changes.length} 个任务:\n`];
64
- for (const change of changes) {
65
- lines.push(`• ${change.title}`);
66
- lines.push(` ${change.old_start || '未设置'} → ${change.new_start}`);
67
- if (change.new_due) {
68
- lines.push(` 截止: ${change.old_due || '未设置'} → ${change.new_due}`);
69
- }
70
- }
71
- return {
72
- content: [{ type: 'text', text: lines.join('\n') }],
73
- };
74
- }
75
- export async function handleAutoSchedule(args, context) {
76
- const projectPath = args.path || process.cwd();
77
- const config = getProjectConfig(projectPath);
78
- const startDate = args.start_date;
79
- const response = await fetch(`${context.serverUrl}/api/schedule/auto`, {
80
- method: 'POST',
81
- headers: {
82
- 'Content-Type': 'application/json',
83
- 'Authorization': `Bearer ${context.token}`,
84
- },
85
- body: JSON.stringify({ project_id: config.project_id, start_date: startDate }),
86
- });
87
- if (!response.ok) {
88
- const error = await response.json();
89
- throw new Error(error.error || 'Failed to auto schedule');
90
- }
91
- const result = await response.json();
92
- const changes = result.data.changes;
93
- if (changes.length === 0) {
94
- return {
95
- content: [{ type: 'text', text: '没有需要排期的任务。' }],
96
- };
97
- }
98
- const lines = [`自动排期完成!共排期 ${changes.length} 个任务:\n`];
99
- for (const change of changes) {
100
- lines.push(`• ${change.title}`);
101
- lines.push(` 开始: ${change.new_start}${change.new_due ? ` | 截止: ${change.new_due}` : ''}`);
102
- }
103
- return {
104
- content: [{ type: 'text', text: lines.join('\n') }],
105
- };
106
- }
107
- //# sourceMappingURL=reschedule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reschedule.js","sourceRoot":"","sources":["../../../src/mcp/tools/reschedule.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 startTaskTool: Tool;
4
- export declare function handleStartTask(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=start-task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start-task.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/start-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,aAAa,EAAE,IAa3B,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,CA8B7D"}
@@ -1,42 +0,0 @@
1
- export const startTaskTool = {
2
- name: 'start_task',
3
- description: '开始任务,将状态改为 in_progress 并记录实际开始时间',
4
- inputSchema: {
5
- type: 'object',
6
- properties: {
7
- task_id: {
8
- type: 'string',
9
- description: '任务ID',
10
- },
11
- },
12
- required: ['task_id'],
13
- },
14
- };
15
- export async function handleStartTask(args, context) {
16
- const taskId = args.task_id;
17
- const response = await fetch(`${context.serverUrl}/api/tasks/${taskId}`, {
18
- method: 'PUT',
19
- headers: {
20
- 'Content-Type': 'application/json',
21
- 'Authorization': `Bearer ${context.token}`,
22
- },
23
- body: JSON.stringify({ status: 'in_progress' }),
24
- });
25
- if (!response.ok) {
26
- const error = await response.json();
27
- throw new Error(error.error || 'Failed to start task');
28
- }
29
- const result = await response.json();
30
- const task = result.data;
31
- return {
32
- content: [{
33
- type: 'text',
34
- text: `任务已开始!
35
- ID: ${task.id}
36
- 标题: ${task.title}
37
- 状态: ${task.status}
38
- 开始时间: ${task.actual_start || '已记录'}`,
39
- }],
40
- };
41
- }
42
- //# sourceMappingURL=start-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/start-task.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,YAAY;IAClB,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;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA6B,EAC7B,OAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAiB,CAAC;IAEtC,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,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;KAChD,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,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,YAAY,IAAI,KAAK,EAAE;aAC/B,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 submitForReviewTool: Tool;
4
- export declare function handleSubmitForReview(args: Record<string, unknown>, context: McpContext): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=submit-for-review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submit-for-review.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/submit-for-review.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,mBAAmB,EAAE,IA2BjC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,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,CAsC7D"}