@claude-flow/cli 3.7.0-alpha.81 → 3.7.0-alpha.82

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 (218) hide show
  1. package/.claude/agents/core/coder.md +453 -0
  2. package/.claude/agents/core/researcher.md +369 -0
  3. package/.claude/agents/core/reviewer.md +520 -0
  4. package/.claude/agents/core/tester.md +512 -0
  5. package/.claude/agents/github/release-manager.md +2 -2
  6. package/.claude/agents/github/release-swarm.md +1 -1
  7. package/.claude/agents/github/repo-architect.md +2 -2
  8. package/.claude/agents/github/swarm-pr.md +1 -1
  9. package/.claude/agents/github/workflow-automation.md +2 -2
  10. package/.claude/agents/goal/goal-planner.md +73 -0
  11. package/.claude/agents/v3/adr-architect.md +184 -0
  12. package/.claude/agents/v3/memory-specialist.md +995 -0
  13. package/.claude/agents/v3/security-auditor.md +771 -0
  14. package/.claude/agents/v3/sparc-orchestrator.md +182 -0
  15. package/.claude/commands/flow-nexus/app-store.md +124 -0
  16. package/.claude/commands/flow-nexus/challenges.md +120 -0
  17. package/.claude/commands/flow-nexus/login-registration.md +65 -0
  18. package/.claude/commands/flow-nexus/neural-network.md +134 -0
  19. package/.claude/commands/flow-nexus/payments.md +116 -0
  20. package/.claude/commands/flow-nexus/sandbox.md +83 -0
  21. package/.claude/commands/flow-nexus/swarm.md +87 -0
  22. package/.claude/commands/flow-nexus/user-tools.md +152 -0
  23. package/.claude/commands/flow-nexus/workflow.md +115 -0
  24. package/.claude/commands/github/code-review-swarm.md +1 -1
  25. package/.claude/commands/github/issue-tracker.md +3 -3
  26. package/.claude/commands/github/release-manager.md +3 -5
  27. package/.claude/commands/github/release-swarm.md +1 -1
  28. package/.claude/commands/github/repo-architect.md +2 -2
  29. package/.claude/commands/github/swarm-issue.md +1 -4
  30. package/.claude/commands/github/swarm-pr.md +3 -6
  31. package/.claude/commands/github/sync-coordinator.md +1 -3
  32. package/.claude/commands/github/workflow-automation.md +2 -2
  33. package/.claude/helpers/github-safe.js +60 -95
  34. package/.claude/helpers/github-setup.sh +9 -26
  35. package/.claude/helpers/hook-handler.cjs +4 -12
  36. package/.claude/helpers/statusline.cjs +2 -31
  37. package/.claude/settings.json +1 -1
  38. package/README.md +38 -55
  39. package/dist/src/commands/daemon.d.ts +0 -20
  40. package/dist/src/commands/daemon.d.ts.map +1 -1
  41. package/dist/src/commands/daemon.js +5 -82
  42. package/dist/src/commands/daemon.js.map +1 -1
  43. package/dist/src/commands/doctor.d.ts.map +1 -1
  44. package/dist/src/commands/doctor.js +6 -17
  45. package/dist/src/commands/doctor.js.map +1 -1
  46. package/dist/src/commands/embeddings.d.ts.map +1 -1
  47. package/dist/src/commands/embeddings.js +9 -18
  48. package/dist/src/commands/embeddings.js.map +1 -1
  49. package/dist/src/commands/index.d.ts +26 -26
  50. package/dist/src/commands/index.d.ts.map +1 -1
  51. package/dist/src/commands/init.d.ts.map +1 -1
  52. package/dist/src/commands/init.js +1 -21
  53. package/dist/src/commands/init.js.map +1 -1
  54. package/dist/src/commands/memory.d.ts.map +1 -1
  55. package/dist/src/commands/memory.js +5 -43
  56. package/dist/src/commands/memory.js.map +1 -1
  57. package/dist/src/commands/start.js +1 -1
  58. package/dist/src/commands/start.js.map +1 -1
  59. package/dist/src/commands/swarm.js +1 -1
  60. package/dist/src/commands/swarm.js.map +1 -1
  61. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  62. package/dist/src/init/claudemd-generator.js +0 -1
  63. package/dist/src/init/claudemd-generator.js.map +1 -1
  64. package/dist/src/init/executor.d.ts.map +1 -1
  65. package/dist/src/init/executor.js +0 -41
  66. package/dist/src/init/executor.js.map +1 -1
  67. package/dist/src/init/helpers-generator.d.ts +0 -1
  68. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  69. package/dist/src/init/helpers-generator.js +2 -19
  70. package/dist/src/init/helpers-generator.js.map +1 -1
  71. package/dist/src/init/settings-generator.d.ts.map +1 -1
  72. package/dist/src/init/settings-generator.js +15 -74
  73. package/dist/src/init/settings-generator.js.map +1 -1
  74. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  75. package/dist/src/init/statusline-generator.js +31 -75
  76. package/dist/src/init/statusline-generator.js.map +1 -1
  77. package/dist/src/init/types.d.ts +0 -23
  78. package/dist/src/init/types.d.ts.map +1 -1
  79. package/dist/src/init/types.js +5 -18
  80. package/dist/src/init/types.js.map +1 -1
  81. package/dist/src/mcp-client.d.ts.map +1 -1
  82. package/dist/src/mcp-client.js +0 -12
  83. package/dist/src/mcp-client.js.map +1 -1
  84. package/dist/src/mcp-server.d.ts.map +1 -1
  85. package/dist/src/mcp-server.js +5 -38
  86. package/dist/src/mcp-server.js.map +1 -1
  87. package/dist/src/mcp-tools/agent-execute-core.d.ts.map +1 -1
  88. package/dist/src/mcp-tools/agent-execute-core.js +74 -141
  89. package/dist/src/mcp-tools/agent-execute-core.js.map +1 -1
  90. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  91. package/dist/src/mcp-tools/agent-tools.js +4 -112
  92. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  93. package/dist/src/mcp-tools/browser-session-tools.d.ts.map +1 -1
  94. package/dist/src/mcp-tools/browser-session-tools.js +2 -13
  95. package/dist/src/mcp-tools/browser-session-tools.js.map +1 -1
  96. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
  97. package/dist/src/mcp-tools/hive-mind-tools.js +0 -44
  98. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  99. package/dist/src/mcp-tools/hooks-tools.d.ts +0 -2
  100. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  101. package/dist/src/mcp-tools/hooks-tools.js +6 -100
  102. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  103. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  104. package/dist/src/mcp-tools/memory-tools.js +7 -332
  105. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  106. package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -1
  107. package/dist/src/mcp-tools/ruvllm-tools.js +1 -17
  108. package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -1
  109. package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
  110. package/dist/src/mcp-tools/session-tools.js +1 -125
  111. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  112. package/dist/src/mcp-tools/swarm-tools.d.ts +0 -28
  113. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  114. package/dist/src/mcp-tools/swarm-tools.js +2 -4
  115. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  116. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  117. package/dist/src/mcp-tools/system-tools.js +0 -48
  118. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  119. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  120. package/dist/src/mcp-tools/task-tools.js +0 -48
  121. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  122. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  123. package/dist/src/mcp-tools/workflow-tools.js +0 -108
  124. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  125. package/dist/src/memory/memory-bridge.d.ts +0 -4
  126. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  127. package/dist/src/memory/memory-bridge.js +8 -49
  128. package/dist/src/memory/memory-bridge.js.map +1 -1
  129. package/dist/src/memory/memory-initializer.d.ts +0 -4
  130. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  131. package/dist/src/memory/memory-initializer.js +6 -24
  132. package/dist/src/memory/memory-initializer.js.map +1 -1
  133. package/dist/src/plugins/store/discovery.d.ts +4 -15
  134. package/dist/src/plugins/store/discovery.d.ts.map +1 -1
  135. package/dist/src/plugins/store/discovery.js +18 -40
  136. package/dist/src/plugins/store/discovery.js.map +1 -1
  137. package/dist/src/prompt.d.ts +3 -3
  138. package/dist/src/prompt.d.ts.map +1 -1
  139. package/dist/src/ruvector/coverage-tools.js +6 -6
  140. package/dist/src/ruvector/coverage-tools.js.map +1 -1
  141. package/dist/src/ruvector/vector-db.d.ts.map +1 -1
  142. package/dist/src/ruvector/vector-db.js +12 -3
  143. package/dist/src/ruvector/vector-db.js.map +1 -1
  144. package/dist/src/services/headless-worker-executor.d.ts +1 -14
  145. package/dist/src/services/headless-worker-executor.d.ts.map +1 -1
  146. package/dist/src/services/headless-worker-executor.js +10 -54
  147. package/dist/src/services/headless-worker-executor.js.map +1 -1
  148. package/dist/src/services/worker-daemon.d.ts +0 -12
  149. package/dist/src/services/worker-daemon.d.ts.map +1 -1
  150. package/dist/src/services/worker-daemon.js +14 -68
  151. package/dist/src/services/worker-daemon.js.map +1 -1
  152. package/dist/tsconfig.tsbuildinfo +1 -1
  153. package/package.json +7 -10
  154. package/.claude/skills/agentdb-advanced/SKILL.md +0 -550
  155. package/.claude/skills/agentdb-learning/SKILL.md +0 -545
  156. package/.claude/skills/agentdb-memory-patterns/SKILL.md +0 -339
  157. package/.claude/skills/agentdb-optimization/SKILL.md +0 -509
  158. package/.claude/skills/agentdb-vector-search/SKILL.md +0 -339
  159. package/.claude/skills/browser/SKILL.md +0 -204
  160. package/.claude/skills/dual-mode/README.md +0 -71
  161. package/.claude/skills/dual-mode/dual-collect.md +0 -103
  162. package/.claude/skills/dual-mode/dual-coordinate.md +0 -85
  163. package/.claude/skills/dual-mode/dual-spawn.md +0 -81
  164. package/.claude/skills/flow-nexus-neural/SKILL.md +0 -727
  165. package/.claude/skills/flow-nexus-platform/SKILL.md +0 -1154
  166. package/.claude/skills/flow-nexus-swarm/SKILL.md +0 -604
  167. package/.claude/skills/github-code-review/SKILL.md +0 -1125
  168. package/.claude/skills/github-multi-repo/SKILL.md +0 -862
  169. package/.claude/skills/github-project-management/SKILL.md +0 -1262
  170. package/.claude/skills/github-release-management/SKILL.md +0 -1064
  171. package/.claude/skills/github-workflow-automation/SKILL.md +0 -1047
  172. package/.claude/skills/hooks-automation/SKILL.md +0 -1201
  173. package/.claude/skills/pair-programming/SKILL.md +0 -1202
  174. package/.claude/skills/reasoningbank-agentdb/SKILL.md +0 -446
  175. package/.claude/skills/reasoningbank-intelligence/SKILL.md +0 -201
  176. package/.claude/skills/skill-builder/SKILL.md +0 -910
  177. package/.claude/skills/sparc-methodology/SKILL.md +0 -1106
  178. package/.claude/skills/stream-chain/SKILL.md +0 -560
  179. package/.claude/skills/swarm-advanced/SKILL.md +0 -970
  180. package/.claude/skills/swarm-orchestration/SKILL.md +0 -179
  181. package/.claude/skills/v3-cli-modernization/SKILL.md +0 -872
  182. package/.claude/skills/v3-core-implementation/SKILL.md +0 -797
  183. package/.claude/skills/v3-ddd-architecture/SKILL.md +0 -442
  184. package/.claude/skills/v3-integration-deep/SKILL.md +0 -241
  185. package/.claude/skills/v3-mcp-optimization/SKILL.md +0 -777
  186. package/.claude/skills/v3-memory-unification/SKILL.md +0 -174
  187. package/.claude/skills/v3-performance-optimization/SKILL.md +0 -390
  188. package/.claude/skills/v3-security-overhaul/SKILL.md +0 -82
  189. package/.claude/skills/v3-swarm-coordination/SKILL.md +0 -340
  190. package/.claude/skills/verification-quality/SKILL.md +0 -691
  191. package/dist/src/__probe.d.ts +0 -2
  192. package/dist/src/__probe.d.ts.map +0 -1
  193. package/dist/src/__probe.js +0 -5
  194. package/dist/src/__probe.js.map +0 -1
  195. package/dist/src/commands/benchmark-cosign.d.ts +0 -29
  196. package/dist/src/commands/benchmark-cosign.d.ts.map +0 -1
  197. package/dist/src/commands/benchmark-cosign.js +0 -222
  198. package/dist/src/commands/benchmark-cosign.js.map +0 -1
  199. package/dist/src/commands/benchmark-verify.d.ts +0 -21
  200. package/dist/src/commands/benchmark-verify.d.ts.map +0 -1
  201. package/dist/src/commands/benchmark-verify.js +0 -202
  202. package/dist/src/commands/benchmark-verify.js.map +0 -1
  203. package/dist/src/mcp-tools/hive-consensus-runtime.d.ts +0 -149
  204. package/dist/src/mcp-tools/hive-consensus-runtime.d.ts.map +0 -1
  205. package/dist/src/mcp-tools/hive-consensus-runtime.js +0 -296
  206. package/dist/src/mcp-tools/hive-consensus-runtime.js.map +0 -1
  207. package/dist/src/mcp-tools/managed-agent-tools.d.ts +0 -22
  208. package/dist/src/mcp-tools/managed-agent-tools.d.ts.map +0 -1
  209. package/dist/src/mcp-tools/managed-agent-tools.js +0 -357
  210. package/dist/src/mcp-tools/managed-agent-tools.js.map +0 -1
  211. package/dist/src/memory/ann-router-registry.d.ts +0 -61
  212. package/dist/src/memory/ann-router-registry.d.ts.map +0 -1
  213. package/dist/src/memory/ann-router-registry.js +0 -72
  214. package/dist/src/memory/ann-router-registry.js.map +0 -1
  215. package/dist/src/memory/diskann-registry.d.ts +0 -56
  216. package/dist/src/memory/diskann-registry.d.ts.map +0 -1
  217. package/dist/src/memory/diskann-registry.js +0 -88
  218. package/dist/src/memory/diskann-registry.js.map +0 -1
@@ -1394,44 +1394,14 @@ export const hooksPretrain = {
1394
1394
  // (readdirSync/statSync already imported statically at the top.)
1395
1395
  const extCounts = {};
1396
1396
  let filesAnalyzed = 0;
1397
- // #1953: separate budget for code files. The old code gated the
1398
- // import-pattern extraction on `filesAnalyzed <= 50`, which counts
1399
- // EVERY directory entry (including .md/.yaml/.db/.log). In any
1400
- // markdown/docs-heavy repo, the depth-first walker burned through the
1401
- // 50-file budget on non-code files before reaching any source — so
1402
- // `patternsExtracted: 0` even when hundreds of `.ts`/`.js` files existed.
1403
- let codeFilesScanned = 0;
1404
1397
  let totalLines = 0;
1405
1398
  const maxDepth = depth === 'shallow' ? 2 : depth === 'deep' ? 6 : 4;
1406
1399
  const patterns = [];
1407
- // #1953: recurse into directories that typically contain code first
1408
- // (`src/`, `apps/`, `packages/`, `lib/`, `crates/`, `workers/`, `server/`)
1409
- // before docs / specs / planning dirs, so the import-extraction budget
1410
- // is spent on the highest-signal directories even in mixed repos.
1411
- const CODE_DIR_PREFIXES = new Set([
1412
- 'src', 'apps', 'packages', 'lib', 'crates', 'workers',
1413
- 'server', 'backend', 'frontend', 'app', 'cli', 'core',
1414
- ]);
1415
- const scoreEntry = (name) => {
1416
- if (CODE_DIR_PREFIXES.has(name))
1417
- return 0;
1418
- // Deprioritise common docs / output directories.
1419
- if (/^(docs?|specs?|_.*|examples?|samples?|out|build|target|coverage|tests?)$/.test(name))
1420
- return 2;
1421
- return 1;
1422
- };
1423
1400
  const scan = (dir, currentDepth) => {
1424
1401
  if (currentDepth > maxDepth)
1425
1402
  return;
1426
1403
  try {
1427
1404
  const entries = readdirSync(dir, { withFileTypes: true });
1428
- // Sort: code-likely dirs first, files mixed in by name, deprioritised
1429
- // dirs last. Stable for deterministic test behaviour.
1430
- entries.sort((a, b) => {
1431
- const sa = a.isDirectory() ? scoreEntry(a.name) : 1;
1432
- const sb = b.isDirectory() ? scoreEntry(b.name) : 1;
1433
- return sa - sb;
1434
- });
1435
1405
  for (const entry of entries) {
1436
1406
  if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist')
1437
1407
  continue;
@@ -1445,18 +1415,15 @@ export const hooksPretrain = {
1445
1415
  extCounts[ext] = (extCounts[ext] || 0) + 1;
1446
1416
  filesAnalyzed++;
1447
1417
  // For code files, count lines and extract imports
1448
- if (['.ts', '.js', '.tsx', '.jsx', '.mjs', '.cjs', '.py', '.go', '.rs', '.java'].includes(ext)) {
1418
+ if (['.ts', '.js', '.py', '.go', '.rs', '.java'].includes(ext)) {
1449
1419
  try {
1450
1420
  const content = readFileSync(full, 'utf-8');
1451
1421
  const lines = content.split('\n');
1452
1422
  totalLines += lines.length;
1453
- // #1953: gate on the code-file count, not every-file count.
1454
- // Also widened the per-file scan window from 30 → 80 lines:
1455
- // modern TS files often have license headers + JSDoc + type
1456
- // imports before the first `import` statement.
1457
- if (++codeFilesScanned <= 50) {
1458
- for (const line of lines.slice(0, 80)) {
1459
- if (line.startsWith('import ') || line.startsWith('from ') || (line.startsWith('const ') && line.includes('require('))) {
1423
+ // Extract import patterns (first 50 files max for performance)
1424
+ if (filesAnalyzed <= 50) {
1425
+ for (const line of lines.slice(0, 30)) {
1426
+ if (line.startsWith('import ') || line.startsWith('from ') || line.startsWith('const ') && line.includes('require(')) {
1460
1427
  const trimmed = line.trim();
1461
1428
  if (trimmed.length < 120 && !patterns.includes(trimmed))
1462
1429
  patterns.push(trimmed);
@@ -1491,7 +1458,7 @@ export const hooksPretrain = {
1491
1458
  // #1847: when the corpus contains files but no patterns were extracted
1492
1459
  // (typical for Markdown vaults), make the source-code-only extraction
1493
1460
  // contract explicit so users don't conclude the hook system is broken.
1494
- const SUPPORTED_EXTRACTION_EXTS = ['.ts', '.js', '.tsx', '.jsx', '.mjs', '.cjs', '.py', '.go', '.rs', '.java'];
1461
+ const SUPPORTED_EXTRACTION_EXTS = ['.ts', '.js', '.py', '.go', '.rs', '.java'];
1495
1462
  let note;
1496
1463
  if (filesAnalyzed > 0 && patterns.length === 0) {
1497
1464
  const codeFileCount = SUPPORTED_EXTRACTION_EXTS.reduce((sum, ext) => sum + (extCounts[ext] ?? 0), 0);
@@ -3832,69 +3799,8 @@ export const hooksWorkerCancel = {
3832
3799
  };
3833
3800
  },
3834
3801
  };
3835
- // #1916: the `ruflo hooks teammate-idle` / `ruflo hooks task-completed` CLI
3836
- // subcommands (Agent Teams hooks) referenced unregistered tools. Minimal
3837
- // acknowledgement handlers with the shapes the CLI expects — auto-assignment
3838
- // and pattern-learning are delegated to the task-queue consumer / intelligence
3839
- // pipeline (a tracked #1916 follow-up).
3840
- export const hooksTeammateIdle = {
3841
- name: 'hooks_teammate-idle',
3842
- description: 'Agent Teams hook — fired when a teammate agent finishes its turn; reports whether a pending task can be auto-assigned. Use when native Task is wrong because you have a persistent multi-agent team with a shared task list and want idle workers picked up automatically rather than re-spawning subagents. For a one-shot Task, native Task is fine. (Auto-assignment is delegated to the task-queue consumer — this acknowledges the event today.)',
3843
- category: 'hooks',
3844
- inputSchema: {
3845
- type: 'object',
3846
- properties: {
3847
- teammateId: { type: 'string', description: 'ID of the idle teammate' },
3848
- teamName: { type: 'string', description: 'Team name' },
3849
- autoAssign: { type: 'boolean', description: 'Auto-assign a pending task if available' },
3850
- checkTaskList: { type: 'boolean', description: 'Consult the shared task list' },
3851
- timestamp: { type: 'number', description: 'Event timestamp (ms)' },
3852
- },
3853
- },
3854
- handler: async (input) => {
3855
- const teammateId = String(input.teammateId ?? '');
3856
- return {
3857
- success: true,
3858
- teammateId,
3859
- action: 'waiting',
3860
- pendingTasks: 0,
3861
- message: 'teammate-idle acknowledged; auto-assignment requires the task-queue consumer (#1916 follow-up)',
3862
- };
3863
- },
3864
- };
3865
- export const hooksTaskCompleted = {
3866
- name: 'hooks_task-completed',
3867
- description: 'Agent Teams hook — fired when a task is marked complete; records completion and (eventually) trains patterns + notifies the team lead. Use when native TodoWrite is wrong because the work was a persisted, agent-assigned task whose outcome should feed cross-session learning and team coordination. For an in-session checklist tick, native TodoWrite is fine. (Pattern-learning is delegated to the intelligence pipeline — this records the completion today.)',
3868
- category: 'hooks',
3869
- inputSchema: {
3870
- type: 'object',
3871
- properties: {
3872
- taskId: { type: 'string', description: 'ID of the completed task' },
3873
- teammateId: { type: 'string', description: 'Teammate that completed it' },
3874
- success: { type: 'boolean', description: 'Whether the task succeeded' },
3875
- quality: { type: 'number', description: 'Quality score 0-1' },
3876
- trainPatterns: { type: 'boolean', description: 'Feed the outcome to the learning pipeline' },
3877
- notifyLead: { type: 'boolean', description: 'Notify the team lead' },
3878
- },
3879
- required: ['taskId'],
3880
- },
3881
- handler: async (input) => {
3882
- const taskId = String(input.taskId ?? '');
3883
- const quality = typeof input.quality === 'number' ? input.quality : (input.success === false ? 0 : 1);
3884
- return {
3885
- success: true,
3886
- taskId,
3887
- patternsLearned: 0,
3888
- leadNotified: input.notifyLead === true,
3889
- metrics: { duration: 0, quality, learningUpdates: 0 },
3890
- note: 'completion recorded; pattern-learning is delegated to the intelligence pipeline (#1916 follow-up)',
3891
- };
3892
- },
3893
- };
3894
3802
  // Export all hooks tools
3895
3803
  export const hooksTools = [
3896
- hooksTeammateIdle,
3897
- hooksTaskCompleted,
3898
3804
  hooksPreEdit,
3899
3805
  hooksPostEdit,
3900
3806
  hooksPreCommand,