@anastops/mcp-server 1.1.2 → 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.
Files changed (45) hide show
  1. package/dist/handlers/handlers.base.d.ts +20 -4
  2. package/dist/handlers/handlers.base.d.ts.map +1 -1
  3. package/dist/handlers/handlers.base.js +32 -17
  4. package/dist/handlers/handlers.base.js.map +1 -1
  5. package/dist/handlers/index.d.ts +1 -1
  6. package/dist/handlers/index.d.ts.map +1 -1
  7. package/dist/handlers/index.js +84 -100
  8. package/dist/handlers/index.js.map +1 -1
  9. package/dist/handlers/tool-definitions.d.ts +701 -1673
  10. package/dist/handlers/tool-definitions.d.ts.map +1 -1
  11. package/dist/handlers/tool-definitions.js +459 -402
  12. package/dist/handlers/tool-definitions.js.map +1 -1
  13. package/dist/handlers/types.d.ts +1 -0
  14. package/dist/handlers/types.d.ts.map +1 -1
  15. package/dist/handlers/v3/agent-tools.d.ts +280 -0
  16. package/dist/handlers/v3/agent-tools.d.ts.map +1 -0
  17. package/dist/handlers/v3/agent-tools.js +460 -0
  18. package/dist/handlers/v3/agent-tools.js.map +1 -0
  19. package/dist/handlers/v3/index.d.ts +31 -0
  20. package/dist/handlers/v3/index.d.ts.map +1 -0
  21. package/dist/handlers/v3/index.js +56 -0
  22. package/dist/handlers/v3/index.js.map +1 -0
  23. package/dist/handlers/v3/routing-integration-example.d.ts +258 -0
  24. package/dist/handlers/v3/routing-integration-example.d.ts.map +1 -0
  25. package/dist/handlers/v3/routing-integration-example.js +454 -0
  26. package/dist/handlers/v3/routing-integration-example.js.map +1 -0
  27. package/dist/handlers/v3/routing-middleware.d.ts +191 -0
  28. package/dist/handlers/v3/routing-middleware.d.ts.map +1 -0
  29. package/dist/handlers/v3/routing-middleware.js +425 -0
  30. package/dist/handlers/v3/routing-middleware.js.map +1 -0
  31. package/dist/handlers/v3/session-tools.d.ts +269 -0
  32. package/dist/handlers/v3/session-tools.d.ts.map +1 -0
  33. package/dist/handlers/v3/session-tools.js +716 -0
  34. package/dist/handlers/v3/session-tools.js.map +1 -0
  35. package/dist/handlers/v3/task-tools.d.ts +18 -0
  36. package/dist/handlers/v3/task-tools.d.ts.map +1 -0
  37. package/dist/handlers/v3/task-tools.js +916 -0
  38. package/dist/handlers/v3/task-tools.js.map +1 -0
  39. package/dist/handlers/v3/utility-tools.d.ts +99 -0
  40. package/dist/handlers/v3/utility-tools.d.ts.map +1 -0
  41. package/dist/handlers/v3/utility-tools.js +878 -0
  42. package/dist/handlers/v3/utility-tools.js.map +1 -0
  43. package/dist/index.js +9 -1
  44. package/dist/index.js.map +1 -1
  45. package/package.json +1 -1
@@ -1,161 +1,189 @@
1
1
  /**
2
- * MCP Tool Definitions
3
- * Defines all 40+ tools available through the Anastops MCP server
2
+ * MCP Tool Definitions - v3.0.0
3
+ *
4
+ * Aggressive consolidation: 45 tools → 19 tools (58% reduction)
5
+ *
6
+ * Consolidation summary:
7
+ * - Session management: 9 → 3 tools (session_manage, session_query, session_queue_config)
8
+ * - Agent management: 5 → 2 tools (agent_manage, agent_query)
9
+ * - Task management: 10 → 4 tools (task_manage, task_execute, task_query, task_retry)
10
+ * - Data management: 6 → 2 tools (data_manage, data_query)
11
+ * - Utility tools: 3 → 1 tool (system_query)
12
+ * - Lock management: 3 → 1 tool (lock_manage)
13
+ * - Monitoring: 3 → 1 tool (session_monitoring)
14
+ * - Config: 2 → 1 tool (config_manage)
15
+ * - Orchestration: 4 tools (kept unchanged)
16
+ *
17
+ * @see docs/MCP-V3-AGGRESSIVE-CONSOLIDATION.md
4
18
  */
5
19
  export const toolDefinitions = [
6
- // Session tools (9)
20
+ // ========================================================================
21
+ // SESSION MANAGEMENT (3 tools)
22
+ // ========================================================================
7
23
  {
8
- name: 'session_spawn',
9
- description: 'Create a new AI orchestration session',
24
+ name: 'session_manage',
25
+ description: 'Manage sessions: create new sessions, fork existing sessions, archive completed sessions, or delete sessions permanently',
10
26
  inputSchema: {
11
27
  type: 'object',
12
28
  properties: {
13
- objective: { type: 'string', description: 'High-level objective' },
14
- context_files: { type: 'array', items: { type: 'string' } },
15
- parent_session: { type: 'string' },
16
- concurrency: { type: 'number', description: 'Max concurrent running tasks (default: 1)' },
29
+ operation: {
30
+ type: 'string',
31
+ enum: ['create', 'fork', 'archive', 'delete'],
32
+ description: 'Operation to perform: create=spawn new session, fork=create alternative branch, archive=mark completed, delete=permanently remove',
33
+ },
34
+ // CREATE operation parameters
35
+ objective: {
36
+ type: 'string',
37
+ description: 'Required for create: High-level objective for the session',
38
+ },
39
+ context_files: {
40
+ type: 'array',
41
+ items: { type: 'string' },
42
+ description: 'For create: Array of file paths to include in session context',
43
+ },
44
+ parent_session: {
45
+ type: 'string',
46
+ description: 'For create: Parent session ID if this is a child session',
47
+ },
48
+ concurrency: {
49
+ type: 'number',
50
+ description: 'For create: Max concurrent running tasks (1-10, default: 1)',
51
+ },
17
52
  auto_execute: {
18
53
  type: 'boolean',
19
- description: 'Auto-execute queued tasks when slots available (default: false)',
54
+ description: 'For create: Auto-execute queued tasks when slots available (default: false)',
20
55
  },
21
- },
22
- required: ['objective'],
23
- },
24
- },
25
- {
26
- name: 'session_status',
27
- description: 'Get session status and metrics',
28
- inputSchema: {
29
- type: 'object',
30
- properties: {
31
- session_id: { type: 'string', description: 'Session ID' },
32
- },
33
- required: ['session_id'],
34
- },
35
- },
36
- {
37
- name: 'session_list',
38
- description: 'List sessions with filters. Use format="table" for beautiful ASCII table output.',
39
- inputSchema: {
40
- type: 'object',
41
- properties: {
42
- status: { type: 'string', enum: ['active', 'completed', 'archived'] },
43
- include_forks: { type: 'boolean' },
44
- limit: { type: 'number' },
45
- format: {
56
+ // FORK operation parameters
57
+ session_id: {
46
58
  type: 'string',
47
- enum: ['table', 'json'],
48
- description: 'Output format: "table" for ASCII table, "json" for raw JSON (default)',
59
+ description: 'Required for fork/archive/delete: Session ID to operate on',
60
+ },
61
+ fork_point: {
62
+ type: 'number',
63
+ description: 'For fork: Task number to fork from (optional)',
64
+ },
65
+ reason: {
66
+ type: 'string',
67
+ description: 'For fork: Reason for forking (e.g., "Explore OAuth approach")',
68
+ },
69
+ // DELETE operation parameters
70
+ session_ids: {
71
+ type: 'array',
72
+ items: { type: 'string' },
73
+ description: 'For delete: Array of session IDs to delete (bulk deletion)',
49
74
  },
50
- },
51
- },
52
- },
53
- {
54
- name: 'session_fork',
55
- description: 'Fork a session to explore alternatives',
56
- inputSchema: {
57
- type: 'object',
58
- properties: {
59
- session_id: { type: 'string', description: 'Session ID to fork' },
60
- fork_point: { type: 'number' },
61
- reason: { type: 'string' },
62
- },
63
- required: ['session_id'],
64
- },
65
- },
66
- {
67
- name: 'session_archive',
68
- description: 'Archive a completed session',
69
- inputSchema: {
70
- type: 'object',
71
- properties: {
72
- session_id: { type: 'string' },
73
- },
74
- required: ['session_id'],
75
- },
76
- },
77
- {
78
- name: 'session_report',
79
- description: 'Get comprehensive report of sessions with all tasks, agents, artifacts, and full details. Use for observability and debugging.',
80
- inputSchema: {
81
- type: 'object',
82
- properties: {
83
- session_id: { type: 'string', description: 'Specific session ID (omit for all sessions)' },
84
75
  status: {
85
76
  type: 'string',
86
77
  enum: ['active', 'completed', 'archived'],
87
- description: 'Filter by status (when no session_id provided)',
78
+ description: 'For delete: Delete all sessions with this status',
88
79
  },
89
- include_output: {
90
- type: 'boolean',
91
- description: 'Include full task output content (default: true)',
80
+ older_than_days: {
81
+ type: 'number',
82
+ description: 'For delete: Delete sessions older than N days',
92
83
  },
93
- include_artifacts: {
84
+ confirm: {
94
85
  type: 'boolean',
95
- description: 'Include artifact content (default: false, only metadata)',
86
+ description: 'Required for delete: Must be true to execute deletion (safety check)',
96
87
  },
97
- limit: { type: 'number', description: 'Max sessions to return (default: 20)' },
98
88
  },
89
+ required: ['operation'],
99
90
  },
100
91
  },
101
92
  {
102
- name: 'session_purge',
103
- description: 'Permanently delete sessions and all related data (tasks, agents, artifacts). Use with caution.',
93
+ name: 'session_query',
94
+ description: 'Query session information: get status for a specific session, list all sessions with filters, or generate comprehensive reports',
104
95
  inputSchema: {
105
96
  type: 'object',
106
97
  properties: {
107
- session_id: { type: 'string', description: 'Specific session ID to delete' },
108
- session_ids: {
109
- type: 'array',
110
- items: { type: 'string' },
111
- description: 'Array of session IDs to delete',
98
+ operation: {
99
+ type: 'string',
100
+ enum: ['status', 'list', 'report'],
101
+ description: 'Type of query: status=get session details, list=list sessions with filters, report=generate comprehensive report',
112
102
  },
113
- status: {
103
+ // STATUS operation parameters
104
+ session_id: {
105
+ type: 'string',
106
+ description: 'Required for status: Session ID to query. Optional for report: omit to get all sessions',
107
+ },
108
+ // LIST operation parameters
109
+ status_filter: {
114
110
  type: 'string',
115
111
  enum: ['active', 'completed', 'archived'],
116
- description: 'Delete all sessions with this status',
112
+ description: 'For list/report: Filter sessions by status',
113
+ },
114
+ include_forks: {
115
+ type: 'boolean',
116
+ description: 'For list: Include forked sessions in results (default: false)',
117
+ },
118
+ limit: {
119
+ type: 'number',
120
+ description: 'For list/report: Maximum number of sessions to return (default: 20 for report)',
121
+ },
122
+ format: {
123
+ type: 'string',
124
+ enum: ['table', 'json'],
125
+ description: 'For list: Output format (table=ASCII table, json=raw JSON, default: json)',
126
+ },
127
+ // REPORT operation parameters
128
+ include_output: {
129
+ type: 'boolean',
130
+ description: 'For report: Include full task output content (default: true)',
131
+ },
132
+ include_artifacts: {
133
+ type: 'boolean',
134
+ description: 'For report: Include artifact content, not just metadata (default: false)',
117
135
  },
118
- older_than_days: { type: 'number', description: 'Delete sessions older than N days' },
119
- confirm: { type: 'boolean', description: 'Must be true to execute deletion' },
120
136
  },
121
- required: ['confirm'],
137
+ required: ['operation'],
122
138
  },
123
139
  },
124
140
  {
125
141
  name: 'session_queue_config',
126
- description: 'Configure session queue settings for automatic task execution',
142
+ description: 'Configure session queue settings (concurrency, auto-execution) or query queue status (running/queued counts, available slots)',
127
143
  inputSchema: {
128
144
  type: 'object',
129
145
  properties: {
130
- session_id: { type: 'string', description: 'Session ID to configure' },
131
- concurrency: { type: 'number', description: 'Max concurrent running tasks (1-10)' },
146
+ operation: {
147
+ type: 'string',
148
+ enum: ['configure', 'status'],
149
+ description: 'Operation: configure=update queue settings, status=get queue status and ready tasks',
150
+ },
151
+ session_id: {
152
+ type: 'string',
153
+ description: 'Required: Session ID to configure or query',
154
+ },
155
+ // CONFIGURE operation parameters
156
+ concurrency: {
157
+ type: 'number',
158
+ description: 'For configure: Max concurrent running tasks (1-10)',
159
+ },
132
160
  auto_execute: {
133
161
  type: 'boolean',
134
- description: 'Auto-execute queued tasks when slots available',
162
+ description: 'For configure: Auto-execute queued tasks when slots available',
135
163
  },
136
164
  },
137
- required: ['session_id'],
165
+ required: ['operation', 'session_id'],
138
166
  },
139
167
  },
168
+ // ========================================================================
169
+ // AGENT MANAGEMENT (2 tools)
170
+ // ========================================================================
140
171
  {
141
- name: 'queue_status',
142
- description: 'Get queue status for a session including running/queued task counts and ready tasks',
172
+ name: 'agent_manage',
173
+ description: 'Manage agents: create new agents, deploy agents to tasks, or retire agents. Use create to spawn new agents, deploy to assign work, retire to mark completion.',
143
174
  inputSchema: {
144
175
  type: 'object',
145
176
  properties: {
146
- session_id: { type: 'string', description: 'Session ID to check' },
147
- },
148
- required: ['session_id'],
149
- },
150
- },
151
- // Agent tools (5)
152
- {
153
- name: 'agent_create',
154
- description: 'Create a new AI agent',
155
- inputSchema: {
156
- type: 'object',
157
- properties: {
158
- session_id: { type: 'string' },
177
+ operation: {
178
+ type: 'string',
179
+ enum: ['create', 'deploy', 'retire'],
180
+ description: 'Operation to perform: create, deploy, or retire',
181
+ },
182
+ // create operation parameters
183
+ session_id: {
184
+ type: 'string',
185
+ description: 'Required for create: session ID to create agent in',
186
+ },
159
187
  role: {
160
188
  type: 'string',
161
189
  enum: [
@@ -168,182 +196,128 @@ export const toolDefinitions = [
168
196
  'documenter',
169
197
  'specialist',
170
198
  ],
199
+ description: 'Required for create: agent role',
200
+ },
201
+ name: {
202
+ type: 'string',
203
+ description: 'For create: agent name (defaults to auto-generated)',
204
+ },
205
+ provider: {
206
+ type: 'string',
207
+ description: 'For create: AI provider (default: claude)',
208
+ },
209
+ model: {
210
+ type: 'string',
211
+ description: 'For create: model to use (default: claude-sonnet)',
212
+ },
213
+ // deploy operation parameters
214
+ agent_id: {
215
+ type: 'string',
216
+ description: 'Required for deploy/retire: agent ID',
217
+ },
218
+ task_id: {
219
+ type: 'string',
220
+ description: 'Required for deploy: task ID to assign agent to',
171
221
  },
172
- name: { type: 'string' },
173
- provider: { type: 'string' },
174
- model: { type: 'string' },
175
- },
176
- required: ['session_id', 'role'],
177
- },
178
- },
179
- {
180
- name: 'agent_deploy',
181
- description: 'Deploy an agent to a task',
182
- inputSchema: {
183
- type: 'object',
184
- properties: {
185
- agent_id: { type: 'string' },
186
- task_id: { type: 'string' },
187
222
  },
188
- required: ['agent_id', 'task_id'],
189
- },
190
- },
191
- {
192
- name: 'agent_status',
193
- description: 'Get agent status',
194
- inputSchema: {
195
- type: 'object',
196
- properties: { agent_id: { type: 'string' } },
197
- required: ['agent_id'],
223
+ required: ['operation'],
198
224
  },
199
225
  },
200
226
  {
201
- name: 'agent_list',
202
- description: 'List agents in a session. Use format="table" for beautiful ASCII table output.',
227
+ name: 'agent_query',
228
+ description: 'Query agent information: get status of a specific agent or list all agents in a session. Use status for detailed info, list for overview.',
203
229
  inputSchema: {
204
230
  type: 'object',
205
231
  properties: {
206
- session_id: { type: 'string' },
207
- status: { type: 'string' },
232
+ operation: {
233
+ type: 'string',
234
+ enum: ['status', 'list'],
235
+ description: 'Type of query (default: status if agent_id provided, else list if session_id provided)',
236
+ },
237
+ // status operation parameters
238
+ agent_id: {
239
+ type: 'string',
240
+ description: 'For status: specific agent ID to query',
241
+ },
242
+ // list operation parameters
243
+ session_id: {
244
+ type: 'string',
245
+ description: 'For list: session ID to list agents from',
246
+ },
247
+ status: {
248
+ type: 'string',
249
+ description: 'For list: filter by agent status',
250
+ },
208
251
  format: {
209
252
  type: 'string',
210
253
  enum: ['table', 'json'],
211
- description: 'Output format: "table" for ASCII table, "json" for raw JSON (default)',
254
+ description: 'For list: output format (default: json)',
212
255
  },
213
256
  },
214
- required: ['session_id'],
215
257
  },
216
258
  },
259
+ // ========================================================================
260
+ // TASK MANAGEMENT (4 tools)
261
+ // ========================================================================
217
262
  {
218
- name: 'agent_retire',
219
- description: 'Retire an agent, marking it as completed',
263
+ name: 'task_manage',
264
+ description: 'Manage tasks: create (single or batch), complete, or cancel tasks. Use batch=true for creating multiple tasks at once.',
220
265
  inputSchema: {
221
266
  type: 'object',
222
267
  properties: {
223
- agent_id: { type: 'string', description: 'ID of the agent to retire' },
224
- },
225
- required: ['agent_id'],
226
- },
227
- },
228
- // Task tools (10)
229
- {
230
- name: 'task_create',
231
- description: 'Create a task with intelligent routing. Supports agents and skills for Claude provider.',
232
- inputSchema: {
233
- type: 'object',
234
- properties: {
235
- session_id: { type: 'string' },
236
- type: { type: 'string' },
237
- description: { type: 'string' },
238
- prompt: { type: 'string' },
239
- context_files: { type: 'array', items: { type: 'string' } },
240
- force_provider: { type: 'string' },
241
- force_tier: { type: 'number' },
268
+ operation: {
269
+ type: 'string',
270
+ enum: ['create', 'complete', 'cancel'],
271
+ description: 'Operation to perform: create=create new task(s), complete=mark task done, cancel=cancel pending/queued/running task',
272
+ },
273
+ // ---------- Common parameters ----------
274
+ session_id: {
275
+ type: 'string',
276
+ description: 'Required for create: session ID',
277
+ },
278
+ // ---------- Single task creation ----------
279
+ type: {
280
+ type: 'string',
281
+ description: 'For create (single): task type',
282
+ },
283
+ description: {
284
+ type: 'string',
285
+ description: 'For create (single): task description',
286
+ },
287
+ prompt: {
288
+ type: 'string',
289
+ description: 'For create (single): task prompt/instruction',
290
+ },
291
+ context_files: {
292
+ type: 'array',
293
+ items: { type: 'string' },
294
+ description: 'For create: context files to include',
295
+ },
296
+ force_provider: {
297
+ type: 'string',
298
+ description: 'For create: force specific provider (claude, cursor, codex, gemini, grok, copilot, aider)',
299
+ },
300
+ force_tier: {
301
+ type: 'number',
302
+ description: 'For create: force routing tier (1-5)',
303
+ },
242
304
  agent: {
243
305
  type: 'string',
244
- description: 'Agent name to use (e.g., orchestration-specialist). Agent defines model, tools, and skills.',
306
+ description: 'For create: agent name to use (e.g., orchestration-specialist). Agent defines model, tools, and skills.',
245
307
  },
246
308
  skills: {
247
309
  type: 'array',
248
310
  items: { type: 'string' },
249
- description: 'Specific skills to load (e.g., ["anastops-sessions", "anastops-tasks"])',
311
+ description: 'For create: specific skills to load (e.g., ["anastops-sessions", "anastops-tasks"])',
250
312
  },
251
- },
252
- required: ['session_id', 'type', 'description', 'prompt'],
253
- },
254
- },
255
- {
256
- name: 'task_queue',
257
- description: 'Queue a task for execution',
258
- inputSchema: {
259
- type: 'object',
260
- properties: { task_id: { type: 'string' } },
261
- required: ['task_id'],
262
- },
263
- },
264
- {
265
- name: 'task_status',
266
- description: 'Get task status',
267
- inputSchema: {
268
- type: 'object',
269
- properties: { task_id: { type: 'string' } },
270
- required: ['task_id'],
271
- },
272
- },
273
- {
274
- name: 'task_complete',
275
- description: 'Mark task as completed',
276
- inputSchema: {
277
- type: 'object',
278
- properties: {
279
- task_id: { type: 'string' },
280
- content: { type: 'string' },
281
- artifacts: { type: 'array', items: { type: 'string' } },
282
- },
283
- required: ['task_id', 'content'],
284
- },
285
- },
286
- {
287
- name: 'task_list',
288
- description: 'List tasks in a session. Use format="table" for beautiful ASCII table output.',
289
- inputSchema: {
290
- type: 'object',
291
- properties: {
292
- session_id: { type: 'string' },
293
- status: { type: 'string' },
294
- format: {
295
- type: 'string',
296
- enum: ['table', 'json'],
297
- description: 'Output format: "table" for ASCII table, "json" for raw JSON (default)',
313
+ // ---------- Batch creation ----------
314
+ batch: {
315
+ type: 'boolean',
316
+ description: 'For create: if true, expects tasks array instead of single task parameters (default: false)',
298
317
  },
299
- },
300
- required: ['session_id'],
301
- },
302
- },
303
- {
304
- name: 'task_execute',
305
- description: 'Execute a pending or queued task',
306
- inputSchema: {
307
- type: 'object',
308
- properties: {
309
- task_id: { type: 'string', description: 'ID of the task to execute' },
310
- wait: { type: 'boolean', description: 'Wait for task completion (default: true)' },
311
- },
312
- required: ['task_id'],
313
- },
314
- },
315
- {
316
- name: 'task_cancel',
317
- description: 'Cancel a pending, queued, or running task',
318
- inputSchema: {
319
- type: 'object',
320
- properties: {
321
- task_id: { type: 'string', description: 'ID of the task to cancel' },
322
- },
323
- required: ['task_id'],
324
- },
325
- },
326
- {
327
- name: 'task_retry',
328
- description: 'Retry a failed task',
329
- inputSchema: {
330
- type: 'object',
331
- properties: {
332
- task_id: { type: 'string', description: 'ID of the failed task to retry' },
333
- },
334
- required: ['task_id'],
335
- },
336
- },
337
- {
338
- name: 'task_batch_create',
339
- description: 'Create multiple tasks in a single call. ALWAYS use this instead of multiple task_create calls when creating 2+ tasks.',
340
- inputSchema: {
341
- type: 'object',
342
- properties: {
343
- session_id: { type: 'string', description: 'Session to create tasks in' },
344
318
  tasks: {
345
319
  type: 'array',
346
- description: 'Array of task definitions (max 50)',
320
+ description: 'For create (batch=true): array of task definitions (max 50). Each task has: type, description, prompt, optional: context_files, force_provider, force_tier, agent, skills',
347
321
  items: {
348
322
  type: 'object',
349
323
  properties: {
@@ -359,183 +333,312 @@ export const toolDefinitions = [
359
333
  required: ['type', 'description', 'prompt'],
360
334
  },
361
335
  },
336
+ // ---------- Complete operation ----------
337
+ task_id: {
338
+ type: 'string',
339
+ description: 'Required for complete/cancel: task ID',
340
+ },
341
+ content: {
342
+ type: 'string',
343
+ description: 'Required for complete: completion content/result',
344
+ },
345
+ artifacts: {
346
+ type: 'array',
347
+ items: { type: 'string' },
348
+ description: 'For complete: artifact IDs produced by the task',
349
+ },
362
350
  },
363
- required: ['session_id', 'tasks'],
351
+ required: ['operation'],
364
352
  },
365
353
  },
366
354
  {
367
- name: 'task_batch_execute',
368
- description: 'Execute multiple tasks in parallel. Use after task_batch_create or with existing task IDs. Much more efficient than sequential task_execute calls.',
355
+ name: 'task_execute',
356
+ description: 'Execute one or multiple tasks (parallel or sequential). Queue tasks or execute immediately. Use task_id for single execution or task_ids for batch execution.',
369
357
  inputSchema: {
370
358
  type: 'object',
371
359
  properties: {
360
+ // ---------- Single task execution ----------
361
+ task_id: {
362
+ type: 'string',
363
+ description: 'Single task ID to execute. Use this OR task_ids, not both. Mutually exclusive with task_ids.',
364
+ },
365
+ // ---------- Batch task execution ----------
372
366
  task_ids: {
373
367
  type: 'array',
374
368
  items: { type: 'string' },
375
- description: 'Array of task IDs to execute (max 50)',
369
+ description: 'Array of task IDs to execute (max 50). Use this OR task_id, not both. Mutually exclusive with task_id.',
376
370
  },
377
371
  parallel: {
378
372
  type: 'boolean',
379
- description: 'Execute tasks in parallel (default: true). Set false for sequential.',
373
+ description: 'For batch (task_ids): execute tasks in parallel (default: true). Set false for sequential execution.',
374
+ },
375
+ // ---------- Common parameters ----------
376
+ queue_only: {
377
+ type: 'boolean',
378
+ description: 'If true, queue task(s) for later execution instead of executing immediately (default: false). Queued tasks will be auto-executed if session has auto_execute enabled.',
380
379
  },
381
380
  wait: {
382
381
  type: 'boolean',
383
- description: 'Wait for all tasks to complete (default: true)',
382
+ description: 'Wait for task(s) to complete before returning (default: true). Set false to return immediately after starting execution.',
384
383
  },
385
384
  },
386
- required: ['task_ids'],
387
- },
388
- },
389
- // Lock Management tools (3)
390
- {
391
- name: 'lock_acquire',
392
- description: 'Acquire a file lock for a session to prevent conflicts',
393
- inputSchema: {
394
- type: 'object',
395
- properties: {
396
- session_id: { type: 'string' },
397
- file_path: { type: 'string' },
398
- ttl: { type: 'number', description: 'Lock TTL in milliseconds (default: 300000)' },
399
- },
400
- required: ['session_id', 'file_path'],
401
385
  },
402
386
  },
403
387
  {
404
- name: 'lock_release',
405
- description: 'Release a file lock held by a session',
388
+ name: 'task_query',
389
+ description: 'Query task information: get status of a specific task or list all tasks in a session. Use format="table" for CLI-friendly output.',
406
390
  inputSchema: {
407
391
  type: 'object',
408
392
  properties: {
409
- session_id: { type: 'string' },
410
- file_path: { type: 'string' },
411
- },
412
- required: ['session_id', 'file_path'],
413
- },
414
- },
415
- {
416
- name: 'lock_status',
417
- description: 'Check lock status for a file or session',
418
- inputSchema: {
419
- type: 'object',
420
- properties: {
421
- session_id: { type: 'string', description: 'Session ID to check locks for' },
422
- file_path: { type: 'string', description: 'File path to check lock status' },
393
+ operation: {
394
+ type: 'string',
395
+ enum: ['status', 'list'],
396
+ description: 'Type of query: status=get specific task details, list=list all tasks in session (default: status if task_id provided, else list)',
397
+ },
398
+ // ---------- Status operation ----------
399
+ task_id: {
400
+ type: 'string',
401
+ description: 'For status: specific task ID to query',
402
+ },
403
+ // ---------- List operation ----------
404
+ session_id: {
405
+ type: 'string',
406
+ description: 'Required for list: session to list tasks from',
407
+ },
408
+ status_filter: {
409
+ type: 'string',
410
+ description: 'For list: filter by status (pending, queued, running, completed, failed, cancelled)',
411
+ },
412
+ format: {
413
+ type: 'string',
414
+ enum: ['table', 'json'],
415
+ description: 'Output format: table=ASCII table for CLI, json=raw JSON (default: json)',
416
+ },
423
417
  },
424
418
  },
425
419
  },
426
- // Cost Monitoring tools (3)
427
420
  {
428
- name: 'session_cost',
429
- description: 'Get cost breakdown for a session',
421
+ name: 'task_retry',
422
+ description: 'Retry a failed task with the same parameters. Task must be in failed status and not exceed max_retries.',
430
423
  inputSchema: {
431
424
  type: 'object',
432
425
  properties: {
433
- session_id: { type: 'string' },
426
+ task_id: {
427
+ type: 'string',
428
+ description: 'ID of the failed task to retry',
429
+ },
434
430
  },
435
- required: ['session_id'],
431
+ required: ['task_id'],
436
432
  },
437
433
  },
434
+ // ========================================================================
435
+ // DATA MANAGEMENT (2 tools)
436
+ // ========================================================================
438
437
  {
439
- name: 'session_metrics',
440
- description: 'Get request and token usage metrics for a session',
438
+ name: 'data_manage',
439
+ description: 'Manage data operations: store memory, save artifacts, or optimize context. Use operation="store" for memory storage, operation="save" for artifact creation, operation="optimize" for context token reduction.',
441
440
  inputSchema: {
442
441
  type: 'object',
443
442
  properties: {
444
- session_id: { type: 'string' },
443
+ operation: {
444
+ type: 'string',
445
+ enum: ['store', 'save', 'optimize'],
446
+ description: 'Operation type: store=memory storage, save=artifact creation, optimize=context optimization',
447
+ },
448
+ // For memory_store operation
449
+ key: {
450
+ type: 'string',
451
+ description: 'For store operation: memory key to store value under',
452
+ },
453
+ value: {
454
+ description: 'For store operation: value to store (any JSON-serializable type)',
455
+ },
456
+ // For artifact_save operation
457
+ session_id: {
458
+ type: 'string',
459
+ description: 'Required for save/optimize operations: session ID',
460
+ },
461
+ artifact_type: {
462
+ type: 'string',
463
+ enum: ['code', 'document', 'data', 'config', 'test', 'other'],
464
+ description: 'For save operation: artifact type classification',
465
+ },
466
+ name: {
467
+ type: 'string',
468
+ description: 'For save operation: artifact name/filename',
469
+ },
470
+ content: {
471
+ type: 'string',
472
+ description: 'For save operation: artifact content',
473
+ },
474
+ // For context_optimize operation
475
+ objective: {
476
+ type: 'string',
477
+ description: 'For optimize operation: session objective for context optimization',
478
+ },
479
+ phase: {
480
+ type: 'string',
481
+ description: 'For optimize operation: current phase of work',
482
+ },
483
+ progress: {
484
+ type: 'number',
485
+ description: 'For optimize operation: progress percentage (0-1)',
486
+ },
487
+ messages: {
488
+ type: 'array',
489
+ description: 'For optimize operation: messages to optimize',
490
+ },
445
491
  },
446
- required: ['session_id'],
492
+ required: ['operation'],
447
493
  },
448
494
  },
449
495
  {
450
- name: 'session_throttle',
451
- description: 'Check rate limit and throttle status for a session',
496
+ name: 'data_query',
497
+ description: 'Query data: retrieve memory, get artifacts, or list artifacts. Use operation="retrieve" for memory lookup, operation="get" for single artifact, operation="list" for all session artifacts.',
452
498
  inputSchema: {
453
499
  type: 'object',
454
500
  properties: {
455
- session_id: { type: 'string' },
456
- provider: { type: 'string', description: 'Specific provider to check' },
501
+ operation: {
502
+ type: 'string',
503
+ enum: ['retrieve', 'get', 'list'],
504
+ description: 'Operation type: retrieve=memory lookup, get=single artifact, list=all artifacts',
505
+ },
506
+ // For memory_retrieve operation
507
+ key: {
508
+ type: 'string',
509
+ description: 'For retrieve operation: memory key to lookup',
510
+ },
511
+ // For artifact_get operation
512
+ artifact_id: {
513
+ type: 'string',
514
+ description: 'For get operation: artifact ID to retrieve',
515
+ },
516
+ // For artifact_list operation
517
+ session_id: {
518
+ type: 'string',
519
+ description: 'Required for list operation: session ID to list artifacts from',
520
+ },
521
+ artifact_type: {
522
+ type: 'string',
523
+ enum: ['code', 'document', 'data', 'config', 'test', 'other'],
524
+ description: 'For list operation: optional filter by artifact type',
525
+ },
457
526
  },
458
- required: ['session_id'],
527
+ required: ['operation'],
459
528
  },
460
529
  },
461
- // Memory tools (6)
530
+ // ========================================================================
531
+ // UTILITY TOOLS (4 tools)
532
+ // ========================================================================
462
533
  {
463
- name: 'memory_store',
464
- description: 'Store data in memory',
534
+ name: 'system_query',
535
+ description: 'Query system information: health status, available providers, or system metrics. Use operation="health" for health checks, operation="providers" for provider list, operation="metrics" for system metrics.',
465
536
  inputSchema: {
466
537
  type: 'object',
467
538
  properties: {
468
- key: { type: 'string' },
469
- value: {},
470
- session_id: { type: 'string' },
539
+ operation: {
540
+ type: 'string',
541
+ enum: ['health', 'providers', 'metrics'],
542
+ description: 'Operation type: health=system health, providers=available providers, metrics=system metrics',
543
+ },
544
+ // For health_check operation
545
+ include_providers: {
546
+ type: 'boolean',
547
+ description: 'For health operation: include provider status in health check',
548
+ },
549
+ // For provider_list operation
550
+ filter_healthy: {
551
+ type: 'boolean',
552
+ description: 'For providers operation: only show healthy providers',
553
+ },
554
+ include_capabilities: {
555
+ type: 'boolean',
556
+ description: 'For providers operation: include provider capabilities',
557
+ },
558
+ // For metrics_get operation
559
+ metric_type: {
560
+ type: 'string',
561
+ enum: ['routing', 'tokens', 'costs', 'all'],
562
+ description: 'For metrics operation: type of metrics to retrieve',
563
+ },
471
564
  },
472
- required: ['key', 'value'],
473
565
  },
474
566
  },
475
567
  {
476
- name: 'memory_retrieve',
477
- description: 'Retrieve data from memory',
478
- inputSchema: {
479
- type: 'object',
480
- properties: { key: { type: 'string' } },
481
- required: ['key'],
482
- },
483
- },
484
- {
485
- name: 'artifact_save',
486
- description: 'Save an artifact',
568
+ name: 'lock_manage',
569
+ description: 'Manage file locks: acquire, release, or check status. Use operation="acquire" to lock a file, operation="release" to unlock, operation="status" to check lock state.',
487
570
  inputSchema: {
488
571
  type: 'object',
489
572
  properties: {
490
- session_id: { type: 'string' },
491
- type: { type: 'string', enum: ['code', 'document', 'data', 'config', 'test', 'other'] },
492
- name: { type: 'string' },
493
- content: { type: 'string' },
573
+ operation: {
574
+ type: 'string',
575
+ enum: ['acquire', 'release', 'status'],
576
+ description: 'Operation type: acquire=lock file, release=unlock file, status=check lock',
577
+ },
578
+ session_id: {
579
+ type: 'string',
580
+ description: 'Required for acquire/release, optional for status: session ID',
581
+ },
582
+ file_path: {
583
+ type: 'string',
584
+ description: 'Required for acquire/release, optional for status: file path to lock',
585
+ },
586
+ ttl: {
587
+ type: 'number',
588
+ description: 'For acquire operation: lock TTL in milliseconds (default: 300000)',
589
+ },
494
590
  },
495
- required: ['session_id', 'type', 'name', 'content'],
496
- },
497
- },
498
- {
499
- name: 'artifact_get',
500
- description: 'Get an artifact',
501
- inputSchema: {
502
- type: 'object',
503
- properties: { artifact_id: { type: 'string' } },
504
- required: ['artifact_id'],
591
+ required: ['operation'],
505
592
  },
506
593
  },
507
594
  {
508
- name: 'artifact_list',
509
- description: 'List all artifacts for a session',
595
+ name: 'session_monitoring',
596
+ description: 'Monitor session activity: cost breakdown, token metrics, or rate limits. Use operation="cost" for costs, operation="metrics" for token usage, operation="throttle" for rate limits.',
510
597
  inputSchema: {
511
598
  type: 'object',
512
599
  properties: {
513
- session_id: { type: 'string', description: 'Session ID to list artifacts for' },
514
- type: {
600
+ operation: {
515
601
  type: 'string',
516
- enum: ['code', 'document', 'data', 'config', 'test', 'other'],
517
- description: 'Optional filter by artifact type',
602
+ enum: ['cost', 'metrics', 'throttle'],
603
+ description: 'Operation type: cost=cost breakdown, metrics=token usage, throttle=rate limits',
604
+ },
605
+ session_id: {
606
+ type: 'string',
607
+ description: 'Required for all operations: session ID to monitor',
608
+ },
609
+ provider: {
610
+ type: 'string',
611
+ description: 'For throttle operation: specific provider to check',
518
612
  },
519
613
  },
520
- required: ['session_id'],
614
+ required: ['operation', 'session_id'],
521
615
  },
522
616
  },
523
617
  {
524
- name: 'context_optimize',
525
- description: 'Optimize context for token reduction',
618
+ name: 'config_manage',
619
+ description: 'Manage configuration: get or set values. Use operation="get" to retrieve config, operation="set" to update config.',
526
620
  inputSchema: {
527
621
  type: 'object',
528
622
  properties: {
529
- session_id: { type: 'string' },
530
- objective: { type: 'string' },
531
- phase: { type: 'string' },
532
- progress: { type: 'number' },
533
- messages: { type: 'array' },
623
+ operation: {
624
+ type: 'string',
625
+ enum: ['get', 'set'],
626
+ description: 'Operation type: get=retrieve value, set=update value',
627
+ },
628
+ key: {
629
+ type: 'string',
630
+ description: 'Required for both operations: configuration key',
631
+ },
632
+ value: {
633
+ description: 'Required for set operation: value to set (any JSON-serializable type)',
634
+ },
534
635
  },
535
- required: ['session_id', 'objective', 'phase', 'progress', 'messages'],
636
+ required: ['operation', 'key'],
536
637
  },
537
638
  },
538
- // Orchestration tools (4)
639
+ // ========================================================================
640
+ // ORCHESTRATION TOOLS (4 tools - unchanged)
641
+ // ========================================================================
539
642
  {
540
643
  name: 'dispatch',
541
644
  description: 'Dispatch prompt to AI provider with routing',
@@ -591,51 +694,5 @@ export const toolDefinitions = [
591
694
  required: ['task_ids'],
592
695
  },
593
696
  },
594
- // Utility tools (5)
595
- {
596
- name: 'health_check',
597
- description: 'Check system health',
598
- inputSchema: {
599
- type: 'object',
600
- properties: { include_providers: { type: 'boolean' } },
601
- },
602
- },
603
- {
604
- name: 'provider_list',
605
- description: 'List available AI providers',
606
- inputSchema: {
607
- type: 'object',
608
- properties: {
609
- filter_healthy: { type: 'boolean' },
610
- include_capabilities: { type: 'boolean' },
611
- },
612
- },
613
- },
614
- {
615
- name: 'metrics_get',
616
- description: 'Get system metrics',
617
- inputSchema: {
618
- type: 'object',
619
- properties: { metric_type: { type: 'string', enum: ['routing', 'tokens', 'costs', 'all'] } },
620
- },
621
- },
622
- {
623
- name: 'config_get',
624
- description: 'Get configuration value',
625
- inputSchema: {
626
- type: 'object',
627
- properties: { key: { type: 'string' } },
628
- required: ['key'],
629
- },
630
- },
631
- {
632
- name: 'config_set',
633
- description: 'Set configuration value',
634
- inputSchema: {
635
- type: 'object',
636
- properties: { key: { type: 'string' }, value: {} },
637
- required: ['key', 'value'],
638
- },
639
- },
640
697
  ];
641
698
  //# sourceMappingURL=tool-definitions.js.map