claude-flow-novice 2.2.4 ā 2.2.5
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/package.json +9 -8
- package/scripts/.claude-flow/metrics/agent-metrics.json +1 -0
- package/scripts/.claude-flow/metrics/performance.json +9 -0
- package/scripts/.claude-flow/metrics/task-metrics.json +10 -0
- package/scripts/CLEANUP_OPTIMIZATION_REPORT.json +312 -0
- package/scripts/CLEANUP_PERFORMANCE_OPTIMIZATION.md +387 -0
- package/scripts/CLEANUP_QUICK_START.md +268 -0
- package/scripts/CLEANUP_TEST_RESULTS.md +205 -0
- package/scripts/README.md +339 -0
- package/scripts/ace-query.sh +384 -0
- package/scripts/agent-token-analysis.js +430 -0
- package/scripts/auto-setup.js +332 -0
- 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/build/validate-agents.js +238 -0
- package/scripts/build-index.js +43 -0
- package/scripts/build-orchestrator.js +320 -0
- package/scripts/check-routing-stats.cjs +122 -0
- package/scripts/ci-validation.js +375 -0
- package/scripts/cleanup-blocking-coordination.sh +420 -0
- package/scripts/cleanup-idle-sessions.sh +59 -0
- package/scripts/collect-build-metrics.js +65 -0
- package/scripts/demo/README.md +79 -0
- package/scripts/demo/autoscaling-demo-simplified.js +963 -0
- package/scripts/demo/comprehensive-dashboard-test.js +693 -0
- package/scripts/demo/confidence-log.js +87 -0
- package/scripts/demo/confidence-report.js +82 -0
- package/scripts/demo/demo-multi-swarm-coordination.js +325 -0
- package/scripts/demo/demo-production-deployment.js +399 -0
- package/scripts/demo/demo-visualization-system.js +149 -0
- package/scripts/demo/performance-analysis.cjs +71 -0
- package/scripts/demo/performance-analysis.js +71 -0
- package/scripts/demo/test-autoscaling-demo.js +314 -0
- package/scripts/dependency-optimizer.js +349 -0
- package/scripts/dependency-security-assessment.js +331 -0
- package/scripts/deploy-sdk.sh +176 -0
- package/scripts/deployment-readiness-report.json +179 -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/ecosystem.config.cjs +90 -0
- package/scripts/fix-js-extensions.js +167 -0
- package/scripts/generate-basic-types.js +73 -0
- package/scripts/generate-changelog.js +318 -0
- package/scripts/git-hooks/pre-commit.sh +143 -0
- package/scripts/health-checks.js +634 -0
- package/scripts/hook-wrapper.sh +54 -0
- package/scripts/install/README.md +375 -0
- package/scripts/install/REDIS_SETUP_VALIDATION.json +245 -0
- package/scripts/install/check-prerequisites.js +303 -0
- package/scripts/install/config-wizard.js +606 -0
- package/scripts/install/dependency-checker.js +385 -0
- package/scripts/install/health-check.js +765 -0
- package/scripts/install/install.js +256 -0
- package/scripts/install/installation-benchmark.js +461 -0
- package/scripts/install/quick-install.js +720 -0
- package/scripts/install/quick-start-wizard.js +295 -0
- package/scripts/install/redis-cli.js +289 -0
- package/scripts/install/redis-install-guides.md +407 -0
- package/scripts/install/redis-setup.js +559 -0
- package/scripts/install/redis-test.js +278 -0
- package/scripts/install/service-manager.js +672 -0
- package/scripts/install/setup.js +832 -0
- package/scripts/install/uninstall.js +526 -0
- package/scripts/install/update.js +461 -0
- package/scripts/install-pre-commit-hook.sh +127 -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/memory-monitor-coordinator.js +322 -0
- package/scripts/migrate-to-sdk.sh +520 -0
- package/scripts/migration/QUICK-START.md +189 -0
- package/scripts/migration/QUICK-START.md.backup-1760135091363 +189 -0
- package/scripts/migration/README.md +464 -0
- package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md +500 -0
- package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md.backup-1760135091348 +500 -0
- package/scripts/migration/UPDATE-PATHS-README.md +464 -0
- package/scripts/migration/UPDATE-PATHS-README.md.backup-1760135091337 +464 -0
- package/scripts/migration/example-patterns.json +19 -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/migration/reorganize-workspace.js +504 -0
- package/scripts/migration/test-update-paths.js +359 -0
- package/scripts/migration/update-paths.js +664 -0
- package/scripts/migration/validate-migration.js +647 -0
- package/scripts/monitor-loop.sh +65 -0
- package/scripts/monitor-memory.sh +47 -0
- package/scripts/monitor-migration.js +339 -0
- package/scripts/monitor.py +43 -0
- package/scripts/monitoring/README.md +178 -0
- package/scripts/monitoring/alert-monitor.sh +220 -0
- package/scripts/monitoring/analyze-resources.sh +199 -0
- package/scripts/monitoring/dashboards/rate-limiting-dashboard.json +211 -0
- package/scripts/monitoring/dynamic-monitor.sh +85 -0
- package/scripts/monitoring/launch-stability-test.sh +184 -0
- package/scripts/monitoring/monitor-test.sh +93 -0
- package/scripts/monitoring/pre-test-validation.sh +208 -0
- package/scripts/monitoring/quick-test-alerting.sh +118 -0
- package/scripts/monitoring/quick-test-rate-limiting.sh +206 -0
- package/scripts/monitoring/rate-limiting-monitor.sh +380 -0
- package/scripts/monitoring/resource-monitor.sh +126 -0
- package/scripts/monitoring/stability-monitor.js +429 -0
- package/scripts/monitoring/test-monitor-quick.sh +54 -0
- package/scripts/monitoring/view-alerts.sh +307 -0
- package/scripts/npm-metrics-collector.js +482 -0
- package/scripts/npm-package-validation.cjs +299 -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/optimize-package-swarm.js +54 -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-monitor.js +644 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/post-deployment-monitoring.js +350 -0
- package/scripts/post-edit-pipeline.js +2091 -0
- package/scripts/post-install-claude-md.js +78 -0
- package/scripts/postinstall.js +79 -0
- package/scripts/pre-publish-validation.cjs +212 -0
- package/scripts/pre-publish-validation.js +429 -0
- package/scripts/redis-lua/cleanup-blocking-coordination.lua +198 -0
- package/scripts/release-announcement.js +425 -0
- package/scripts/release-notification.js +248 -0
- package/scripts/release-rollback.js +376 -0
- package/scripts/release-validation.js +460 -0
- package/scripts/rollback-sdk.sh +66 -0
- package/scripts/run-production-validation.ts +590 -0
- package/scripts/run-stability-validation.sh +687 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/deployment-validation.cjs +279 -0
- package/scripts/security/envelope-encryption-confidence-report.cjs +422 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/install-git-secrets.sh +295 -0
- package/scripts/security/rotate-api-keys.js +469 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/security/security-audit.cjs +538 -0
- package/scripts/security/setup-redis-auth.sh +397 -0
- package/scripts/security/validate-envelope-encryption.cjs +340 -0
- package/scripts/security-scan.js +492 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/agent-metrics.json +1 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/performance.json +9 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/task-metrics.json +10 -0
- package/scripts/switch-api.sh +158 -0
- package/scripts/sync-agents.js +290 -0
- package/scripts/test/50-agent-test.js +625 -0
- package/scripts/test/NEW_STABILITY_TEST_GUIDE.md +407 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/STABILITY_TEST_EXAMPLE.md +347 -0
- package/scripts/test/STABILITY_TEST_README.md +480 -0
- package/scripts/test/agent-worker.js +309 -0
- package/scripts/test/ai-coordination-test.js +650 -0
- package/scripts/test/ai-mesh-coordination-test.js +416 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/cli-agent-coordination-test.js +313 -0
- package/scripts/test/coordinator-multilingual-test.js +396 -0
- package/scripts/test/coordinator-transparency-demo.js +585 -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/mesh-coordination-zero-overlap-test.js +740 -0
- package/scripts/test/multilingual-hello-world-test.js +390 -0
- package/scripts/test/quick-multilingual-demo.js +464 -0
- package/scripts/test/real-agent-test.js +312 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/run-stability-test-examples.sh +292 -0
- package/scripts/test/stability-results/stability-metrics.jsonl +83 -0
- package/scripts/test/stability-results/stability-test-report.json +128 -0
- package/scripts/test/stability-results/stability-test.log +1827 -0
- package/scripts/test/stability-test-50-agents.js +734 -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/test-cleanup-performance.sh +416 -0
- package/scripts/test-dashboard-auth.cjs +203 -0
- package/scripts/test-docker-deployment.sh +207 -0
- package/scripts/test-npm-package.cjs +167 -0
- package/scripts/test-provider-routing.cjs +226 -0
- package/scripts/test-routing-telemetry.cjs +147 -0
- package/scripts/test-runner.cjs +154 -0
- package/scripts/test-zai-10k.cjs +81 -0
- package/scripts/test-zai-api.cjs +191 -0
- package/scripts/test-zai-diagnostic.cjs +151 -0
- package/scripts/test-zai-final.cjs +128 -0
- package/scripts/test-zai-with-env.cjs +85 -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/validate-agent-hooks.js +506 -0
- package/scripts/validate-changelog.js +241 -0
- package/scripts/validate-coordination-cli.js +69 -0
- package/scripts/validate-coordination-toggle-integration.cjs +501 -0
- package/scripts/validate-docker-infrastructure.sh +502 -0
- package/scripts/validate-entry-points.js +300 -0
- package/scripts/validate-stage3-performance.ts +377 -0
- package/scripts/validate-template-bundling.js +180 -0
- package/scripts/validation/README.md +33 -0
- package/scripts/validation/acl-security-validation.cjs +214 -0
- package/scripts/validation/acl-security-validation.js +402 -0
- package/scripts/validation/byzantine-verification.js +407 -0
- package/scripts/validation/final-phase-2-consensus.cjs +219 -0
- package/scripts/validation/final-security-validation.js +791 -0
- package/scripts/validation/final-wasm-validation.cjs +840 -0
- package/scripts/validation/integration-test-analysis.js +105 -0
- package/scripts/validation/phase-0-comprehensive-validation.js +474 -0
- package/scripts/validation/phase-0-consensus-report.js +139 -0
- package/scripts/validation/phase-0-final-report.js +112 -0
- package/scripts/validation/phase-0-redis-consensus-report.js +129 -0
- package/scripts/validation/phase-0-validation-improved.js +490 -0
- package/scripts/validation/phase-0-validation-test.js +65 -0
- package/scripts/validation/phase-1-consensus-report.cjs +342 -0
- package/scripts/validation/phase-1-consensus-validation.cjs +551 -0
- package/scripts/validation/phase-1-consensus-validation.js +551 -0
- package/scripts/validation/phase-2-consensus-report.cjs +186 -0
- package/scripts/validation/phase-2-validation.cjs +171 -0
- package/scripts/validation/phase-2-validation.js +171 -0
- package/scripts/validation/phase-4-consensus-report.js +181 -0
- package/scripts/validation/phase-4-final-validation.js +351 -0
- package/scripts/validation/phase-5-consensus-report.cjs +113 -0
- package/scripts/validation/phase-5-consensus-report.js +113 -0
- package/scripts/validation/security-analysis.js +49 -0
- package/scripts/validation/security-validation.js +492 -0
- package/scripts/validation/simple-security-validation.js +464 -0
- package/scripts/verify-installation.js +112 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/scripts/verify-sdk-phase1.cjs +293 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Validate Template Bundling
|
|
4
|
+
*
|
|
5
|
+
* Verifies that:
|
|
6
|
+
* 1. All template directories exist
|
|
7
|
+
* 2. Required files are present in each template
|
|
8
|
+
* 3. Templates can be read and parsed
|
|
9
|
+
* 4. Package.json includes templates/ directory
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { promises as fs } from 'fs';
|
|
13
|
+
import { join } from 'path';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
import { dirname } from 'path';
|
|
16
|
+
|
|
17
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
18
|
+
const __dirname = dirname(__filename);
|
|
19
|
+
const projectRoot = join(__dirname, '..');
|
|
20
|
+
|
|
21
|
+
const REQUIRED_TEMPLATES = [
|
|
22
|
+
'basic-swarm',
|
|
23
|
+
'fleet-manager',
|
|
24
|
+
'event-bus',
|
|
25
|
+
'custom-agent'
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const REQUIRED_FILES = {
|
|
29
|
+
'basic-swarm': ['CLAUDE.md', 'package.json', '.claude/settings.json', 'coordination.md', 'memory-bank.md'],
|
|
30
|
+
'fleet-manager': ['CLAUDE.md', 'package.json', '.claude/settings.json'],
|
|
31
|
+
'event-bus': ['CLAUDE.md', 'package.json', '.claude/settings.json'],
|
|
32
|
+
'custom-agent': ['CLAUDE.md', 'package.json', '.claude/settings.json']
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
async function validateTemplates() {
|
|
36
|
+
const results = {
|
|
37
|
+
success: true,
|
|
38
|
+
templatesChecked: 0,
|
|
39
|
+
filesChecked: 0,
|
|
40
|
+
errors: [],
|
|
41
|
+
warnings: []
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
console.log('š Validating Template Bundling...\n');
|
|
45
|
+
|
|
46
|
+
// Check templates directory exists
|
|
47
|
+
const templatesDir = join(projectRoot, 'templates');
|
|
48
|
+
try {
|
|
49
|
+
await fs.access(templatesDir);
|
|
50
|
+
console.log('ā
Templates directory exists:', templatesDir);
|
|
51
|
+
} catch (err) {
|
|
52
|
+
results.success = false;
|
|
53
|
+
results.errors.push('Templates directory not found');
|
|
54
|
+
console.log('ā Templates directory not found:', templatesDir);
|
|
55
|
+
return results;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Check each required template
|
|
59
|
+
for (const template of REQUIRED_TEMPLATES) {
|
|
60
|
+
const templateDir = join(templatesDir, template);
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
await fs.access(templateDir);
|
|
64
|
+
console.log(`\nā
Template directory exists: ${template}/`);
|
|
65
|
+
results.templatesChecked++;
|
|
66
|
+
|
|
67
|
+
// Check required files
|
|
68
|
+
const requiredFiles = REQUIRED_FILES[template] || [];
|
|
69
|
+
for (const file of requiredFiles) {
|
|
70
|
+
const filePath = join(templateDir, file);
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
const stats = await fs.stat(filePath);
|
|
74
|
+
|
|
75
|
+
if (stats.size === 0) {
|
|
76
|
+
results.warnings.push(`${template}/${file} is empty`);
|
|
77
|
+
console.log(` ā ļø ${file} (EMPTY)`);
|
|
78
|
+
} else {
|
|
79
|
+
console.log(` ā
${file} (${stats.size} bytes)`);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
results.filesChecked++;
|
|
83
|
+
|
|
84
|
+
// Validate JSON files can be parsed
|
|
85
|
+
if (file.endsWith('.json')) {
|
|
86
|
+
try {
|
|
87
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
88
|
+
JSON.parse(content);
|
|
89
|
+
console.log(` ā Valid JSON`);
|
|
90
|
+
} catch (err) {
|
|
91
|
+
results.errors.push(`${template}/${file} contains invalid JSON`);
|
|
92
|
+
console.log(` ā Invalid JSON: ${err.message}`);
|
|
93
|
+
results.success = false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Validate Markdown files are not empty
|
|
98
|
+
if (file.endsWith('.md')) {
|
|
99
|
+
try {
|
|
100
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
101
|
+
if (content.trim().length < 10) {
|
|
102
|
+
results.warnings.push(`${template}/${file} appears to be empty or too short`);
|
|
103
|
+
console.log(` ā ļø Content too short (${content.length} chars)`);
|
|
104
|
+
} else {
|
|
105
|
+
console.log(` ā ${content.length} characters`);
|
|
106
|
+
}
|
|
107
|
+
} catch (err) {
|
|
108
|
+
results.errors.push(`Failed to read ${template}/${file}`);
|
|
109
|
+
console.log(` ā Failed to read: ${err.message}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
} catch (err) {
|
|
113
|
+
results.errors.push(`${template}/${file} not found`);
|
|
114
|
+
console.log(` ā ${file} not found`);
|
|
115
|
+
results.success = false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
} catch (err) {
|
|
119
|
+
results.success = false;
|
|
120
|
+
results.errors.push(`Template directory ${template} not found`);
|
|
121
|
+
console.log(`ā Template directory not found: ${template}/`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Check package.json includes templates
|
|
126
|
+
console.log('\nš Checking package.json...');
|
|
127
|
+
try {
|
|
128
|
+
const packagePath = join(projectRoot, 'package.json');
|
|
129
|
+
const packageContent = await fs.readFile(packagePath, 'utf8');
|
|
130
|
+
const packageJson = JSON.parse(packageContent);
|
|
131
|
+
|
|
132
|
+
if (packageJson.files && packageJson.files.includes('templates/')) {
|
|
133
|
+
console.log('ā
package.json includes "templates/" in files array');
|
|
134
|
+
} else {
|
|
135
|
+
results.success = false;
|
|
136
|
+
results.errors.push('package.json does not include "templates/" in files array');
|
|
137
|
+
console.log('ā package.json does not include "templates/" in files array');
|
|
138
|
+
}
|
|
139
|
+
} catch (err) {
|
|
140
|
+
results.warnings.push(`Failed to validate package.json: ${err.message}`);
|
|
141
|
+
console.log(`ā ļø Failed to validate package.json: ${err.message}`);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Summary
|
|
145
|
+
console.log('\n' + '='.repeat(60));
|
|
146
|
+
console.log('š VALIDATION SUMMARY');
|
|
147
|
+
console.log('='.repeat(60));
|
|
148
|
+
console.log(`Templates checked: ${results.templatesChecked}/${REQUIRED_TEMPLATES.length}`);
|
|
149
|
+
console.log(`Files validated: ${results.filesChecked}`);
|
|
150
|
+
console.log(`Errors: ${results.errors.length}`);
|
|
151
|
+
console.log(`Warnings: ${results.warnings.length}`);
|
|
152
|
+
|
|
153
|
+
if (results.errors.length > 0) {
|
|
154
|
+
console.log('\nā ERRORS:');
|
|
155
|
+
results.errors.forEach(err => console.log(` ⢠${err}`));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (results.warnings.length > 0) {
|
|
159
|
+
console.log('\nā ļø WARNINGS:');
|
|
160
|
+
results.warnings.forEach(warn => console.log(` ⢠${warn}`));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
console.log('\n' + '='.repeat(60));
|
|
164
|
+
if (results.success) {
|
|
165
|
+
console.log('ā
VALIDATION PASSED');
|
|
166
|
+
console.log('\nTemplates are ready for bundling with npm package!');
|
|
167
|
+
} else {
|
|
168
|
+
console.log('ā VALIDATION FAILED');
|
|
169
|
+
console.log('\nFix errors before publishing.');
|
|
170
|
+
process.exit(1);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return results;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Run validation
|
|
177
|
+
validateTemplates().catch(err => {
|
|
178
|
+
console.error('ā Validation failed:', err);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Validation Scripts
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This directory contains validation and consensus scripts for the Claude Flow Novice project. Scripts have been moved from the project root to improve organization and maintainability.
|
|
6
|
+
|
|
7
|
+
## Script Types
|
|
8
|
+
|
|
9
|
+
### Security Validation
|
|
10
|
+
- Security audit and vulnerability scanning scripts
|
|
11
|
+
- Code security analysis tools
|
|
12
|
+
- Dependency security validation
|
|
13
|
+
|
|
14
|
+
### Phase Validation
|
|
15
|
+
- CFN Loop phase validation scripts
|
|
16
|
+
- Sprint completion validation
|
|
17
|
+
- Epic milestone verification
|
|
18
|
+
|
|
19
|
+
### Consensus Reports
|
|
20
|
+
- Consensus score calculation and reporting
|
|
21
|
+
- Validator team coordination scripts
|
|
22
|
+
- Confidence metric aggregation
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
All validation scripts should be executed from the project root directory to ensure proper path resolution and access to project resources.
|
|
27
|
+
|
|
28
|
+
## Organization
|
|
29
|
+
|
|
30
|
+
Scripts in this directory follow the project's organizational standards:
|
|
31
|
+
- No working files stored in root
|
|
32
|
+
- Validation logic separated by concern
|
|
33
|
+
- Clear naming conventions for script purpose
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACL Security Validation Script
|
|
3
|
+
* Phase 1 Foundation Infrastructure Security Validation
|
|
4
|
+
*
|
|
5
|
+
* Validates the 6-level ACL system with project-level isolation
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const SwarmMemoryManager = require('./src/sqlite/SwarmMemoryManager.cjs');
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
|
|
12
|
+
class ACLSecurityValidator {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.testResults = [];
|
|
15
|
+
this.memoryManager = null;
|
|
16
|
+
this.testDbPath = path.join(__dirname, 'test-acl-validation.db');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async setup() {
|
|
20
|
+
// Clean up any existing test database
|
|
21
|
+
if (fs.existsSync(this.testDbPath)) {
|
|
22
|
+
fs.unlinkSync(this.testDbPath);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Initialize memory manager with test database
|
|
26
|
+
this.memoryManager = new SwarmMemoryManager({
|
|
27
|
+
dbPath: this.testDbPath,
|
|
28
|
+
encryptionKey: Buffer.from('test-encryption-key-32-bytes-long', 'utf8'),
|
|
29
|
+
aclCacheTimeout: 1000 // Short cache for testing
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
await this.memoryManager.initialize();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async cleanup() {
|
|
36
|
+
if (this.memoryManager) {
|
|
37
|
+
await this.memoryManager.close();
|
|
38
|
+
}
|
|
39
|
+
if (fs.existsSync(this.testDbPath)) {
|
|
40
|
+
fs.unlinkSync(this.testDbPath);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
logResult(testName, passed, details = '') {
|
|
45
|
+
const result = {
|
|
46
|
+
test: testName,
|
|
47
|
+
passed,
|
|
48
|
+
details,
|
|
49
|
+
timestamp: new Date().toISOString()
|
|
50
|
+
};
|
|
51
|
+
this.testResults.push(result);
|
|
52
|
+
|
|
53
|
+
const status = passed ? 'ā
PASS' : 'ā FAIL';
|
|
54
|
+
console.log(`${status}: ${testName}`);
|
|
55
|
+
if (details) {
|
|
56
|
+
console.log(` ${details}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async testProjectLevelACL() {
|
|
61
|
+
const projectId1 = 'project-alpha';
|
|
62
|
+
const projectId2 = 'project-beta';
|
|
63
|
+
const agent1 = 'agent-project-1';
|
|
64
|
+
const agent2 = 'agent-project-2';
|
|
65
|
+
const agent3 = 'agent-project-3';
|
|
66
|
+
|
|
67
|
+
const projectData1 = { confidential: 'project-alpha-secret' };
|
|
68
|
+
const projectData2 = { confidential: 'project-beta-secret' };
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
// Store project-specific data
|
|
72
|
+
await this.memoryManager.set('project-key-1', projectData1, {
|
|
73
|
+
agentId: agent1,
|
|
74
|
+
projectId: projectId1,
|
|
75
|
+
aclLevel: 4, // Project level
|
|
76
|
+
namespace: 'test'
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
await this.memoryManager.set('project-key-2', projectData2, {
|
|
80
|
+
agentId: agent2,
|
|
81
|
+
projectId: projectId2,
|
|
82
|
+
aclLevel: 4, // Project level
|
|
83
|
+
namespace: 'test'
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Same project agent should access data from their project
|
|
87
|
+
const sameProjectAccess = await this.memoryManager.get('project-key-1', {
|
|
88
|
+
agentId: agent3,
|
|
89
|
+
projectId: projectId1,
|
|
90
|
+
namespace: 'test'
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// Different project agent should be DENIED access - SECURITY CRITICAL
|
|
94
|
+
const crossProjectAccess = await this.memoryManager.get('project-key-1', {
|
|
95
|
+
agentId: agent2,
|
|
96
|
+
projectId: projectId2,
|
|
97
|
+
namespace: 'test'
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const passed = JSON.stringify(sameProjectAccess) === JSON.stringify(projectData1) &&
|
|
101
|
+
crossProjectAccess === null;
|
|
102
|
+
|
|
103
|
+
this.logResult('Project Level (4) ACL - CRITICAL SECURITY', passed,
|
|
104
|
+
passed ? 'Project isolation working correctly' : 'CROSS-PROJECT DATA LEAK DETECTED');
|
|
105
|
+
} catch (error) {
|
|
106
|
+
this.logResult('Project Level (4) ACL - CRITICAL SECURITY', false, `Error: ${error.message}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async testBasicACL() {
|
|
111
|
+
const agent1 = 'agent-basic-1';
|
|
112
|
+
const agent2 = 'agent-basic-2';
|
|
113
|
+
const data = { test: 'basic-data' };
|
|
114
|
+
|
|
115
|
+
try {
|
|
116
|
+
// Store private data
|
|
117
|
+
await this.memoryManager.set('basic-key', data, {
|
|
118
|
+
agentId: agent1,
|
|
119
|
+
aclLevel: 1,
|
|
120
|
+
namespace: 'test'
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// Owner should access
|
|
124
|
+
const ownerAccess = await this.memoryManager.get('basic-key', {
|
|
125
|
+
agentId: agent1,
|
|
126
|
+
namespace: 'test'
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// Other agent should be denied
|
|
130
|
+
const otherAccess = await this.memoryManager.get('basic-key', {
|
|
131
|
+
agentId: agent2,
|
|
132
|
+
namespace: 'test'
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const passed = JSON.stringify(ownerAccess) === JSON.stringify(data) &&
|
|
136
|
+
otherAccess === null;
|
|
137
|
+
|
|
138
|
+
this.logResult('Basic Private ACL', passed,
|
|
139
|
+
passed ? 'Private access working' : 'Private access failure');
|
|
140
|
+
} catch (error) {
|
|
141
|
+
this.logResult('Basic Private ACL', false, `Error: ${error.message}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async generateSecurityReport() {
|
|
146
|
+
const totalTests = this.testResults.length;
|
|
147
|
+
const passedTests = this.testResults.filter(r => r.passed).length;
|
|
148
|
+
const failedTests = totalTests - passedTests;
|
|
149
|
+
const passRate = ((passedTests / totalTests) * 100).toFixed(1);
|
|
150
|
+
|
|
151
|
+
const report = {
|
|
152
|
+
summary: {
|
|
153
|
+
totalTests,
|
|
154
|
+
passedTests,
|
|
155
|
+
failedTests,
|
|
156
|
+
passRate: `${passRate}%`,
|
|
157
|
+
timestamp: new Date().toISOString()
|
|
158
|
+
},
|
|
159
|
+
criticalFindings: this.testResults.filter(r =>
|
|
160
|
+
!r.passed && r.test.includes('CRITICAL')
|
|
161
|
+
),
|
|
162
|
+
details: this.testResults
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// Write security report
|
|
166
|
+
const reportPath = path.join(__dirname, 'acl-security-report.json');
|
|
167
|
+
fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
|
|
168
|
+
|
|
169
|
+
console.log('\n' + '='.repeat(60));
|
|
170
|
+
console.log('š ACL SECURITY VALIDATION REPORT');
|
|
171
|
+
console.log('='.repeat(60));
|
|
172
|
+
console.log(`Total Tests: ${totalTests}`);
|
|
173
|
+
console.log(`Passed: ${passedTests} ā
`);
|
|
174
|
+
console.log(`Failed: ${failedTests} ā`);
|
|
175
|
+
console.log(`Pass Rate: ${passRate}%`);
|
|
176
|
+
|
|
177
|
+
if (report.criticalFindings.length > 0) {
|
|
178
|
+
console.log('\nšØ CRITICAL SECURITY ISSUES:');
|
|
179
|
+
report.criticalFindings.forEach(finding => {
|
|
180
|
+
console.log(` ā ${finding.test}: ${finding.details}`);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
console.log(`\nš Full report saved to: ${reportPath}`);
|
|
185
|
+
console.log('='.repeat(60));
|
|
186
|
+
|
|
187
|
+
return report;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async runAllTests() {
|
|
191
|
+
console.log('š Starting ACL Security Validation...');
|
|
192
|
+
console.log('Testing 6-level ACL system with project isolation\n');
|
|
193
|
+
|
|
194
|
+
await this.setup();
|
|
195
|
+
|
|
196
|
+
// Run security tests
|
|
197
|
+
await this.testBasicACL();
|
|
198
|
+
await this.testProjectLevelACL();
|
|
199
|
+
|
|
200
|
+
const report = await this.generateSecurityReport();
|
|
201
|
+
|
|
202
|
+
await this.cleanup();
|
|
203
|
+
|
|
204
|
+
return report;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Run validation if called directly
|
|
209
|
+
if (require.main === module) {
|
|
210
|
+
const validator = new ACLSecurityValidator();
|
|
211
|
+
validator.runAllTests().catch(console.error);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
module.exports = ACLSecurityValidator;
|