@zuens2020/back-agent-mcp 1.0.1 → 2.0.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/claude/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAkH3F"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/claude/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAmH3F"}
@@ -24,10 +24,11 @@ export async function executeClaudeTask(options) {
24
24
  logger.info(`Using working directory: ${cwd}`);
25
25
  }
26
26
  // Build CLI arguments
27
- const args = buildCliArgs(task, cwd, additionalArgs);
28
- logger.debug(`Claude CLI args: ${JSON.stringify(args)}`);
27
+ const { args: cliArgs, cwd: spawnCwd } = buildCliArgs(task, cwd, additionalArgs);
28
+ logger.debug(`Claude CLI args: ${JSON.stringify(cliArgs)}`);
29
29
  // Spawn the process
30
- const claude = spawn('claude', args, {
30
+ const claude = spawn('claude', cliArgs, {
31
+ cwd: spawnCwd,
31
32
  env: process.env,
32
33
  stdio: ['ignore', 'pipe', 'pipe'],
33
34
  shell: true, // Use shell to find 'claude' in PATH
@@ -107,9 +108,9 @@ export async function executeClaudeTask(options) {
107
108
  */
108
109
  function buildCliArgs(task, workingDirectory, additionalArgs = []) {
109
110
  const args = [];
110
- // Add working directory if specified
111
+ // Add working directory to allowed directories if specified
111
112
  if (workingDirectory) {
112
- args.push('--directory', workingDirectory);
113
+ args.push('--add-dir', workingDirectory);
113
114
  }
114
115
  // Add additional arguments (exclude -p if user provided it, we add it by default)
115
116
  const filteredArgs = additionalArgs.filter(arg => arg !== '-p' && arg !== '--print');
@@ -117,6 +118,7 @@ function buildCliArgs(task, workingDirectory, additionalArgs = []) {
117
118
  // Add -p flag for one-time execution (non-interactive mode)
118
119
  // This must come immediately before the task
119
120
  args.push('-p', task);
120
- return args;
121
+ // Return both args and cwd - the working directory will be used as spawn's cwd
122
+ return { args, cwd: workingDirectory };
121
123
  }
122
124
  //# sourceMappingURL=executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/claude/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/claude/executor.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,10 +8,11 @@
8
8
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
9
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
10
  import { registerExecuteTaskTool } from './server/tools/execute-task.js';
11
+ import { registerTaskManagementTools } from './task-manager/task-tools.js';
11
12
  import { logger, setLogLevel, LogLevel } from './utils/logger.js';
12
13
  const SERVER_INFO = {
13
14
  name: 'back-agent-mcp',
14
- version: '1.0.0',
15
+ version: '2.0.0',
15
16
  };
16
17
  /**
17
18
  * Start the MCP server
@@ -37,6 +38,8 @@ async function main() {
37
38
  logger.debug('Registering tools...');
38
39
  registerExecuteTaskTool(server);
39
40
  logger.info('Registered tool: execute-task');
41
+ registerTaskManagementTools(server);
42
+ logger.info('Registered task management tools');
40
43
  // Create stdio transport for communication
41
44
  logger.debug('Creating StdioServerTransport...');
42
45
  const transport = new StdioServerTransport();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Task Manager for Back-Agent MCP Server
3
+ *
4
+ * Manages concurrent task execution with status tracking.
5
+ */
6
+ import { ExecutionResult } from '../claude/executor.js';
7
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
8
+ export interface Task {
9
+ id: string;
10
+ task: string;
11
+ workingDirectory?: string;
12
+ timeout: number;
13
+ additionalArgs?: string[];
14
+ status: TaskStatus;
15
+ createdAt: Date;
16
+ startedAt?: Date;
17
+ completedAt?: Date;
18
+ result?: ExecutionResult;
19
+ error?: string;
20
+ }
21
+ export interface CreateTaskOptions {
22
+ task: string;
23
+ workingDirectory?: string;
24
+ timeout?: number;
25
+ additionalArgs?: string[];
26
+ }
27
+ export interface TaskInfo {
28
+ id: string;
29
+ task: string;
30
+ workingDirectory?: string;
31
+ status: TaskStatus;
32
+ createdAt: string;
33
+ startedAt?: string;
34
+ completedAt?: string;
35
+ error?: string;
36
+ success?: boolean;
37
+ exitCode?: number | null;
38
+ }
39
+ /**
40
+ * Manages concurrent task execution
41
+ */
42
+ export declare class TaskManager {
43
+ private tasks;
44
+ private maxConcurrent;
45
+ constructor(maxConcurrent?: number);
46
+ /**
47
+ * Create a new task and start executing it
48
+ */
49
+ createTask(options: CreateTaskOptions): Promise<string>;
50
+ /**
51
+ * Execute a task (runs asynchronously)
52
+ */
53
+ private executeTask;
54
+ /**
55
+ * Get task status and info
56
+ */
57
+ getTask(id: string): TaskInfo | null;
58
+ /**
59
+ * Get task result with full output
60
+ */
61
+ getTaskResult(id: string): {
62
+ taskInfo: TaskInfo | null;
63
+ stdout?: string;
64
+ stderr?: string;
65
+ } | null;
66
+ /**
67
+ * List all tasks
68
+ */
69
+ listTasks(): TaskInfo[];
70
+ /**
71
+ * Cancel a task
72
+ */
73
+ cancelTask(id: string): boolean;
74
+ /**
75
+ * Delete a task from the task list
76
+ */
77
+ deleteTask(id: string): boolean;
78
+ /**
79
+ * Clean up old completed tasks
80
+ */
81
+ cleanup(olderThanMs?: number): number;
82
+ /**
83
+ * Get count of currently running tasks
84
+ */
85
+ private getRunningCount;
86
+ /**
87
+ * Get task statistics
88
+ */
89
+ getStats(): {
90
+ total: number;
91
+ pending: number;
92
+ running: number;
93
+ completed: number;
94
+ failed: number;
95
+ cancelled: number;
96
+ };
97
+ /**
98
+ * Sleep helper
99
+ */
100
+ private sleep;
101
+ }
102
+ export declare const taskManager: TaskManager;
103
+ //# sourceMappingURL=task-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/task-manager/task-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAqB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG3E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEtF,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,GAAE,MAAU;IAIrC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB7D;;OAEG;YACW,WAAW;IAmDzB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAoBpC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG;QACzB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI;IAaR;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE;IAevB;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB/B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAK/B;;OAEG;IACH,OAAO,CAAC,WAAW,GAAE,MAAgB,GAAG,MAAM;IAsB9C;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB;IAiBD;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAGD,eAAO,MAAM,WAAW,aAAqB,CAAC"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Task Manager for Back-Agent MCP Server
3
+ *
4
+ * Manages concurrent task execution with status tracking.
5
+ */
6
+ import { v4 as uuidv4 } from 'uuid';
7
+ import { executeClaudeTask } from '../claude/executor.js';
8
+ import { logger } from '../utils/logger.js';
9
+ /**
10
+ * Manages concurrent task execution
11
+ */
12
+ export class TaskManager {
13
+ tasks = new Map();
14
+ maxConcurrent;
15
+ constructor(maxConcurrent = 3) {
16
+ this.maxConcurrent = maxConcurrent;
17
+ }
18
+ /**
19
+ * Create a new task and start executing it
20
+ */
21
+ async createTask(options) {
22
+ const id = uuidv4();
23
+ const task = {
24
+ id,
25
+ task: options.task,
26
+ workingDirectory: options.workingDirectory,
27
+ timeout: options.timeout ?? 300,
28
+ additionalArgs: options.additionalArgs,
29
+ status: 'pending',
30
+ createdAt: new Date(),
31
+ };
32
+ this.tasks.set(id, task);
33
+ logger.info(`Task ${id} created: "${options.task.substring(0, 50)}..."`);
34
+ // Start execution asynchronously
35
+ this.executeTask(id);
36
+ return id;
37
+ }
38
+ /**
39
+ * Execute a task (runs asynchronously)
40
+ */
41
+ async executeTask(id) {
42
+ const task = this.tasks.get(id);
43
+ if (!task) {
44
+ logger.error(`Task ${id} not found`);
45
+ return;
46
+ }
47
+ // Wait for available slot if max concurrent limit reached
48
+ while (this.getRunningCount() >= this.maxConcurrent) {
49
+ await this.sleep(100);
50
+ // Check if task was cancelled while waiting
51
+ if (task.status === 'cancelled') {
52
+ return;
53
+ }
54
+ }
55
+ if (task.status === 'cancelled') {
56
+ return;
57
+ }
58
+ task.status = 'running';
59
+ task.startedAt = new Date();
60
+ logger.info(`Task ${id} started`);
61
+ try {
62
+ const result = await executeClaudeTask({
63
+ task: task.task,
64
+ workingDirectory: task.workingDirectory,
65
+ timeout: task.timeout * 1000,
66
+ additionalArgs: task.additionalArgs,
67
+ });
68
+ task.result = result;
69
+ task.completedAt = new Date();
70
+ if (result.success) {
71
+ task.status = 'completed';
72
+ logger.info(`Task ${id} completed successfully`);
73
+ }
74
+ else {
75
+ task.status = 'failed';
76
+ task.error = result.error ?? 'Task execution failed';
77
+ logger.error(`Task ${id} failed: ${task.error}`);
78
+ }
79
+ }
80
+ catch (error) {
81
+ task.status = 'failed';
82
+ task.error = error instanceof Error ? error.message : String(error);
83
+ task.completedAt = new Date();
84
+ logger.error(`Task ${id} error: ${task.error}`);
85
+ }
86
+ }
87
+ /**
88
+ * Get task status and info
89
+ */
90
+ getTask(id) {
91
+ const task = this.tasks.get(id);
92
+ if (!task) {
93
+ return null;
94
+ }
95
+ return {
96
+ id: task.id,
97
+ task: task.task,
98
+ workingDirectory: task.workingDirectory,
99
+ status: task.status,
100
+ createdAt: task.createdAt.toISOString(),
101
+ startedAt: task.startedAt?.toISOString(),
102
+ completedAt: task.completedAt?.toISOString(),
103
+ error: task.error,
104
+ success: task.result?.success,
105
+ exitCode: task.result?.exitCode,
106
+ };
107
+ }
108
+ /**
109
+ * Get task result with full output
110
+ */
111
+ getTaskResult(id) {
112
+ const task = this.tasks.get(id);
113
+ if (!task) {
114
+ return null;
115
+ }
116
+ return {
117
+ taskInfo: this.getTask(id),
118
+ stdout: task.result?.stdout,
119
+ stderr: task.result?.stderr,
120
+ };
121
+ }
122
+ /**
123
+ * List all tasks
124
+ */
125
+ listTasks() {
126
+ return Array.from(this.tasks.values()).map((task) => ({
127
+ id: task.id,
128
+ task: task.task,
129
+ workingDirectory: task.workingDirectory,
130
+ status: task.status,
131
+ createdAt: task.createdAt.toISOString(),
132
+ startedAt: task.startedAt?.toISOString(),
133
+ completedAt: task.completedAt?.toISOString(),
134
+ error: task.error,
135
+ success: task.result?.success,
136
+ exitCode: task.result?.exitCode,
137
+ }));
138
+ }
139
+ /**
140
+ * Cancel a task
141
+ */
142
+ cancelTask(id) {
143
+ const task = this.tasks.get(id);
144
+ if (!task) {
145
+ return false;
146
+ }
147
+ if (task.status === 'pending' || task.status === 'running') {
148
+ task.status = 'cancelled';
149
+ task.completedAt = new Date();
150
+ logger.info(`Task ${id} cancelled`);
151
+ return true;
152
+ }
153
+ return false;
154
+ }
155
+ /**
156
+ * Delete a task from the task list
157
+ */
158
+ deleteTask(id) {
159
+ logger.info(`Task ${id} deleted`);
160
+ return this.tasks.delete(id);
161
+ }
162
+ /**
163
+ * Clean up old completed tasks
164
+ */
165
+ cleanup(olderThanMs = 3600000) {
166
+ const now = Date.now();
167
+ let cleaned = 0;
168
+ for (const [id, task] of this.tasks.entries()) {
169
+ if ((task.status === 'completed' || task.status === 'failed' || task.status === 'cancelled') &&
170
+ task.completedAt &&
171
+ now - task.completedAt.getTime() > olderThanMs) {
172
+ this.tasks.delete(id);
173
+ cleaned++;
174
+ }
175
+ }
176
+ if (cleaned > 0) {
177
+ logger.info(`Cleaned up ${cleaned} old tasks`);
178
+ }
179
+ return cleaned;
180
+ }
181
+ /**
182
+ * Get count of currently running tasks
183
+ */
184
+ getRunningCount() {
185
+ let count = 0;
186
+ for (const task of this.tasks.values()) {
187
+ if (task.status === 'running') {
188
+ count++;
189
+ }
190
+ }
191
+ return count;
192
+ }
193
+ /**
194
+ * Get task statistics
195
+ */
196
+ getStats() {
197
+ const stats = {
198
+ total: this.tasks.size,
199
+ pending: 0,
200
+ running: 0,
201
+ completed: 0,
202
+ failed: 0,
203
+ cancelled: 0,
204
+ };
205
+ for (const task of this.tasks.values()) {
206
+ stats[task.status]++;
207
+ }
208
+ return stats;
209
+ }
210
+ /**
211
+ * Sleep helper
212
+ */
213
+ sleep(ms) {
214
+ return new Promise((resolve) => setTimeout(resolve, ms));
215
+ }
216
+ }
217
+ // Global task manager instance
218
+ export const taskManager = new TaskManager(3);
219
+ //# sourceMappingURL=task-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/task-manager/task-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAmB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAsC5C;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,KAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;IACrC,aAAa,CAAS;IAE9B,YAAY,gBAAwB,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAS;YACjB,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG;YAC/B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAEzE,iCAAiC;QACjC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAErB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,EAAU;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACpD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtB,4CAA4C;YAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;gBAC5B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAE9B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,EAAU;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO;YAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ;SAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,EAAU;QAKtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM;SAC5B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpD,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO;YAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAU;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAU;QACnB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,cAAsB,OAAO;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,IACE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;gBACxF,IAAI,CAAC,WAAW;gBAChB,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,WAAW,EAC9C,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ;QAQN,MAAM,KAAK,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACtB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;SACb,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,+BAA+B;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Task Management Tools for MCP Server
3
+ *
4
+ * Provides tools for managing concurrent task execution.
5
+ */
6
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ /**
8
+ * Register all task management tools with the MCP server
9
+ */
10
+ export declare function registerTaskManagementTools(server: McpServer): void;
11
+ //# sourceMappingURL=task-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-tools.d.ts","sourceRoot":"","sources":["../../src/task-manager/task-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAUnE"}
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Task Management Tools for MCP Server
3
+ *
4
+ * Provides tools for managing concurrent task execution.
5
+ */
6
+ import { z } from 'zod';
7
+ import { taskManager } from './task-manager.js';
8
+ import { logger } from '../utils/logger.js';
9
+ import { createErrorResponse } from '../utils/error-handler.js';
10
+ /**
11
+ * Register all task management tools with the MCP server
12
+ */
13
+ export function registerTaskManagementTools(server) {
14
+ registerCreateTaskTool(server);
15
+ registerGetTaskStatusTool(server);
16
+ registerGetTaskResultTool(server);
17
+ registerCancelTaskTool(server);
18
+ registerListTasksTool(server);
19
+ registerDeleteTaskTool(server);
20
+ registerGetTaskStatsTool(server);
21
+ logger.info('Registered task management tools');
22
+ }
23
+ /**
24
+ * Create a new task
25
+ */
26
+ const createTaskSchema = z.object({
27
+ task: z.string().describe('The task description to execute'),
28
+ workingDirectory: z.string().optional().describe('The working directory for execution'),
29
+ timeout: z.number().min(1).max(3600).optional().describe('Timeout in seconds (max 3600)'),
30
+ additionalArgs: z.array(z.string()).optional().describe('Additional CLI arguments'),
31
+ });
32
+ function registerCreateTaskTool(server) {
33
+ server.registerTool('create-task', {
34
+ description: 'Create a new background task for execution. Returns the task ID. ' +
35
+ 'Tasks run concurrently (max 3 parallel by default). Use get-task-status to check progress.',
36
+ inputSchema: createTaskSchema,
37
+ }, async (input) => {
38
+ const result = createTaskSchema.safeParse(input);
39
+ if (!result.success) {
40
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
41
+ }
42
+ const { task, workingDirectory, timeout, additionalArgs } = result.data;
43
+ try {
44
+ const taskId = await taskManager.createTask({
45
+ task,
46
+ workingDirectory,
47
+ timeout,
48
+ additionalArgs,
49
+ });
50
+ logger.info(`Created task ${taskId}`);
51
+ return {
52
+ content: [{
53
+ type: 'text',
54
+ text: `## Task Created\n\n` +
55
+ `**Task ID:** ${taskId}\n` +
56
+ `**Task:** ${task.substring(0, 100)}${task.length > 100 ? '...' : ''}\n` +
57
+ `**Status:** pending\n\n` +
58
+ `Use \`get-task-status\` with ID \`${taskId}\` to check progress.\n` +
59
+ `Use \`get-task-result\` with ID \`${taskId}\` to get the result when complete.`,
60
+ }],
61
+ };
62
+ }
63
+ catch (error) {
64
+ logger.error(`Error creating task: ${error}`);
65
+ return createErrorResponse(error);
66
+ }
67
+ });
68
+ }
69
+ /**
70
+ * Get task status
71
+ */
72
+ const getTaskStatusSchema = z.object({
73
+ taskId: z.string().describe('The task ID'),
74
+ });
75
+ function registerGetTaskStatusTool(server) {
76
+ server.registerTool('get-task-status', {
77
+ description: 'Get the current status of a task. Returns status, timestamps, and basic info.',
78
+ inputSchema: getTaskStatusSchema,
79
+ }, async (input) => {
80
+ const result = getTaskStatusSchema.safeParse(input);
81
+ if (!result.success) {
82
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
83
+ }
84
+ const { taskId } = result.data;
85
+ const taskInfo = taskManager.getTask(taskId);
86
+ if (!taskInfo) {
87
+ return {
88
+ content: [{
89
+ type: 'text',
90
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
91
+ }],
92
+ isError: true,
93
+ };
94
+ }
95
+ return {
96
+ content: [{
97
+ type: 'text',
98
+ text: formatTaskInfo(taskInfo),
99
+ }],
100
+ };
101
+ });
102
+ }
103
+ /**
104
+ * Get task result with full output
105
+ */
106
+ function registerGetTaskResultTool(server) {
107
+ server.registerTool('get-task-result', {
108
+ description: 'Get the full result of a task including stdout/stderr output. ' +
109
+ 'Only available for completed tasks.',
110
+ inputSchema: getTaskStatusSchema,
111
+ }, async (input) => {
112
+ const result = getTaskStatusSchema.safeParse(input);
113
+ if (!result.success) {
114
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
115
+ }
116
+ const { taskId } = result.data;
117
+ const taskResult = taskManager.getTaskResult(taskId);
118
+ if (!taskResult) {
119
+ return {
120
+ content: [{
121
+ type: 'text',
122
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
123
+ }],
124
+ isError: true,
125
+ };
126
+ }
127
+ const { taskInfo, stdout, stderr } = taskResult;
128
+ // taskInfo is guaranteed to be non-null here since taskResult was not null
129
+ if (!taskInfo) {
130
+ return {
131
+ content: [{
132
+ type: 'text',
133
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
134
+ }],
135
+ isError: true,
136
+ };
137
+ }
138
+ let output = formatTaskInfo(taskInfo);
139
+ if (taskInfo.status === 'running' || taskInfo.status === 'pending') {
140
+ output += `\n\n**Note:** Task is still ${taskInfo.status}. Result not available yet.`;
141
+ }
142
+ else if (stdout !== undefined || stderr !== undefined) {
143
+ if (stdout) {
144
+ output += `\n\n### Standard Output:\n\`\`\`\n${stdout.trim()}\n\`\`\``;
145
+ }
146
+ if (stderr) {
147
+ output += `\n\n### Standard Error:\n\`\`\`\n${stderr.trim()}\n\`\`\``;
148
+ }
149
+ }
150
+ return {
151
+ content: [{
152
+ type: 'text',
153
+ text: output,
154
+ }],
155
+ };
156
+ });
157
+ }
158
+ /**
159
+ * Cancel a task
160
+ */
161
+ function registerCancelTaskTool(server) {
162
+ server.registerTool('cancel-task', {
163
+ description: 'Cancel a pending or running task.',
164
+ inputSchema: getTaskStatusSchema,
165
+ }, async (input) => {
166
+ const result = getTaskStatusSchema.safeParse(input);
167
+ if (!result.success) {
168
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
169
+ }
170
+ const { taskId } = result.data;
171
+ const cancelled = taskManager.cancelTask(taskId);
172
+ if (!cancelled) {
173
+ const taskInfo = taskManager.getTask(taskId);
174
+ if (!taskInfo) {
175
+ return {
176
+ content: [{
177
+ type: 'text',
178
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
179
+ }],
180
+ isError: true,
181
+ };
182
+ }
183
+ return {
184
+ content: [{
185
+ type: 'text',
186
+ text: `## Cannot Cancel Task\n\nTask with ID \`${taskId}\` is ${taskInfo.status} and cannot be cancelled.`,
187
+ }],
188
+ isError: true,
189
+ };
190
+ }
191
+ return {
192
+ content: [{
193
+ type: 'text',
194
+ text: `## Task Cancelled\n\nTask \`${taskId}\` has been cancelled.`,
195
+ }],
196
+ };
197
+ });
198
+ }
199
+ /**
200
+ * Delete a task from the task list
201
+ */
202
+ function registerDeleteTaskTool(server) {
203
+ server.registerTool('delete-task', {
204
+ description: 'Delete a task from the task list. Use this to clean up old completed tasks.',
205
+ inputSchema: getTaskStatusSchema,
206
+ }, async (input) => {
207
+ const result = getTaskStatusSchema.safeParse(input);
208
+ if (!result.success) {
209
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
210
+ }
211
+ const { taskId } = result.data;
212
+ const deleted = taskManager.deleteTask(taskId);
213
+ if (!deleted) {
214
+ return {
215
+ content: [{
216
+ type: 'text',
217
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
218
+ }],
219
+ isError: true,
220
+ };
221
+ }
222
+ return {
223
+ content: [{
224
+ type: 'text',
225
+ text: `## Task Deleted\n\nTask \`${taskId}\` has been deleted from the task list.`,
226
+ }],
227
+ };
228
+ });
229
+ }
230
+ /**
231
+ * List all tasks
232
+ */
233
+ const listTasksSchema = z.object({
234
+ status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']).optional()
235
+ .describe('Filter by status (optional)'),
236
+ limit: z.number().optional().describe('Maximum number of tasks to return (default: 50)'),
237
+ });
238
+ function registerListTasksTool(server) {
239
+ server.registerTool('list-tasks', {
240
+ description: 'List all tasks, optionally filtered by status.',
241
+ inputSchema: listTasksSchema,
242
+ }, async (input) => {
243
+ const result = listTasksSchema.safeParse(input);
244
+ if (!result.success) {
245
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
246
+ }
247
+ const { status, limit } = result.data;
248
+ let tasks = taskManager.listTasks();
249
+ if (status) {
250
+ tasks = tasks.filter(t => t.status === status);
251
+ }
252
+ if (limit) {
253
+ tasks = tasks.slice(0, limit);
254
+ }
255
+ if (tasks.length === 0) {
256
+ return {
257
+ content: [{
258
+ type: 'text',
259
+ text: `## No Tasks Found\n\n${status ? `No tasks with status "${status}".` : 'No tasks found.'}`,
260
+ }],
261
+ };
262
+ }
263
+ const stats = taskManager.getStats();
264
+ let output = `## Tasks (${tasks.length} shown)\n\n`;
265
+ output += `**Stats:** ${stats.pending} pending, ${stats.running} running, ${stats.completed} completed, ${stats.failed} failed, ${stats.cancelled} cancelled\n\n`;
266
+ for (const task of tasks) {
267
+ output += formatTaskInfoShort(task);
268
+ }
269
+ return {
270
+ content: [{
271
+ type: 'text',
272
+ text: output,
273
+ }],
274
+ };
275
+ });
276
+ }
277
+ /**
278
+ * Get task statistics
279
+ */
280
+ function registerGetTaskStatsTool(server) {
281
+ server.registerTool('get-task-stats', {
282
+ description: 'Get statistics about all tasks.',
283
+ inputSchema: z.object({}).optional(),
284
+ }, async () => {
285
+ const stats = taskManager.getStats();
286
+ let output = `## Task Statistics\n\n`;
287
+ output += `| Status | Count |\n`;
288
+ output += `|--------|-------|\n`;
289
+ output += `| Total | ${stats.total} |\n`;
290
+ output += `| Pending | ${stats.pending} |\n`;
291
+ output += `| Running | ${stats.running} |\n`;
292
+ output += `| Completed | ${stats.completed} |\n`;
293
+ output += `| Failed | ${stats.failed} |\n`;
294
+ output += `| Cancelled | ${stats.cancelled} |\n`;
295
+ return {
296
+ content: [{
297
+ type: 'text',
298
+ text: output,
299
+ }],
300
+ };
301
+ });
302
+ }
303
+ /**
304
+ * Format task info for display
305
+ */
306
+ function formatTaskInfo(task) {
307
+ let output = `## Task ${task.id}\n\n`;
308
+ output += `| Property | Value |\n`;
309
+ output += `|----------|-------|\n`;
310
+ output += `| Status | **${task.status}** |\n`;
311
+ output += `| Task | ${task.task.substring(0, 100)}${task.task.length > 100 ? '...' : ''} |\n`;
312
+ if (task.workingDirectory) {
313
+ output += `| Working Directory | \`${task.workingDirectory}\` |\n`;
314
+ }
315
+ output += `| Created | ${new Date(task.createdAt).toLocaleString()} |\n`;
316
+ if (task.startedAt) {
317
+ output += `| Started | ${new Date(task.startedAt).toLocaleString()} |\n`;
318
+ }
319
+ if (task.completedAt) {
320
+ output += `| Completed | ${new Date(task.completedAt).toLocaleString()} |\n`;
321
+ const started = new Date(task.startedAt ?? task.createdAt).getTime();
322
+ const completed = new Date(task.completedAt).getTime();
323
+ const duration = ((completed - started) / 1000).toFixed(1);
324
+ output += `| Duration | ${duration}s |\n`;
325
+ }
326
+ if (task.success !== undefined) {
327
+ output += `| Success | ${task.success ? 'Yes' : 'No'} |\n`;
328
+ }
329
+ if (task.exitCode !== undefined && task.exitCode !== null) {
330
+ output += `| Exit Code | ${task.exitCode} |\n`;
331
+ }
332
+ if (task.error) {
333
+ output += `| Error | ${task.error} |\n`;
334
+ }
335
+ return output;
336
+ }
337
+ /**
338
+ * Format short task info for list display
339
+ */
340
+ function formatTaskInfoShort(task) {
341
+ const statusEmoji = {
342
+ pending: '⏳',
343
+ running: '🔄',
344
+ completed: '✅',
345
+ failed: '❌',
346
+ cancelled: '🛑',
347
+ };
348
+ let output = `### ${statusEmoji[task.status]} ${task.id}\n\n`;
349
+ output += `- **Status:** ${task.status}\n`;
350
+ output += `- **Task:** ${task.task.substring(0, 80)}${task.task.length > 80 ? '...' : ''}\n`;
351
+ output += `- **Created:** ${new Date(task.createdAt).toLocaleString()}\n`;
352
+ if (task.status === 'running' && task.startedAt) {
353
+ const elapsed = ((Date.now() - new Date(task.startedAt).getTime()) / 1000).toFixed(0);
354
+ output += `- **Elapsed:** ${elapsed}s\n`;
355
+ }
356
+ else if (task.completedAt && task.startedAt) {
357
+ const duration = ((new Date(task.completedAt).getTime() - new Date(task.startedAt).getTime()) / 1000).toFixed(1);
358
+ output += `- **Duration:** ${duration}s\n`;
359
+ }
360
+ output += '\n';
361
+ return output;
362
+ }
363
+ //# sourceMappingURL=task-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-tools.js","sourceRoot":"","sources":["../../src/task-manager/task-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zuens2020/back-agent-mcp",
3
- "version": "1.0.1",
3
+ "version": "2.0.0",
4
4
  "description": "MCP server for executing tasks via Claude Code CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -42,10 +42,12 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@modelcontextprotocol/sdk": "^1.0.4",
45
+ "uuid": "^13.0.0",
45
46
  "zod": "^3.23.8"
46
47
  },
47
48
  "devDependencies": {
48
49
  "@types/node": "^22.10.5",
50
+ "@types/uuid": "^10.0.0",
49
51
  "tsx": "^4.19.2",
50
52
  "typescript": "^5.7.3"
51
53
  }