claude-flow-novice 2.0.3 ā 2.0.4
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/dist/src/cli/commands/guidance.js +487 -668
- package/dist/src/cli/commands/index-validate.js +18 -29
- package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
- package/dist/src/cli/commands/neural-goal-init.js +92 -125
- package/dist/src/cli/commands/swarm-exec.js +317 -393
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/commands/validate-framework.js +983 -1100
- package/dist/src/cli/commands/validate.js +144 -223
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
- package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
- package/dist/src/cli/simple-commands/agent.js +157 -193
- package/dist/src/cli/simple-commands/analysis.js +336 -446
- package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
- package/dist/src/cli/simple-commands/automation.js +481 -469
- package/dist/src/cli/simple-commands/batch-manager.js +261 -313
- package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
- package/dist/src/cli/simple-commands/claude-track.js +68 -90
- package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
- package/dist/src/cli/simple-commands/config.js +245 -290
- package/dist/src/cli/simple-commands/coordination.js +182 -234
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
- package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
- package/dist/src/cli/simple-commands/github/github-api.js +535 -574
- package/dist/src/cli/simple-commands/github/init.js +276 -303
- package/dist/src/cli/simple-commands/github.js +222 -247
- package/dist/src/cli/simple-commands/goal.js +51 -63
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
- package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
- package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
- package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
- package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
- package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
- package/dist/src/cli/simple-commands/hive.js +90 -79
- package/dist/src/cli/simple-commands/hook-safety.js +431 -521
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
- package/dist/src/cli/simple-commands/hooks.js +1064 -1204
- package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
- package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
- package/dist/src/cli/simple-commands/init/help.js +104 -107
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
- package/dist/src/cli/simple-commands/init/index.js +1510 -1759
- package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
- package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
- package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
- package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
- package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
- package/dist/src/cli/simple-commands/init.js +1 -2
- package/dist/src/cli/simple-commands/mcp-health.js +131 -158
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
- package/dist/src/cli/simple-commands/mcp.js +345 -400
- package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
- package/dist/src/cli/simple-commands/memory.js +247 -311
- package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
- package/dist/src/cli/simple-commands/monitor.js +294 -363
- package/dist/src/cli/simple-commands/neural.js +51 -65
- package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
- package/dist/src/cli/simple-commands/pair-basic.js +528 -656
- package/dist/src/cli/simple-commands/pair-old.js +430 -543
- package/dist/src/cli/simple-commands/pair-working.js +615 -751
- package/dist/src/cli/simple-commands/pair.js +615 -751
- package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
- package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
- package/dist/src/cli/simple-commands/process-ui.js +230 -254
- package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
- package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
- package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
- package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
- package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
- package/dist/src/cli/simple-commands/sparc/index.js +241 -298
- package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
- package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
- package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +465 -493
- package/dist/src/cli/simple-commands/start-ui.js +108 -132
- package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +254 -275
- package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
- package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
- package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
- package/dist/src/cli/simple-commands/stream-chain.js +260 -318
- package/dist/src/cli/simple-commands/stream-processor.js +290 -315
- package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
- package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
- package/dist/src/cli/simple-commands/swarm.js +887 -1082
- package/dist/src/cli/simple-commands/task.js +161 -206
- package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
- package/dist/src/cli/simple-commands/token-tracker.js +258 -316
- package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
- package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
- package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
- package/dist/src/cli/simple-commands/training.js +170 -227
- package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
- package/dist/src/cli/simple-commands/verification-integration.js +389 -417
- package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
- package/dist/src/cli/simple-commands/verification.js +493 -513
- package/dist/src/cli/simple-commands/web-server.js +766 -836
- package/dist/src/cli/simple-commands/webui-validator.js +106 -124
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
- package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
- package/dist/src/coordination/iteration-tracker.js +363 -454
- package/dist/src/enterprise/analytics-manager.js +1135 -0
- package/dist/src/enterprise/audit-manager.js +1115 -0
- package/dist/src/enterprise/cloud-manager.js +891 -0
- package/dist/src/enterprise/deployment-manager.js +966 -0
- package/dist/src/enterprise/index.js +6 -0
- package/dist/src/enterprise/project-manager.js +584 -0
- package/dist/src/enterprise/security-manager.js +991 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/DEPRECATED.js +46 -60
- package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
- package/dist/src/mcp/implementations/agent-tracker.js +114 -128
- package/dist/src/mcp/implementations/daa-tools.js +292 -350
- package/dist/src/mcp/implementations/workflow-tools.js +329 -361
- package/dist/src/mcp/mcp-config-manager.js +1183 -1331
- package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
- package/dist/src/mcp/mcp-server-novice.js +11 -17
- package/dist/src/mcp/mcp-server-sdk.js +11 -17
- package/dist/src/mcp/mcp-server.js +1620 -1484
- package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
- package/dist/src/memory/advanced-serializer.js +609 -589
- package/dist/src/memory/enhanced-examples.js +220 -305
- package/dist/src/memory/enhanced-memory.js +295 -336
- package/dist/src/memory/enhanced-session-serializer.js +408 -492
- package/dist/src/memory/fallback-memory-system.js +900 -1021
- package/dist/src/memory/fallback-store.js +93 -131
- package/dist/src/memory/high-performance-serialization.js +592 -730
- package/dist/src/memory/in-memory-store.js +161 -213
- package/dist/src/memory/index.js +123 -157
- package/dist/src/memory/lock-free-structures.js +578 -764
- package/dist/src/memory/memory-mapped-persistence.js +585 -766
- package/dist/src/memory/memory-pressure-manager.js +569 -707
- package/dist/src/memory/migration.js +358 -445
- package/dist/src/memory/shared-memory.js +641 -768
- package/dist/src/memory/sqlite-store.js +245 -325
- package/dist/src/memory/sqlite-wrapper.js +122 -151
- package/dist/src/memory/swarm-memory.js +470 -603
- package/dist/src/memory/test-example.js +126 -134
- package/dist/src/memory/ultra-fast-memory-store.js +622 -821
- package/dist/src/memory/unified-memory-manager.js +356 -437
- package/dist/src/migration/index.js +92 -0
- package/dist/src/migration/logger.js +121 -0
- package/dist/src/migration/migration-analyzer.js +268 -0
- package/dist/src/migration/migration-runner.js +522 -0
- package/dist/src/migration/migration-validator.js +285 -0
- package/dist/src/migration/progress-reporter.js +150 -0
- package/dist/src/migration/rollback-manager.js +321 -0
- package/dist/src/migration/tests/migration-system.test.js +7 -0
- package/dist/src/migration/types.js +3 -0
- package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
- package/dist/src/swarm/__tests__/integration.test.js +227 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
- package/dist/src/swarm/advanced-orchestrator.js +1095 -0
- package/dist/src/swarm/claude-code-interface.js +961 -0
- package/dist/src/swarm/claude-flow-executor.js +229 -0
- package/dist/src/swarm/consensus-coordinator.js +475 -0
- package/dist/src/swarm/coordinator.js +2993 -0
- package/dist/src/swarm/direct-executor.js +1180 -0
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
- package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
- package/dist/src/swarm/executor-v2.js +322 -0
- package/dist/src/swarm/executor.js +815 -0
- package/dist/src/swarm/hive-mind-integration.js +703 -0
- package/dist/src/swarm/index.js +41 -0
- package/dist/src/swarm/json-output-aggregator.js +267 -0
- package/dist/src/swarm/large-scale-coordinator.js +542 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
- package/dist/src/swarm/memory.js +1117 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
- package/dist/src/swarm/optimizations/connection-pool.js +244 -0
- package/dist/src/swarm/optimizations/index.js +28 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
- package/dist/src/swarm/optimizations/ttl-map.js +234 -0
- package/dist/src/swarm/prompt-cli.js +200 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
- package/dist/src/swarm/prompt-copier.js +381 -0
- package/dist/src/swarm/prompt-manager.js +295 -0
- package/dist/src/swarm/prompt-utils.js +310 -0
- package/dist/src/swarm/result-aggregator.js +718 -0
- package/dist/src/swarm/sparc-executor.js +1568 -0
- package/dist/src/swarm/strategies/auto.js +758 -0
- package/dist/src/swarm/strategies/base.js +128 -0
- package/dist/src/swarm/strategies/research.js +914 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
- package/dist/src/swarm/types.js +52 -0
- package/dist/src/swarm/workers/copy-worker.js +56 -0
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
- package/dist/src/utils/github-cli-safe.js +56 -64
- package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
- package/dist/src/utils/npx-isolated-cache.js +104 -119
- package/dist/src/utils/preference-manager.js +622 -652
- package/dist/src/utils/timezone-utils.js +86 -105
- package/dist/src/validators/epic-config-schema.js +214 -0
- package/dist/src/validators/index.js +10 -0
- package/dist/src/validators/swarm-init-validator.js +259 -0
- package/dist/src/validators/todowrite-batching-validator.js +215 -0
- package/dist/src/validators/todowrite-integration.js +187 -0
- package/package.json +2 -2
|
@@ -1,417 +1,348 @@
|
|
|
1
1
|
// monitor.js - System monitoring commands with real metrics
|
|
2
|
-
import { printSuccess
|
|
3
|
-
import os from
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import path from 'path';
|
|
7
|
-
|
|
2
|
+
import { printSuccess } from "../utils.js";
|
|
3
|
+
import os from "os";
|
|
4
|
+
import fs from "node:fs/promises";
|
|
5
|
+
import path from "path";
|
|
8
6
|
export async function monitorCommand(subArgs, flags) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
7
|
+
const interval = getFlag(subArgs, '--interval') || flags.interval || 5000;
|
|
8
|
+
const format = getFlag(subArgs, '--format') || flags.format || 'pretty';
|
|
9
|
+
const continuous = subArgs.includes('--watch') || flags.watch;
|
|
10
|
+
if (continuous) {
|
|
11
|
+
await runContinuousMonitoring(interval, format);
|
|
12
|
+
} else {
|
|
13
|
+
await showCurrentMetrics(format);
|
|
14
|
+
}
|
|
18
15
|
}
|
|
19
|
-
|
|
20
16
|
async function showCurrentMetrics(format) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
17
|
+
const metrics = await collectMetrics();
|
|
18
|
+
if (format === 'json') {
|
|
19
|
+
console.log(JSON.stringify(metrics, null, 2));
|
|
20
|
+
} else {
|
|
21
|
+
displayMetrics(metrics);
|
|
22
|
+
}
|
|
28
23
|
}
|
|
29
|
-
|
|
30
24
|
async function runContinuousMonitoring(interval, format) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// Initial display
|
|
48
|
-
const initialMetrics = await collectMetrics();
|
|
49
|
-
console.clear();
|
|
50
|
-
console.log(`š Monitoring Claude-Flow System`);
|
|
51
|
-
console.log(`ā° ${new Date().toLocaleTimeString()}\n`);
|
|
52
|
-
|
|
53
|
-
if (format === 'json') {
|
|
54
|
-
console.log(JSON.stringify(initialMetrics, null, 2));
|
|
55
|
-
} else {
|
|
56
|
-
displayMetrics(initialMetrics);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
console.log(`\nš Next update in ${interval}ms...`);
|
|
60
|
-
|
|
61
|
-
// Start continuous monitoring
|
|
62
|
-
monitorInterval = setInterval(async () => {
|
|
25
|
+
printSuccess(`Starting continuous monitoring (interval: ${interval}ms)`);
|
|
26
|
+
console.log('Press Ctrl+C to stop monitoring\n');
|
|
27
|
+
// Set up signal handler for graceful shutdown
|
|
28
|
+
let monitorInterval;
|
|
29
|
+
const cleanup = ()=>{
|
|
30
|
+
if (monitorInterval) {
|
|
31
|
+
clearInterval(monitorInterval);
|
|
32
|
+
}
|
|
33
|
+
console.log('\nš Monitoring stopped');
|
|
34
|
+
process.exit(0);
|
|
35
|
+
};
|
|
36
|
+
process.on('SIGINT', cleanup);
|
|
37
|
+
process.on('SIGTERM', cleanup);
|
|
38
|
+
// Initial display
|
|
39
|
+
const initialMetrics = await collectMetrics();
|
|
63
40
|
console.clear();
|
|
64
41
|
console.log(`š Monitoring Claude-Flow System`);
|
|
65
42
|
console.log(`ā° ${new Date().toLocaleTimeString()}\n`);
|
|
66
|
-
|
|
67
|
-
const metrics = await collectMetrics();
|
|
68
|
-
|
|
69
43
|
if (format === 'json') {
|
|
70
|
-
|
|
44
|
+
console.log(JSON.stringify(initialMetrics, null, 2));
|
|
71
45
|
} else {
|
|
72
|
-
|
|
46
|
+
displayMetrics(initialMetrics);
|
|
73
47
|
}
|
|
74
|
-
|
|
75
48
|
console.log(`\nš Next update in ${interval}ms...`);
|
|
76
|
-
|
|
49
|
+
// Start continuous monitoring
|
|
50
|
+
monitorInterval = setInterval(async ()=>{
|
|
51
|
+
console.clear();
|
|
52
|
+
console.log(`š Monitoring Claude-Flow System`);
|
|
53
|
+
console.log(`ā° ${new Date().toLocaleTimeString()}\n`);
|
|
54
|
+
const metrics = await collectMetrics();
|
|
55
|
+
if (format === 'json') {
|
|
56
|
+
console.log(JSON.stringify(metrics, null, 2));
|
|
57
|
+
} else {
|
|
58
|
+
displayMetrics(metrics);
|
|
59
|
+
}
|
|
60
|
+
console.log(`\nš Next update in ${interval}ms...`);
|
|
61
|
+
}, interval);
|
|
77
62
|
}
|
|
78
|
-
|
|
79
63
|
async function collectMetrics() {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
},
|
|
113
|
-
orchestrator: orchestratorMetrics,
|
|
114
|
-
performance: performanceMetrics,
|
|
115
|
-
resources: resourceMetrics,
|
|
116
|
-
};
|
|
64
|
+
const timestamp = Date.now();
|
|
65
|
+
// Collect real system metrics
|
|
66
|
+
const cpuUsage = await getCPUUsage();
|
|
67
|
+
const memoryInfo = getMemoryInfo();
|
|
68
|
+
const diskUsage = await getDiskUsage();
|
|
69
|
+
const systemUptime = os.uptime();
|
|
70
|
+
// Try to get orchestrator metrics from file or socket
|
|
71
|
+
const orchestratorMetrics = await getOrchestratorMetrics();
|
|
72
|
+
// Collect performance metrics
|
|
73
|
+
const performanceMetrics = getPerformanceMetrics();
|
|
74
|
+
// Collect resource utilization
|
|
75
|
+
const resourceMetrics = await getResourceMetrics();
|
|
76
|
+
return {
|
|
77
|
+
timestamp,
|
|
78
|
+
system: {
|
|
79
|
+
uptime: systemUptime,
|
|
80
|
+
cpu_usage: cpuUsage,
|
|
81
|
+
memory_usage: memoryInfo.usedMB,
|
|
82
|
+
memory_total: memoryInfo.totalMB,
|
|
83
|
+
memory_percentage: memoryInfo.percentage,
|
|
84
|
+
disk_usage: diskUsage.percentage,
|
|
85
|
+
disk_used: diskUsage.usedGB,
|
|
86
|
+
disk_total: diskUsage.totalGB,
|
|
87
|
+
load_average: os.loadavg(),
|
|
88
|
+
cpu_count: os.cpus().length,
|
|
89
|
+
platform: os.platform(),
|
|
90
|
+
node_version: process.version
|
|
91
|
+
},
|
|
92
|
+
orchestrator: orchestratorMetrics,
|
|
93
|
+
performance: performanceMetrics,
|
|
94
|
+
resources: resourceMetrics
|
|
95
|
+
};
|
|
117
96
|
}
|
|
118
|
-
|
|
119
97
|
// Get real CPU usage
|
|
120
98
|
async function getCPUUsage() {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const usage = 100 - ~~((100 * idle) / total);
|
|
135
|
-
|
|
136
|
-
return Math.max(0, Math.min(100, usage));
|
|
99
|
+
const cpus = os.cpus();
|
|
100
|
+
let totalIdle = 0;
|
|
101
|
+
let totalTick = 0;
|
|
102
|
+
cpus.forEach((cpu)=>{
|
|
103
|
+
for(const type in cpu.times){
|
|
104
|
+
totalTick += cpu.times[type];
|
|
105
|
+
}
|
|
106
|
+
totalIdle += cpu.times.idle;
|
|
107
|
+
});
|
|
108
|
+
const idle = totalIdle / cpus.length;
|
|
109
|
+
const total = totalTick / cpus.length;
|
|
110
|
+
const usage = 100 - ~~(100 * idle / total);
|
|
111
|
+
return Math.max(0, Math.min(100, usage));
|
|
137
112
|
}
|
|
138
|
-
|
|
139
113
|
// Get real memory information
|
|
140
114
|
function getMemoryInfo() {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
};
|
|
115
|
+
const totalMem = os.totalmem();
|
|
116
|
+
const freeMem = os.freemem();
|
|
117
|
+
const usedMem = totalMem - freeMem;
|
|
118
|
+
return {
|
|
119
|
+
totalMB: Math.round(totalMem / 1024 / 1024),
|
|
120
|
+
freeMB: Math.round(freeMem / 1024 / 1024),
|
|
121
|
+
usedMB: Math.round(usedMem / 1024 / 1024),
|
|
122
|
+
percentage: Math.round(usedMem / totalMem * 100)
|
|
123
|
+
};
|
|
151
124
|
}
|
|
152
|
-
|
|
153
125
|
// Get real disk usage (simplified - checks current working directory)
|
|
154
126
|
async function getDiskUsage() {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
}
|
|
127
|
+
try {
|
|
128
|
+
const stats = await fs.statfs(process.cwd());
|
|
129
|
+
const totalBytes = stats.blocks * stats.bsize;
|
|
130
|
+
const freeBytes = stats.bavail * stats.bsize;
|
|
131
|
+
const usedBytes = totalBytes - freeBytes;
|
|
132
|
+
return {
|
|
133
|
+
totalGB: Math.round(totalBytes / 1024 / 1024 / 1024 * 10) / 10,
|
|
134
|
+
usedGB: Math.round(usedBytes / 1024 / 1024 / 1024 * 10) / 10,
|
|
135
|
+
freeGB: Math.round(freeBytes / 1024 / 1024 / 1024 * 10) / 10,
|
|
136
|
+
percentage: Math.round(usedBytes / totalBytes * 100)
|
|
137
|
+
};
|
|
138
|
+
} catch (error) {
|
|
139
|
+
// Fallback for older Node.js versions or unsupported platforms
|
|
140
|
+
return {
|
|
141
|
+
totalGB: 0,
|
|
142
|
+
usedGB: 0,
|
|
143
|
+
freeGB: 0,
|
|
144
|
+
percentage: 0
|
|
145
|
+
};
|
|
146
|
+
}
|
|
176
147
|
}
|
|
177
|
-
|
|
178
148
|
// Get orchestrator metrics from running instance
|
|
179
149
|
async function getOrchestratorMetrics() {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
};
|
|
208
|
-
}
|
|
150
|
+
try {
|
|
151
|
+
// Try to read from metrics file if orchestrator is running
|
|
152
|
+
const metricsPath = path.join(process.cwd(), '.claude-flow', 'metrics.json');
|
|
153
|
+
const metricsData = await fs.readFile(metricsPath, 'utf8');
|
|
154
|
+
const metrics = JSON.parse(metricsData);
|
|
155
|
+
return {
|
|
156
|
+
status: 'running',
|
|
157
|
+
active_agents: metrics.activeAgents || 0,
|
|
158
|
+
queued_tasks: metrics.queuedTasks || 0,
|
|
159
|
+
completed_tasks: metrics.completedTasks || 0,
|
|
160
|
+
failed_tasks: metrics.failedTasks || 0,
|
|
161
|
+
errors: metrics.errors || 0,
|
|
162
|
+
uptime: metrics.uptime || 0
|
|
163
|
+
};
|
|
164
|
+
} catch (error) {
|
|
165
|
+
// Check if orchestrator process is running
|
|
166
|
+
const isRunning = await checkOrchestratorRunning();
|
|
167
|
+
return {
|
|
168
|
+
status: isRunning ? 'running' : 'stopped',
|
|
169
|
+
active_agents: 0,
|
|
170
|
+
queued_tasks: 0,
|
|
171
|
+
completed_tasks: 0,
|
|
172
|
+
failed_tasks: 0,
|
|
173
|
+
errors: 0,
|
|
174
|
+
uptime: 0
|
|
175
|
+
};
|
|
176
|
+
}
|
|
209
177
|
}
|
|
210
|
-
|
|
211
178
|
// Check if orchestrator is running
|
|
212
179
|
async function checkOrchestratorRunning() {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
180
|
+
try {
|
|
181
|
+
const pidPath = path.join(process.cwd(), '.claude-flow', 'orchestrator.pid');
|
|
182
|
+
const pidData = await fs.readFile(pidPath, 'utf8');
|
|
183
|
+
const pid = parseInt(pidData.trim());
|
|
184
|
+
// Check if process is running
|
|
185
|
+
process.kill(pid, 0);
|
|
186
|
+
return true;
|
|
187
|
+
} catch {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
224
190
|
}
|
|
225
|
-
|
|
226
191
|
// Get performance metrics
|
|
227
192
|
function getPerformanceMetrics() {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
};
|
|
193
|
+
const memUsage = process.memoryUsage();
|
|
194
|
+
const cpuUsage = process.cpuUsage();
|
|
195
|
+
return {
|
|
196
|
+
avg_task_duration: 0,
|
|
197
|
+
throughput: 0,
|
|
198
|
+
success_rate: 100,
|
|
199
|
+
memory_heap_used: Math.round(memUsage.heapUsed / 1024 / 1024 * 100) / 100,
|
|
200
|
+
memory_heap_total: Math.round(memUsage.heapTotal / 1024 / 1024 * 100) / 100,
|
|
201
|
+
memory_external: Math.round(memUsage.external / 1024 / 1024 * 100) / 100,
|
|
202
|
+
cpu_user: Math.round(cpuUsage.user / 1000),
|
|
203
|
+
cpu_system: Math.round(cpuUsage.system / 1000)
|
|
204
|
+
};
|
|
241
205
|
}
|
|
242
|
-
|
|
243
206
|
// Get resource metrics
|
|
244
207
|
async function getResourceMetrics() {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
terminal_sessions: 0,
|
|
270
|
-
mcp_connections: 0,
|
|
271
|
-
open_files: 0,
|
|
272
|
-
open_requests: 0,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
208
|
+
try {
|
|
209
|
+
// Count memory entries from memory database if available
|
|
210
|
+
const memoryDbPath = path.join(process.cwd(), '.claude-flow', 'memory.db');
|
|
211
|
+
const memoryExists = await fs.access(memoryDbPath).then(()=>true).catch(()=>false);
|
|
212
|
+
// Count terminal sessions
|
|
213
|
+
const terminalSessions = await countTerminalSessions();
|
|
214
|
+
// Count MCP connections
|
|
215
|
+
const mcpConnections = await countMCPConnections();
|
|
216
|
+
return {
|
|
217
|
+
memory_entries: memoryExists ? 'Available' : 0,
|
|
218
|
+
terminal_sessions: terminalSessions,
|
|
219
|
+
mcp_connections: mcpConnections,
|
|
220
|
+
open_files: process._getActiveHandles ? process._getActiveHandles().length : 0,
|
|
221
|
+
open_requests: process._getActiveRequests ? process._getActiveRequests().length : 0
|
|
222
|
+
};
|
|
223
|
+
} catch (error) {
|
|
224
|
+
return {
|
|
225
|
+
memory_entries: 0,
|
|
226
|
+
terminal_sessions: 0,
|
|
227
|
+
mcp_connections: 0,
|
|
228
|
+
open_files: 0,
|
|
229
|
+
open_requests: 0
|
|
230
|
+
};
|
|
231
|
+
}
|
|
275
232
|
}
|
|
276
|
-
|
|
277
233
|
// Count active terminal sessions
|
|
278
234
|
async function countTerminalSessions() {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
235
|
+
try {
|
|
236
|
+
const sessionsPath = path.join(process.cwd(), '.claude-flow', 'sessions');
|
|
237
|
+
const files = await fs.readdir(sessionsPath);
|
|
238
|
+
return files.filter((f)=>f.endsWith('.json')).length;
|
|
239
|
+
} catch {
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
286
242
|
}
|
|
287
|
-
|
|
288
243
|
// Count MCP connections
|
|
289
244
|
async function countMCPConnections() {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
245
|
+
try {
|
|
246
|
+
const mcpPath = path.join(process.cwd(), '.claude-flow', 'mcp-connections.json');
|
|
247
|
+
const data = await fs.readFile(mcpPath, 'utf8');
|
|
248
|
+
const connections = JSON.parse(data);
|
|
249
|
+
return Array.isArray(connections) ? connections.length : 0;
|
|
250
|
+
} catch {
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
298
253
|
}
|
|
299
|
-
|
|
300
254
|
function displayMetrics(metrics) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
`
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
`
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
` Status: ${getStatusIcon(metrics.orchestrator.status)} ${metrics.orchestrator.status}`,
|
|
326
|
-
);
|
|
327
|
-
if (metrics.orchestrator.status === 'running') {
|
|
328
|
-
console.log(` Active Agents: ${metrics.orchestrator.active_agents}`);
|
|
329
|
-
console.log(` Queued Tasks: ${metrics.orchestrator.queued_tasks}`);
|
|
330
|
-
console.log(` Completed: ${metrics.orchestrator.completed_tasks}`);
|
|
331
|
-
console.log(` Failed: ${metrics.orchestrator.failed_tasks}`);
|
|
332
|
-
console.log(` Errors: ${metrics.orchestrator.errors}`);
|
|
333
|
-
if (metrics.orchestrator.uptime > 0) {
|
|
334
|
-
console.log(
|
|
335
|
-
` Orchestrator Uptime: ${formatUptime(Math.floor(metrics.orchestrator.uptime / 1000))}`,
|
|
336
|
-
);
|
|
255
|
+
const timestamp = new Date(metrics.timestamp).toLocaleTimeString();
|
|
256
|
+
console.log('š System Metrics');
|
|
257
|
+
console.log('================');
|
|
258
|
+
// System metrics
|
|
259
|
+
console.log('\nš„ļø System Resources:');
|
|
260
|
+
console.log(` Platform: ${metrics.system.platform} (${metrics.system.cpu_count} CPUs)`);
|
|
261
|
+
console.log(` Node Version: ${metrics.system.node_version}`);
|
|
262
|
+
console.log(` CPU Usage: ${metrics.system.cpu_usage.toFixed(1)}%`);
|
|
263
|
+
console.log(` Memory: ${metrics.system.memory_usage.toFixed(1)} MB / ${metrics.system.memory_total.toFixed(1)} MB (${metrics.system.memory_percentage}%)`);
|
|
264
|
+
console.log(` Disk Usage: ${metrics.system.disk_used} GB / ${metrics.system.disk_total} GB (${metrics.system.disk_usage}%)`);
|
|
265
|
+
console.log(` Load Average: ${metrics.system.load_average.map((l)=>l.toFixed(2)).join(', ')}`);
|
|
266
|
+
console.log(` Uptime: ${formatUptime(metrics.system.uptime)}`);
|
|
267
|
+
// Orchestrator metrics
|
|
268
|
+
console.log('\nš Orchestrator:');
|
|
269
|
+
console.log(` Status: ${getStatusIcon(metrics.orchestrator.status)} ${metrics.orchestrator.status}`);
|
|
270
|
+
if (metrics.orchestrator.status === 'running') {
|
|
271
|
+
console.log(` Active Agents: ${metrics.orchestrator.active_agents}`);
|
|
272
|
+
console.log(` Queued Tasks: ${metrics.orchestrator.queued_tasks}`);
|
|
273
|
+
console.log(` Completed: ${metrics.orchestrator.completed_tasks}`);
|
|
274
|
+
console.log(` Failed: ${metrics.orchestrator.failed_tasks}`);
|
|
275
|
+
console.log(` Errors: ${metrics.orchestrator.errors}`);
|
|
276
|
+
if (metrics.orchestrator.uptime > 0) {
|
|
277
|
+
console.log(` Orchestrator Uptime: ${formatUptime(Math.floor(metrics.orchestrator.uptime / 1000))}`);
|
|
278
|
+
}
|
|
337
279
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
`
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
console.log(
|
|
351
|
-
console.log(`
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
console.log(` Terminal Sessions: ${metrics.resources.terminal_sessions}`);
|
|
358
|
-
console.log(` MCP Connections: ${metrics.resources.mcp_connections}`);
|
|
359
|
-
console.log(` Open File Handles: ${metrics.resources.open_files}`);
|
|
360
|
-
console.log(` Active Requests: ${metrics.resources.open_requests}`);
|
|
361
|
-
|
|
362
|
-
console.log(`\nā° Last Updated: ${timestamp}`);
|
|
280
|
+
// Performance metrics
|
|
281
|
+
console.log('\nā” Performance:');
|
|
282
|
+
console.log(` Process Memory (Heap): ${metrics.performance.memory_heap_used.toFixed(1)} MB / ${metrics.performance.memory_heap_total.toFixed(1)} MB`);
|
|
283
|
+
console.log(` External Memory: ${metrics.performance.memory_external.toFixed(1)} MB`);
|
|
284
|
+
console.log(` CPU Time (User): ${metrics.performance.cpu_user}ms`);
|
|
285
|
+
console.log(` CPU Time (System): ${metrics.performance.cpu_system}ms`);
|
|
286
|
+
if (metrics.performance.avg_task_duration > 0) {
|
|
287
|
+
console.log(` Avg Task Duration: ${metrics.performance.avg_task_duration.toFixed(0)}ms`);
|
|
288
|
+
console.log(` Throughput: ${metrics.performance.throughput.toFixed(1)} tasks/min`);
|
|
289
|
+
console.log(` Success Rate: ${metrics.performance.success_rate.toFixed(1)}%`);
|
|
290
|
+
}
|
|
291
|
+
// Resource utilization
|
|
292
|
+
console.log('\nš¦ Resources:');
|
|
293
|
+
console.log(` Memory Entries: ${metrics.resources.memory_entries}`);
|
|
294
|
+
console.log(` Terminal Sessions: ${metrics.resources.terminal_sessions}`);
|
|
295
|
+
console.log(` MCP Connections: ${metrics.resources.mcp_connections}`);
|
|
296
|
+
console.log(` Open File Handles: ${metrics.resources.open_files}`);
|
|
297
|
+
console.log(` Active Requests: ${metrics.resources.open_requests}`);
|
|
298
|
+
console.log(`\nā° Last Updated: ${timestamp}`);
|
|
363
299
|
}
|
|
364
|
-
|
|
365
300
|
function getStatusIcon(status) {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
301
|
+
switch(status){
|
|
302
|
+
case 'running':
|
|
303
|
+
return 'š¢';
|
|
304
|
+
case 'stopped':
|
|
305
|
+
return 'š“';
|
|
306
|
+
case 'starting':
|
|
307
|
+
return 'š”';
|
|
308
|
+
case 'error':
|
|
309
|
+
return 'ā';
|
|
310
|
+
default:
|
|
311
|
+
return 'āŖ';
|
|
312
|
+
}
|
|
378
313
|
}
|
|
379
|
-
|
|
380
314
|
function formatUptime(seconds) {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
}
|
|
315
|
+
const days = Math.floor(seconds / 86400);
|
|
316
|
+
const hours = Math.floor(seconds % 86400 / 3600);
|
|
317
|
+
const minutes = Math.floor(seconds % 3600 / 60);
|
|
318
|
+
const secs = seconds % 60;
|
|
319
|
+
if (days > 0) {
|
|
320
|
+
return `${days}d ${hours}h ${minutes}m`;
|
|
321
|
+
} else if (hours > 0) {
|
|
322
|
+
return `${hours}h ${minutes}m ${secs}s`;
|
|
323
|
+
} else if (minutes > 0) {
|
|
324
|
+
return `${minutes}m ${secs}s`;
|
|
325
|
+
} else {
|
|
326
|
+
return `${secs}s`;
|
|
327
|
+
}
|
|
395
328
|
}
|
|
396
|
-
|
|
397
329
|
function getFlag(args, flagName) {
|
|
398
|
-
|
|
399
|
-
|
|
330
|
+
const index = args.indexOf(flagName);
|
|
331
|
+
return index !== -1 && index + 1 < args.length ? args[index + 1] : null;
|
|
400
332
|
}
|
|
401
|
-
|
|
402
333
|
export function showMonitorHelp() {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
334
|
+
console.log('Monitor commands:');
|
|
335
|
+
console.log(' monitor [options] Show current system metrics');
|
|
336
|
+
console.log(' monitor --watch Continuous monitoring mode');
|
|
337
|
+
console.log();
|
|
338
|
+
console.log('Options:');
|
|
339
|
+
console.log(' --interval <ms> Update interval in milliseconds (default: 5000)');
|
|
340
|
+
console.log(' --format <type> Output format: pretty, json (default: pretty)');
|
|
341
|
+
console.log(' --watch Continuous monitoring mode');
|
|
342
|
+
console.log();
|
|
343
|
+
console.log('Examples:');
|
|
344
|
+
console.log(' claude-flow-novice monitor # Show current metrics');
|
|
345
|
+
console.log(' claude-flow-novice monitor --watch # Continuous monitoring');
|
|
346
|
+
console.log(' claude-flow-novice monitor --interval 1000 --watch # Fast updates');
|
|
347
|
+
console.log(' claude-flow-novice monitor --format json # JSON output');
|
|
417
348
|
}
|