@anastops/mcp-server 0.1.0 → 1.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.
Files changed (105) hide show
  1. package/dist/formatters.d.ts.map +1 -1
  2. package/dist/formatters.js +12 -3
  3. package/dist/formatters.js.map +1 -1
  4. package/dist/handlers/agent-handlers.d.ts +8 -0
  5. package/dist/handlers/agent-handlers.d.ts.map +1 -0
  6. package/dist/handlers/agent-handlers.js +184 -0
  7. package/dist/handlers/agent-handlers.js.map +1 -0
  8. package/dist/handlers/artifact-handlers.d.ts +8 -0
  9. package/dist/handlers/artifact-handlers.d.ts.map +1 -0
  10. package/dist/handlers/artifact-handlers.js +122 -0
  11. package/dist/handlers/artifact-handlers.js.map +1 -0
  12. package/dist/handlers/cost-handlers.d.ts +8 -0
  13. package/dist/handlers/cost-handlers.d.ts.map +1 -0
  14. package/dist/handlers/cost-handlers.js +140 -0
  15. package/dist/handlers/cost-handlers.js.map +1 -0
  16. package/dist/handlers/handlers.agent.d.ts +10 -0
  17. package/dist/handlers/handlers.agent.d.ts.map +1 -0
  18. package/dist/handlers/handlers.agent.js +99 -0
  19. package/dist/handlers/handlers.agent.js.map +1 -0
  20. package/dist/handlers/handlers.base.d.ts +82 -0
  21. package/dist/handlers/handlers.base.d.ts.map +1 -0
  22. package/dist/handlers/handlers.base.js +337 -0
  23. package/dist/handlers/handlers.base.js.map +1 -0
  24. package/dist/handlers/handlers.lock.d.ts +8 -0
  25. package/dist/handlers/handlers.lock.d.ts.map +1 -0
  26. package/dist/handlers/handlers.lock.js +111 -0
  27. package/dist/handlers/handlers.lock.js.map +1 -0
  28. package/dist/handlers/handlers.memory.d.ts +11 -0
  29. package/dist/handlers/handlers.memory.d.ts.map +1 -0
  30. package/dist/handlers/handlers.memory.js +122 -0
  31. package/dist/handlers/handlers.memory.js.map +1 -0
  32. package/dist/handlers/handlers.monitoring.d.ts +8 -0
  33. package/dist/handlers/handlers.monitoring.d.ts.map +1 -0
  34. package/dist/handlers/handlers.monitoring.js +99 -0
  35. package/dist/handlers/handlers.monitoring.js.map +1 -0
  36. package/dist/handlers/handlers.orchestration.d.ts +9 -0
  37. package/dist/handlers/handlers.orchestration.d.ts.map +1 -0
  38. package/dist/handlers/handlers.orchestration.js +128 -0
  39. package/dist/handlers/handlers.orchestration.js.map +1 -0
  40. package/dist/handlers/handlers.session.d.ts +18 -0
  41. package/dist/handlers/handlers.session.d.ts.map +1 -0
  42. package/dist/handlers/handlers.session.js +286 -0
  43. package/dist/handlers/handlers.session.js.map +1 -0
  44. package/dist/handlers/handlers.task.d.ts +15 -0
  45. package/dist/handlers/handlers.task.d.ts.map +1 -0
  46. package/dist/handlers/handlers.task.js +753 -0
  47. package/dist/handlers/handlers.task.js.map +1 -0
  48. package/dist/handlers/handlers.utility.d.ts +10 -0
  49. package/dist/handlers/handlers.utility.d.ts.map +1 -0
  50. package/dist/handlers/handlers.utility.js +59 -0
  51. package/dist/handlers/handlers.utility.js.map +1 -0
  52. package/dist/handlers/index.d.ts +18 -0
  53. package/dist/handlers/index.d.ts.map +1 -0
  54. package/dist/handlers/index.js +209 -0
  55. package/dist/handlers/index.js.map +1 -0
  56. package/dist/handlers/lock-handlers.d.ts +8 -0
  57. package/dist/handlers/lock-handlers.d.ts.map +1 -0
  58. package/dist/handlers/lock-handlers.js +154 -0
  59. package/dist/handlers/lock-handlers.js.map +1 -0
  60. package/dist/handlers/memory-handlers.d.ts +8 -0
  61. package/dist/handlers/memory-handlers.d.ts.map +1 -0
  62. package/dist/handlers/memory-handlers.js +76 -0
  63. package/dist/handlers/memory-handlers.js.map +1 -0
  64. package/dist/handlers/orchestration-handlers.d.ts +8 -0
  65. package/dist/handlers/orchestration-handlers.d.ts.map +1 -0
  66. package/dist/handlers/orchestration-handlers.js +113 -0
  67. package/dist/handlers/orchestration-handlers.js.map +1 -0
  68. package/dist/handlers/session-handlers.d.ts +8 -0
  69. package/dist/handlers/session-handlers.d.ts.map +1 -0
  70. package/dist/handlers/session-handlers.js +558 -0
  71. package/dist/handlers/session-handlers.js.map +1 -0
  72. package/dist/handlers/task-handlers.d.ts +8 -0
  73. package/dist/handlers/task-handlers.d.ts.map +1 -0
  74. package/dist/handlers/task-handlers.js +677 -0
  75. package/dist/handlers/task-handlers.js.map +1 -0
  76. package/dist/handlers/tool-definitions.d.ts +2626 -0
  77. package/dist/handlers/tool-definitions.d.ts.map +1 -0
  78. package/dist/handlers/tool-definitions.js +641 -0
  79. package/dist/handlers/tool-definitions.js.map +1 -0
  80. package/dist/handlers/types.d.ts +90 -0
  81. package/dist/handlers/types.d.ts.map +1 -0
  82. package/dist/handlers/types.js +5 -0
  83. package/dist/handlers/types.js.map +1 -0
  84. package/dist/handlers/utility-handlers.d.ts +8 -0
  85. package/dist/handlers/utility-handlers.d.ts.map +1 -0
  86. package/dist/handlers/utility-handlers.js +113 -0
  87. package/dist/handlers/utility-handlers.js.map +1 -0
  88. package/dist/handlers/utils.d.ts +30 -0
  89. package/dist/handlers/utils.d.ts.map +1 -0
  90. package/dist/handlers/utils.js +95 -0
  91. package/dist/handlers/utils.js.map +1 -0
  92. package/dist/handlers.d.ts +17 -2260
  93. package/dist/handlers.d.ts.map +1 -1
  94. package/dist/handlers.js +17 -1836
  95. package/dist/handlers.js.map +1 -1
  96. package/dist/index.js +41 -7
  97. package/dist/index.js.map +1 -1
  98. package/dist/persistence.d.ts.map +1 -1
  99. package/dist/persistence.js +84 -47
  100. package/dist/persistence.js.map +1 -1
  101. package/dist/schemas.d.ts +299 -0
  102. package/dist/schemas.d.ts.map +1 -0
  103. package/dist/schemas.js +334 -0
  104. package/dist/schemas.js.map +1 -0
  105. package/package.json +8 -5
@@ -0,0 +1,286 @@
1
+ /**
2
+ * MCP Tool Handlers - Session Management
3
+ * Handles: session_spawn, session_status, session_list, session_fork, session_archive, session_report, session_purge
4
+ */
5
+ import { SessionManager, SessionForkService, addBreadcrumb, } from '@anastops/core';
6
+ import { getPersistence } from '../persistence.js';
7
+ import { safePersist, formatSessionReport, tasks, agents, artifacts } from './handlers.base.js';
8
+ // Shared instances
9
+ const sessionManager = new SessionManager();
10
+ const forkService = new SessionForkService(sessionManager);
11
+ export function handleSessionSpawn(args) {
12
+ const objective = args['objective'];
13
+ addBreadcrumb('Spawning session', { objective }, 'info', 'session');
14
+ const session = sessionManager.spawn({
15
+ objective,
16
+ ...(args['context_files'] !== undefined && {
17
+ context_files: args['context_files'],
18
+ }),
19
+ ...(args['parent_session'] !== undefined && {
20
+ parent_session: args['parent_session'],
21
+ }),
22
+ ...(args['concurrency'] !== undefined && { concurrency: args['concurrency'] }),
23
+ ...(args['auto_execute'] !== undefined && { auto_execute: args['auto_execute'] }),
24
+ });
25
+ addBreadcrumb('Session spawned', { session_id: session.id }, 'info', 'session');
26
+ // Persist to MongoDB
27
+ safePersist(getPersistence().saveSession(session));
28
+ return Promise.resolve({
29
+ session_id: session.id,
30
+ objective: session.objective,
31
+ status: session.status,
32
+ queue_config: session.queue_config,
33
+ });
34
+ }
35
+ export function handleSessionStatus(args) {
36
+ const status = sessionManager.getStatus(args['session_id']);
37
+ // TOON encoding applied in handleToolCall
38
+ return Promise.resolve(status);
39
+ }
40
+ export async function handleSessionList(args) {
41
+ // Get from in-memory first
42
+ const inMemorySessions = sessionManager.list({
43
+ ...(args['status'] !== undefined && { status: args['status'] }),
44
+ ...(args['include_forks'] !== undefined && { include_forks: args['include_forks'] }),
45
+ ...(args['limit'] !== undefined && { limit: args['limit'] }),
46
+ });
47
+ // Also get from MongoDB for persistence
48
+ const persistedSessions = await getPersistence().listSessions({
49
+ ...(args['status'] !== undefined && { status: args['status'] }),
50
+ ...(args['limit'] !== undefined && { limit: args['limit'] }),
51
+ });
52
+ // Merge: in-memory takes precedence, then add persisted ones not in memory
53
+ const inMemoryIds = new Set(inMemorySessions.map((s) => s.id));
54
+ const sessions = [
55
+ ...inMemorySessions,
56
+ ...persistedSessions.filter((s) => !inMemoryIds.has(s.id)),
57
+ ];
58
+ // Return raw result for table formatting to be applied in handleToolCall
59
+ const result = {
60
+ count: sessions.length,
61
+ sessions: sessions.map((s) => ({
62
+ id: s.id,
63
+ objective: s.objective,
64
+ status: s.status,
65
+ created_at: s.created_at,
66
+ })),
67
+ };
68
+ // Don't apply TOON encoding here - let handleToolCall handle formatting
69
+ return result;
70
+ }
71
+ export function handleSessionFork(args) {
72
+ const sessionId = args['session_id'];
73
+ const reason = args['reason'] ?? 'unknown';
74
+ addBreadcrumb('Forking session', { session_id: sessionId, reason }, 'info', 'session');
75
+ const forked = forkService.fork({
76
+ session_id: sessionId,
77
+ ...(args['fork_point'] !== undefined && { fork_point: args['fork_point'] }),
78
+ ...(args['reason'] !== undefined && { reason }),
79
+ });
80
+ addBreadcrumb('Session forked', { forked_session_id: forked.id, parent_id: forked.parent_session_id }, 'info', 'session');
81
+ // Persist to MongoDB
82
+ safePersist(getPersistence().saveSession(forked));
83
+ return Promise.resolve({
84
+ forked_session_id: forked.id,
85
+ parent_id: forked.parent_session_id,
86
+ fork_point: forked.fork_point,
87
+ });
88
+ }
89
+ export function handleSessionArchive(args) {
90
+ const session = sessionManager.updateStatus(args['session_id'], 'archived');
91
+ // Persist to MongoDB
92
+ safePersist(getPersistence().saveSession(session));
93
+ return Promise.resolve({ session_id: session.id, status: session.status });
94
+ }
95
+ export async function handleSessionReport(args) {
96
+ const sessionId = args['session_id'];
97
+ const statusFilter = args['status'];
98
+ const includeOutput = args['include_output'] ?? true;
99
+ const includeArtifactContent = args['include_artifacts'] ?? false;
100
+ const limit = args['limit'] ?? 20;
101
+ const persistence = getPersistence();
102
+ if (sessionId !== undefined && sessionId !== '') {
103
+ // Single session report
104
+ const report = await persistence.getSessionReport(sessionId);
105
+ if (report === null) {
106
+ throw new Error(`Session not found: ${sessionId}`);
107
+ }
108
+ return formatSessionReport(report, includeOutput, includeArtifactContent);
109
+ }
110
+ // All sessions report
111
+ const reportFilters = { limit };
112
+ if (statusFilter !== undefined) {
113
+ reportFilters.status = statusFilter;
114
+ }
115
+ const reports = await persistence.getAllSessionReports(reportFilters);
116
+ return {
117
+ total_sessions: reports.length,
118
+ sessions: reports.map((r) => formatSessionReport(r, includeOutput, includeArtifactContent)),
119
+ };
120
+ }
121
+ export async function handleSessionPurge(args) {
122
+ const confirm = args['confirm'];
123
+ if (!confirm) {
124
+ return { error: 'Must set confirm: true to execute deletion' };
125
+ }
126
+ const sessionId = args['session_id'];
127
+ const sessionIds = args['session_ids'];
128
+ const statusFilter = args['status'];
129
+ const olderThanDays = args['older_than_days'];
130
+ const persistence = getPersistence();
131
+ // Single session deletion
132
+ if (sessionId !== undefined && sessionId !== '') {
133
+ // Remove from in-memory cache
134
+ sessionManager.remove(sessionId);
135
+ // Remove related tasks from cache
136
+ for (const [taskId, task] of tasks.entries()) {
137
+ if (task.session_id === sessionId) {
138
+ tasks.delete(taskId);
139
+ }
140
+ }
141
+ // Remove related agents from cache
142
+ for (const [agentId, agent] of agents.entries()) {
143
+ if (agent.session_id === sessionId) {
144
+ agents.delete(agentId);
145
+ }
146
+ }
147
+ // Remove related artifacts from cache
148
+ for (const [artifactId, artifact] of artifacts.entries()) {
149
+ if (artifact.session_id === sessionId) {
150
+ artifacts.delete(artifactId);
151
+ }
152
+ }
153
+ const deleted = await persistence.deleteSession(sessionId);
154
+ return { deleted: deleted, session_id: sessionId };
155
+ }
156
+ // Build filters for bulk deletion
157
+ const filters = {};
158
+ if (sessionIds !== undefined && sessionIds.length > 0) {
159
+ filters.session_ids = sessionIds;
160
+ }
161
+ if (statusFilter !== undefined && statusFilter !== '') {
162
+ filters.status = statusFilter;
163
+ }
164
+ if (olderThanDays !== undefined) {
165
+ const cutoffDate = new Date();
166
+ cutoffDate.setDate(cutoffDate.getDate() - olderThanDays);
167
+ filters.older_than = cutoffDate;
168
+ }
169
+ if (Object.keys(filters).length === 0) {
170
+ return {
171
+ error: 'Must provide at least one filter: session_id, session_ids, status, or older_than_days',
172
+ };
173
+ }
174
+ const result = await persistence.deleteSessions(filters);
175
+ // Clean up in-memory caches for deleted sessions
176
+ for (const deletedId of result.session_ids) {
177
+ sessionManager.remove(deletedId);
178
+ for (const [taskId, task] of tasks.entries()) {
179
+ if (task.session_id === deletedId) {
180
+ tasks.delete(taskId);
181
+ }
182
+ }
183
+ for (const [agentId, agent] of agents.entries()) {
184
+ if (agent.session_id === deletedId) {
185
+ agents.delete(agentId);
186
+ }
187
+ }
188
+ for (const [artifactId, artifact] of artifacts.entries()) {
189
+ if (artifact.session_id === deletedId) {
190
+ artifacts.delete(artifactId);
191
+ }
192
+ }
193
+ }
194
+ return {
195
+ deleted_count: result.deleted_count,
196
+ session_ids: result.session_ids,
197
+ };
198
+ }
199
+ export function handleSessionQueueConfig(args) {
200
+ const sessionId = args['session_id'];
201
+ const concurrency = args['concurrency'];
202
+ const autoExecute = args['auto_execute'];
203
+ // Validate concurrency if provided
204
+ if (concurrency !== undefined && (concurrency < 1 || concurrency > 10)) {
205
+ return Promise.resolve({ error: 'Concurrency must be between 1 and 10' });
206
+ }
207
+ // Build updates object
208
+ const updates = {};
209
+ if (concurrency !== undefined) {
210
+ updates.concurrency = concurrency;
211
+ }
212
+ if (autoExecute !== undefined) {
213
+ updates.auto_execute = autoExecute;
214
+ }
215
+ if (Object.keys(updates).length === 0) {
216
+ // No updates provided, just return current config
217
+ const session = sessionManager.getSession(sessionId);
218
+ return Promise.resolve({
219
+ session_id: sessionId,
220
+ queue_config: session.queue_config,
221
+ });
222
+ }
223
+ // Update queue config
224
+ const session = sessionManager.updateQueueConfig(sessionId, updates);
225
+ safePersist(getPersistence().saveSession(session));
226
+ return Promise.resolve({
227
+ session_id: sessionId,
228
+ queue_config: session.queue_config,
229
+ updated: true,
230
+ });
231
+ }
232
+ export async function handleQueueStatus(args) {
233
+ const sessionId = args['session_id'];
234
+ const session = sessionManager.getSession(sessionId);
235
+ // Get tasks for the session
236
+ const sessionTasks = [];
237
+ for (const [, task] of tasks.entries()) {
238
+ if (task.session_id === sessionId) {
239
+ sessionTasks.push(task);
240
+ }
241
+ }
242
+ // Also get from MongoDB
243
+ const persistedTasks = await getPersistence().listTasks({ session_id: sessionId });
244
+ const inMemoryIds = new Set(sessionTasks.map((t) => t.id));
245
+ const allTasks = [...sessionTasks, ...persistedTasks.filter((t) => !inMemoryIds.has(t.id))];
246
+ // Count by status
247
+ const runningCount = allTasks.filter((t) => t.status === 'running').length;
248
+ const queuedCount = allTasks.filter((t) => t.status === 'queued').length;
249
+ const pendingCount = allTasks.filter((t) => t.status === 'pending').length;
250
+ const completedCount = allTasks.filter((t) => t.status === 'completed').length;
251
+ const failedCount = allTasks.filter((t) => t.status === 'failed').length;
252
+ const availableSlots = Math.max(0, session.queue_config.concurrency - runningCount);
253
+ // Find ready tasks (queued with met dependencies)
254
+ const queuedTasks = allTasks.filter((t) => t.status === 'queued');
255
+ const taskMap = new Map(allTasks.map((t) => [t.id, t]));
256
+ const readyTasks = queuedTasks
257
+ .filter((task) => {
258
+ if (task.dependencies.length === 0)
259
+ return true;
260
+ return task.dependencies.every((depId) => {
261
+ const depTask = taskMap.get(depId);
262
+ return depTask !== undefined && depTask.status === 'completed';
263
+ });
264
+ })
265
+ .sort((a, b) => {
266
+ // Sort by priority (higher first), then by created_at (earlier first)
267
+ if (a.priority !== b.priority)
268
+ return b.priority - a.priority;
269
+ return a.created_at.getTime() - b.created_at.getTime();
270
+ })
271
+ .slice(0, availableSlots)
272
+ .map((t) => t.id);
273
+ return {
274
+ session_id: sessionId,
275
+ queue_config: session.queue_config,
276
+ running_count: runningCount,
277
+ queued_count: queuedCount,
278
+ pending_count: pendingCount,
279
+ completed_count: completedCount,
280
+ failed_count: failedCount,
281
+ available_slots: availableSlots,
282
+ ready_tasks: readyTasks,
283
+ };
284
+ }
285
+ export { sessionManager, forkService };
286
+ //# sourceMappingURL=handlers.session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.session.js","sourceRoot":"","sources":["../../src/handlers/handlers.session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * MCP Tool Handlers - Task Management
3
+ * Handles: task_create, task_queue, task_status, task_complete, task_list, task_execute, task_cancel, task_retry, task_batch_create, task_batch_execute
4
+ */
5
+ export declare function handleTaskCreate(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function handleTaskQueue(args: Record<string, unknown>): Promise<unknown>;
7
+ export declare function handleTaskStatus(args: Record<string, unknown>): Promise<unknown>;
8
+ export declare function handleTaskComplete(args: Record<string, unknown>): Promise<unknown>;
9
+ export declare function handleTaskList(args: Record<string, unknown>): Promise<unknown>;
10
+ export declare function handleTaskExecute(args: Record<string, unknown>): Promise<unknown>;
11
+ export declare function handleTaskCancel(args: Record<string, unknown>): Promise<unknown>;
12
+ export declare function handleTaskRetry(args: Record<string, unknown>): Promise<unknown>;
13
+ export declare function handleTaskBatchCreate(args: Record<string, unknown>): Promise<unknown>;
14
+ export declare function handleTaskBatchExecute(args: Record<string, unknown>): Promise<unknown>;
15
+ //# sourceMappingURL=handlers.task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.task.d.ts","sourceRoot":"","sources":["../../src/handlers/handlers.task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiQH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiGhF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBrF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAItF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAexF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BpF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA+KvF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BtF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8CrF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmGrF;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkN5F"}