claude-flow-novice 1.3.0 → 1.3.2
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-flow-novice/preferences/generation.json +147 -0
- package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
- package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
- package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
- package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
- package/.claude-flow-novice/preferences/project-local.json +91 -0
- package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
- package/.claude-flow-novice/preferences/team-shared.json +195 -0
- package/.claude-flow-novice/preferences/user-global.json +247 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
- package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
- package/CLAUDE.md +81 -0
- package/README-NPM.md +0 -0
- package/package.json +11 -7
- package/scripts/build/README.md +167 -0
- package/scripts/build/build-config.js +27 -0
- package/scripts/build/build-prompt-copier.sh +30 -0
- package/scripts/build/performance-monitor.js +869 -0
- package/scripts/build/prepare-publish.js +150 -0
- package/scripts/build/typescript-fixer.js +621 -0
- package/scripts/build/unified-builder.sh +428 -0
- package/scripts/build/update-bin-version.js +32 -0
- package/scripts/dev/README.md +264 -0
- package/scripts/dev/claude-flow-wrapper.sh +35 -0
- package/scripts/dev/claude-monitor.py +419 -0
- package/scripts/dev/claude-sparc.sh +562 -0
- package/scripts/dev/claude-wrapper.sh +17 -0
- package/scripts/dev/demo-phase3-compliance.js +172 -0
- package/scripts/dev/demo-task-system.ts +224 -0
- package/scripts/dev/deployment-validator.js +315 -0
- package/scripts/dev/spawn-claude-terminal.sh +32 -0
- package/scripts/dev/start-portal.sh +506 -0
- package/scripts/dev/start-web-ui.js +15 -0
- package/scripts/dev/stop-portal.sh +311 -0
- package/scripts/dev/validate-examples.ts +288 -0
- package/scripts/dev/validate-phase2.cjs +451 -0
- package/scripts/dev/validate-phase2.js +785 -0
- package/scripts/dev/validate-phase3.cjs +208 -0
- package/scripts/dev/validate-security-remediation.js +1 -0
- package/scripts/legacy/README.md +272 -0
- package/scripts/legacy/batch-fix-ts.sh +54 -0
- package/scripts/legacy/build-migration.sh +105 -0
- package/scripts/legacy/build-monitor.js +209 -0
- package/scripts/legacy/build-with-filter.sh +84 -0
- package/scripts/legacy/build-workaround.sh +71 -0
- package/scripts/legacy/fix-ts-advanced.js +358 -0
- package/scripts/legacy/fix-ts-final.sh +50 -0
- package/scripts/legacy/fix-ts-targeted.sh +49 -0
- package/scripts/legacy/fix-typescript-errors.js +305 -0
- package/scripts/legacy/force-build.sh +63 -0
- package/scripts/legacy/optimize-performance.js +400 -0
- package/scripts/legacy/performance-monitor.js +263 -0
- package/scripts/legacy/performance-monitoring.js +532 -0
- package/scripts/legacy/performance-test-runner.js +645 -0
- package/scripts/legacy/quick-fix-ts.js +281 -0
- package/scripts/legacy/safe-build.sh +63 -0
- package/scripts/migration/README.md +434 -0
- package/scripts/migration/install-arm64.js +78 -0
- package/scripts/migration/install.js +83 -0
- package/scripts/migration/migrate-hooks.js +173 -0
- package/scripts/migration/migration-examples.ts +318 -0
- package/scripts/optimization/build-optimizer.js +438 -0
- package/scripts/optimization/config-validator.js +761 -0
- package/scripts/optimization/test-optimization.js +432 -0
- package/scripts/optimization/unified-activation.js +839 -0
- package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
- package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
- package/scripts/performance/test-enhanced-backend.sh +504 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/coverage-report.ts +692 -0
- package/scripts/test/generate-swarm-tests.js +633 -0
- package/scripts/test/integration-test-validation.cjs +253 -0
- package/scripts/test/load-test-swarm.js +576 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/test-batch-tasks.ts +29 -0
- package/scripts/test/test-byzantine-resolution.js +246 -0
- package/scripts/test/test-claude-spawn-options.sh +63 -0
- package/scripts/test/test-cli-wizard.js +331 -0
- package/scripts/test/test-comprehensive.js +401 -0
- package/scripts/test/test-coordination-features.ts +238 -0
- package/scripts/test/test-fallback-systems.js +276 -0
- package/scripts/test/test-init-command.ts +302 -0
- package/scripts/test/test-mcp.ts +251 -0
- package/scripts/test/test-runner.ts +568 -0
- package/scripts/test/test-swarm-integration.sh +92 -0
- package/scripts/test/test-swarm.ts +142 -0
- package/scripts/test/validation-summary.ts +408 -0
- package/scripts/utils/README.md +261 -0
- package/scripts/utils/clean-build-artifacts.sh +94 -0
- package/scripts/utils/cleanup-root.sh +69 -0
- package/scripts/utils/fix-cliffy-imports.js +307 -0
- package/scripts/utils/fix-duplicate-imports.js +114 -0
- package/scripts/utils/fix-error-handling.cjs +70 -0
- package/scripts/utils/fix-import-paths.js +104 -0
- package/scripts/utils/fix-imports.js +116 -0
- package/scripts/utils/fix-shebang.js +78 -0
- package/scripts/utils/fix-test-modules.js +27 -0
- package/scripts/utils/fix-timezone-issue-246.js +200 -0
- package/scripts/utils/fix-ts-comprehensive.py +182 -0
- package/scripts/utils/fix-ts-targeted-batch.js +250 -0
- package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
- package/scripts/utils/simple-test-fixer.js +190 -0
- package/scripts/utils/validate-metrics-structure.cjs +144 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
- package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
- package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
- package/src/cli/simple-commands/__tests__/task.test.js +8 -0
- package/src/cli/simple-commands/agent.js +216 -0
- package/src/cli/simple-commands/analysis.js +570 -0
- package/src/cli/simple-commands/automation-executor.js +1603 -0
- package/src/cli/simple-commands/automation.js +627 -0
- package/src/cli/simple-commands/batch-manager.js +338 -0
- package/src/cli/simple-commands/claude-telemetry.js +311 -0
- package/src/cli/simple-commands/claude-track.js +102 -0
- package/src/cli/simple-commands/concurrent-display.js +348 -0
- package/src/cli/simple-commands/config.js +319 -0
- package/src/cli/simple-commands/coordination.js +307 -0
- package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
- package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
- package/src/cli/simple-commands/fix-hook-variables.js +363 -0
- package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
- package/src/cli/simple-commands/github/github-api.js +624 -0
- package/src/cli/simple-commands/github/init.js +543 -0
- package/src/cli/simple-commands/github.js +377 -0
- package/src/cli/simple-commands/goal.js +145 -0
- package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
- package/src/cli/simple-commands/hive-mind/communication.js +740 -0
- package/src/cli/simple-commands/hive-mind/core.js +1031 -0
- package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
- package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
- package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
- package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
- package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
- package/src/cli/simple-commands/hive-mind/queen.js +809 -0
- package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
- package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
- package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
- package/src/cli/simple-commands/hive-mind.js +3112 -0
- package/src/cli/simple-commands/hive.js +140 -0
- package/src/cli/simple-commands/hook-safety.js +671 -0
- package/src/cli/simple-commands/hooks.js +1268 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
- package/src/cli/simple-commands/init/README.md +106 -0
- package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
- package/src/cli/simple-commands/init/agent-copier.js +347 -0
- package/src/cli/simple-commands/init/batch-init.js +663 -0
- package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
- package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
- package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
- package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
- package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
- package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
- package/src/cli/simple-commands/init/help.js +110 -0
- package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
- package/src/cli/simple-commands/init/index.js +1953 -0
- package/src/cli/simple-commands/init/performance-monitor.js +344 -0
- package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
- package/src/cli/simple-commands/init/rollback/index.js +399 -0
- package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
- package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
- package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
- package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
- package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
- package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
- package/src/cli/simple-commands/init/sparc-structure.js +68 -0
- package/src/cli/simple-commands/init/template-copier.js +640 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
- package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
- package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
- package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
- package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
- package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
- package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
- package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
- package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
- package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
- package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
- package/src/cli/simple-commands/init/templates/coordination.md +16 -0
- package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
- package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
- package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
- package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
- package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
- package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
- package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
- package/src/cli/simple-commands/init/templates/settings.json +109 -0
- package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
- package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
- package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
- package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
- package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
- package/src/cli/simple-commands/init/validation/index.js +388 -0
- package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
- package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
- package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
- package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
- package/src/cli/simple-commands/init.js +4 -0
- package/src/cli/simple-commands/mcp-health.js +163 -0
- package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
- package/src/cli/simple-commands/mcp.js +420 -0
- package/src/cli/simple-commands/memory-consolidation.js +631 -0
- package/src/cli/simple-commands/memory.js +345 -0
- package/src/cli/simple-commands/migrate-hooks.js +63 -0
- package/src/cli/simple-commands/monitor.js +417 -0
- package/src/cli/simple-commands/neural.js +148 -0
- package/src/cli/simple-commands/pair-autofix-only.js +755 -0
- package/src/cli/simple-commands/pair-basic.js +751 -0
- package/src/cli/simple-commands/pair-old.js +623 -0
- package/src/cli/simple-commands/pair-working.js +849 -0
- package/src/cli/simple-commands/pair.js +849 -0
- package/src/cli/simple-commands/performance-hooks.js +149 -0
- package/src/cli/simple-commands/performance-metrics.js +601 -0
- package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
- package/src/cli/simple-commands/process-ui.js +274 -0
- package/src/cli/simple-commands/realtime-update-system.js +659 -0
- package/src/cli/simple-commands/sparc/architecture.js +1750 -0
- package/src/cli/simple-commands/sparc/commands.js +575 -0
- package/src/cli/simple-commands/sparc/completion.js +1831 -0
- package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
- package/src/cli/simple-commands/sparc/index.js +321 -0
- package/src/cli/simple-commands/sparc/phase-base.js +430 -0
- package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
- package/src/cli/simple-commands/sparc/refinement.js +1856 -0
- package/src/cli/simple-commands/sparc/specification.js +736 -0
- package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
- package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
- package/src/cli/simple-commands/sparc-modes/code.js +148 -0
- package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
- package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
- package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
- package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
- package/src/cli/simple-commands/sparc-modes/index.js +201 -0
- package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
- package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
- package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
- package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
- package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
- package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
- package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
- package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
- package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
- package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
- package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
- package/src/cli/simple-commands/sparc.js +530 -0
- package/src/cli/simple-commands/start-ui.js +147 -0
- package/src/cli/simple-commands/start-wrapper.js +285 -0
- package/src/cli/simple-commands/start.js +2 -0
- package/src/cli/simple-commands/status.js +303 -0
- package/src/cli/simple-commands/stream-chain-clean.js +221 -0
- package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
- package/src/cli/simple-commands/stream-chain-real.js +408 -0
- package/src/cli/simple-commands/stream-chain-working.js +323 -0
- package/src/cli/simple-commands/stream-chain.js +491 -0
- package/src/cli/simple-commands/stream-processor.js +340 -0
- package/src/cli/simple-commands/swarm-executor.js +253 -0
- package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
- package/src/cli/simple-commands/swarm-ui.js +741 -0
- package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
- package/src/cli/simple-commands/swarm.js +2277 -0
- package/src/cli/simple-commands/task.js +228 -0
- package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
- package/src/cli/simple-commands/timestamp-fix.js +104 -0
- package/src/cli/simple-commands/token-tracker.js +372 -0
- package/src/cli/simple-commands/tool-execution-framework.js +555 -0
- package/src/cli/simple-commands/train-and-stream.js +354 -0
- package/src/cli/simple-commands/training-pipeline.js +874 -0
- package/src/cli/simple-commands/training.js +288 -0
- package/src/cli/simple-commands/verification-hooks.js +336 -0
- package/src/cli/simple-commands/verification-integration.js +464 -0
- package/src/cli/simple-commands/verification-training-integration.js +646 -0
- package/src/cli/simple-commands/verification.js +551 -0
- package/src/cli/simple-commands/web-server.js +929 -0
- package/src/cli/simple-commands/webui-validator.js +136 -0
- package/src/language/README.md +503 -0
- package/src/language/claude-md-generator.js +618 -0
- package/src/language/cli.js +422 -0
- package/src/language/example.js +347 -0
- package/src/language/integration-system.js +619 -0
- package/src/language/language-detector.js +581 -0
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
// health-checker.js - System health checks for SPARC initialization
|
|
3
|
+
|
|
4
|
+
export class HealthChecker {
|
|
5
|
+
constructor(workingDir) {
|
|
6
|
+
this.workingDir = workingDir;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Check SPARC mode availability
|
|
11
|
+
*/
|
|
12
|
+
async checkModeAvailability() {
|
|
13
|
+
const result = {
|
|
14
|
+
success: true,
|
|
15
|
+
errors: [],
|
|
16
|
+
warnings: [],
|
|
17
|
+
modes: {
|
|
18
|
+
total: 0,
|
|
19
|
+
available: 0,
|
|
20
|
+
unavailable: [],
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
// Get expected modes
|
|
26
|
+
const expectedModes = [
|
|
27
|
+
'architect',
|
|
28
|
+
'code',
|
|
29
|
+
'tdd',
|
|
30
|
+
'spec-pseudocode',
|
|
31
|
+
'integration',
|
|
32
|
+
'debug',
|
|
33
|
+
'security-review',
|
|
34
|
+
'refinement-optimization-mode',
|
|
35
|
+
'docs-writer',
|
|
36
|
+
'devops',
|
|
37
|
+
'mcp',
|
|
38
|
+
'swarm',
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
result.modes.total = expectedModes.length;
|
|
42
|
+
|
|
43
|
+
// Check each mode
|
|
44
|
+
for (const mode of expectedModes) {
|
|
45
|
+
const isAvailable = await this.checkSingleModeAvailability(mode);
|
|
46
|
+
if (isAvailable) {
|
|
47
|
+
result.modes.available++;
|
|
48
|
+
} else {
|
|
49
|
+
result.modes.unavailable.push(mode);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Determine overall success
|
|
54
|
+
if (result.modes.available === 0) {
|
|
55
|
+
result.success = false;
|
|
56
|
+
result.errors.push('No SPARC modes are available');
|
|
57
|
+
} else if (result.modes.unavailable.length > 0) {
|
|
58
|
+
result.warnings.push(
|
|
59
|
+
`${result.modes.unavailable.length} modes unavailable: ${result.modes.unavailable.join(', ')}`,
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
} catch (error) {
|
|
63
|
+
result.success = false;
|
|
64
|
+
result.errors.push(`Mode availability check failed: ${error.message}`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Check template integrity
|
|
72
|
+
*/
|
|
73
|
+
async checkTemplateIntegrity() {
|
|
74
|
+
const result = {
|
|
75
|
+
success: true,
|
|
76
|
+
errors: [],
|
|
77
|
+
warnings: [],
|
|
78
|
+
templates: {
|
|
79
|
+
found: [],
|
|
80
|
+
missing: [],
|
|
81
|
+
corrupted: [],
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
// Check for template directories
|
|
87
|
+
const templateDirs = ['.roo/templates', '.claude/commands'];
|
|
88
|
+
|
|
89
|
+
for (const dir of templateDirs) {
|
|
90
|
+
const dirPath = `${this.workingDir}/${dir}`;
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const stat = await Deno.stat(dirPath);
|
|
94
|
+
if (stat.isDirectory) {
|
|
95
|
+
const templateCheck = await this.checkTemplateDirectory(dirPath);
|
|
96
|
+
result.templates.found.push(...templateCheck.found);
|
|
97
|
+
result.templates.missing.push(...templateCheck.missing);
|
|
98
|
+
result.templates.corrupted.push(...templateCheck.corrupted);
|
|
99
|
+
}
|
|
100
|
+
} catch {
|
|
101
|
+
result.templates.missing.push(dir);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Check core template files
|
|
106
|
+
const coreTemplates = ['CLAUDE.md', 'memory-bank.md', 'coordination.md'];
|
|
107
|
+
|
|
108
|
+
for (const template of coreTemplates) {
|
|
109
|
+
const templatePath = `${this.workingDir}/${template}`;
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const content = await fs.readFile(templatePath, 'utf8');
|
|
113
|
+
if (content.length < 50) {
|
|
114
|
+
result.templates.corrupted.push(template);
|
|
115
|
+
} else {
|
|
116
|
+
result.templates.found.push(template);
|
|
117
|
+
}
|
|
118
|
+
} catch {
|
|
119
|
+
result.templates.missing.push(template);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Assess results
|
|
124
|
+
if (result.templates.corrupted.length > 0) {
|
|
125
|
+
result.success = false;
|
|
126
|
+
result.errors.push(`Corrupted templates: ${result.templates.corrupted.join(', ')}`);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (result.templates.missing.length > 0) {
|
|
130
|
+
result.warnings.push(`Missing templates: ${result.templates.missing.join(', ')}`);
|
|
131
|
+
}
|
|
132
|
+
} catch (error) {
|
|
133
|
+
result.success = false;
|
|
134
|
+
result.errors.push(`Template integrity check failed: ${error.message}`);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Check configuration consistency
|
|
142
|
+
*/
|
|
143
|
+
async checkConfigConsistency() {
|
|
144
|
+
const result = {
|
|
145
|
+
success: true,
|
|
146
|
+
errors: [],
|
|
147
|
+
warnings: [],
|
|
148
|
+
consistency: {},
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
try {
|
|
152
|
+
// Check consistency between .roomodes and available commands
|
|
153
|
+
const roomodesCheck = await this.checkRoomodesConsistency();
|
|
154
|
+
result.consistency.roomodes = roomodesCheck;
|
|
155
|
+
if (!roomodesCheck.consistent) {
|
|
156
|
+
result.warnings.push('Inconsistency between .roomodes and available commands');
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Check consistency between CLAUDE.md and actual setup
|
|
160
|
+
const claudeCheck = await this.checkClaudeConfigConsistency();
|
|
161
|
+
result.consistency.claude = claudeCheck;
|
|
162
|
+
if (!claudeCheck.consistent) {
|
|
163
|
+
result.warnings.push('Inconsistency between CLAUDE.md and actual setup');
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Check memory configuration consistency
|
|
167
|
+
const memoryCheck = await this.checkMemoryConsistency();
|
|
168
|
+
result.consistency.memory = memoryCheck;
|
|
169
|
+
if (!memoryCheck.consistent) {
|
|
170
|
+
result.warnings.push('Memory configuration inconsistency detected');
|
|
171
|
+
}
|
|
172
|
+
} catch (error) {
|
|
173
|
+
result.success = false;
|
|
174
|
+
result.errors.push(`Configuration consistency check failed: ${error.message}`);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Check system resources
|
|
182
|
+
*/
|
|
183
|
+
async checkSystemResources() {
|
|
184
|
+
const result = {
|
|
185
|
+
success: true,
|
|
186
|
+
errors: [],
|
|
187
|
+
warnings: [],
|
|
188
|
+
resources: {},
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
try {
|
|
192
|
+
// Check disk space
|
|
193
|
+
const diskCheck = await this.checkDiskSpace();
|
|
194
|
+
result.resources.disk = diskCheck;
|
|
195
|
+
if (!diskCheck.adequate) {
|
|
196
|
+
result.warnings.push('Low disk space detected');
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Check memory usage
|
|
200
|
+
const memoryCheck = await this.checkMemoryUsage();
|
|
201
|
+
result.resources.memory = memoryCheck;
|
|
202
|
+
if (!memoryCheck.adequate) {
|
|
203
|
+
result.warnings.push('High memory usage detected');
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Check file descriptors
|
|
207
|
+
const fdCheck = await this.checkFileDescriptors();
|
|
208
|
+
result.resources.fileDescriptors = fdCheck;
|
|
209
|
+
if (!fdCheck.adequate) {
|
|
210
|
+
result.warnings.push('Many open file descriptors');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Check process limits
|
|
214
|
+
const processCheck = await this.checkProcessLimits();
|
|
215
|
+
result.resources.processes = processCheck;
|
|
216
|
+
if (!processCheck.adequate) {
|
|
217
|
+
result.warnings.push('Process limits may affect operation');
|
|
218
|
+
}
|
|
219
|
+
} catch (error) {
|
|
220
|
+
result.warnings.push(`System resource check failed: ${error.message}`);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Run comprehensive health diagnostics
|
|
228
|
+
*/
|
|
229
|
+
async runDiagnostics() {
|
|
230
|
+
const result = {
|
|
231
|
+
success: true,
|
|
232
|
+
errors: [],
|
|
233
|
+
warnings: [],
|
|
234
|
+
diagnostics: {},
|
|
235
|
+
timestamp: new Date().toISOString(),
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
try {
|
|
239
|
+
// File system health
|
|
240
|
+
const fsHealth = await this.checkFileSystemHealth();
|
|
241
|
+
result.diagnostics.filesystem = fsHealth;
|
|
242
|
+
if (!fsHealth.healthy) {
|
|
243
|
+
result.success = false;
|
|
244
|
+
result.errors.push(...fsHealth.errors);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Process health
|
|
248
|
+
const processHealth = await this.checkProcessHealth();
|
|
249
|
+
result.diagnostics.processes = processHealth;
|
|
250
|
+
if (!processHealth.healthy) {
|
|
251
|
+
result.warnings.push(...processHealth.warnings);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Network health (for external dependencies)
|
|
255
|
+
const networkHealth = await this.checkNetworkHealth();
|
|
256
|
+
result.diagnostics.network = networkHealth;
|
|
257
|
+
if (!networkHealth.healthy) {
|
|
258
|
+
result.warnings.push(...networkHealth.warnings);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Integration health
|
|
262
|
+
const integrationHealth = await this.checkIntegrationHealth();
|
|
263
|
+
result.diagnostics.integration = integrationHealth;
|
|
264
|
+
if (!integrationHealth.healthy) {
|
|
265
|
+
result.warnings.push(...integrationHealth.warnings);
|
|
266
|
+
}
|
|
267
|
+
} catch (error) {
|
|
268
|
+
result.success = false;
|
|
269
|
+
result.errors.push(`Health diagnostics failed: ${error.message}`);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return result;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Helper methods
|
|
276
|
+
|
|
277
|
+
async checkSingleModeAvailability(mode) {
|
|
278
|
+
try {
|
|
279
|
+
// Check if mode exists in .roomodes
|
|
280
|
+
const roomodesPath = `${this.workingDir}/.roomodes`;
|
|
281
|
+
const content = await fs.readFile(roomodesPath, 'utf8');
|
|
282
|
+
const config = JSON.parse(content);
|
|
283
|
+
|
|
284
|
+
return !!(config.modes && config.modes[mode]);
|
|
285
|
+
} catch {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
async checkTemplateDirectory(dirPath) {
|
|
291
|
+
const result = {
|
|
292
|
+
found: [],
|
|
293
|
+
missing: [],
|
|
294
|
+
corrupted: [],
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
try {
|
|
298
|
+
for await (const entry of Deno.readDir(dirPath)) {
|
|
299
|
+
if (entry.isFile) {
|
|
300
|
+
const filePath = `${dirPath}/${entry.name}`;
|
|
301
|
+
|
|
302
|
+
try {
|
|
303
|
+
const stat = await Deno.stat(filePath);
|
|
304
|
+
if (stat.size === 0) {
|
|
305
|
+
result.corrupted.push(entry.name);
|
|
306
|
+
} else {
|
|
307
|
+
result.found.push(entry.name);
|
|
308
|
+
}
|
|
309
|
+
} catch {
|
|
310
|
+
result.corrupted.push(entry.name);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
} catch {
|
|
315
|
+
// Directory not accessible
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
return result;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
async checkRoomodesConsistency() {
|
|
322
|
+
const result = {
|
|
323
|
+
consistent: true,
|
|
324
|
+
issues: [],
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
try {
|
|
328
|
+
// Compare .roomodes with slash commands
|
|
329
|
+
const roomodesPath = `${this.workingDir}/.roomodes`;
|
|
330
|
+
const content = await fs.readFile(roomodesPath, 'utf8');
|
|
331
|
+
const config = JSON.parse(content);
|
|
332
|
+
|
|
333
|
+
if (config.modes) {
|
|
334
|
+
const commandsDir = `${this.workingDir}/.claude/commands`;
|
|
335
|
+
|
|
336
|
+
try {
|
|
337
|
+
const commandFiles = [];
|
|
338
|
+
for await (const entry of Deno.readDir(commandsDir)) {
|
|
339
|
+
if (entry.isFile && entry.name.endsWith('.js')) {
|
|
340
|
+
commandFiles.push(entry.name.replace('.js', ''));
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
const modeNames = Object.keys(config.modes);
|
|
345
|
+
for (const mode of modeNames) {
|
|
346
|
+
if (!commandFiles.some((cmd) => cmd.includes(mode))) {
|
|
347
|
+
result.consistent = false;
|
|
348
|
+
result.issues.push(`Mode ${mode} has no corresponding command`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
} catch {
|
|
352
|
+
result.consistent = false;
|
|
353
|
+
result.issues.push('Cannot access commands directory');
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
} catch {
|
|
357
|
+
result.consistent = false;
|
|
358
|
+
result.issues.push('Cannot read .roomodes file');
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return result;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
async checkClaudeConfigConsistency() {
|
|
365
|
+
const result = {
|
|
366
|
+
consistent: true,
|
|
367
|
+
issues: [],
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
try {
|
|
371
|
+
const claudePath = `${this.workingDir}/CLAUDE.md`;
|
|
372
|
+
const content = await fs.readFile(claudePath, 'utf8');
|
|
373
|
+
|
|
374
|
+
// Check if mentioned commands exist
|
|
375
|
+
const mentionedCommands = ['claude-flow sparc', 'npm run build', 'npm run test'];
|
|
376
|
+
|
|
377
|
+
for (const command of mentionedCommands) {
|
|
378
|
+
if (content.includes(command)) {
|
|
379
|
+
// Check if the command is actually available
|
|
380
|
+
const parts = command.split(' ');
|
|
381
|
+
if (parts[0] === 'claude-flow') {
|
|
382
|
+
const executablePath = `${this.workingDir}/claude-flow`;
|
|
383
|
+
try {
|
|
384
|
+
await Deno.stat(executablePath);
|
|
385
|
+
} catch {
|
|
386
|
+
result.consistent = false;
|
|
387
|
+
result.issues.push(`Command ${command} mentioned but executable not found`);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
} catch {
|
|
393
|
+
result.consistent = false;
|
|
394
|
+
result.issues.push('Cannot read CLAUDE.md');
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
return result;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
async checkMemoryConsistency() {
|
|
401
|
+
const result = {
|
|
402
|
+
consistent: true,
|
|
403
|
+
issues: [],
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
try {
|
|
407
|
+
// Check if memory structure matches documentation
|
|
408
|
+
const memoryDataPath = `${this.workingDir}/memory/claude-flow-data.json`;
|
|
409
|
+
const data = JSON.parse(await fs.readFile(memoryDataPath, 'utf8'));
|
|
410
|
+
|
|
411
|
+
// Basic structure validation
|
|
412
|
+
if (!data.agents || !data.tasks) {
|
|
413
|
+
result.consistent = false;
|
|
414
|
+
result.issues.push('Memory data structure incomplete');
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// Check directory structure
|
|
418
|
+
const expectedDirs = ['agents', 'sessions'];
|
|
419
|
+
for (const dir of expectedDirs) {
|
|
420
|
+
try {
|
|
421
|
+
await Deno.stat(`${this.workingDir}/memory/${dir}`);
|
|
422
|
+
} catch {
|
|
423
|
+
result.consistent = false;
|
|
424
|
+
result.issues.push(`Memory directory missing: ${dir}`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
} catch {
|
|
428
|
+
result.consistent = false;
|
|
429
|
+
result.issues.push('Cannot validate memory structure');
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
return result;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
async checkDiskSpace() {
|
|
436
|
+
const result = {
|
|
437
|
+
adequate: true,
|
|
438
|
+
available: 0,
|
|
439
|
+
used: 0,
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
try {
|
|
443
|
+
const command = new Deno.Command('df', {
|
|
444
|
+
args: ['-k', this.workingDir],
|
|
445
|
+
stdout: 'piped',
|
|
446
|
+
});
|
|
447
|
+
|
|
448
|
+
const { stdout, success } = await command.output();
|
|
449
|
+
|
|
450
|
+
if (success) {
|
|
451
|
+
const output = new TextDecoder().decode(stdout);
|
|
452
|
+
const lines = output.trim().split('\n');
|
|
453
|
+
|
|
454
|
+
if (lines.length >= 2) {
|
|
455
|
+
const parts = lines[1].split(/\s+/);
|
|
456
|
+
if (parts.length >= 4) {
|
|
457
|
+
result.available = parseInt(parts[3]) / 1024; // MB
|
|
458
|
+
result.used = parseInt(parts[2]) / 1024; // MB
|
|
459
|
+
result.adequate = result.available > 100; // At least 100MB
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
} catch {
|
|
464
|
+
// Can't check - assume adequate
|
|
465
|
+
result.adequate = true;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
return result;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
async checkMemoryUsage() {
|
|
472
|
+
const result = {
|
|
473
|
+
adequate: true,
|
|
474
|
+
available: 0,
|
|
475
|
+
used: 0,
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
try {
|
|
479
|
+
// This is a simplified check - could be enhanced
|
|
480
|
+
const command = new Deno.Command('free', {
|
|
481
|
+
args: ['-m'],
|
|
482
|
+
stdout: 'piped',
|
|
483
|
+
});
|
|
484
|
+
|
|
485
|
+
const { stdout, success } = await command.output();
|
|
486
|
+
|
|
487
|
+
if (success) {
|
|
488
|
+
const output = new TextDecoder().decode(stdout);
|
|
489
|
+
const lines = output.trim().split('\n');
|
|
490
|
+
|
|
491
|
+
for (const line of lines) {
|
|
492
|
+
if (line.startsWith('Mem:')) {
|
|
493
|
+
const parts = line.split(/\s+/);
|
|
494
|
+
if (parts.length >= 3) {
|
|
495
|
+
result.available = parseInt(parts[6] || parts[3]); // Available
|
|
496
|
+
result.used = parseInt(parts[2]); // Used
|
|
497
|
+
result.adequate = result.available > 100; // At least 100MB
|
|
498
|
+
}
|
|
499
|
+
break;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
} catch {
|
|
504
|
+
// Can't check - assume adequate
|
|
505
|
+
result.adequate = true;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
return result;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
async checkFileDescriptors() {
|
|
512
|
+
const result = {
|
|
513
|
+
adequate: true,
|
|
514
|
+
open: 0,
|
|
515
|
+
limit: 0,
|
|
516
|
+
};
|
|
517
|
+
|
|
518
|
+
try {
|
|
519
|
+
// Check current process file descriptors
|
|
520
|
+
const command = new Deno.Command('sh', {
|
|
521
|
+
args: ['-c', 'lsof -p $$ | wc -l'],
|
|
522
|
+
stdout: 'piped',
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
const { stdout, success } = await command.output();
|
|
526
|
+
|
|
527
|
+
if (success) {
|
|
528
|
+
const count = parseInt(new TextDecoder().decode(stdout).trim());
|
|
529
|
+
result.open = count;
|
|
530
|
+
result.adequate = count < 100; // Arbitrary threshold
|
|
531
|
+
}
|
|
532
|
+
} catch {
|
|
533
|
+
// Can't check - assume adequate
|
|
534
|
+
result.adequate = true;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
return result;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
async checkProcessLimits() {
|
|
541
|
+
const result = {
|
|
542
|
+
adequate: true,
|
|
543
|
+
limits: {},
|
|
544
|
+
};
|
|
545
|
+
|
|
546
|
+
try {
|
|
547
|
+
const command = new Deno.Command('ulimit', {
|
|
548
|
+
args: ['-a'],
|
|
549
|
+
stdout: 'piped',
|
|
550
|
+
});
|
|
551
|
+
|
|
552
|
+
const { stdout, success } = await command.output();
|
|
553
|
+
|
|
554
|
+
if (success) {
|
|
555
|
+
const output = new TextDecoder().decode(stdout);
|
|
556
|
+
// Parse ulimit output for important limits
|
|
557
|
+
result.adequate = !output.includes('0'); // Very basic check
|
|
558
|
+
}
|
|
559
|
+
} catch {
|
|
560
|
+
// Can't check - assume adequate
|
|
561
|
+
result.adequate = true;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
return result;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
async checkFileSystemHealth() {
|
|
568
|
+
return {
|
|
569
|
+
healthy: true,
|
|
570
|
+
errors: [],
|
|
571
|
+
readWrite: true,
|
|
572
|
+
permissions: true,
|
|
573
|
+
};
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
async checkProcessHealth() {
|
|
577
|
+
return {
|
|
578
|
+
healthy: true,
|
|
579
|
+
warnings: [],
|
|
580
|
+
processes: [],
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
async checkNetworkHealth() {
|
|
585
|
+
return {
|
|
586
|
+
healthy: true,
|
|
587
|
+
warnings: [],
|
|
588
|
+
connectivity: true,
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
async checkIntegrationHealth() {
|
|
593
|
+
return {
|
|
594
|
+
healthy: true,
|
|
595
|
+
warnings: [],
|
|
596
|
+
integrations: {},
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
}
|