@lumenflow/mcp 2.18.3 → 2.19.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 (49) hide show
  1. package/dist/tools/agent-tools.d.ts +26 -0
  2. package/dist/tools/agent-tools.d.ts.map +1 -0
  3. package/dist/tools/agent-tools.js +161 -0
  4. package/dist/tools/agent-tools.js.map +1 -0
  5. package/dist/tools/context-tools.d.ts +19 -0
  6. package/dist/tools/context-tools.d.ts.map +1 -0
  7. package/dist/tools/context-tools.js +73 -0
  8. package/dist/tools/context-tools.js.map +1 -0
  9. package/dist/tools/flow-tools.d.ts +30 -0
  10. package/dist/tools/flow-tools.d.ts.map +1 -0
  11. package/dist/tools/flow-tools.js +141 -0
  12. package/dist/tools/flow-tools.js.map +1 -0
  13. package/dist/tools/initiative-tools.d.ts +42 -0
  14. package/dist/tools/initiative-tools.d.ts.map +1 -0
  15. package/dist/tools/initiative-tools.js +304 -0
  16. package/dist/tools/initiative-tools.js.map +1 -0
  17. package/dist/tools/memory-tools.d.ts +66 -0
  18. package/dist/tools/memory-tools.d.ts.map +1 -0
  19. package/dist/tools/memory-tools.js +419 -0
  20. package/dist/tools/memory-tools.js.map +1 -0
  21. package/dist/tools/orchestration-tools.d.ts +26 -0
  22. package/dist/tools/orchestration-tools.d.ts.map +1 -0
  23. package/dist/tools/orchestration-tools.js +158 -0
  24. package/dist/tools/orchestration-tools.js.map +1 -0
  25. package/dist/tools/parity-tools.d.ts +118 -0
  26. package/dist/tools/parity-tools.d.ts.map +1 -0
  27. package/dist/tools/parity-tools.js +897 -0
  28. package/dist/tools/parity-tools.js.map +1 -0
  29. package/dist/tools/setup-tools.d.ts +42 -0
  30. package/dist/tools/setup-tools.d.ts.map +1 -0
  31. package/dist/tools/setup-tools.js +167 -0
  32. package/dist/tools/setup-tools.js.map +1 -0
  33. package/dist/tools/validation-tools.d.ts +34 -0
  34. package/dist/tools/validation-tools.d.ts.map +1 -0
  35. package/dist/tools/validation-tools.js +134 -0
  36. package/dist/tools/validation-tools.js.map +1 -0
  37. package/dist/tools/wu-tools.d.ts +116 -0
  38. package/dist/tools/wu-tools.d.ts.map +1 -0
  39. package/dist/tools/wu-tools.js +711 -0
  40. package/dist/tools/wu-tools.js.map +1 -0
  41. package/dist/tools-shared.d.ts +170 -0
  42. package/dist/tools-shared.d.ts.map +1 -0
  43. package/dist/tools-shared.js +203 -0
  44. package/dist/tools-shared.js.map +1 -0
  45. package/dist/tools.d.ts +34 -466
  46. package/dist/tools.d.ts.map +1 -1
  47. package/dist/tools.js +54 -3323
  48. package/dist/tools.js.map +1 -1
  49. package/package.json +2 -2
@@ -0,0 +1,419 @@
1
+ /**
2
+ * @file memory-tools.ts
3
+ * @description Memory tool implementations
4
+ *
5
+ * WU-1642: Extracted from tools.ts during domain decomposition.
6
+ * WU-1424: Memory tools
7
+ * WU-1456: Memory commands use shared schemas where available
8
+ */
9
+ import { z } from 'zod';
10
+ import { memInitSchema, memStartSchema, memReadySchema, memCheckpointSchema, memCleanupSchema, memContextSchema, memCreateSchema, memDeleteSchema, memExportSchema, memInboxSchema, memSignalSchema, memSummarizeSchema, memTriageSchema, } from '@lumenflow/core';
11
+ import { ErrorCodes, ErrorMessages, CliArgs, SharedErrorMessages, success, error, runCliCommand, } from '../tools-shared.js';
12
+ /**
13
+ * Error codes for memory tools
14
+ */
15
+ const MemoryErrorCodes = {
16
+ MEM_INIT_ERROR: 'MEM_INIT_ERROR',
17
+ MEM_START_ERROR: 'MEM_START_ERROR',
18
+ MEM_READY_ERROR: 'MEM_READY_ERROR',
19
+ MEM_CHECKPOINT_ERROR: 'MEM_CHECKPOINT_ERROR',
20
+ MEM_CLEANUP_ERROR: 'MEM_CLEANUP_ERROR',
21
+ MEM_CONTEXT_ERROR: 'MEM_CONTEXT_ERROR',
22
+ MEM_CREATE_ERROR: 'MEM_CREATE_ERROR',
23
+ MEM_DELETE_ERROR: 'MEM_DELETE_ERROR',
24
+ MEM_EXPORT_ERROR: 'MEM_EXPORT_ERROR',
25
+ MEM_INBOX_ERROR: 'MEM_INBOX_ERROR',
26
+ MEM_SIGNAL_ERROR: 'MEM_SIGNAL_ERROR',
27
+ MEM_SUMMARIZE_ERROR: 'MEM_SUMMARIZE_ERROR',
28
+ MEM_TRIAGE_ERROR: 'MEM_TRIAGE_ERROR',
29
+ MEM_RECOVER_ERROR: 'MEM_RECOVER_ERROR',
30
+ };
31
+ /**
32
+ * Error messages for memory tools (uses shared messages to avoid duplication)
33
+ */
34
+ const MemoryErrorMessages = {
35
+ WU_REQUIRED: SharedErrorMessages.WU_REQUIRED,
36
+ MESSAGE_REQUIRED: 'message is required',
37
+ };
38
+ // mem:recover public parity schema (not yet modeled in @lumenflow/core memory schemas)
39
+ const memRecoverSchema = z.object({
40
+ wu: z.string().optional(),
41
+ max_size: z.number().optional(),
42
+ format: z.enum(['json', 'human']).optional(),
43
+ quiet: z.boolean().optional(),
44
+ base_dir: z.string().optional(),
45
+ });
46
+ /**
47
+ * mem_init - Initialize memory for a WU
48
+ */
49
+ export const memInitTool = {
50
+ name: 'mem_init',
51
+ description: 'Initialize memory layer for a Work Unit',
52
+ inputSchema: memInitSchema,
53
+ async execute(input, options) {
54
+ if (!input.wu) {
55
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
56
+ }
57
+ const args = ['--wu', input.wu];
58
+ const cliOptions = { projectRoot: options?.projectRoot };
59
+ const result = await runCliCommand('mem:init', args, cliOptions);
60
+ if (result.success) {
61
+ return success({ message: result.stdout || 'Memory initialized' });
62
+ }
63
+ else {
64
+ return error(result.stderr || result.error?.message || 'mem:init failed', MemoryErrorCodes.MEM_INIT_ERROR);
65
+ }
66
+ },
67
+ };
68
+ /**
69
+ * mem_start - Start a memory session
70
+ */
71
+ export const memStartTool = {
72
+ name: 'mem_start',
73
+ description: 'Start a memory session for a Work Unit',
74
+ inputSchema: memStartSchema,
75
+ async execute(input, options) {
76
+ if (!input.wu) {
77
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
78
+ }
79
+ const args = ['--wu', input.wu];
80
+ if (input.lane)
81
+ args.push('--lane', input.lane);
82
+ const cliOptions = { projectRoot: options?.projectRoot };
83
+ const result = await runCliCommand('mem:start', args, cliOptions);
84
+ if (result.success) {
85
+ return success({ message: result.stdout || 'Session started' });
86
+ }
87
+ else {
88
+ return error(result.stderr || result.error?.message || 'mem:start failed', MemoryErrorCodes.MEM_START_ERROR);
89
+ }
90
+ },
91
+ };
92
+ /**
93
+ * mem_ready - Check pending nodes
94
+ */
95
+ export const memReadyTool = {
96
+ name: 'mem_ready',
97
+ description: 'Check pending memory nodes for a Work Unit',
98
+ inputSchema: memReadySchema,
99
+ async execute(input, options) {
100
+ if (!input.wu) {
101
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
102
+ }
103
+ const args = ['--wu', input.wu];
104
+ const cliOptions = { projectRoot: options?.projectRoot };
105
+ const result = await runCliCommand('mem:ready', args, cliOptions);
106
+ if (result.success) {
107
+ try {
108
+ const data = JSON.parse(result.stdout);
109
+ return success(data);
110
+ }
111
+ catch {
112
+ return success({ message: result.stdout });
113
+ }
114
+ }
115
+ else {
116
+ return error(result.stderr || result.error?.message || 'mem:ready failed', MemoryErrorCodes.MEM_READY_ERROR);
117
+ }
118
+ },
119
+ };
120
+ /**
121
+ * mem_checkpoint - Save progress checkpoint
122
+ */
123
+ export const memCheckpointTool = {
124
+ name: 'mem_checkpoint',
125
+ description: 'Save a progress checkpoint for a Work Unit',
126
+ inputSchema: memCheckpointSchema,
127
+ async execute(input, options) {
128
+ if (!input.wu) {
129
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
130
+ }
131
+ const args = ['--wu', input.wu];
132
+ if (input.message)
133
+ args.push('--message', input.message);
134
+ const cliOptions = { projectRoot: options?.projectRoot };
135
+ const result = await runCliCommand('mem:checkpoint', args, cliOptions);
136
+ if (result.success) {
137
+ return success({ message: result.stdout || 'Checkpoint saved' });
138
+ }
139
+ else {
140
+ return error(result.stderr || result.error?.message || 'mem:checkpoint failed', MemoryErrorCodes.MEM_CHECKPOINT_ERROR);
141
+ }
142
+ },
143
+ };
144
+ /**
145
+ * mem_cleanup - Clean up stale memory data
146
+ */
147
+ export const memCleanupTool = {
148
+ name: 'mem_cleanup',
149
+ description: 'Clean up stale memory data',
150
+ inputSchema: memCleanupSchema,
151
+ async execute(input, options) {
152
+ const args = [];
153
+ if (input.dry_run)
154
+ args.push(CliArgs.DRY_RUN);
155
+ const cliOptions = { projectRoot: options?.projectRoot };
156
+ const result = await runCliCommand('mem:cleanup', args, cliOptions);
157
+ if (result.success) {
158
+ return success({ message: result.stdout || 'Cleanup completed' });
159
+ }
160
+ else {
161
+ return error(result.stderr || result.error?.message || 'mem:cleanup failed', MemoryErrorCodes.MEM_CLEANUP_ERROR);
162
+ }
163
+ },
164
+ };
165
+ /**
166
+ * mem_context - Get context for current lane/WU
167
+ */
168
+ export const memContextTool = {
169
+ name: 'mem_context',
170
+ description: 'Get memory context for a Work Unit, optionally filtered by lane',
171
+ inputSchema: memContextSchema,
172
+ async execute(input, options) {
173
+ if (!input.wu) {
174
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
175
+ }
176
+ const args = ['--wu', input.wu];
177
+ if (input.lane)
178
+ args.push('--lane', input.lane);
179
+ const cliOptions = { projectRoot: options?.projectRoot };
180
+ const result = await runCliCommand('mem:context', args, cliOptions);
181
+ if (result.success) {
182
+ try {
183
+ const data = JSON.parse(result.stdout);
184
+ return success(data);
185
+ }
186
+ catch {
187
+ return success({ message: result.stdout });
188
+ }
189
+ }
190
+ else {
191
+ return error(result.stderr || result.error?.message || 'mem:context failed', MemoryErrorCodes.MEM_CONTEXT_ERROR);
192
+ }
193
+ },
194
+ };
195
+ /**
196
+ * mem_create - Create a memory node
197
+ */
198
+ export const memCreateTool = {
199
+ name: 'mem_create',
200
+ description: 'Create a memory node (e.g., for bug discovery)',
201
+ inputSchema: memCreateSchema,
202
+ async execute(input, options) {
203
+ if (!input.message) {
204
+ return error(MemoryErrorMessages.MESSAGE_REQUIRED, ErrorCodes.MISSING_PARAMETER);
205
+ }
206
+ if (!input.wu) {
207
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
208
+ }
209
+ const args = [input.message, '--wu', input.wu];
210
+ if (input.type)
211
+ args.push('--type', input.type);
212
+ if (input.tags)
213
+ args.push('--tags', input.tags.join(','));
214
+ const cliOptions = { projectRoot: options?.projectRoot };
215
+ const result = await runCliCommand('mem:create', args, cliOptions);
216
+ if (result.success) {
217
+ return success({ message: result.stdout || 'Memory node created' });
218
+ }
219
+ else {
220
+ return error(result.stderr || result.error?.message || 'mem:create failed', MemoryErrorCodes.MEM_CREATE_ERROR);
221
+ }
222
+ },
223
+ };
224
+ /**
225
+ * mem_delete - Delete/archive a memory node
226
+ */
227
+ export const memDeleteTool = {
228
+ name: 'mem_delete',
229
+ description: 'Delete or archive a memory node',
230
+ inputSchema: memDeleteSchema,
231
+ async execute(input, options) {
232
+ if (!input.id) {
233
+ return error(ErrorMessages.ID_REQUIRED, ErrorCodes.MISSING_PARAMETER);
234
+ }
235
+ const args = ['--id', input.id];
236
+ const cliOptions = { projectRoot: options?.projectRoot };
237
+ const result = await runCliCommand('mem:delete', args, cliOptions);
238
+ if (result.success) {
239
+ return success({ message: result.stdout || 'Memory node deleted' });
240
+ }
241
+ else {
242
+ return error(result.stderr || result.error?.message || 'mem:delete failed', MemoryErrorCodes.MEM_DELETE_ERROR);
243
+ }
244
+ },
245
+ };
246
+ /**
247
+ * mem_export - Export memory as markdown
248
+ */
249
+ export const memExportTool = {
250
+ name: 'mem_export',
251
+ description: 'Export memory for a Work Unit as markdown or JSON',
252
+ inputSchema: memExportSchema,
253
+ async execute(input, options) {
254
+ if (!input.wu) {
255
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
256
+ }
257
+ const args = ['--wu', input.wu];
258
+ if (input.format)
259
+ args.push('--format', input.format);
260
+ const cliOptions = { projectRoot: options?.projectRoot };
261
+ const result = await runCliCommand('mem:export', args, cliOptions);
262
+ if (result.success) {
263
+ return success({ message: result.stdout });
264
+ }
265
+ else {
266
+ return error(result.stderr || result.error?.message || 'mem:export failed', MemoryErrorCodes.MEM_EXPORT_ERROR);
267
+ }
268
+ },
269
+ };
270
+ /**
271
+ * mem_inbox - Check coordination signals
272
+ */
273
+ export const memInboxTool = {
274
+ name: 'mem_inbox',
275
+ description: 'Check coordination signals from other agents',
276
+ inputSchema: memInboxSchema,
277
+ async execute(input, options) {
278
+ const args = [];
279
+ if (input.since)
280
+ args.push('--since', input.since);
281
+ if (input.wu)
282
+ args.push(CliArgs.WU, input.wu);
283
+ if (input.lane)
284
+ args.push('--lane', input.lane);
285
+ const cliOptions = { projectRoot: options?.projectRoot };
286
+ const result = await runCliCommand('mem:inbox', args, cliOptions);
287
+ if (result.success) {
288
+ try {
289
+ const data = JSON.parse(result.stdout);
290
+ return success(data);
291
+ }
292
+ catch {
293
+ return success({ message: result.stdout });
294
+ }
295
+ }
296
+ else {
297
+ return error(result.stderr || result.error?.message || 'mem:inbox failed', MemoryErrorCodes.MEM_INBOX_ERROR);
298
+ }
299
+ },
300
+ };
301
+ /**
302
+ * mem_signal - Broadcast coordination signal
303
+ */
304
+ export const memSignalTool = {
305
+ name: 'mem_signal',
306
+ description: 'Broadcast a coordination signal to other agents',
307
+ inputSchema: memSignalSchema,
308
+ async execute(input, options) {
309
+ if (!input.message) {
310
+ return error(MemoryErrorMessages.MESSAGE_REQUIRED, ErrorCodes.MISSING_PARAMETER);
311
+ }
312
+ if (!input.wu) {
313
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
314
+ }
315
+ const args = [input.message, '--wu', input.wu];
316
+ const cliOptions = { projectRoot: options?.projectRoot };
317
+ const result = await runCliCommand('mem:signal', args, cliOptions);
318
+ if (result.success) {
319
+ return success({ message: result.stdout || 'Signal broadcast' });
320
+ }
321
+ else {
322
+ return error(result.stderr || result.error?.message || 'mem:signal failed', MemoryErrorCodes.MEM_SIGNAL_ERROR);
323
+ }
324
+ },
325
+ };
326
+ /**
327
+ * mem_summarize - Summarize memory context
328
+ */
329
+ export const memSummarizeTool = {
330
+ name: 'mem_summarize',
331
+ description: 'Summarize memory context for a Work Unit',
332
+ inputSchema: memSummarizeSchema,
333
+ async execute(input, options) {
334
+ if (!input.wu) {
335
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
336
+ }
337
+ const args = ['--wu', input.wu];
338
+ const cliOptions = { projectRoot: options?.projectRoot };
339
+ const result = await runCliCommand('mem:summarize', args, cliOptions);
340
+ if (result.success) {
341
+ return success({ message: result.stdout });
342
+ }
343
+ else {
344
+ return error(result.stderr || result.error?.message || 'mem:summarize failed', MemoryErrorCodes.MEM_SUMMARIZE_ERROR);
345
+ }
346
+ },
347
+ };
348
+ /**
349
+ * mem_triage - Triage discovered bugs
350
+ */
351
+ export const memTriageTool = {
352
+ name: 'mem_triage',
353
+ description: 'Triage discovered bugs for a Work Unit, optionally promoting to WU',
354
+ inputSchema: memTriageSchema,
355
+ async execute(input, options) {
356
+ if (!input.wu) {
357
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
358
+ }
359
+ const args = ['--wu', input.wu];
360
+ if (input.promote)
361
+ args.push('--promote', input.promote);
362
+ if (input.lane)
363
+ args.push('--lane', input.lane);
364
+ const cliOptions = { projectRoot: options?.projectRoot };
365
+ const result = await runCliCommand('mem:triage', args, cliOptions);
366
+ if (result.success) {
367
+ try {
368
+ const data = JSON.parse(result.stdout);
369
+ return success(data);
370
+ }
371
+ catch {
372
+ return success({ message: result.stdout });
373
+ }
374
+ }
375
+ else {
376
+ return error(result.stderr || result.error?.message || 'mem:triage failed', MemoryErrorCodes.MEM_TRIAGE_ERROR);
377
+ }
378
+ },
379
+ };
380
+ /**
381
+ * mem_recover - Generate post-compaction recovery context for a Work Unit
382
+ */
383
+ export const memRecoverTool = {
384
+ name: 'mem_recover',
385
+ description: 'Generate recovery context after compaction for a Work Unit',
386
+ inputSchema: memRecoverSchema,
387
+ async execute(input, options) {
388
+ if (!input.wu) {
389
+ return error(MemoryErrorMessages.WU_REQUIRED, ErrorCodes.MISSING_PARAMETER);
390
+ }
391
+ const args = ['--wu', input.wu];
392
+ if (input.max_size !== undefined)
393
+ args.push('--max-size', String(input.max_size));
394
+ if (input.format)
395
+ args.push('--format', input.format);
396
+ if (input.quiet)
397
+ args.push('--quiet');
398
+ if (input.base_dir)
399
+ args.push(CliArgs.BASE_DIR, input.base_dir);
400
+ const cliOptions = { projectRoot: options?.projectRoot };
401
+ const result = await runCliCommand('mem:recover', args, cliOptions);
402
+ if (result.success) {
403
+ if (input.format === 'json') {
404
+ try {
405
+ const data = JSON.parse(result.stdout);
406
+ return success(data);
407
+ }
408
+ catch {
409
+ return success({ message: result.stdout || 'Recovery context generated' });
410
+ }
411
+ }
412
+ return success({ message: result.stdout || 'Recovery context generated' });
413
+ }
414
+ else {
415
+ return error(result.stderr || result.error?.message || 'mem:recover failed', MemoryErrorCodes.MEM_RECOVER_ERROR);
416
+ }
417
+ },
418
+ };
419
+ //# sourceMappingURL=memory-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../../src/tools/memory-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file orchestration-tools.ts
3
+ * @description Orchestration and delegation tool implementations
4
+ *
5
+ * WU-1642: Extracted from tools.ts during domain decomposition.
6
+ * WU-1425: Orchestration tools + delegation tools
7
+ * WU-1457: All orchestration/delegation commands use shared schemas
8
+ */
9
+ import { type ToolDefinition } from '../tools-shared.js';
10
+ /**
11
+ * orchestrate_initiative - Orchestrate initiative execution with parallel agent spawning
12
+ */
13
+ export declare const orchestrateInitiativeTool: ToolDefinition;
14
+ /**
15
+ * orchestrate_init_status - Show initiative progress status
16
+ */
17
+ export declare const orchestrateInitStatusTool: ToolDefinition;
18
+ /**
19
+ * orchestrate_monitor - Monitor delegated agent progress and delegation health
20
+ */
21
+ export declare const orchestrateMonitorTool: ToolDefinition;
22
+ /**
23
+ * delegation_list - Display delegation trees for WUs or initiatives
24
+ */
25
+ export declare const delegationListTool: ToolDefinition;
26
+ //# sourceMappingURL=orchestration-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration-tools.d.ts","sourceRoot":"","sources":["../../src/tools/orchestration-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EACL,KAAK,cAAc,EAQpB,MAAM,oBAAoB,CAAC;AAgC5B;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cA8BvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cAwBvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,cA8BpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAgChC,CAAC"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @file orchestration-tools.ts
3
+ * @description Orchestration and delegation tool implementations
4
+ *
5
+ * WU-1642: Extracted from tools.ts during domain decomposition.
6
+ * WU-1425: Orchestration tools + delegation tools
7
+ * WU-1457: All orchestration/delegation commands use shared schemas
8
+ */
9
+ import { orchestrateInitiativeSchema, orchestrateInitStatusSchema, orchestrateMonitorSchema, delegationListSchema, } from '@lumenflow/core';
10
+ import { ErrorCodes, CliArgs, SharedErrorMessages, success, error, runCliCommand, } from '../tools-shared.js';
11
+ /**
12
+ * Error codes for orchestration tools
13
+ */
14
+ const OrchestrationErrorCodes = {
15
+ ORCHESTRATE_INITIATIVE_ERROR: 'ORCHESTRATE_INITIATIVE_ERROR',
16
+ ORCHESTRATE_INIT_STATUS_ERROR: 'ORCHESTRATE_INIT_STATUS_ERROR',
17
+ ORCHESTRATE_MONITOR_ERROR: 'ORCHESTRATE_MONITOR_ERROR',
18
+ };
19
+ /**
20
+ * Error messages for orchestration tools
21
+ */
22
+ const OrchestrationErrorMessages = {
23
+ INITIATIVE_REQUIRED: SharedErrorMessages.INITIATIVE_REQUIRED,
24
+ };
25
+ /**
26
+ * Error codes for delegation tools
27
+ */
28
+ const DelegationErrorCodes = {
29
+ DELEGATION_LIST_ERROR: 'DELEGATION_LIST_ERROR',
30
+ };
31
+ /**
32
+ * Error messages for delegation tools
33
+ */
34
+ const DelegationErrorMessages = {
35
+ WU_OR_INITIATIVE_REQUIRED: 'Either wu or initiative is required',
36
+ };
37
+ /**
38
+ * orchestrate_initiative - Orchestrate initiative execution with parallel agent spawning
39
+ */
40
+ export const orchestrateInitiativeTool = {
41
+ name: 'orchestrate_initiative',
42
+ description: 'Orchestrate initiative execution with parallel agent spawning',
43
+ inputSchema: orchestrateInitiativeSchema,
44
+ async execute(input, options) {
45
+ if (!input.initiative) {
46
+ return error(OrchestrationErrorMessages.INITIATIVE_REQUIRED, ErrorCodes.MISSING_PARAMETER);
47
+ }
48
+ const args = [CliArgs.INITIATIVE, input.initiative];
49
+ if (input.dry_run)
50
+ args.push(CliArgs.DRY_RUN);
51
+ if (input.progress)
52
+ args.push('--progress');
53
+ if (input.checkpoint_per_wave)
54
+ args.push('--checkpoint-per-wave');
55
+ const cliOptions = {
56
+ projectRoot: options?.projectRoot,
57
+ timeout: 300000, // 5 minutes for orchestration
58
+ };
59
+ const result = await runCliCommand('orchestrate:initiative', args, cliOptions);
60
+ if (result.success) {
61
+ return success({ message: result.stdout || 'Orchestration complete' });
62
+ }
63
+ else {
64
+ return error(result.stderr || result.error?.message || 'orchestrate:initiative failed', OrchestrationErrorCodes.ORCHESTRATE_INITIATIVE_ERROR);
65
+ }
66
+ },
67
+ };
68
+ /**
69
+ * orchestrate_init_status - Show initiative progress status
70
+ */
71
+ export const orchestrateInitStatusTool = {
72
+ name: 'orchestrate_init_status',
73
+ description: 'Show compact initiative progress status including WUs and lane availability',
74
+ inputSchema: orchestrateInitStatusSchema,
75
+ async execute(input, options) {
76
+ if (!input.initiative) {
77
+ return error(OrchestrationErrorMessages.INITIATIVE_REQUIRED, ErrorCodes.MISSING_PARAMETER);
78
+ }
79
+ const args = [CliArgs.INITIATIVE, input.initiative];
80
+ const cliOptions = { projectRoot: options?.projectRoot };
81
+ const result = await runCliCommand('orchestrate:init-status', args, cliOptions);
82
+ if (result.success) {
83
+ return success({ message: result.stdout || 'Status displayed' });
84
+ }
85
+ else {
86
+ return error(result.stderr || result.error?.message || 'orchestrate:init-status failed', OrchestrationErrorCodes.ORCHESTRATE_INIT_STATUS_ERROR);
87
+ }
88
+ },
89
+ };
90
+ /**
91
+ * orchestrate_monitor - Monitor delegated agent progress and delegation health
92
+ */
93
+ export const orchestrateMonitorTool = {
94
+ name: 'orchestrate_monitor',
95
+ description: 'Monitor delegated agent progress and delegation health (stuck detection, zombie locks)',
96
+ inputSchema: orchestrateMonitorSchema,
97
+ async execute(input, options) {
98
+ const args = [];
99
+ if (input.threshold)
100
+ args.push(CliArgs.THRESHOLD, String(input.threshold));
101
+ if (input.recover)
102
+ args.push(CliArgs.RECOVER);
103
+ if (input.dry_run)
104
+ args.push(CliArgs.DRY_RUN);
105
+ if (input.since)
106
+ args.push('--since', input.since);
107
+ if (input.wu)
108
+ args.push(CliArgs.WU, input.wu);
109
+ if (input.signals_only)
110
+ args.push('--signals-only');
111
+ const cliOptions = {
112
+ projectRoot: options?.projectRoot,
113
+ timeout: 180000, // 3 minutes for monitoring
114
+ };
115
+ const result = await runCliCommand('orchestrate:monitor', args, cliOptions);
116
+ if (result.success) {
117
+ return success({ message: result.stdout || 'Monitor complete' });
118
+ }
119
+ else {
120
+ return error(result.stderr || result.error?.message || 'orchestrate:monitor failed', OrchestrationErrorCodes.ORCHESTRATE_MONITOR_ERROR);
121
+ }
122
+ },
123
+ };
124
+ /**
125
+ * delegation_list - Display delegation trees for WUs or initiatives
126
+ */
127
+ export const delegationListTool = {
128
+ name: 'delegation_list',
129
+ description: 'Display delegation trees for WUs or initiatives',
130
+ inputSchema: delegationListSchema,
131
+ async execute(input, options) {
132
+ if (!input.wu && !input.initiative) {
133
+ return error(DelegationErrorMessages.WU_OR_INITIATIVE_REQUIRED, ErrorCodes.MISSING_PARAMETER);
134
+ }
135
+ const args = [];
136
+ if (input.wu)
137
+ args.push(CliArgs.WU, input.wu);
138
+ if (input.initiative)
139
+ args.push(CliArgs.INITIATIVE, input.initiative);
140
+ if (input.json)
141
+ args.push('--json');
142
+ const cliOptions = { projectRoot: options?.projectRoot };
143
+ const result = await runCliCommand('delegation:list', args, cliOptions);
144
+ if (result.success) {
145
+ try {
146
+ const data = JSON.parse(result.stdout);
147
+ return success(data);
148
+ }
149
+ catch {
150
+ return success({ message: result.stdout || 'Delegation list displayed' });
151
+ }
152
+ }
153
+ else {
154
+ return error(result.stderr || result.error?.message || 'delegation:list failed', DelegationErrorCodes.DELEGATION_LIST_ERROR);
155
+ }
156
+ },
157
+ };
158
+ //# sourceMappingURL=orchestration-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration-tools.js","sourceRoot":"","sources":["../../src/tools/orchestration-tools.ts"],"names":[],"mappings":"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"}