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,299 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* NPM Package Pre-Publication Validation
|
|
5
|
+
*
|
|
6
|
+
* Validates package before NPM publication:
|
|
7
|
+
* - No .env or secret files in package
|
|
8
|
+
* - Entry points are valid
|
|
9
|
+
* - Dependencies correctly categorized
|
|
10
|
+
* - Templates bundled correctly
|
|
11
|
+
* - Package size acceptable
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const fs = require('fs-extra');
|
|
15
|
+
const path = require('path');
|
|
16
|
+
const { execSync } = require('child_process');
|
|
17
|
+
|
|
18
|
+
const VALIDATION_RESULTS = {
|
|
19
|
+
passed: [],
|
|
20
|
+
warnings: [],
|
|
21
|
+
errors: [],
|
|
22
|
+
confidence: 0
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
console.log('🔍 NPM Package Pre-Publication Validation\n');
|
|
26
|
+
|
|
27
|
+
// 1. Check for .env files in package
|
|
28
|
+
console.log('1️⃣ Checking for .env and secret files...');
|
|
29
|
+
try {
|
|
30
|
+
const npmignore = fs.readFileSync('.npmignore', 'utf-8');
|
|
31
|
+
const hasEnvIgnore = npmignore.includes('.env') || npmignore.includes('*.env*');
|
|
32
|
+
const hasKeysIgnore = npmignore.includes('*.key') || npmignore.includes('*.pem');
|
|
33
|
+
|
|
34
|
+
if (hasEnvIgnore && hasKeysIgnore) {
|
|
35
|
+
VALIDATION_RESULTS.passed.push('✅ .npmignore excludes .env and secret files');
|
|
36
|
+
} else {
|
|
37
|
+
VALIDATION_RESULTS.errors.push('❌ .npmignore missing .env or secret file patterns');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Check for actual .env files
|
|
41
|
+
const envFiles = [];
|
|
42
|
+
const checkDir = (dir, exclude = ['node_modules', '.git', 'dist', '.claude-flow-novice']) => {
|
|
43
|
+
const items = fs.readdirSync(dir);
|
|
44
|
+
for (const item of items) {
|
|
45
|
+
if (exclude.includes(item)) continue;
|
|
46
|
+
const fullPath = path.join(dir, item);
|
|
47
|
+
const stat = fs.statSync(fullPath);
|
|
48
|
+
if (stat.isDirectory()) {
|
|
49
|
+
checkDir(fullPath, exclude);
|
|
50
|
+
} else if (item.match(/^\.env(?!\.example|\.template|\.secure\.template)/)) {
|
|
51
|
+
envFiles.push(fullPath);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
checkDir('.');
|
|
57
|
+
if (envFiles.length > 0) {
|
|
58
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Found ${envFiles.length} .env files in project - ensure they're excluded`);
|
|
59
|
+
envFiles.slice(0, 5).forEach(f => console.log(` - ${f}`));
|
|
60
|
+
} else {
|
|
61
|
+
VALIDATION_RESULTS.passed.push('✅ No problematic .env files found');
|
|
62
|
+
}
|
|
63
|
+
} catch (error) {
|
|
64
|
+
VALIDATION_RESULTS.errors.push(`❌ Error checking .env files: ${error.message}`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 2. Validate package.json entry points
|
|
68
|
+
console.log('\n2️⃣ Validating package.json entry points...');
|
|
69
|
+
try {
|
|
70
|
+
const pkg = require('../package.json');
|
|
71
|
+
|
|
72
|
+
// Check main entry
|
|
73
|
+
if (fs.existsSync(pkg.main)) {
|
|
74
|
+
VALIDATION_RESULTS.passed.push(`✅ Main entry point exists: ${pkg.main}`);
|
|
75
|
+
} else {
|
|
76
|
+
VALIDATION_RESULTS.errors.push(`❌ Main entry point missing: ${pkg.main}`);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Check bin entries
|
|
80
|
+
let binValid = true;
|
|
81
|
+
for (const [name, binPath] of Object.entries(pkg.bin || {})) {
|
|
82
|
+
if (!fs.existsSync(binPath)) {
|
|
83
|
+
VALIDATION_RESULTS.errors.push(`❌ Bin entry missing: ${name} -> ${binPath}`);
|
|
84
|
+
binValid = false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (binValid && Object.keys(pkg.bin || {}).length > 0) {
|
|
88
|
+
VALIDATION_RESULTS.passed.push(`✅ All ${Object.keys(pkg.bin).length} bin entries valid`);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Check exports
|
|
92
|
+
let exportsValid = true;
|
|
93
|
+
for (const [exportName, exportPath] of Object.entries(pkg.exports || {})) {
|
|
94
|
+
if (!fs.existsSync(exportPath)) {
|
|
95
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Export path missing: ${exportName} -> ${exportPath}`);
|
|
96
|
+
exportsValid = false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (exportsValid && Object.keys(pkg.exports || {}).length > 0) {
|
|
100
|
+
VALIDATION_RESULTS.passed.push(`✅ All ${Object.keys(pkg.exports).length} exports valid`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Check templates in files array
|
|
104
|
+
const hasTemplates = pkg.files.includes('templates/');
|
|
105
|
+
if (hasTemplates) {
|
|
106
|
+
VALIDATION_RESULTS.passed.push('✅ Templates included in files array');
|
|
107
|
+
} else {
|
|
108
|
+
VALIDATION_RESULTS.errors.push('❌ Templates missing from files array');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
} catch (error) {
|
|
112
|
+
VALIDATION_RESULTS.errors.push(`❌ Error validating package.json: ${error.message}`);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// 3. Check templates directory
|
|
116
|
+
console.log('\n3️⃣ Checking templates directory...');
|
|
117
|
+
try {
|
|
118
|
+
if (fs.existsSync('templates')) {
|
|
119
|
+
const templateDirs = fs.readdirSync('templates').filter(f => {
|
|
120
|
+
const stat = fs.statSync(path.join('templates', f));
|
|
121
|
+
return stat.isDirectory();
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
if (templateDirs.length > 0) {
|
|
125
|
+
VALIDATION_RESULTS.passed.push(`✅ Found ${templateDirs.length} template directories`);
|
|
126
|
+
|
|
127
|
+
// Validate each template has required files
|
|
128
|
+
for (const dir of templateDirs) {
|
|
129
|
+
const templatePath = path.join('templates', dir);
|
|
130
|
+
const hasClaude = fs.existsSync(path.join(templatePath, 'CLAUDE.md'));
|
|
131
|
+
const hasPkg = fs.existsSync(path.join(templatePath, 'package.json'));
|
|
132
|
+
|
|
133
|
+
if (hasClaude && hasPkg) {
|
|
134
|
+
VALIDATION_RESULTS.passed.push(`✅ Template ${dir} has CLAUDE.md and package.json`);
|
|
135
|
+
} else {
|
|
136
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Template ${dir} missing required files`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
} else {
|
|
140
|
+
VALIDATION_RESULTS.warnings.push('⚠️ No template directories found');
|
|
141
|
+
}
|
|
142
|
+
} else {
|
|
143
|
+
VALIDATION_RESULTS.warnings.push('⚠️ Templates directory does not exist');
|
|
144
|
+
}
|
|
145
|
+
} catch (error) {
|
|
146
|
+
VALIDATION_RESULTS.errors.push(`❌ Error checking templates: ${error.message}`);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// 4. Check build artifacts
|
|
150
|
+
console.log('\n4️⃣ Checking build artifacts...');
|
|
151
|
+
try {
|
|
152
|
+
if (fs.existsSync('.claude-flow-novice/dist')) {
|
|
153
|
+
const distFiles = execSync('find .claude-flow-novice/dist -type f | wc -l').toString().trim();
|
|
154
|
+
VALIDATION_RESULTS.passed.push(`✅ Build artifacts exist (${distFiles} files)`);
|
|
155
|
+
} else {
|
|
156
|
+
VALIDATION_RESULTS.errors.push('❌ Build artifacts missing - run npm run build');
|
|
157
|
+
}
|
|
158
|
+
} catch (error) {
|
|
159
|
+
VALIDATION_RESULTS.errors.push(`❌ Error checking build artifacts: ${error.message}`);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// 5. Dependencies categorization
|
|
163
|
+
console.log('\n5️⃣ Checking dependencies categorization...');
|
|
164
|
+
try {
|
|
165
|
+
const pkg = require('../package.json');
|
|
166
|
+
const deps = Object.keys(pkg.dependencies || {});
|
|
167
|
+
const devDeps = Object.keys(pkg.devDependencies || {});
|
|
168
|
+
|
|
169
|
+
// Check for common dev dependencies in dependencies
|
|
170
|
+
const commonDevDeps = ['@types/', 'eslint', 'prettier', 'jest', '@swc/', 'typescript'];
|
|
171
|
+
const misplacedDeps = deps.filter(dep =>
|
|
172
|
+
commonDevDeps.some(pattern => dep.includes(pattern))
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
if (misplacedDeps.length > 0) {
|
|
176
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Possible dev dependencies in dependencies: ${misplacedDeps.join(', ')}`);
|
|
177
|
+
} else {
|
|
178
|
+
VALIDATION_RESULTS.passed.push('✅ Dependencies correctly categorized');
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
console.log(` Dependencies: ${deps.length}`);
|
|
182
|
+
console.log(` DevDependencies: ${devDeps.length}`);
|
|
183
|
+
|
|
184
|
+
} catch (error) {
|
|
185
|
+
VALIDATION_RESULTS.errors.push(`❌ Error checking dependencies: ${error.message}`);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// 6. Package size check
|
|
189
|
+
console.log('\n6️⃣ Estimating package size...');
|
|
190
|
+
try {
|
|
191
|
+
const pkg = require('../package.json');
|
|
192
|
+
const filesToInclude = pkg.files || [];
|
|
193
|
+
|
|
194
|
+
let totalSize = 0;
|
|
195
|
+
for (const pattern of filesToInclude) {
|
|
196
|
+
if (fs.existsSync(pattern)) {
|
|
197
|
+
const stat = fs.statSync(pattern);
|
|
198
|
+
if (stat.isFile()) {
|
|
199
|
+
totalSize += stat.size;
|
|
200
|
+
} else if (stat.isDirectory()) {
|
|
201
|
+
const size = execSync(`du -sb "${pattern}" | cut -f1`).toString().trim();
|
|
202
|
+
totalSize += parseInt(size);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const sizeMB = (totalSize / 1024 / 1024).toFixed(2);
|
|
208
|
+
console.log(` Estimated size: ${sizeMB} MB`);
|
|
209
|
+
|
|
210
|
+
if (totalSize < 100 * 1024 * 1024) { // < 100MB
|
|
211
|
+
VALIDATION_RESULTS.passed.push(`✅ Package size acceptable: ${sizeMB} MB`);
|
|
212
|
+
} else {
|
|
213
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Package size large: ${sizeMB} MB`);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
} catch (error) {
|
|
217
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Could not estimate package size: ${error.message}`);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// 7. Check for secrets in code
|
|
221
|
+
console.log('\n7️⃣ Scanning for potential secrets...');
|
|
222
|
+
try {
|
|
223
|
+
const secretPatterns = [
|
|
224
|
+
/password\s*=\s*['"]\w+['"]/i,
|
|
225
|
+
/api[_-]?key\s*=\s*['"]\w+['"]/i,
|
|
226
|
+
/secret\s*=\s*['"]\w+['"]/i,
|
|
227
|
+
/token\s*=\s*['"]\w+['"]/i,
|
|
228
|
+
/-----BEGIN (RSA |DSA )?PRIVATE KEY-----/,
|
|
229
|
+
];
|
|
230
|
+
|
|
231
|
+
let foundSecrets = false;
|
|
232
|
+
const checkFile = (file) => {
|
|
233
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
234
|
+
for (const pattern of secretPatterns) {
|
|
235
|
+
if (pattern.test(content)) {
|
|
236
|
+
if (!content.includes('process.env') && !content.includes('example')) {
|
|
237
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Potential secret in ${file}`);
|
|
238
|
+
foundSecrets = true;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
// Sample check in key directories
|
|
245
|
+
const dirsToCheck = ['src/cli', 'src/security', 'scripts'];
|
|
246
|
+
for (const dir of dirsToCheck) {
|
|
247
|
+
if (fs.existsSync(dir)) {
|
|
248
|
+
const files = execSync(`find ${dir} -name "*.js" -o -name "*.ts" 2>/dev/null || true`).toString().split('\n').filter(Boolean);
|
|
249
|
+
files.slice(0, 20).forEach(checkFile); // Sample first 20 files
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (!foundSecrets) {
|
|
254
|
+
VALIDATION_RESULTS.passed.push('✅ No obvious secrets detected in sample');
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
} catch (error) {
|
|
258
|
+
VALIDATION_RESULTS.warnings.push(`⚠️ Could not scan for secrets: ${error.message}`);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Generate report
|
|
262
|
+
console.log('\n' + '='.repeat(60));
|
|
263
|
+
console.log('📊 VALIDATION REPORT\n');
|
|
264
|
+
|
|
265
|
+
console.log('✅ PASSED:');
|
|
266
|
+
VALIDATION_RESULTS.passed.forEach(item => console.log(` ${item}`));
|
|
267
|
+
|
|
268
|
+
if (VALIDATION_RESULTS.warnings.length > 0) {
|
|
269
|
+
console.log('\n⚠️ WARNINGS:');
|
|
270
|
+
VALIDATION_RESULTS.warnings.forEach(item => console.log(` ${item}`));
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (VALIDATION_RESULTS.errors.length > 0) {
|
|
274
|
+
console.log('\n❌ ERRORS:');
|
|
275
|
+
VALIDATION_RESULTS.errors.forEach(item => console.log(` ${item}`));
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Calculate confidence score
|
|
279
|
+
const totalChecks = VALIDATION_RESULTS.passed.length + VALIDATION_RESULTS.warnings.length + VALIDATION_RESULTS.errors.length;
|
|
280
|
+
const passedChecks = VALIDATION_RESULTS.passed.length;
|
|
281
|
+
const errorPenalty = VALIDATION_RESULTS.errors.length * 0.15;
|
|
282
|
+
const warningPenalty = VALIDATION_RESULTS.warnings.length * 0.05;
|
|
283
|
+
|
|
284
|
+
VALIDATION_RESULTS.confidence = Math.max(0, Math.min(1, (passedChecks / totalChecks) - errorPenalty - warningPenalty));
|
|
285
|
+
|
|
286
|
+
console.log('\n' + '='.repeat(60));
|
|
287
|
+
console.log(`📈 Confidence Score: ${(VALIDATION_RESULTS.confidence * 100).toFixed(1)}%`);
|
|
288
|
+
console.log(` Target: ≥75% for publication`);
|
|
289
|
+
|
|
290
|
+
if (VALIDATION_RESULTS.confidence >= 0.75) {
|
|
291
|
+
console.log('\n✅ PACKAGE READY FOR PUBLICATION');
|
|
292
|
+
process.exit(0);
|
|
293
|
+
} else if (VALIDATION_RESULTS.errors.length > 0) {
|
|
294
|
+
console.log('\n❌ CRITICAL ERRORS - FIX BEFORE PUBLICATION');
|
|
295
|
+
process.exit(1);
|
|
296
|
+
} else {
|
|
297
|
+
console.log('\n⚠️ WARNINGS EXIST - REVIEW BEFORE PUBLICATION');
|
|
298
|
+
process.exit(0);
|
|
299
|
+
}
|