@claude-flow/cli 3.5.69 → 3.5.71

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 (109) 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 +1 -0
  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.js +1 -1
  22. package/dist/src/commands/security.js.map +1 -1
  23. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  24. package/dist/src/mcp-tools/agent-tools.js +35 -1
  25. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  26. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -1
  27. package/dist/src/mcp-tools/agentdb-tools.js +81 -0
  28. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -1
  29. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
  30. package/dist/src/mcp-tools/analyze-tools.js +29 -0
  31. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  32. package/dist/src/mcp-tools/autopilot-tools.d.ts.map +1 -1
  33. package/dist/src/mcp-tools/autopilot-tools.js +4 -0
  34. package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
  35. package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
  36. package/dist/src/mcp-tools/browser-tools.js +146 -0
  37. package/dist/src/mcp-tools/browser-tools.js.map +1 -1
  38. package/dist/src/mcp-tools/claims-tools.d.ts.map +1 -1
  39. package/dist/src/mcp-tools/claims-tools.js +116 -0
  40. package/dist/src/mcp-tools/claims-tools.js.map +1 -1
  41. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  42. package/dist/src/mcp-tools/config-tools.js +53 -0
  43. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  44. package/dist/src/mcp-tools/coordination-tools.d.ts.map +1 -1
  45. package/dist/src/mcp-tools/coordination-tools.js +31 -0
  46. package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
  47. package/dist/src/mcp-tools/daa-tools.d.ts.map +1 -1
  48. package/dist/src/mcp-tools/daa-tools.js +61 -0
  49. package/dist/src/mcp-tools/daa-tools.js.map +1 -1
  50. package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
  51. package/dist/src/mcp-tools/embeddings-tools.js +26 -0
  52. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  53. package/dist/src/mcp-tools/github-tools.d.ts.map +1 -1
  54. package/dist/src/mcp-tools/github-tools.js +96 -0
  55. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  56. package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
  57. package/dist/src/mcp-tools/guidance-tools.js +21 -0
  58. package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
  59. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
  60. package/dist/src/mcp-tools/hive-mind-tools.js +56 -0
  61. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  62. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  63. package/dist/src/mcp-tools/hooks-tools.js +176 -0
  64. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  65. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  66. package/dist/src/mcp-tools/memory-tools.js +18 -2
  67. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  68. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  69. package/dist/src/mcp-tools/neural-tools.js +51 -0
  70. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  71. package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
  72. package/dist/src/mcp-tools/performance-tools.js +11 -0
  73. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  74. package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -1
  75. package/dist/src/mcp-tools/ruvllm-tools.js +31 -0
  76. package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -1
  77. package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
  78. package/dist/src/mcp-tools/security-tools.js +36 -0
  79. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  80. package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
  81. package/dist/src/mcp-tools/session-tools.js +29 -0
  82. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  83. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  84. package/dist/src/mcp-tools/swarm-tools.js +30 -0
  85. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  86. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  87. package/dist/src/mcp-tools/system-tools.js +6 -0
  88. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  89. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  90. package/dist/src/mcp-tools/task-tools.js +33 -0
  91. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  92. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  93. package/dist/src/mcp-tools/terminal-tools.js +31 -0
  94. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  95. package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
  96. package/dist/src/mcp-tools/transfer-tools.js +51 -0
  97. package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
  98. package/dist/src/mcp-tools/wasm-agent-tools.d.ts.map +1 -1
  99. package/dist/src/mcp-tools/wasm-agent-tools.js +61 -0
  100. package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -1
  101. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  102. package/dist/src/mcp-tools/workflow-tools.js +82 -0
  103. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  104. package/dist/src/memory/intelligence.d.ts +6 -1
  105. package/dist/src/memory/intelligence.d.ts.map +1 -1
  106. package/dist/src/memory/intelligence.js +51 -1
  107. package/dist/src/memory/intelligence.js.map +1 -1
  108. package/dist/tsconfig.tsbuildinfo +1 -1
  109. package/package.json +1 -1
@@ -5,6 +5,7 @@
5
5
  import { mkdirSync, writeFileSync, existsSync, readFileSync, statSync, unlinkSync, readdirSync } from 'fs';
6
6
  import { dirname, join, resolve } from 'path';
7
7
  import { getProjectCwd } from './types.js';
8
+ import { validateIdentifier, validateText, validatePath } from './validate-input.js';
8
9
  // Real vector search functions - lazy loaded to avoid circular imports
9
10
  let searchEntriesFn = null;
10
11
  async function getRealSearchFunction() {
@@ -578,6 +579,11 @@ export const hooksPreEdit = {
578
579
  handler: async (params) => {
579
580
  const filePath = params.filePath;
580
581
  const operation = params.operation || 'update';
582
+ {
583
+ const v = validatePath(filePath, 'filePath');
584
+ if (!v.valid)
585
+ return { success: false, error: v.error };
586
+ }
581
587
  const suggestedAgents = suggestAgentsForFile(filePath);
582
588
  const ext = getFileExtension(filePath);
583
589
  return {
@@ -616,6 +622,16 @@ export const hooksPostEdit = {
616
622
  const filePath = params.filePath;
617
623
  const success = params.success !== false;
618
624
  const agent = params.agent;
625
+ {
626
+ const v = validatePath(filePath, 'filePath');
627
+ if (!v.valid)
628
+ return { success: false, error: v.error };
629
+ }
630
+ if (agent) {
631
+ const v = validateIdentifier(agent, 'agent');
632
+ if (!v.valid)
633
+ return { success: false, error: v.error };
634
+ }
619
635
  // Wire recordFeedback through bridge (issue #1209)
620
636
  let feedbackResult = null;
621
637
  try {
@@ -656,6 +672,11 @@ export const hooksPreCommand = {
656
672
  },
657
673
  handler: async (params) => {
658
674
  const command = params.command;
675
+ {
676
+ const v = validateText(command, 'command');
677
+ if (!v.valid)
678
+ return { success: false, error: v.error };
679
+ }
659
680
  const assessment = assessCommandRisk(command);
660
681
  const riskLevel = assessment.level >= 0.8 ? 'critical'
661
682
  : assessment.level >= 0.6 ? 'high'
@@ -692,6 +713,11 @@ export const hooksPostCommand = {
692
713
  const command = params.command;
693
714
  const exitCode = params.exitCode || 0;
694
715
  const success = exitCode === 0;
716
+ {
717
+ const v = validateText(command, 'command');
718
+ if (!v.valid)
719
+ return { success: false, error: v.error };
720
+ }
695
721
  // Persist command outcome via AgentDB
696
722
  let _storedIn = 'none';
697
723
  try {
@@ -744,6 +770,16 @@ export const hooksRoute = {
744
770
  const task = params.task;
745
771
  const context = params.context;
746
772
  const useSemanticRouter = params.useSemanticRouter !== false;
773
+ {
774
+ const v = validateText(task, 'task');
775
+ if (!v.valid)
776
+ return { success: false, error: v.error };
777
+ }
778
+ if (context) {
779
+ const v = validateText(context, 'context');
780
+ if (!v.valid)
781
+ return { success: false, error: v.error };
782
+ }
747
783
  // Phase 5: Try AgentDB's SemanticRouter / LearningSystem first
748
784
  if (useSemanticRouter) {
749
785
  try {
@@ -1011,6 +1047,21 @@ export const hooksPreTask = {
1011
1047
  const taskId = params.taskId;
1012
1048
  const description = params.description;
1013
1049
  const filePath = params.filePath;
1050
+ {
1051
+ const v = validateIdentifier(taskId, 'taskId');
1052
+ if (!v.valid)
1053
+ return { success: false, error: v.error };
1054
+ }
1055
+ {
1056
+ const v = validateText(description, 'description');
1057
+ if (!v.valid)
1058
+ return { success: false, error: v.error };
1059
+ }
1060
+ if (filePath) {
1061
+ const v = validatePath(filePath, 'filePath');
1062
+ if (!v.valid)
1063
+ return { success: false, error: v.error };
1064
+ }
1014
1065
  const suggestion = suggestAgentsForTask(description);
1015
1066
  // Determine complexity
1016
1067
  const descLower = description.toLowerCase();
@@ -1099,6 +1150,16 @@ export const hooksPostTask = {
1099
1150
  const agent = params.agent;
1100
1151
  const quality = params.quality || (success ? 0.85 : 0.3);
1101
1152
  const startTime = Date.now();
1153
+ {
1154
+ const v = validateIdentifier(taskId, 'taskId');
1155
+ if (!v.valid)
1156
+ return { success: false, error: v.error };
1157
+ }
1158
+ if (agent) {
1159
+ const v = validateIdentifier(agent, 'agent');
1160
+ if (!v.valid)
1161
+ return { success: false, error: v.error };
1162
+ }
1102
1163
  // Phase 3: Wire recordFeedback through bridge → LearningSystem + ReasoningBank
1103
1164
  let feedbackResult = null;
1104
1165
  try {
@@ -1234,6 +1295,11 @@ export const hooksExplain = {
1234
1295
  },
1235
1296
  handler: async (params) => {
1236
1297
  const task = params.task;
1298
+ {
1299
+ const v = validateText(task, 'task');
1300
+ if (!v.valid)
1301
+ return { success: false, error: v.error };
1302
+ }
1237
1303
  const suggestion = suggestAgentsForTask(task);
1238
1304
  const taskLower = task.toLowerCase();
1239
1305
  // Determine matched patterns
@@ -1469,6 +1535,16 @@ export const hooksTransfer = {
1469
1535
  const sourcePath = params.sourcePath;
1470
1536
  const minConfidence = params.minConfidence || 0.7;
1471
1537
  const filter = params.filter;
1538
+ {
1539
+ const v = validatePath(sourcePath, 'sourcePath');
1540
+ if (!v.valid)
1541
+ return { success: false, error: v.error };
1542
+ }
1543
+ if (filter) {
1544
+ const v = validateIdentifier(filter, 'filter');
1545
+ if (!v.valid)
1546
+ return { success: false, error: v.error };
1547
+ }
1472
1548
  // Try to load patterns from source project's memory store
1473
1549
  const sourceMemoryPath = join(resolve(sourcePath), MEMORY_DIR, MEMORY_FILE);
1474
1550
  let sourceStore = { entries: {}, version: '3.0.0' };
@@ -1540,6 +1616,11 @@ export const hooksSessionStart = {
1540
1616
  const sessionId = params.sessionId || `session-${Date.now()}`;
1541
1617
  const restoreLatest = params.restoreLatest;
1542
1618
  const shouldStartDaemon = params.startDaemon === true;
1619
+ if (params.sessionId) {
1620
+ const v = validateIdentifier(params.sessionId, 'sessionId');
1621
+ if (!v.valid)
1622
+ return { success: false, error: v.error };
1623
+ }
1543
1624
  // Auto-regenerate statusline if outdated (fixes older installs)
1544
1625
  // Checks for the old fake heuristic: "Math.floor(sizeKB / 2)"
1545
1626
  try {
@@ -1765,6 +1846,11 @@ export const hooksSessionRestore = {
1765
1846
  const requestedId = params.sessionId || 'latest';
1766
1847
  const restoreAgents = params.restoreAgents !== false;
1767
1848
  const restoreTasks = params.restoreTasks !== false;
1849
+ if (params.sessionId) {
1850
+ const v = validateIdentifier(params.sessionId, 'sessionId');
1851
+ if (!v.valid)
1852
+ return { success: false, error: v.error };
1853
+ }
1768
1854
  const originalSessionId = requestedId === 'latest' ? `session-${Date.now() - 86400000}` : requestedId;
1769
1855
  const newSessionId = `session-${Date.now()}`;
1770
1856
  // Get real memory entry count
@@ -1804,6 +1890,16 @@ export const hooksNotify = {
1804
1890
  const message = params.message;
1805
1891
  const target = params.target || 'all';
1806
1892
  const priority = params.priority || 'normal';
1893
+ {
1894
+ const v = validateText(message, 'message');
1895
+ if (!v.valid)
1896
+ return { success: false, error: v.error };
1897
+ }
1898
+ if (params.target) {
1899
+ const v = validateIdentifier(target, 'target');
1900
+ if (!v.valid)
1901
+ return { success: false, error: v.error };
1902
+ }
1807
1903
  return {
1808
1904
  notificationId: `notify-${Date.now()}`,
1809
1905
  message,
@@ -2036,6 +2132,16 @@ export const hooksTrajectoryStart = {
2036
2132
  handler: async (params) => {
2037
2133
  const task = params.task;
2038
2134
  const agent = params.agent || 'coder';
2135
+ {
2136
+ const v = validateText(task, 'task');
2137
+ if (!v.valid)
2138
+ return { success: false, error: v.error };
2139
+ }
2140
+ if (params.agent) {
2141
+ const v = validateIdentifier(params.agent, 'agent');
2142
+ if (!v.valid)
2143
+ return { success: false, error: v.error };
2144
+ }
2039
2145
  const trajectoryId = `traj-${Date.now()}-${Math.random().toString(36).substring(7)}`;
2040
2146
  const startedAt = new Date().toISOString();
2041
2147
  // Create real trajectory entry in memory
@@ -2078,6 +2184,16 @@ export const hooksTrajectoryStep = {
2078
2184
  const quality = params.quality || 0.85;
2079
2185
  const timestamp = new Date().toISOString();
2080
2186
  const stepId = `step-${Date.now()}`;
2187
+ {
2188
+ const v = validateIdentifier(trajectoryId, 'trajectoryId');
2189
+ if (!v.valid)
2190
+ return { success: false, error: v.error };
2191
+ }
2192
+ {
2193
+ const v = validateText(action, 'action');
2194
+ if (!v.valid)
2195
+ return { success: false, error: v.error };
2196
+ }
2081
2197
  // Add step to real trajectory if it exists
2082
2198
  const trajectory = activeTrajectories.get(trajectoryId);
2083
2199
  if (trajectory) {
@@ -2115,6 +2231,11 @@ export const hooksTrajectoryEnd = {
2115
2231
  },
2116
2232
  handler: async (params) => {
2117
2233
  const trajectoryId = params.trajectoryId;
2234
+ {
2235
+ const v = validateIdentifier(trajectoryId, 'trajectoryId');
2236
+ if (!v.valid)
2237
+ return { success: false, error: v.error };
2238
+ }
2118
2239
  const success = params.success !== false;
2119
2240
  const feedback = params.feedback;
2120
2241
  const endedAt = new Date().toISOString();
@@ -2253,6 +2374,16 @@ export const hooksPatternStore = {
2253
2374
  const confidence = params.confidence || 0.8;
2254
2375
  const metadata = params.metadata;
2255
2376
  const timestamp = new Date().toISOString();
2377
+ {
2378
+ const v = validateText(pattern, 'pattern');
2379
+ if (!v.valid)
2380
+ return { success: false, error: v.error };
2381
+ }
2382
+ if (params.type) {
2383
+ const v = validateIdentifier(params.type, 'type');
2384
+ if (!v.valid)
2385
+ return { success: false, error: v.error };
2386
+ }
2256
2387
  const patternId = `pattern-${Date.now()}-${Math.random().toString(36).substring(7)}`;
2257
2388
  // Phase 3: Try ReasoningBank via bridge first
2258
2389
  let reasoningResult = null;
@@ -2319,6 +2450,16 @@ export const hooksPatternSearch = {
2319
2450
  const topK = params.topK || 5;
2320
2451
  const minConfidence = params.minConfidence || 0.3;
2321
2452
  const namespace = params.namespace || 'pattern';
2453
+ {
2454
+ const v = validateText(query, 'query');
2455
+ if (!v.valid)
2456
+ return { success: false, error: v.error };
2457
+ }
2458
+ if (params.namespace) {
2459
+ const v = validateIdentifier(params.namespace, 'namespace');
2460
+ if (!v.valid)
2461
+ return { success: false, error: v.error };
2462
+ }
2322
2463
  // Phase 3: Try ReasoningBank search via bridge first
2323
2464
  try {
2324
2465
  const bridge = await import('../memory/memory-bridge.js');
@@ -2654,6 +2795,11 @@ export const hooksIntelligenceAttention = {
2654
2795
  const mode = params.mode || 'flash';
2655
2796
  const topK = params.topK || 5;
2656
2797
  const startTime = performance.now();
2798
+ {
2799
+ const v = validateText(query, 'query');
2800
+ if (!v.valid)
2801
+ return { success: false, error: v.error };
2802
+ }
2657
2803
  let implementation = 'placeholder';
2658
2804
  const results = [];
2659
2805
  if (mode === 'moe') {
@@ -3017,6 +3163,11 @@ export const hooksWorkerDispatch = {
3017
3163
  const context = params.context || 'default';
3018
3164
  const priority = params.priority || WORKER_CONFIGS[trigger]?.priority || 'normal';
3019
3165
  const background = params.background !== false;
3166
+ if (params.context) {
3167
+ const v = validateText(params.context, 'context');
3168
+ if (!v.valid)
3169
+ return { success: false, error: v.error };
3170
+ }
3020
3171
  if (!WORKER_CONFIGS[trigger]) {
3021
3172
  return {
3022
3173
  success: false,
@@ -3092,6 +3243,11 @@ export const hooksWorkerStatus = {
3092
3243
  handler: async (params) => {
3093
3244
  const workerId = params.workerId;
3094
3245
  const includeCompleted = params.includeCompleted !== false;
3246
+ if (workerId) {
3247
+ const v = validateIdentifier(workerId, 'workerId');
3248
+ if (!v.valid)
3249
+ return { success: false, error: v.error };
3250
+ }
3095
3251
  if (workerId) {
3096
3252
  const worker = activeWorkers.get(workerId);
3097
3253
  if (!worker) {
@@ -3147,6 +3303,11 @@ export const hooksWorkerDetect = {
3147
3303
  const prompt = params.prompt;
3148
3304
  const autoDispatch = params.autoDispatch;
3149
3305
  const minConfidence = params.minConfidence || 0.5;
3306
+ {
3307
+ const v = validateText(prompt, 'prompt');
3308
+ if (!v.valid)
3309
+ return { success: false, error: v.error };
3310
+ }
3150
3311
  const detection = detectWorkerTriggers(prompt);
3151
3312
  const result = {
3152
3313
  prompt: prompt.slice(0, 200) + (prompt.length > 200 ? '...' : ''),
@@ -3219,6 +3380,11 @@ export const hooksModelRoute = {
3219
3380
  },
3220
3381
  handler: async (params) => {
3221
3382
  const task = params.task;
3383
+ {
3384
+ const v = validateText(task, 'task');
3385
+ if (!v.valid)
3386
+ return { success: false, error: v.error };
3387
+ }
3222
3388
  const router = await getModelRouterInstance();
3223
3389
  if (!router) {
3224
3390
  // Fallback to simple heuristic
@@ -3262,6 +3428,11 @@ export const hooksModelOutcome = {
3262
3428
  const task = params.task;
3263
3429
  const model = params.model;
3264
3430
  const outcome = params.outcome;
3431
+ {
3432
+ const v = validateText(task, 'task');
3433
+ if (!v.valid)
3434
+ return { success: false, error: v.error };
3435
+ }
3265
3436
  const router = await getModelRouterInstance();
3266
3437
  if (router) {
3267
3438
  router.recordOutcome(task, model, outcome);
@@ -3325,6 +3496,11 @@ export const hooksWorkerCancel = {
3325
3496
  },
3326
3497
  handler: async (params) => {
3327
3498
  const workerId = params.workerId;
3499
+ {
3500
+ const v = validateIdentifier(workerId, 'workerId');
3501
+ if (!v.valid)
3502
+ return { success: false, error: v.error };
3503
+ }
3328
3504
  const worker = activeWorkers.get(workerId);
3329
3505
  if (!worker) {
3330
3506
  return {