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,488 +1,468 @@
|
|
|
1
1
|
// test-runner.js - Test runner for validation and rollback systems
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { printSuccess, printError, printWarning } from '../../../utils.js';
|
|
7
|
-
|
|
2
|
+
import { ValidationSystem } from "./index.js";
|
|
3
|
+
import { promises as fs } from "fs";
|
|
4
|
+
import { RollbackSystem } from "../rollback/index.js";
|
|
5
|
+
import { printSuccess, printError, printWarning } from "../../../utils.js";
|
|
8
6
|
/**
|
|
9
7
|
* Test runner for validation and rollback systems
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
constructor(workingDir) {
|
|
13
|
-
this.workingDir = workingDir;
|
|
14
|
-
this.validationSystem = new ValidationSystem(workingDir);
|
|
15
|
-
this.rollbackSystem = new RollbackSystem(workingDir);
|
|
16
|
-
this.testResults = [];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
8
|
+
*/ export class ValidationTestRunner {
|
|
9
|
+
/**
|
|
20
10
|
* Run all validation and rollback tests
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
11
|
+
*/ async runAllTests() {
|
|
12
|
+
console.log('🧪 Running validation and rollback system tests...');
|
|
13
|
+
const tests = [
|
|
14
|
+
{
|
|
15
|
+
name: 'Pre-init Validation',
|
|
16
|
+
test: ()=>this.testPreInitValidation()
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'Post-init Validation',
|
|
20
|
+
test: ()=>this.testPostInitValidation()
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'Configuration Validation',
|
|
24
|
+
test: ()=>this.testConfigValidation()
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Mode Functionality',
|
|
28
|
+
test: ()=>this.testModeFunctionality()
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'Health Checks',
|
|
32
|
+
test: ()=>this.testHealthChecks()
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'Backup System',
|
|
36
|
+
test: ()=>this.testBackupSystem()
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Rollback System',
|
|
40
|
+
test: ()=>this.testRollbackSystem()
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'State Tracking',
|
|
44
|
+
test: ()=>this.testStateTracking()
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Recovery Procedures',
|
|
48
|
+
test: ()=>this.testRecoveryProcedures()
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Atomic Operations',
|
|
52
|
+
test: ()=>this.testAtomicOperations()
|
|
53
|
+
}
|
|
54
|
+
];
|
|
55
|
+
for (const testCase of tests){
|
|
56
|
+
console.log(`\n🔬 Testing: ${testCase.name}`);
|
|
57
|
+
try {
|
|
58
|
+
const result = await testCase.test();
|
|
59
|
+
this.testResults.push({
|
|
60
|
+
name: testCase.name,
|
|
61
|
+
success: result.success,
|
|
62
|
+
details: result
|
|
63
|
+
});
|
|
64
|
+
if (result.success) {
|
|
65
|
+
printSuccess(`✅ ${testCase.name} passed`);
|
|
66
|
+
} else {
|
|
67
|
+
printError(`❌ ${testCase.name} failed`);
|
|
68
|
+
if (result.errors) {
|
|
69
|
+
result.errors.forEach((error)=>console.error(` - ${error}`));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} catch (error) {
|
|
73
|
+
this.testResults.push({
|
|
74
|
+
name: testCase.name,
|
|
75
|
+
success: false,
|
|
76
|
+
error: error.message
|
|
77
|
+
});
|
|
78
|
+
printError(`❌ ${testCase.name} threw exception: ${error.message}`);
|
|
79
|
+
}
|
|
56
80
|
}
|
|
57
|
-
|
|
58
|
-
this.testResults.push({
|
|
59
|
-
name: testCase.name,
|
|
60
|
-
success: false,
|
|
61
|
-
error: error.message,
|
|
62
|
-
});
|
|
63
|
-
printError(`❌ ${testCase.name} threw exception: ${error.message}`);
|
|
64
|
-
}
|
|
81
|
+
this.generateTestReport();
|
|
65
82
|
}
|
|
66
|
-
|
|
67
|
-
this.generateTestReport();
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
83
|
+
/**
|
|
71
84
|
* Test pre-initialization validation
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
*/ async testPreInitValidation() {
|
|
86
|
+
const result = {
|
|
87
|
+
success: true,
|
|
88
|
+
errors: [],
|
|
89
|
+
details: {}
|
|
90
|
+
};
|
|
91
|
+
try {
|
|
92
|
+
// Test with normal conditions
|
|
93
|
+
const normalValidation = await this.validationSystem.validatePreInit();
|
|
94
|
+
result.details.normal = normalValidation;
|
|
95
|
+
if (!normalValidation.success && normalValidation.errors.length > 0) {
|
|
96
|
+
// Some failures are expected in test environment
|
|
97
|
+
result.details.expectedFailures = normalValidation.errors;
|
|
98
|
+
}
|
|
99
|
+
// Test with force flag
|
|
100
|
+
const forceValidation = await this.validationSystem.validatePreInit({
|
|
101
|
+
force: true
|
|
102
|
+
});
|
|
103
|
+
result.details.force = forceValidation;
|
|
104
|
+
result.success = true; // Pre-init validation tested successfully
|
|
105
|
+
} catch (error) {
|
|
106
|
+
result.success = false;
|
|
107
|
+
result.errors.push(`Pre-init validation test failed: ${error.message}`);
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
94
110
|
}
|
|
95
|
-
|
|
96
|
-
return result;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
111
|
+
/**
|
|
100
112
|
* Test post-initialization validation
|
|
101
|
-
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
113
|
+
*/ async testPostInitValidation() {
|
|
114
|
+
const result = {
|
|
115
|
+
success: true,
|
|
116
|
+
errors: [],
|
|
117
|
+
details: {}
|
|
118
|
+
};
|
|
119
|
+
try {
|
|
120
|
+
// Create minimal test files for validation
|
|
121
|
+
await this.createTestFiles();
|
|
122
|
+
const postValidation = await this.validationSystem.validatePostInit();
|
|
123
|
+
result.details.postValidation = postValidation;
|
|
124
|
+
// Clean up test files
|
|
125
|
+
await this.cleanupTestFiles();
|
|
126
|
+
result.success = true;
|
|
127
|
+
} catch (error) {
|
|
128
|
+
result.success = false;
|
|
129
|
+
result.errors.push(`Post-init validation test failed: ${error.message}`);
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
119
132
|
}
|
|
120
|
-
|
|
121
|
-
return result;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
133
|
+
/**
|
|
125
134
|
* Test configuration validation
|
|
126
|
-
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
135
|
+
*/ async testConfigValidation() {
|
|
136
|
+
const result = {
|
|
137
|
+
success: true,
|
|
138
|
+
errors: [],
|
|
139
|
+
details: {}
|
|
140
|
+
};
|
|
141
|
+
try {
|
|
142
|
+
// Create test configuration files
|
|
143
|
+
await this.createTestConfigs();
|
|
144
|
+
const configValidation = await this.validationSystem.validateConfiguration();
|
|
145
|
+
result.details.configValidation = configValidation;
|
|
146
|
+
// Clean up test configs
|
|
147
|
+
await this.cleanupTestConfigs();
|
|
148
|
+
result.success = true;
|
|
149
|
+
} catch (error) {
|
|
150
|
+
result.success = false;
|
|
151
|
+
result.errors.push(`Config validation test failed: ${error.message}`);
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
144
154
|
}
|
|
145
|
-
|
|
146
|
-
return result;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
155
|
+
/**
|
|
150
156
|
* Test mode functionality
|
|
151
|
-
*/
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
157
|
+
*/ async testModeFunctionality() {
|
|
158
|
+
const result = {
|
|
159
|
+
success: true,
|
|
160
|
+
errors: [],
|
|
161
|
+
details: {}
|
|
162
|
+
};
|
|
163
|
+
try {
|
|
164
|
+
// Create test SPARC configuration
|
|
165
|
+
await this.createTestSparcConfig();
|
|
166
|
+
const modeTests = await this.validationSystem.testModeFunctionality();
|
|
167
|
+
result.details.modeTests = modeTests;
|
|
168
|
+
// Clean up test SPARC config
|
|
169
|
+
await this.cleanupTestSparcConfig();
|
|
170
|
+
result.success = true;
|
|
171
|
+
} catch (error) {
|
|
172
|
+
result.success = false;
|
|
173
|
+
result.errors.push(`Mode functionality test failed: ${error.message}`);
|
|
174
|
+
}
|
|
175
|
+
return result;
|
|
169
176
|
}
|
|
170
|
-
|
|
171
|
-
return result;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
177
|
+
/**
|
|
175
178
|
* Test health checks
|
|
176
|
-
*/
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
179
|
+
*/ async testHealthChecks() {
|
|
180
|
+
const result = {
|
|
181
|
+
success: true,
|
|
182
|
+
errors: [],
|
|
183
|
+
details: {}
|
|
184
|
+
};
|
|
185
|
+
try {
|
|
186
|
+
const healthChecks = await this.validationSystem.runHealthChecks();
|
|
187
|
+
result.details.healthChecks = healthChecks;
|
|
188
|
+
result.success = true;
|
|
189
|
+
} catch (error) {
|
|
190
|
+
result.success = false;
|
|
191
|
+
result.errors.push(`Health checks test failed: ${error.message}`);
|
|
192
|
+
}
|
|
193
|
+
return result;
|
|
188
194
|
}
|
|
189
|
-
|
|
190
|
-
return result;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
195
|
+
/**
|
|
194
196
|
* Test backup system
|
|
195
|
-
*/
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
197
|
+
*/ async testBackupSystem() {
|
|
198
|
+
const result = {
|
|
199
|
+
success: true,
|
|
200
|
+
errors: [],
|
|
201
|
+
details: {}
|
|
202
|
+
};
|
|
203
|
+
try {
|
|
204
|
+
// Test backup creation
|
|
205
|
+
const backupResult = await this.rollbackSystem.backupManager.createBackup('test', 'Test backup');
|
|
206
|
+
result.details.backupCreation = backupResult;
|
|
207
|
+
if (!backupResult.success) {
|
|
208
|
+
result.success = false;
|
|
209
|
+
result.errors.push('Backup creation failed');
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
// Test backup listing
|
|
213
|
+
const backups = await this.rollbackSystem.backupManager.listBackups();
|
|
214
|
+
result.details.backupListing = {
|
|
215
|
+
count: backups.length
|
|
216
|
+
};
|
|
217
|
+
// Test backup deletion
|
|
218
|
+
if (backupResult.id) {
|
|
219
|
+
const deleteResult = await this.rollbackSystem.backupManager.deleteBackup(backupResult.id);
|
|
220
|
+
result.details.backupDeletion = deleteResult;
|
|
221
|
+
if (!deleteResult.success) {
|
|
222
|
+
result.errors.push('Backup deletion failed');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
} catch (error) {
|
|
226
|
+
result.success = false;
|
|
227
|
+
result.errors.push(`Backup system test failed: ${error.message}`);
|
|
224
228
|
}
|
|
225
|
-
|
|
226
|
-
} catch (error) {
|
|
227
|
-
result.success = false;
|
|
228
|
-
result.errors.push(`Backup system test failed: ${error.message}`);
|
|
229
|
+
return result;
|
|
229
230
|
}
|
|
230
|
-
|
|
231
|
-
return result;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
/**
|
|
231
|
+
/**
|
|
235
232
|
* Test rollback system
|
|
236
|
-
*/
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
233
|
+
*/ async testRollbackSystem() {
|
|
234
|
+
const result = {
|
|
235
|
+
success: true,
|
|
236
|
+
errors: [],
|
|
237
|
+
details: {}
|
|
238
|
+
};
|
|
239
|
+
try {
|
|
240
|
+
// Test rollback system validation
|
|
241
|
+
const rollbackValidation = await this.rollbackSystem.validateRollbackSystem();
|
|
242
|
+
result.details.rollbackValidation = rollbackValidation;
|
|
243
|
+
if (!rollbackValidation.success) {
|
|
244
|
+
result.errors.push(...rollbackValidation.errors);
|
|
245
|
+
}
|
|
246
|
+
// Test rollback point listing
|
|
247
|
+
const rollbackPoints = await this.rollbackSystem.listRollbackPoints();
|
|
248
|
+
result.details.rollbackPoints = {
|
|
249
|
+
count: rollbackPoints.rollbackPoints.length,
|
|
250
|
+
checkpoints: rollbackPoints.checkpoints.length
|
|
251
|
+
};
|
|
252
|
+
} catch (error) {
|
|
253
|
+
result.success = false;
|
|
254
|
+
result.errors.push(`Rollback system test failed: ${error.message}`);
|
|
255
|
+
}
|
|
256
|
+
return result;
|
|
258
257
|
}
|
|
259
|
-
|
|
260
|
-
return result;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
/**
|
|
258
|
+
/**
|
|
264
259
|
* Test state tracking
|
|
265
|
-
*/
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
260
|
+
*/ async testStateTracking() {
|
|
261
|
+
const result = {
|
|
262
|
+
success: true,
|
|
263
|
+
errors: [],
|
|
264
|
+
details: {}
|
|
265
|
+
};
|
|
266
|
+
try {
|
|
267
|
+
const stateTracker = this.rollbackSystem.stateTracker;
|
|
268
|
+
// Test checkpoint creation
|
|
269
|
+
const checkpoint = await stateTracker.createCheckpoint('test-phase', {
|
|
270
|
+
test: true
|
|
271
|
+
});
|
|
272
|
+
result.details.checkpointCreation = checkpoint;
|
|
273
|
+
if (!checkpoint.success) {
|
|
274
|
+
result.errors.push('Checkpoint creation failed');
|
|
275
|
+
}
|
|
276
|
+
// Test rollback point recording
|
|
277
|
+
const rollbackPoint = await stateTracker.recordRollbackPoint('test', {
|
|
278
|
+
testData: true
|
|
279
|
+
});
|
|
280
|
+
result.details.rollbackPointCreation = rollbackPoint;
|
|
281
|
+
if (!rollbackPoint.success) {
|
|
282
|
+
result.errors.push('Rollback point creation failed');
|
|
283
|
+
}
|
|
284
|
+
// Test state validation
|
|
285
|
+
const stateValidation = await stateTracker.validateStateTracking();
|
|
286
|
+
result.details.stateValidation = stateValidation;
|
|
287
|
+
if (!stateValidation.success) {
|
|
288
|
+
result.errors.push(...stateValidation.errors);
|
|
289
|
+
}
|
|
290
|
+
} catch (error) {
|
|
291
|
+
result.success = false;
|
|
292
|
+
result.errors.push(`State tracking test failed: ${error.message}`);
|
|
293
|
+
}
|
|
294
|
+
return result;
|
|
298
295
|
}
|
|
299
|
-
|
|
300
|
-
return result;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/**
|
|
296
|
+
/**
|
|
304
297
|
* Test recovery procedures
|
|
305
|
-
*/
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
298
|
+
*/ async testRecoveryProcedures() {
|
|
299
|
+
const result = {
|
|
300
|
+
success: true,
|
|
301
|
+
errors: [],
|
|
302
|
+
details: {}
|
|
303
|
+
};
|
|
304
|
+
try {
|
|
305
|
+
const recoveryManager = this.rollbackSystem.recoveryManager;
|
|
306
|
+
// Test recovery system validation
|
|
307
|
+
const recoveryValidation = await recoveryManager.validateRecoverySystem();
|
|
308
|
+
result.details.recoveryValidation = recoveryValidation;
|
|
309
|
+
if (!recoveryValidation.success) {
|
|
310
|
+
result.errors.push(...recoveryValidation.errors);
|
|
311
|
+
}
|
|
312
|
+
// Test generic recovery
|
|
313
|
+
const genericRecovery = await recoveryManager.performRecovery('test-failure', {
|
|
314
|
+
test: true
|
|
315
|
+
});
|
|
316
|
+
result.details.genericRecovery = genericRecovery;
|
|
317
|
+
} catch (error) {
|
|
318
|
+
result.success = false;
|
|
319
|
+
result.errors.push(`Recovery procedures test failed: ${error.message}`);
|
|
320
|
+
}
|
|
321
|
+
return result;
|
|
326
322
|
}
|
|
327
|
-
|
|
328
|
-
return result;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
/**
|
|
323
|
+
/**
|
|
332
324
|
* Test atomic operations
|
|
333
|
-
*/
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
325
|
+
*/ async testAtomicOperations() {
|
|
326
|
+
const result = {
|
|
327
|
+
success: true,
|
|
328
|
+
errors: [],
|
|
329
|
+
details: {}
|
|
330
|
+
};
|
|
331
|
+
try {
|
|
332
|
+
const { createAtomicOperation } = await import("../rollback/index.js");
|
|
333
|
+
// Test atomic operation creation
|
|
334
|
+
const atomicOp = createAtomicOperation(this.rollbackSystem, 'test-operation');
|
|
335
|
+
// Test begin
|
|
336
|
+
const beginResult = await atomicOp.begin();
|
|
337
|
+
result.details.atomicBegin = {
|
|
338
|
+
success: beginResult
|
|
339
|
+
};
|
|
340
|
+
if (!beginResult) {
|
|
341
|
+
result.errors.push('Atomic operation begin failed');
|
|
342
|
+
return result;
|
|
343
|
+
}
|
|
344
|
+
// Test commit
|
|
345
|
+
await atomicOp.commit();
|
|
346
|
+
result.details.atomicCommit = {
|
|
347
|
+
success: true
|
|
348
|
+
};
|
|
349
|
+
} catch (error) {
|
|
350
|
+
result.success = false;
|
|
351
|
+
result.errors.push(`Atomic operations test failed: ${error.message}`);
|
|
352
|
+
}
|
|
349
353
|
return result;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// Test commit
|
|
353
|
-
await atomicOp.commit();
|
|
354
|
-
result.details.atomicCommit = { success: true };
|
|
355
|
-
} catch (error) {
|
|
356
|
-
result.success = false;
|
|
357
|
-
result.errors.push(`Atomic operations test failed: ${error.message}`);
|
|
358
354
|
}
|
|
359
|
-
|
|
360
|
-
return result;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
355
|
+
/**
|
|
364
356
|
* Generate test report
|
|
365
|
-
*/
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
357
|
+
*/ generateTestReport() {
|
|
358
|
+
console.log('\n' + '='.repeat(60));
|
|
359
|
+
console.log('🧪 VALIDATION & ROLLBACK SYSTEM TEST REPORT');
|
|
360
|
+
console.log('='.repeat(60));
|
|
361
|
+
const passed = this.testResults.filter((test)=>test.success).length;
|
|
362
|
+
const failed = this.testResults.filter((test)=>!test.success).length;
|
|
363
|
+
const total = this.testResults.length;
|
|
364
|
+
console.log(`\n📊 Summary: ${passed}/${total} tests passed`);
|
|
365
|
+
if (failed === 0) {
|
|
366
|
+
printSuccess('🎉 All tests passed!');
|
|
367
|
+
} else {
|
|
368
|
+
printError(`❌ ${failed} tests failed`);
|
|
369
|
+
}
|
|
370
|
+
console.log('\n📋 Test Results:');
|
|
371
|
+
this.testResults.forEach((test)=>{
|
|
372
|
+
const status = test.success ? '✅' : '❌';
|
|
373
|
+
console.log(` ${status} ${test.name}`);
|
|
374
|
+
if (!test.success && test.error) {
|
|
375
|
+
console.log(` Error: ${test.error}`);
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
console.log('\n' + '='.repeat(60));
|
|
379
|
+
// Overall system health assessment
|
|
380
|
+
const healthScore = passed / total * 100;
|
|
381
|
+
console.log(`\n🏥 System Health Score: ${healthScore.toFixed(1)}%`);
|
|
382
|
+
if (healthScore >= 90) {
|
|
383
|
+
printSuccess('🟢 Excellent - System is fully operational');
|
|
384
|
+
} else if (healthScore >= 70) {
|
|
385
|
+
printWarning('🟡 Good - System is mostly operational with minor issues');
|
|
386
|
+
} else if (healthScore >= 50) {
|
|
387
|
+
printWarning('🟠 Fair - System has some significant issues');
|
|
388
|
+
} else {
|
|
389
|
+
printError('🔴 Poor - System has major issues requiring attention');
|
|
390
|
+
}
|
|
381
391
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
console.log('\n' + '='.repeat(60));
|
|
394
|
-
|
|
395
|
-
// Overall system health assessment
|
|
396
|
-
const healthScore = (passed / total) * 100;
|
|
397
|
-
console.log(`\n🏥 System Health Score: ${healthScore.toFixed(1)}%`);
|
|
398
|
-
|
|
399
|
-
if (healthScore >= 90) {
|
|
400
|
-
printSuccess('🟢 Excellent - System is fully operational');
|
|
401
|
-
} else if (healthScore >= 70) {
|
|
402
|
-
printWarning('🟡 Good - System is mostly operational with minor issues');
|
|
403
|
-
} else if (healthScore >= 50) {
|
|
404
|
-
printWarning('🟠 Fair - System has some significant issues');
|
|
405
|
-
} else {
|
|
406
|
-
printError('🔴 Poor - System has major issues requiring attention');
|
|
392
|
+
// Helper methods for creating test files
|
|
393
|
+
async createTestFiles() {
|
|
394
|
+
try {
|
|
395
|
+
await fs.mkdir(`${this.workingDir}/test-temp`, {
|
|
396
|
+
recursive: true
|
|
397
|
+
});
|
|
398
|
+
await fs.writeFile(`${this.workingDir}/test-temp/CLAUDE.md`, '# Test CLAUDE.md', 'utf8');
|
|
399
|
+
await fs.writeFile(`${this.workingDir}/test-temp/memory-bank.md`, '# Test Memory Bank', 'utf8');
|
|
400
|
+
} catch {
|
|
401
|
+
// Test files creation failed - not critical for testing
|
|
402
|
+
}
|
|
407
403
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
await fs.writeFile(
|
|
417
|
-
`${this.workingDir}/test-temp/memory-bank.md`,
|
|
418
|
-
'# Test Memory Bank',
|
|
419
|
-
'utf8',
|
|
420
|
-
);
|
|
421
|
-
} catch {
|
|
422
|
-
// Test files creation failed - not critical for testing
|
|
404
|
+
async cleanupTestFiles() {
|
|
405
|
+
try {
|
|
406
|
+
await fs.unlink(`${this.workingDir}/test-temp`, {
|
|
407
|
+
recursive: true
|
|
408
|
+
});
|
|
409
|
+
} catch {
|
|
410
|
+
// Cleanup failed - not critical
|
|
411
|
+
}
|
|
423
412
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
413
|
+
async createTestConfigs() {
|
|
414
|
+
try {
|
|
415
|
+
const testConfig = {
|
|
416
|
+
version: '1.0',
|
|
417
|
+
modes: {
|
|
418
|
+
'test-mode': {
|
|
419
|
+
description: 'Test mode for validation'
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
await fs.writeFile(`${this.workingDir}/test-roomodes`, JSON.stringify(testConfig, null, 2, 'utf8'));
|
|
424
|
+
} catch {
|
|
425
|
+
// Test config creation failed - not critical
|
|
426
|
+
}
|
|
431
427
|
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
modes: {
|
|
439
|
-
'test-mode': {
|
|
440
|
-
description: 'Test mode for validation',
|
|
441
|
-
},
|
|
442
|
-
},
|
|
443
|
-
};
|
|
444
|
-
|
|
445
|
-
await fs.writeFile(
|
|
446
|
-
`${this.workingDir}/test-roomodes`,
|
|
447
|
-
JSON.stringify(testConfig, null, 2, 'utf8'),
|
|
448
|
-
);
|
|
449
|
-
} catch {
|
|
450
|
-
// Test config creation failed - not critical
|
|
428
|
+
async cleanupTestConfigs() {
|
|
429
|
+
try {
|
|
430
|
+
await fs.unlink(`${this.workingDir}/test-roomodes`);
|
|
431
|
+
} catch {
|
|
432
|
+
// Cleanup failed - not critical
|
|
433
|
+
}
|
|
451
434
|
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
435
|
+
async createTestSparcConfig() {
|
|
436
|
+
try {
|
|
437
|
+
await this.createTestConfigs();
|
|
438
|
+
await fs.mkdir(`${this.workingDir}/test-roo`, {
|
|
439
|
+
recursive: true
|
|
440
|
+
});
|
|
441
|
+
} catch {
|
|
442
|
+
// Test SPARC config creation failed - not critical
|
|
443
|
+
}
|
|
459
444
|
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
445
|
+
async cleanupTestSparcConfig() {
|
|
446
|
+
try {
|
|
447
|
+
await this.cleanupTestConfigs();
|
|
448
|
+
await fs.unlink(`${this.workingDir}/test-roo`, {
|
|
449
|
+
recursive: true
|
|
450
|
+
});
|
|
451
|
+
} catch {
|
|
452
|
+
// Cleanup failed - not critical
|
|
453
|
+
}
|
|
468
454
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
await fs.unlink(`${this.workingDir}/test-roo`, { recursive: true });
|
|
475
|
-
} catch {
|
|
476
|
-
// Cleanup failed - not critical
|
|
455
|
+
constructor(workingDir){
|
|
456
|
+
this.workingDir = workingDir;
|
|
457
|
+
this.validationSystem = new ValidationSystem(workingDir);
|
|
458
|
+
this.rollbackSystem = new RollbackSystem(workingDir);
|
|
459
|
+
this.testResults = [];
|
|
477
460
|
}
|
|
478
|
-
}
|
|
479
461
|
}
|
|
480
|
-
|
|
481
462
|
/**
|
|
482
463
|
* Run validation and rollback tests
|
|
483
|
-
*/
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
return testRunner.testResults;
|
|
464
|
+
*/ export async function runValidationTests(workingDir) {
|
|
465
|
+
const testRunner = new ValidationTestRunner(workingDir);
|
|
466
|
+
await testRunner.runAllTests();
|
|
467
|
+
return testRunner.testResults;
|
|
488
468
|
}
|