@claude-flow/cli 3.5.68 → 3.5.70

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 (57) hide show
  1. package/dist/src/commands/autopilot.js +1 -1
  2. package/dist/src/commands/autopilot.js.map +1 -1
  3. package/dist/src/commands/daemon.js.map +1 -1
  4. package/dist/src/commands/guidance.d.ts.map +1 -1
  5. package/dist/src/commands/guidance.js.map +1 -1
  6. package/dist/src/commands/hooks.d.ts.map +1 -1
  7. package/dist/src/commands/hooks.js +4 -7
  8. package/dist/src/commands/hooks.js.map +1 -1
  9. package/dist/src/commands/init.d.ts.map +1 -1
  10. package/dist/src/commands/init.js +0 -1
  11. package/dist/src/commands/init.js.map +1 -1
  12. package/dist/src/commands/mcp.js.map +1 -1
  13. package/dist/src/commands/neural.d.ts.map +1 -1
  14. package/dist/src/commands/neural.js +33 -10
  15. package/dist/src/commands/neural.js.map +1 -1
  16. package/dist/src/commands/plugins.d.ts.map +1 -1
  17. package/dist/src/commands/plugins.js.map +1 -1
  18. package/dist/src/commands/providers.d.ts.map +1 -1
  19. package/dist/src/commands/providers.js +228 -96
  20. package/dist/src/commands/providers.js.map +1 -1
  21. package/dist/src/commands/security.d.ts.map +1 -1
  22. package/dist/src/commands/security.js +27 -40
  23. package/dist/src/commands/security.js.map +1 -1
  24. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  25. package/dist/src/mcp-tools/agent-tools.js +8 -1
  26. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  27. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  28. package/dist/src/mcp-tools/config-tools.js +53 -0
  29. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  30. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  31. package/dist/src/mcp-tools/memory-tools.js +10 -2
  32. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  33. package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
  34. package/dist/src/mcp-tools/session-tools.js +29 -0
  35. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  36. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  37. package/dist/src/mcp-tools/swarm-tools.js +30 -0
  38. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  39. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  40. package/dist/src/mcp-tools/task-tools.js +33 -0
  41. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  42. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  43. package/dist/src/mcp-tools/terminal-tools.js +31 -0
  44. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  45. package/dist/src/mcp-tools/validate-input.d.ts +40 -0
  46. package/dist/src/mcp-tools/validate-input.d.ts.map +1 -0
  47. package/dist/src/mcp-tools/validate-input.js +135 -0
  48. package/dist/src/mcp-tools/validate-input.js.map +1 -0
  49. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  50. package/dist/src/mcp-tools/workflow-tools.js +82 -0
  51. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  52. package/dist/src/memory/intelligence.d.ts +6 -1
  53. package/dist/src/memory/intelligence.d.ts.map +1 -1
  54. package/dist/src/memory/intelligence.js +51 -1
  55. package/dist/src/memory/intelligence.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +2 -1
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Input Validation for MCP Tools
3
+ *
4
+ * Loads @claude-flow/security validators when available
5
+ * and provides lightweight fallback validation otherwise.
6
+ *
7
+ * Addresses #1425: security validators were implemented but never wired to runtime.
8
+ */
9
+ // Patterns for input sanitization (inline — no external dependency required)
10
+ const SHELL_META = /[;&|`$(){}[\]<>!#\\]/;
11
+ const PATH_TRAVERSAL = /\.\.[/\\]/;
12
+ const IDENTIFIER_RE = /^[a-zA-Z0-9_][a-zA-Z0-9_\-.:]{0,127}$/;
13
+ /**
14
+ * Validate an identifier (agent ID, agent type, namespace, key, etc.)
15
+ * Rejects shell metacharacters and path traversal.
16
+ */
17
+ export function validateIdentifier(value, label) {
18
+ if (typeof value !== 'string' || value.length === 0) {
19
+ return { valid: false, sanitized: '', error: `${label} must be a non-empty string` };
20
+ }
21
+ if (value.length > 128) {
22
+ return { valid: false, sanitized: '', error: `${label} exceeds 128 characters` };
23
+ }
24
+ if (SHELL_META.test(value)) {
25
+ return { valid: false, sanitized: '', error: `${label} contains disallowed characters` };
26
+ }
27
+ if (PATH_TRAVERSAL.test(value)) {
28
+ return { valid: false, sanitized: '', error: `${label} contains path traversal` };
29
+ }
30
+ if (!IDENTIFIER_RE.test(value)) {
31
+ return { valid: false, sanitized: '', error: `${label} contains invalid characters (allowed: alphanumeric, _, -, ., :)` };
32
+ }
33
+ return { valid: true, sanitized: value };
34
+ }
35
+ /**
36
+ * Validate a file path (prevents traversal and shell injection).
37
+ */
38
+ export function validatePath(value, label) {
39
+ if (typeof value !== 'string' || value.length === 0) {
40
+ return { valid: false, sanitized: '', error: `${label} must be a non-empty string` };
41
+ }
42
+ if (value.length > 4096) {
43
+ return { valid: false, sanitized: '', error: `${label} exceeds 4096 characters` };
44
+ }
45
+ if (PATH_TRAVERSAL.test(value)) {
46
+ return { valid: false, sanitized: '', error: `${label} contains path traversal (..)` };
47
+ }
48
+ if (SHELL_META.test(value)) {
49
+ return { valid: false, sanitized: '', error: `${label} contains shell metacharacters` };
50
+ }
51
+ return { valid: true, sanitized: value };
52
+ }
53
+ /**
54
+ * Validate a free-text string (description, value, etc.)
55
+ * Allows most characters but rejects shell metacharacters that could cause injection.
56
+ */
57
+ export function validateText(value, label, maxLen = 10_000) {
58
+ if (typeof value !== 'string') {
59
+ return { valid: false, sanitized: '', error: `${label} must be a string` };
60
+ }
61
+ if (value.length > maxLen) {
62
+ return { valid: false, sanitized: '', error: `${label} exceeds ${maxLen} characters` };
63
+ }
64
+ // Strip null bytes
65
+ const sanitized = value.replace(/\0/g, '');
66
+ return { valid: true, sanitized };
67
+ }
68
+ /**
69
+ * Assert validation or throw with a structured error.
70
+ */
71
+ export function assertValid(result) {
72
+ if (!result.valid) {
73
+ throw new Error(`Validation failed: ${result.error}`);
74
+ }
75
+ return result.sanitized;
76
+ }
77
+ // Try to load the full @claude-flow/security module for enhanced validation
78
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+ let _securityModule = null;
80
+ let _securityLoaded = false;
81
+ async function getSecurityModule() {
82
+ if (_securityLoaded)
83
+ return _securityModule;
84
+ _securityLoaded = true;
85
+ try {
86
+ // Dynamic import — @claude-flow/security is an optional dependency
87
+ _securityModule = await Function('return import("@claude-flow/security")')();
88
+ }
89
+ catch {
90
+ // @claude-flow/security is optional — fallback to inline validation above
91
+ }
92
+ return _securityModule;
93
+ }
94
+ /**
95
+ * Enhanced validation using @claude-flow/security Zod schemas when available.
96
+ * Falls back to inline regex validation otherwise.
97
+ */
98
+ export async function validateAgentSpawn(input) {
99
+ const errors = [];
100
+ // Always run inline validation
101
+ if (input.agentType) {
102
+ const r = validateIdentifier(input.agentType, 'agentType');
103
+ if (!r.valid)
104
+ errors.push(r.error);
105
+ }
106
+ if (input.agentId) {
107
+ const r = validateIdentifier(input.agentId, 'agentId');
108
+ if (!r.valid)
109
+ errors.push(r.error);
110
+ }
111
+ if (input.domain) {
112
+ const r = validateIdentifier(input.domain, 'domain');
113
+ if (!r.valid)
114
+ errors.push(r.error);
115
+ }
116
+ // Try enhanced Zod validation if available
117
+ const sec = await getSecurityModule();
118
+ if (sec?.SpawnAgentSchema) {
119
+ try {
120
+ sec.SpawnAgentSchema.parse({
121
+ agentType: input.agentType,
122
+ name: input.agentId,
123
+ });
124
+ }
125
+ catch (zodErr) {
126
+ if (zodErr.issues) {
127
+ for (const issue of zodErr.issues) {
128
+ errors.push(`${issue.path.join('.')}: ${issue.message}`);
129
+ }
130
+ }
131
+ }
132
+ }
133
+ return { valid: errors.length === 0, errors };
134
+ }
135
+ //# sourceMappingURL=validate-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-input.js","sourceRoot":"","sources":["../../../src/mcp-tools/validate-input.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/workflow-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,YAAY,CAAC;AAuEzD,eAAO,MAAM,aAAa,EAAE,OAAO,EAkkBlC,CAAC"}
1
+ {"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/workflow-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,YAAY,CAAC;AAwEzD,eAAO,MAAM,aAAa,EAAE,OAAO,EA4oBlC,CAAC"}
@@ -6,6 +6,7 @@
6
6
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
7
7
  import { join } from 'node:path';
8
8
  import { getProjectCwd } from './types.js';
9
+ import { validateIdentifier, validatePath, validateText } from './validate-input.js';
9
10
  // Storage paths
10
11
  const STORAGE_DIR = '.claude-flow';
11
12
  const WORKFLOW_DIR = 'workflows';
@@ -63,6 +64,22 @@ export const workflowTools = [
63
64
  },
64
65
  },
65
66
  handler: async (input) => {
67
+ // Validate user-provided input (#1425)
68
+ if (input.template) {
69
+ const v = validateIdentifier(input.template, 'template');
70
+ if (!v.valid)
71
+ return { success: false, error: v.error };
72
+ }
73
+ if (input.file) {
74
+ const v = validatePath(input.file, 'file');
75
+ if (!v.valid)
76
+ return { success: false, error: v.error };
77
+ }
78
+ if (input.task) {
79
+ const v = validateText(input.task, 'task');
80
+ if (!v.valid)
81
+ return { success: false, error: v.error };
82
+ }
66
83
  const store = loadWorkflowStore();
67
84
  const template = input.template;
68
85
  const task = input.task;
@@ -157,6 +174,15 @@ export const workflowTools = [
157
174
  required: ['name'],
158
175
  },
159
176
  handler: async (input) => {
177
+ // Validate user-provided input (#1425)
178
+ const vName = validateText(input.name, 'name', 256);
179
+ if (!vName.valid)
180
+ return { success: false, error: vName.error };
181
+ if (input.description) {
182
+ const v = validateText(input.description, 'description');
183
+ if (!v.valid)
184
+ return { success: false, error: v.error };
185
+ }
160
186
  const store = loadWorkflowStore();
161
187
  const workflowId = `workflow-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
162
188
  const steps = (input.steps || []).map((s, i) => ({
@@ -201,6 +227,10 @@ export const workflowTools = [
201
227
  required: ['workflowId'],
202
228
  },
203
229
  handler: async (input) => {
230
+ // Validate user-provided input (#1425)
231
+ const vId = validateIdentifier(input.workflowId, 'workflowId');
232
+ if (!vId.valid)
233
+ return { success: false, error: vId.error };
204
234
  const store = loadWorkflowStore();
205
235
  const workflowId = input.workflowId;
206
236
  const workflow = store.workflows[workflowId];
@@ -252,6 +282,10 @@ export const workflowTools = [
252
282
  required: ['workflowId'],
253
283
  },
254
284
  handler: async (input) => {
285
+ // Validate user-provided input (#1425)
286
+ const vId = validateIdentifier(input.workflowId, 'workflowId');
287
+ if (!vId.valid)
288
+ return { success: false, error: vId.error };
255
289
  const store = loadWorkflowStore();
256
290
  const workflowId = input.workflowId;
257
291
  const workflow = store.workflows[workflowId];
@@ -303,6 +337,12 @@ export const workflowTools = [
303
337
  },
304
338
  },
305
339
  handler: async (input) => {
340
+ // Validate user-provided input (#1425)
341
+ if (input.status) {
342
+ const v = validateIdentifier(input.status, 'status');
343
+ if (!v.valid)
344
+ return { success: false, error: v.error };
345
+ }
306
346
  const store = loadWorkflowStore();
307
347
  let workflows = Object.values(store.workflows);
308
348
  // Apply filters
@@ -340,6 +380,10 @@ export const workflowTools = [
340
380
  required: ['workflowId'],
341
381
  },
342
382
  handler: async (input) => {
383
+ // Validate user-provided input (#1425)
384
+ const vId = validateIdentifier(input.workflowId, 'workflowId');
385
+ if (!vId.valid)
386
+ return { success: false, error: vId.error };
343
387
  const store = loadWorkflowStore();
344
388
  const workflowId = input.workflowId;
345
389
  const workflow = store.workflows[workflowId];
@@ -371,6 +415,10 @@ export const workflowTools = [
371
415
  required: ['workflowId'],
372
416
  },
373
417
  handler: async (input) => {
418
+ // Validate user-provided input (#1425)
419
+ const vId = validateIdentifier(input.workflowId, 'workflowId');
420
+ if (!vId.valid)
421
+ return { success: false, error: vId.error };
374
422
  const store = loadWorkflowStore();
375
423
  const workflowId = input.workflowId;
376
424
  const workflow = store.workflows[workflowId];
@@ -413,6 +461,15 @@ export const workflowTools = [
413
461
  required: ['workflowId'],
414
462
  },
415
463
  handler: async (input) => {
464
+ // Validate user-provided input (#1425)
465
+ const vId = validateIdentifier(input.workflowId, 'workflowId');
466
+ if (!vId.valid)
467
+ return { success: false, error: vId.error };
468
+ if (input.reason) {
469
+ const v = validateText(input.reason, 'reason');
470
+ if (!v.valid)
471
+ return { success: false, error: v.error };
472
+ }
416
473
  const store = loadWorkflowStore();
417
474
  const workflowId = input.workflowId;
418
475
  const workflow = store.workflows[workflowId];
@@ -451,6 +508,10 @@ export const workflowTools = [
451
508
  required: ['workflowId'],
452
509
  },
453
510
  handler: async (input) => {
511
+ // Validate user-provided input (#1425)
512
+ const vId = validateIdentifier(input.workflowId, 'workflowId');
513
+ if (!vId.valid)
514
+ return { success: false, error: vId.error };
454
515
  const store = loadWorkflowStore();
455
516
  const workflowId = input.workflowId;
456
517
  if (!store.workflows[workflowId]) {
@@ -485,6 +546,27 @@ export const workflowTools = [
485
546
  required: ['action'],
486
547
  },
487
548
  handler: async (input) => {
549
+ // Validate user-provided input (#1425)
550
+ if (input.workflowId) {
551
+ const v = validateIdentifier(input.workflowId, 'workflowId');
552
+ if (!v.valid)
553
+ return { success: false, error: v.error };
554
+ }
555
+ if (input.templateId) {
556
+ const v = validateIdentifier(input.templateId, 'templateId');
557
+ if (!v.valid)
558
+ return { success: false, error: v.error };
559
+ }
560
+ if (input.templateName) {
561
+ const v = validateText(input.templateName, 'templateName', 256);
562
+ if (!v.valid)
563
+ return { success: false, error: v.error };
564
+ }
565
+ if (input.newName) {
566
+ const v = validateText(input.newName, 'newName', 256);
567
+ if (!v.valid)
568
+ return { success: false, error: v.error };
569
+ }
488
570
  const store = loadWorkflowStore();
489
571
  const action = input.action;
490
572
  if (action === 'save') {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/workflow-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/workflow-tools.ts"],"names":[],"mappings":"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"}
@@ -157,7 +157,9 @@ declare class LocalReasoningBank {
157
157
  persistence?: boolean;
158
158
  });
159
159
  /**
160
- * Load patterns from disk
160
+ * Load patterns from disk, deduplicating by content.
161
+ * When multiple patterns share identical content, keeps the one with
162
+ * highest confidence (ties broken by most recent lastUsedAt).
161
163
  */
162
164
  private loadFromDisk;
163
165
  /**
@@ -170,6 +172,9 @@ declare class LocalReasoningBank {
170
172
  flushToDisk(): void;
171
173
  /**
172
174
  * Store a pattern - O(1)
175
+ * Deduplicates by content: if a pattern with the same content already
176
+ * exists, the existing entry is updated (bumped usageCount, higher
177
+ * confidence wins, refreshed lastUsedAt) instead of adding a duplicate.
173
178
  */
174
179
  store(pattern: Omit<StoredPattern, 'usageCount' | 'createdAt' | 'lastUsedAt'> & Partial<StoredPattern>): void;
175
180
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../../src/memory/intelligence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../../src/memory/intelligence.ts"],"names":[],"mappings":"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"}
@@ -327,7 +327,9 @@ class LocalReasoningBank {
327
327
  }
328
328
  }
329
329
  /**
330
- * Load patterns from disk
330
+ * Load patterns from disk, deduplicating by content.
331
+ * When multiple patterns share identical content, keeps the one with
332
+ * highest confidence (ties broken by most recent lastUsedAt).
331
333
  */
332
334
  loadFromDisk() {
333
335
  try {
@@ -335,10 +337,41 @@ class LocalReasoningBank {
335
337
  if (existsSync(path)) {
336
338
  const data = JSON.parse(readFileSync(path, 'utf-8'));
337
339
  if (Array.isArray(data)) {
340
+ const totalLoaded = data.length;
341
+ // Group by content to deduplicate
342
+ const byContent = new Map();
338
343
  for (const pattern of data) {
344
+ const key = pattern.content;
345
+ const existing = byContent.get(key);
346
+ if (!existing) {
347
+ byContent.set(key, pattern);
348
+ }
349
+ else {
350
+ // Keep the one with higher confidence; break ties by lastUsedAt
351
+ if (pattern.confidence > existing.confidence ||
352
+ (pattern.confidence === existing.confidence &&
353
+ (pattern.lastUsedAt ?? 0) > (existing.lastUsedAt ?? 0))) {
354
+ // Merge: adopt the higher usageCount sum
355
+ pattern.usageCount = (pattern.usageCount ?? 0) + (existing.usageCount ?? 0);
356
+ byContent.set(key, pattern);
357
+ }
358
+ else {
359
+ existing.usageCount = (existing.usageCount ?? 0) + (pattern.usageCount ?? 0);
360
+ }
361
+ }
362
+ }
363
+ // Populate the bank from deduplicated entries
364
+ for (const pattern of byContent.values()) {
339
365
  this.patterns.set(pattern.id, pattern);
340
366
  this.patternList.push(pattern);
341
367
  }
368
+ const removed = totalLoaded - byContent.size;
369
+ if (removed > 0) {
370
+ console.log(`Deduplicated ${removed} patterns (${byContent.size} unique)`);
371
+ // Persist the compacted set immediately so the file shrinks on disk
372
+ this.dirty = true;
373
+ this.flushToDisk();
374
+ }
342
375
  }
343
376
  }
344
377
  }
@@ -380,6 +413,9 @@ class LocalReasoningBank {
380
413
  }
381
414
  /**
382
415
  * Store a pattern - O(1)
416
+ * Deduplicates by content: if a pattern with the same content already
417
+ * exists, the existing entry is updated (bumped usageCount, higher
418
+ * confidence wins, refreshed lastUsedAt) instead of adding a duplicate.
383
419
  */
384
420
  store(pattern) {
385
421
  const now = Date.now();
@@ -401,6 +437,20 @@ class LocalReasoningBank {
401
437
  }
402
438
  }
403
439
  else {
440
+ // Check for content-duplicate before inserting a new entry
441
+ const contentDupe = this.patternList.find(p => p.content === pattern.content);
442
+ if (contentDupe) {
443
+ // Merge into the existing pattern instead of adding a duplicate
444
+ contentDupe.usageCount++;
445
+ contentDupe.lastUsedAt = now;
446
+ if (stored.confidence > contentDupe.confidence) {
447
+ contentDupe.confidence = stored.confidence;
448
+ }
449
+ // Keep the Map in sync with the mutated object
450
+ this.patterns.set(contentDupe.id, contentDupe);
451
+ this.saveToDisk();
452
+ return;
453
+ }
404
454
  // Evict oldest if at capacity
405
455
  if (this.patterns.size >= this.maxSize) {
406
456
  const oldest = this.patternList.shift();