@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.
- package/README.md +121 -236
- package/dist/__tests__/auth-admin.test.d.ts +2 -0
- package/dist/__tests__/auth-admin.test.d.ts.map +1 -0
- package/dist/__tests__/auth-admin.test.js +440 -0
- package/dist/__tests__/auth-admin.test.js.map +1 -0
- package/dist/__tests__/auth-login-logout.test.d.ts +2 -0
- package/dist/__tests__/auth-login-logout.test.d.ts.map +1 -0
- package/dist/__tests__/auth-login-logout.test.js +400 -0
- package/dist/__tests__/auth-login-logout.test.js.map +1 -0
- package/dist/__tests__/auth-password.test.d.ts +2 -0
- package/dist/__tests__/auth-password.test.d.ts.map +1 -0
- package/dist/__tests__/auth-password.test.js +419 -0
- package/dist/__tests__/auth-password.test.js.map +1 -0
- package/dist/__tests__/auth-register.test.d.ts +2 -0
- package/dist/__tests__/auth-register.test.d.ts.map +1 -0
- package/dist/__tests__/auth-register.test.js +379 -0
- package/dist/__tests__/auth-register.test.js.map +1 -0
- package/dist/__tests__/auth-tokens.test.d.ts +2 -0
- package/dist/__tests__/auth-tokens.test.d.ts.map +1 -0
- package/dist/__tests__/auth-tokens.test.js +392 -0
- package/dist/__tests__/auth-tokens.test.js.map +1 -0
- package/dist/__tests__/db-schema.test.d.ts +2 -0
- package/dist/__tests__/db-schema.test.d.ts.map +1 -0
- package/dist/__tests__/db-schema.test.js +245 -0
- package/dist/__tests__/db-schema.test.js.map +1 -0
- package/dist/__tests__/express-server.test.d.ts +2 -0
- package/dist/__tests__/express-server.test.d.ts.map +1 -0
- package/dist/__tests__/express-server.test.js +119 -0
- package/dist/__tests__/express-server.test.js.map +1 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts +2 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts.map +1 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js +270 -0
- package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js.map +1 -0
- package/dist/__tests__/mcp/mcp-tools.test.d.ts +2 -0
- package/dist/__tests__/mcp/mcp-tools.test.d.ts.map +1 -0
- package/dist/__tests__/mcp/mcp-tools.test.js +547 -0
- package/dist/__tests__/mcp/mcp-tools.test.js.map +1 -0
- package/dist/__tests__/projects.test.d.ts +2 -0
- package/dist/__tests__/projects.test.d.ts.map +1 -0
- package/dist/__tests__/projects.test.js +406 -0
- package/dist/__tests__/projects.test.js.map +1 -0
- package/dist/__tests__/schedule.test.d.ts +2 -0
- package/dist/__tests__/schedule.test.d.ts.map +1 -0
- package/dist/__tests__/schedule.test.js +587 -0
- package/dist/__tests__/schedule.test.js.map +1 -0
- package/dist/__tests__/tasks-crud.test.d.ts +2 -0
- package/dist/__tests__/tasks-crud.test.d.ts.map +1 -0
- package/dist/__tests__/tasks-crud.test.js +606 -0
- package/dist/__tests__/tasks-crud.test.js.map +1 -0
- package/dist/__tests__/tasks-lifecycle.test.d.ts +2 -0
- package/dist/__tests__/tasks-lifecycle.test.d.ts.map +1 -0
- package/dist/__tests__/tasks-lifecycle.test.js +712 -0
- package/dist/__tests__/tasks-lifecycle.test.js.map +1 -0
- package/dist/__tests__/versions.test.d.ts +2 -0
- package/dist/__tests__/versions.test.d.ts.map +1 -0
- package/dist/__tests__/versions.test.js +613 -0
- package/dist/__tests__/versions.test.js.map +1 -0
- package/dist/api/middleware/auth.d.ts +1 -2
- package/dist/api/middleware/auth.d.ts.map +1 -1
- package/dist/api/middleware/auth.js +5 -12
- package/dist/api/middleware/auth.js.map +1 -1
- package/dist/api/middleware/captcha.d.ts +8 -0
- package/dist/api/middleware/captcha.d.ts.map +1 -1
- package/dist/api/middleware/captcha.js +29 -4
- package/dist/api/middleware/captcha.js.map +1 -1
- package/dist/api/middleware/ownerCheck.d.ts +0 -5
- package/dist/api/middleware/ownerCheck.d.ts.map +1 -1
- package/dist/api/middleware/ownerCheck.js +15 -49
- package/dist/api/middleware/ownerCheck.js.map +1 -1
- package/dist/api/routes/{sops.d.ts → admin.d.ts} +1 -1
- package/dist/api/routes/admin.d.ts.map +1 -0
- package/dist/api/routes/admin.js +20 -0
- package/dist/api/routes/admin.js.map +1 -0
- package/dist/api/routes/auth.d.ts.map +1 -1
- package/dist/api/routes/auth.js +65 -14
- package/dist/api/routes/auth.js.map +1 -1
- package/dist/api/routes/config.d.ts.map +1 -1
- package/dist/api/routes/config.js +6 -1
- package/dist/api/routes/config.js.map +1 -1
- package/dist/api/routes/projects.d.ts.map +1 -1
- package/dist/api/routes/projects.js +29 -18
- package/dist/api/routes/projects.js.map +1 -1
- package/dist/api/routes/tasks.d.ts.map +1 -1
- package/dist/api/routes/tasks.js +79 -104
- package/dist/api/routes/tasks.js.map +1 -1
- package/dist/api/routes/tokens.d.ts.map +1 -1
- package/dist/api/routes/tokens.js +11 -8
- package/dist/api/routes/tokens.js.map +1 -1
- package/dist/api/routes/users.d.ts.map +1 -1
- package/dist/api/routes/users.js +7 -59
- package/dist/api/routes/users.js.map +1 -1
- package/dist/api/routes/versions.d.ts.map +1 -1
- package/dist/api/routes/versions.js +63 -34
- package/dist/api/routes/versions.js.map +1 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +23 -14
- package/dist/api/server.js.map +1 -1
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +40 -118
- package/dist/db/connection.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +15 -64
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/activate-task.d.ts.map +1 -1
- package/dist/mcp/tools/activate-task.js +3 -17
- package/dist/mcp/tools/activate-task.js.map +1 -1
- package/dist/mcp/tools/{get-next-task.d.ts → auto-schedule.d.ts} +3 -3
- package/dist/mcp/tools/auto-schedule.d.ts.map +1 -0
- package/dist/mcp/tools/auto-schedule.js +59 -0
- package/dist/mcp/tools/auto-schedule.js.map +1 -0
- package/dist/mcp/tools/complete-task.d.ts.map +1 -1
- package/dist/mcp/tools/complete-task.js +2 -12
- package/dist/mcp/tools/complete-task.js.map +1 -1
- package/dist/mcp/tools/create-task.d.ts.map +1 -1
- package/dist/mcp/tools/create-task.js +33 -38
- package/dist/mcp/tools/create-task.js.map +1 -1
- package/dist/mcp/tools/create-version.d.ts.map +1 -1
- package/dist/mcp/tools/create-version.js +2 -17
- package/dist/mcp/tools/create-version.js.map +1 -1
- package/dist/mcp/tools/{get-task-context.d.ts → get-current-task.d.ts} +3 -3
- package/dist/mcp/tools/get-current-task.d.ts.map +1 -0
- package/dist/mcp/tools/get-current-task.js +85 -0
- package/dist/mcp/tools/get-current-task.js.map +1 -0
- package/dist/mcp/tools/get-task.d.ts.map +1 -1
- package/dist/mcp/tools/get-task.js +7 -12
- package/dist/mcp/tools/get-task.js.map +1 -1
- package/dist/mcp/tools/init-project.d.ts +0 -2
- package/dist/mcp/tools/init-project.d.ts.map +1 -1
- package/dist/mcp/tools/init-project.js +39 -75
- package/dist/mcp/tools/init-project.js.map +1 -1
- package/dist/mcp/tools/list-tasks.d.ts.map +1 -1
- package/dist/mcp/tools/list-tasks.js +8 -33
- package/dist/mcp/tools/list-tasks.js.map +1 -1
- package/dist/mcp/tools/list-versions.d.ts.map +1 -1
- package/dist/mcp/tools/list-versions.js +16 -25
- package/dist/mcp/tools/list-versions.js.map +1 -1
- package/dist/mcp/tools/utils/config.js +1 -1
- package/dist/mcp/tools/utils/config.js.map +1 -1
- package/dist/services/admin.service.d.ts +27 -0
- package/dist/services/admin.service.d.ts.map +1 -0
- package/dist/services/admin.service.js +88 -0
- package/dist/services/admin.service.js.map +1 -0
- package/dist/services/config.service.d.ts +1 -0
- package/dist/services/config.service.d.ts.map +1 -1
- package/dist/services/config.service.js +7 -0
- package/dist/services/config.service.js.map +1 -1
- package/dist/services/project.service.d.ts +7 -7
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +47 -40
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/schedule.service.d.ts +6 -0
- package/dist/services/schedule.service.d.ts.map +1 -1
- package/dist/services/schedule.service.js +36 -12
- package/dist/services/schedule.service.js.map +1 -1
- package/dist/services/task.service.d.ts +6 -18
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +161 -194
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/token.service.d.ts +1 -0
- package/dist/services/token.service.d.ts.map +1 -1
- package/dist/services/token.service.js +5 -2
- package/dist/services/token.service.js.map +1 -1
- package/dist/services/user.service.d.ts +0 -32
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +13 -110
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/version.service.d.ts +26 -8
- package/dist/services/version.service.d.ts.map +1 -1
- package/dist/services/version.service.js +149 -41
- package/dist/services/version.service.js.map +1 -1
- package/dist/types/index.d.ts +17 -60
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -13
- package/src/db/schema.sql +113 -70
- package/dist/api/routes/sops.d.ts.map +0 -1
- package/dist/api/routes/sops.js +0 -155
- package/dist/api/routes/sops.js.map +0 -1
- package/dist/mcp/tools/add-task-note.d.ts +0 -10
- package/dist/mcp/tools/add-task-note.d.ts.map +0 -1
- package/dist/mcp/tools/add-task-note.js +0 -46
- package/dist/mcp/tools/add-task-note.js.map +0 -1
- package/dist/mcp/tools/approve-task.d.ts +0 -10
- package/dist/mcp/tools/approve-task.d.ts.map +0 -1
- package/dist/mcp/tools/approve-task.js +0 -59
- package/dist/mcp/tools/approve-task.js.map +0 -1
- package/dist/mcp/tools/archive-version.d.ts +0 -10
- package/dist/mcp/tools/archive-version.d.ts.map +0 -1
- package/dist/mcp/tools/archive-version.js +0 -57
- package/dist/mcp/tools/archive-version.js.map +0 -1
- package/dist/mcp/tools/assign-task.d.ts +0 -10
- package/dist/mcp/tools/assign-task.d.ts.map +0 -1
- package/dist/mcp/tools/assign-task.js +0 -53
- package/dist/mcp/tools/assign-task.js.map +0 -1
- package/dist/mcp/tools/create-sop.d.ts +0 -10
- package/dist/mcp/tools/create-sop.d.ts.map +0 -1
- package/dist/mcp/tools/create-sop.js +0 -90
- package/dist/mcp/tools/create-sop.js.map +0 -1
- package/dist/mcp/tools/get-my-tasks.d.ts +0 -10
- package/dist/mcp/tools/get-my-tasks.d.ts.map +0 -1
- package/dist/mcp/tools/get-my-tasks.js +0 -88
- package/dist/mcp/tools/get-my-tasks.js.map +0 -1
- package/dist/mcp/tools/get-next-task.d.ts.map +0 -1
- package/dist/mcp/tools/get-next-task.js +0 -84
- package/dist/mcp/tools/get-next-task.js.map +0 -1
- package/dist/mcp/tools/get-sop.d.ts +0 -10
- package/dist/mcp/tools/get-sop.d.ts.map +0 -1
- package/dist/mcp/tools/get-sop.js +0 -67
- package/dist/mcp/tools/get-sop.js.map +0 -1
- package/dist/mcp/tools/get-task-context.d.ts.map +0 -1
- package/dist/mcp/tools/get-task-context.js +0 -114
- package/dist/mcp/tools/get-task-context.js.map +0 -1
- package/dist/mcp/tools/helpers.d.ts +0 -10
- package/dist/mcp/tools/helpers.d.ts.map +0 -1
- package/dist/mcp/tools/helpers.js +0 -17
- package/dist/mcp/tools/helpers.js.map +0 -1
- package/dist/mcp/tools/list-sops.d.ts +0 -10
- package/dist/mcp/tools/list-sops.d.ts.map +0 -1
- package/dist/mcp/tools/list-sops.js +0 -57
- package/dist/mcp/tools/list-sops.js.map +0 -1
- package/dist/mcp/tools/reject-task.d.ts +0 -10
- package/dist/mcp/tools/reject-task.d.ts.map +0 -1
- package/dist/mcp/tools/reject-task.js +0 -63
- package/dist/mcp/tools/reject-task.js.map +0 -1
- package/dist/mcp/tools/reschedule.d.ts +0 -17
- package/dist/mcp/tools/reschedule.d.ts.map +0 -1
- package/dist/mcp/tools/reschedule.js +0 -107
- package/dist/mcp/tools/reschedule.js.map +0 -1
- package/dist/mcp/tools/start-task.d.ts +0 -10
- package/dist/mcp/tools/start-task.d.ts.map +0 -1
- package/dist/mcp/tools/start-task.js +0 -42
- package/dist/mcp/tools/start-task.js.map +0 -1
- package/dist/mcp/tools/submit-for-review.d.ts +0 -10
- package/dist/mcp/tools/submit-for-review.d.ts.map +0 -1
- package/dist/mcp/tools/submit-for-review.js +0 -64
- package/dist/mcp/tools/submit-for-review.js.map +0 -1
- package/dist/mcp/tools/update-sop.d.ts +0 -10
- package/dist/mcp/tools/update-sop.d.ts.map +0 -1
- package/dist/mcp/tools/update-sop.js +0 -113
- package/dist/mcp/tools/update-sop.js.map +0 -1
- package/dist/mcp/tools/update-task-doc.d.ts +0 -10
- package/dist/mcp/tools/update-task-doc.d.ts.map +0 -1
- package/dist/mcp/tools/update-task-doc.js +0 -70
- package/dist/mcp/tools/update-task-doc.js.map +0 -1
- package/dist/mcp/tools/update-task.d.ts +0 -10
- package/dist/mcp/tools/update-task.d.ts.map +0 -1
- package/dist/mcp/tools/update-task.js +0 -106
- package/dist/mcp/tools/update-task.js.map +0 -1
- package/dist/services/sop.service.d.ts +0 -53
- package/dist/services/sop.service.d.ts.map +0 -1
- package/dist/services/sop.service.js +0 -275
- 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"}
|