@claude-flow/cli 3.7.0-alpha.8 → 3.7.0-alpha.81
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.
- package/.claude/agents/github/release-manager.md +2 -2
- package/.claude/agents/github/release-swarm.md +1 -1
- package/.claude/agents/github/repo-architect.md +2 -2
- package/.claude/agents/github/swarm-pr.md +1 -1
- package/.claude/agents/github/workflow-automation.md +2 -2
- package/.claude/commands/github/code-review-swarm.md +1 -1
- package/.claude/commands/github/issue-tracker.md +3 -3
- package/.claude/commands/github/release-manager.md +5 -3
- package/.claude/commands/github/release-swarm.md +1 -1
- package/.claude/commands/github/repo-architect.md +2 -2
- package/.claude/commands/github/swarm-issue.md +4 -1
- package/.claude/commands/github/swarm-pr.md +6 -3
- package/.claude/commands/github/sync-coordinator.md +3 -1
- package/.claude/commands/github/workflow-automation.md +2 -2
- package/.claude/helpers/github-safe.js +95 -60
- package/.claude/helpers/github-setup.sh +26 -9
- package/.claude/helpers/hook-handler.cjs +12 -4
- package/.claude/helpers/statusline.cjs +31 -2
- package/.claude/helpers/statusline.js +35 -4
- package/.claude/settings.json +1 -1
- package/.claude/skills/dual-mode/README.md +71 -0
- package/.claude/skills/dual-mode/dual-collect.md +103 -0
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -0
- package/.claude/skills/dual-mode/dual-spawn.md +81 -0
- package/.claude/skills/flow-nexus-neural/SKILL.md +0 -11
- package/.claude/skills/flow-nexus-platform/SKILL.md +2 -5
- package/.claude/skills/flow-nexus-swarm/SKILL.md +0 -6
- package/.claude/skills/github-code-review/SKILL.md +2 -17
- package/.claude/skills/github-multi-repo/SKILL.md +4 -16
- package/.claude/skills/github-project-management/SKILL.md +18 -33
- package/.claude/skills/github-release-management/SKILL.md +4 -21
- package/.claude/skills/github-workflow-automation/SKILL.md +8 -26
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
- package/.claude/skills/sparc-methodology/SKILL.md +2 -11
- package/.claude/skills/stream-chain/SKILL.md +0 -3
- package/.claude/skills/swarm-advanced/SKILL.md +2 -5
- package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
- package/.claude/skills/verification-quality/SKILL.md +120 -78
- package/README.md +57 -38
- package/bin/cli.js +15 -2
- package/bin/mcp-server.js +1 -1
- package/dist/src/__probe.d.ts +2 -0
- package/dist/src/__probe.d.ts.map +1 -0
- package/dist/src/__probe.js +5 -0
- package/dist/src/__probe.js.map +1 -0
- package/dist/src/commands/agent-wasm.js +2 -2
- package/dist/src/commands/agent-wasm.js.map +1 -1
- package/dist/src/commands/benchmark-cosign.d.ts +29 -0
- package/dist/src/commands/benchmark-cosign.d.ts.map +1 -0
- package/dist/src/commands/benchmark-cosign.js +222 -0
- package/dist/src/commands/benchmark-cosign.js.map +1 -0
- package/dist/src/commands/benchmark-verify.d.ts +21 -0
- package/dist/src/commands/benchmark-verify.d.ts.map +1 -0
- package/dist/src/commands/benchmark-verify.js +202 -0
- package/dist/src/commands/benchmark-verify.js.map +1 -0
- package/dist/src/commands/daemon.d.ts +20 -0
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +366 -7
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +224 -46
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.d.ts.map +1 -1
- package/dist/src/commands/embeddings.js +18 -9
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/hive-mind.d.ts.map +1 -1
- package/dist/src/commands/hive-mind.js +25 -7
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +56 -29
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +21 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +128 -3
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/start.js +1 -1
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/swarm.js +1 -1
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/task.d.ts.map +1 -1
- package/dist/src/commands/task.js +8 -4
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/config-adapter.js +1 -1
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/index.d.ts +5 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +61 -18
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +1 -0
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +133 -0
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts +1 -0
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +19 -2
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/mcp-generator.js +4 -4
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +84 -19
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +75 -31
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +30 -0
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +18 -5
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +12 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +38 -5
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-execute-core.d.ts +3 -2
- package/dist/src/mcp-tools/agent-execute-core.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-execute-core.js +157 -83
- package/dist/src/mcp-tools/agent-execute-core.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +119 -11
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.js +101 -24
- package/dist/src/mcp-tools/agentdb-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.js +6 -6
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.js +10 -10
- package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-session-tools.js +18 -7
- package/dist/src/mcp-tools/browser-session-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +23 -23
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.js +12 -12
- package/dist/src/mcp-tools/claims-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +6 -6
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +7 -7
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +8 -8
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +10 -10
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/github-tools.js +5 -5
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.js +21 -21
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-consensus-runtime.d.ts +149 -0
- package/dist/src/mcp-tools/hive-consensus-runtime.d.ts.map +1 -0
- package/dist/src/mcp-tools/hive-consensus-runtime.js +296 -0
- package/dist/src/mcp-tools/hive-consensus-runtime.js.map +1 -0
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +53 -9
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts +2 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +179 -46
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/managed-agent-tools.d.ts +22 -0
- package/dist/src/mcp-tools/managed-agent-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/managed-agent-tools.js +357 -0
- package/dist/src/mcp-tools/managed-agent-tools.js.map +1 -0
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +499 -68
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +6 -6
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +6 -6
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +4 -4
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.js +27 -11
- package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -1
- package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/security-tools.js +34 -9
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +130 -6
- package/dist/src/mcp-tools/session-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts +28 -0
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +80 -9
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +91 -18
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +55 -7
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +5 -5
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +11 -11
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.js +11 -11
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +118 -10
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/ann-router-registry.d.ts +61 -0
- package/dist/src/memory/ann-router-registry.d.ts.map +1 -0
- package/dist/src/memory/ann-router-registry.js +72 -0
- package/dist/src/memory/ann-router-registry.js.map +1 -0
- package/dist/src/memory/diskann-registry.d.ts +56 -0
- package/dist/src/memory/diskann-registry.d.ts.map +1 -0
- package/dist/src/memory/diskann-registry.js +88 -0
- package/dist/src/memory/diskann-registry.js.map +1 -0
- package/dist/src/memory/memory-bridge.d.ts +4 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +49 -8
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +12 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +98 -19
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +3 -0
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/parser.d.ts +9 -0
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +11 -0
- package/dist/src/parser.js.map +1 -1
- package/dist/src/plugins/store/discovery.d.ts +15 -4
- package/dist/src/plugins/store/discovery.d.ts.map +1 -1
- package/dist/src/plugins/store/discovery.js +40 -18
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/ruvector/agent-wasm.d.ts.map +1 -1
- package/dist/src/ruvector/agent-wasm.js +4 -1
- package/dist/src/ruvector/agent-wasm.js.map +1 -1
- package/dist/src/ruvector/coverage-tools.js +6 -6
- package/dist/src/ruvector/coverage-tools.js.map +1 -1
- package/dist/src/services/headless-worker-executor.d.ts +20 -1
- package/dist/src/services/headless-worker-executor.d.ts.map +1 -1
- package/dist/src/services/headless-worker-executor.js +91 -13
- package/dist/src/services/headless-worker-executor.js.map +1 -1
- package/dist/src/services/worker-daemon.d.ts +92 -2
- package/dist/src/services/worker-daemon.d.ts.map +1 -1
- package/dist/src/services/worker-daemon.js +431 -16
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -8
- package/.claude/agents/core/coder.md +0 -453
- package/.claude/agents/core/researcher.md +0 -369
- package/.claude/agents/core/reviewer.md +0 -520
- package/.claude/agents/core/tester.md +0 -512
- package/.claude/agents/goal/goal-planner.md +0 -73
- package/.claude/agents/v3/adr-architect.md +0 -184
- package/.claude/agents/v3/memory-specialist.md +0 -995
- package/.claude/agents/v3/security-auditor.md +0 -771
- package/.claude/agents/v3/sparc-orchestrator.md +0 -182
- package/.claude/commands/flow-nexus/app-store.md +0 -124
- package/.claude/commands/flow-nexus/challenges.md +0 -120
- package/.claude/commands/flow-nexus/login-registration.md +0 -65
- package/.claude/commands/flow-nexus/neural-network.md +0 -134
- package/.claude/commands/flow-nexus/payments.md +0 -116
- package/.claude/commands/flow-nexus/sandbox.md +0 -83
- package/.claude/commands/flow-nexus/swarm.md +0 -87
- package/.claude/commands/flow-nexus/user-tools.md +0 -152
- package/.claude/commands/flow-nexus/workflow.md +0 -115
- package/.claude/skills/agentic-jujutsu/SKILL.md +0 -645
- package/.claude/skills/aidefence-scan.md +0 -151
- package/.claude/skills/aidefence.yaml +0 -297
- package/.claude/skills/hive-mind-advanced/SKILL.md +0 -712
- package/.claude/skills/performance-analysis/SKILL.md +0 -563
- package/.claude/skills/secure-review.md +0 -181
- package/.claude/skills/worker-benchmarks/skill.md +0 -135
- package/.claude/skills/worker-integration/skill.md +0 -154
- package/dist/src/ruvector/flash-attention.d.ts +0 -195
- package/dist/src/ruvector/flash-attention.d.ts.map +0 -1
- package/dist/src/ruvector/flash-attention.js +0 -643
- package/dist/src/ruvector/flash-attention.js.map +0 -1
- package/dist/src/ruvector/moe-router.d.ts +0 -206
- package/dist/src/ruvector/moe-router.d.ts.map +0 -1
- package/dist/src/ruvector/moe-router.js +0 -626
- package/dist/src/ruvector/moe-router.js.map +0 -1
- package/dist/src/services/event-stream.d.ts +0 -25
- package/dist/src/services/event-stream.d.ts.map +0 -1
- package/dist/src/services/event-stream.js +0 -27
- package/dist/src/services/event-stream.js.map +0 -1
- package/dist/src/services/loop-worker-runner.d.ts +0 -16
- package/dist/src/services/loop-worker-runner.d.ts.map +0 -1
- package/dist/src/services/loop-worker-runner.js +0 -34
- package/dist/src/services/loop-worker-runner.js.map +0 -1
- package/dist/src/services/runtime-capabilities.d.ts +0 -22
- package/dist/src/services/runtime-capabilities.d.ts.map +0 -1
- package/dist/src/services/runtime-capabilities.js +0 -45
- package/dist/src/services/runtime-capabilities.js.map +0 -1
|
@@ -8,6 +8,16 @@ import { callMCPTool, MCPClientError } from '../mcp-client.js';
|
|
|
8
8
|
import { storeCommand } from './transfer-store.js';
|
|
9
9
|
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
10
10
|
import { join } from 'node:path';
|
|
11
|
+
/**
|
|
12
|
+
* #1686 — `?? 0` only defaults null/undefined; NaN slips through and
|
|
13
|
+
* surfaces as `"NaN"` (or earlier crashed `.toFixed`) in the metrics
|
|
14
|
+
* dashboard and pretrain output. Coerce to a finite number, fall back
|
|
15
|
+
* to `fallback` when the input is null/undefined/non-numeric/NaN/Infinity.
|
|
16
|
+
*/
|
|
17
|
+
function safeNum(value, fallback = 0) {
|
|
18
|
+
const n = typeof value === 'number' ? value : Number(value);
|
|
19
|
+
return Number.isFinite(n) ? n : fallback;
|
|
20
|
+
}
|
|
11
21
|
/**
|
|
12
22
|
* Read coverage data from disk. Checks these locations in order:
|
|
13
23
|
* 1. coverage/coverage-summary.json (Jest/Istanbul)
|
|
@@ -260,7 +270,7 @@ const preEditCommand = {
|
|
|
260
270
|
],
|
|
261
271
|
action: async (ctx) => {
|
|
262
272
|
// Default file to 'unknown' for backward compatibility (env var may be empty)
|
|
263
|
-
const filePath = ctx.
|
|
273
|
+
const filePath = ctx.flags.file || ctx.args[0] || 'unknown';
|
|
264
274
|
const operation = ctx.flags.operation || 'update';
|
|
265
275
|
output.printInfo(`Analyzing context for: ${output.highlight(filePath)}`);
|
|
266
276
|
try {
|
|
@@ -365,7 +375,7 @@ const postEditCommand = {
|
|
|
365
375
|
],
|
|
366
376
|
action: async (ctx) => {
|
|
367
377
|
// Default file to 'unknown' for backward compatibility (env var may be empty)
|
|
368
|
-
const filePath = ctx.
|
|
378
|
+
const filePath = ctx.flags.file || ctx.args[0] || 'unknown';
|
|
369
379
|
// Default success to true for backward compatibility (PostToolUse = success, PostToolUseFailure = failure)
|
|
370
380
|
const success = ctx.flags.success !== undefined ? ctx.flags.success : true;
|
|
371
381
|
output.printInfo(`Recording outcome for: ${output.highlight(filePath)}`);
|
|
@@ -448,7 +458,7 @@ const preCommandCommand = {
|
|
|
448
458
|
{ command: 'claude-flow hooks pre-command -c "npm install lodash"', description: 'Check package install' }
|
|
449
459
|
],
|
|
450
460
|
action: async (ctx) => {
|
|
451
|
-
const command = ctx.
|
|
461
|
+
const command = ctx.flags.command || ctx.args[0];
|
|
452
462
|
if (!command) {
|
|
453
463
|
output.printError('Command is required. Use --command or -c flag.');
|
|
454
464
|
return { success: false, exitCode: 1 };
|
|
@@ -557,7 +567,7 @@ const postCommandCommand = {
|
|
|
557
567
|
{ command: 'claude-flow hooks post-command -c "npm build" --success false -e 1', description: 'Record failed build' }
|
|
558
568
|
],
|
|
559
569
|
action: async (ctx) => {
|
|
560
|
-
const command = ctx.
|
|
570
|
+
const command = ctx.flags.command || ctx.args[0];
|
|
561
571
|
// Default success to true for backward compatibility
|
|
562
572
|
const success = ctx.flags.success !== undefined ? ctx.flags.success : true;
|
|
563
573
|
if (!command) {
|
|
@@ -629,7 +639,7 @@ const routeCommand = {
|
|
|
629
639
|
{ command: 'claude-flow hooks route -t "Optimize database queries" -K 5', description: 'Get top 5 suggestions' }
|
|
630
640
|
],
|
|
631
641
|
action: async (ctx) => {
|
|
632
|
-
const task = ctx.
|
|
642
|
+
const task = ctx.flags.task || ctx.args[0];
|
|
633
643
|
const topK = ctx.flags.topK || 3;
|
|
634
644
|
if (!task) {
|
|
635
645
|
output.printError('Task description is required. Use --task or -t flag.');
|
|
@@ -741,7 +751,7 @@ const explainCommand = {
|
|
|
741
751
|
{ command: 'claude-flow hooks explain -t "Optimize queries" -a coder --verbose', description: 'Verbose explanation for specific agent' }
|
|
742
752
|
],
|
|
743
753
|
action: async (ctx) => {
|
|
744
|
-
const task = ctx.
|
|
754
|
+
const task = ctx.flags.task || ctx.args[0];
|
|
745
755
|
if (!task) {
|
|
746
756
|
output.printError('Task description is required. Use --task or -t flag.');
|
|
747
757
|
return { success: false, exitCode: 1 };
|
|
@@ -903,8 +913,10 @@ const pretrainCommand = {
|
|
|
903
913
|
});
|
|
904
914
|
spinner.succeed('Pretraining completed');
|
|
905
915
|
// Normalize shape: prefer `statistics`, fall back to `stats` for older tools.
|
|
916
|
+
// #1686 — coerce duration through safeNum so a NaN from the underlying
|
|
917
|
+
// pretrain pipeline surfaces as `0.0s` rather than `NaNs`.
|
|
906
918
|
const stats = (rawResult.statistics ?? rawResult.stats ?? {});
|
|
907
|
-
const durationMs = rawResult.duration ?? rawResult.statistics?.executionTime
|
|
919
|
+
const durationMs = safeNum(rawResult.duration ?? rawResult.statistics?.executionTime);
|
|
908
920
|
const result = { ...rawResult, stats, duration: durationMs };
|
|
909
921
|
if (ctx.flags.format === 'json') {
|
|
910
922
|
output.printJson(result);
|
|
@@ -1089,18 +1101,19 @@ const metricsCommand = {
|
|
|
1089
1101
|
category: ctx.flags.category,
|
|
1090
1102
|
});
|
|
1091
1103
|
// Normalize across both shapes; default every numeric to 0 so toFixed
|
|
1092
|
-
// never sees null/undefined.
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
const
|
|
1096
|
-
const
|
|
1097
|
-
const
|
|
1098
|
-
|
|
1099
|
-
const
|
|
1104
|
+
// never sees null/undefined. #1686 — also coerce NaN through `safeNum`
|
|
1105
|
+
// because `?? 0` only catches null/undefined; an upstream NaN would
|
|
1106
|
+
// still land in `.toFixed(...)` and surface as `"NaN"`.
|
|
1107
|
+
const totalPatterns = safeNum(rawMetrics.patterns?.total ?? rawMetrics.summary?.patternsLearned);
|
|
1108
|
+
const successfulPatterns = safeNum(rawMetrics.patterns?.successful ?? Math.round(safeNum(rawMetrics.summary?.successRate) * totalPatterns));
|
|
1109
|
+
const failedPatterns = Math.max(0, safeNum(rawMetrics.patterns?.failed ?? totalPatterns - successfulPatterns));
|
|
1110
|
+
const avgConfidence = safeNum(rawMetrics.patterns?.avgConfidence ?? rawMetrics.summary?.avgQuality);
|
|
1111
|
+
const routingAccuracy = safeNum(rawMetrics.agents?.routingAccuracy ?? rawMetrics.routing?.avgConfidence);
|
|
1112
|
+
const totalRoutes = safeNum(rawMetrics.agents?.totalRoutes ?? rawMetrics.routing?.totalRoutes);
|
|
1100
1113
|
const topAgent = rawMetrics.agents?.topAgent ?? rawMetrics.routing?.topAgents?.[0]?.agent ?? 'n/a';
|
|
1101
|
-
const totalCommands = rawMetrics.commands?.totalExecuted ?? rawMetrics.commands?.totalCommands
|
|
1102
|
-
const commandSuccessRate = rawMetrics.commands?.successRate
|
|
1103
|
-
const avgRiskScore = rawMetrics.commands?.avgRiskScore ?? rawMetrics.commands?.avgExecutionTime
|
|
1114
|
+
const totalCommands = safeNum(rawMetrics.commands?.totalExecuted ?? rawMetrics.commands?.totalCommands);
|
|
1115
|
+
const commandSuccessRate = safeNum(rawMetrics.commands?.successRate);
|
|
1116
|
+
const avgRiskScore = safeNum(rawMetrics.commands?.avgRiskScore ?? rawMetrics.commands?.avgExecutionTime);
|
|
1104
1117
|
const result = {
|
|
1105
1118
|
...rawMetrics,
|
|
1106
1119
|
patterns: { total: totalPatterns, successful: successfulPatterns, failed: failedPatterns, avgConfidence },
|
|
@@ -1211,7 +1224,7 @@ const transferFromProjectCommand = {
|
|
|
1211
1224
|
{ command: 'claude-flow hooks transfer from-project -s ../prod --filter security -m 0.9', description: 'Transfer high-confidence security patterns' }
|
|
1212
1225
|
],
|
|
1213
1226
|
action: async (ctx) => {
|
|
1214
|
-
const sourcePath = ctx.
|
|
1227
|
+
const sourcePath = ctx.flags.source || ctx.args[0];
|
|
1215
1228
|
const minConfidence = ctx.flags.minConfidence || 0.7;
|
|
1216
1229
|
if (!sourcePath) {
|
|
1217
1230
|
output.printError('Source project path is required. Use --source or -s flag.');
|
|
@@ -1409,7 +1422,7 @@ const preTaskCommand = {
|
|
|
1409
1422
|
],
|
|
1410
1423
|
action: async (ctx) => {
|
|
1411
1424
|
const taskId = ctx.flags.taskId || `task-${Date.now().toString(36)}`;
|
|
1412
|
-
const description = ctx.
|
|
1425
|
+
const description = ctx.flags.description || ctx.args[0];
|
|
1413
1426
|
if (!description) {
|
|
1414
1427
|
output.printError('Description is required: --description "your task"');
|
|
1415
1428
|
return { success: false, exitCode: 1 };
|
|
@@ -1694,7 +1707,7 @@ const sessionRestoreCommand = {
|
|
|
1694
1707
|
{ command: 'claude-flow hooks session-restore -i session-12345', description: 'Restore specific session' }
|
|
1695
1708
|
],
|
|
1696
1709
|
action: async (ctx) => {
|
|
1697
|
-
const sessionId = ctx.
|
|
1710
|
+
const sessionId = ctx.flags.sessionId || ctx.args[0] || 'latest';
|
|
1698
1711
|
output.printInfo(`Restoring session: ${output.highlight(sessionId)}`);
|
|
1699
1712
|
try {
|
|
1700
1713
|
const result = await callMCPTool('hooks_session-restore', {
|
|
@@ -2506,7 +2519,7 @@ const coverageRouteCommand = {
|
|
|
2506
2519
|
{ command: 'claude-flow hooks coverage-route -t "add tests" --threshold 90', description: 'Route with custom threshold' }
|
|
2507
2520
|
],
|
|
2508
2521
|
action: async (ctx) => {
|
|
2509
|
-
const task = ctx.
|
|
2522
|
+
const task = ctx.flags.task || ctx.args[0];
|
|
2510
2523
|
const threshold = ctx.flags.threshold || 80;
|
|
2511
2524
|
const useRuvector = !ctx.flags['no-ruvector'];
|
|
2512
2525
|
if (!task) {
|
|
@@ -2726,7 +2739,7 @@ const coverageSuggestCommand = {
|
|
|
2726
2739
|
{ command: 'claude-flow hooks coverage-suggest -p src/services --threshold 90', description: 'Stricter threshold' }
|
|
2727
2740
|
],
|
|
2728
2741
|
action: async (ctx) => {
|
|
2729
|
-
const targetPath = ctx.
|
|
2742
|
+
const targetPath = ctx.flags.path || ctx.args[0];
|
|
2730
2743
|
const threshold = ctx.flags.threshold || 80;
|
|
2731
2744
|
const limit = ctx.flags.limit || 20;
|
|
2732
2745
|
if (!targetPath) {
|
|
@@ -3289,7 +3302,13 @@ const statuslineCommand = {
|
|
|
3289
3302
|
},
|
|
3290
3303
|
{
|
|
3291
3304
|
name: 'compact',
|
|
3292
|
-
description: 'Compact single-line output',
|
|
3305
|
+
description: 'Compact single-line output (auto-enabled when terminal width < 100 cols)',
|
|
3306
|
+
type: 'boolean',
|
|
3307
|
+
default: false
|
|
3308
|
+
},
|
|
3309
|
+
{
|
|
3310
|
+
name: 'full',
|
|
3311
|
+
description: 'Force the full multi-line output even on narrow terminals',
|
|
3293
3312
|
type: 'boolean',
|
|
3294
3313
|
default: false
|
|
3295
3314
|
},
|
|
@@ -3518,8 +3537,16 @@ const statuslineCommand = {
|
|
|
3518
3537
|
output.printJson(statusData);
|
|
3519
3538
|
return { success: true, data: statusData };
|
|
3520
3539
|
}
|
|
3521
|
-
//
|
|
3522
|
-
|
|
3540
|
+
// #1153: auto-collapse to compact on narrow terminals so the full
|
|
3541
|
+
// 6+ line statusline doesn't dominate the screen. Honors:
|
|
3542
|
+
// - explicit --compact → compact
|
|
3543
|
+
// - explicit --full → full (overrides auto-detection)
|
|
3544
|
+
// - else → compact when terminal < 100 cols (full multi-line
|
|
3545
|
+
// output expects ~100 cols of horizontal space)
|
|
3546
|
+
const COMPACT_WIDTH_THRESHOLD = 100;
|
|
3547
|
+
const terminalCols = process.stdout.columns ?? 80;
|
|
3548
|
+
const autoCompact = !ctx.flags.full && terminalCols < COMPACT_WIDTH_THRESHOLD;
|
|
3549
|
+
if (ctx.flags.compact || autoCompact) {
|
|
3523
3550
|
const line = `DDD:${progress.domainsCompleted}/${progress.totalDomains} CVE:${security.cvesFixed}/${security.totalCves} Swarm:${swarm.activeAgents}/${swarm.maxAgents} Ctx:${system.contextPct}% Int:${system.intelligencePct}%`;
|
|
3524
3551
|
output.writeln(line);
|
|
3525
3552
|
return { success: true, data: statusData };
|
|
@@ -3950,7 +3977,7 @@ const modelRouteCommand = {
|
|
|
3950
3977
|
{ command: 'claude-flow hooks model-route -t "architect auth system"', description: 'Route complex task (likely opus)' },
|
|
3951
3978
|
],
|
|
3952
3979
|
action: async (ctx) => {
|
|
3953
|
-
const task = ctx.
|
|
3980
|
+
const task = ctx.flags.task || ctx.args[0];
|
|
3954
3981
|
if (!task) {
|
|
3955
3982
|
output.printError('Task description required. Use --task or -t flag.');
|
|
3956
3983
|
return { success: false, exitCode: 1 };
|
|
@@ -4258,7 +4285,7 @@ const taskCompletedCommand = {
|
|
|
4258
4285
|
{ command: 'claude-flow hooks task-completed -i task-456 --notify-lead --quality 0.95', description: 'Complete with quality score' }
|
|
4259
4286
|
],
|
|
4260
4287
|
action: async (ctx) => {
|
|
4261
|
-
const taskId = ctx.
|
|
4288
|
+
const taskId = ctx.flags.taskId || ctx.args[0];
|
|
4262
4289
|
const trainPatterns = ctx.flags.trainPatterns !== false;
|
|
4263
4290
|
const notifyLead = ctx.flags.notifyLead !== false;
|
|
4264
4291
|
const success = ctx.flags.success !== false;
|
|
@@ -4336,7 +4363,7 @@ const notifyCommand = {
|
|
|
4336
4363
|
{ command: 'claude-flow hooks notify -m "Test failed" -l error', description: 'Send error notification' },
|
|
4337
4364
|
],
|
|
4338
4365
|
action: async (ctx) => {
|
|
4339
|
-
const message = ctx.
|
|
4366
|
+
const message = ctx.flags.message || ctx.args[0];
|
|
4340
4367
|
const level = ctx.flags.level || 'info';
|
|
4341
4368
|
if (!message) {
|
|
4342
4369
|
output.printError('Message is required: --message "your message"');
|