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.
Files changed (288) hide show
  1. package/package.json +9 -8
  2. package/scripts/.claude-flow/metrics/agent-metrics.json +1 -0
  3. package/scripts/.claude-flow/metrics/performance.json +9 -0
  4. package/scripts/.claude-flow/metrics/task-metrics.json +10 -0
  5. package/scripts/CLEANUP_OPTIMIZATION_REPORT.json +312 -0
  6. package/scripts/CLEANUP_PERFORMANCE_OPTIMIZATION.md +387 -0
  7. package/scripts/CLEANUP_QUICK_START.md +268 -0
  8. package/scripts/CLEANUP_TEST_RESULTS.md +205 -0
  9. package/scripts/README.md +339 -0
  10. package/scripts/ace-query.sh +384 -0
  11. package/scripts/agent-token-analysis.js +430 -0
  12. package/scripts/auto-setup.js +332 -0
  13. package/scripts/build/README.md +167 -0
  14. package/scripts/build/build-config.js +27 -0
  15. package/scripts/build/build-prompt-copier.sh +30 -0
  16. package/scripts/build/performance-monitor.js +869 -0
  17. package/scripts/build/prepare-publish.js +150 -0
  18. package/scripts/build/typescript-fixer.js +621 -0
  19. package/scripts/build/unified-builder.sh +428 -0
  20. package/scripts/build/update-bin-version.js +32 -0
  21. package/scripts/build/validate-agents.js +238 -0
  22. package/scripts/build-index.js +43 -0
  23. package/scripts/build-orchestrator.js +320 -0
  24. package/scripts/check-routing-stats.cjs +122 -0
  25. package/scripts/ci-validation.js +375 -0
  26. package/scripts/cleanup-blocking-coordination.sh +420 -0
  27. package/scripts/cleanup-idle-sessions.sh +59 -0
  28. package/scripts/collect-build-metrics.js +65 -0
  29. package/scripts/demo/README.md +79 -0
  30. package/scripts/demo/autoscaling-demo-simplified.js +963 -0
  31. package/scripts/demo/comprehensive-dashboard-test.js +693 -0
  32. package/scripts/demo/confidence-log.js +87 -0
  33. package/scripts/demo/confidence-report.js +82 -0
  34. package/scripts/demo/demo-multi-swarm-coordination.js +325 -0
  35. package/scripts/demo/demo-production-deployment.js +399 -0
  36. package/scripts/demo/demo-visualization-system.js +149 -0
  37. package/scripts/demo/performance-analysis.cjs +71 -0
  38. package/scripts/demo/performance-analysis.js +71 -0
  39. package/scripts/demo/test-autoscaling-demo.js +314 -0
  40. package/scripts/dependency-optimizer.js +349 -0
  41. package/scripts/dependency-security-assessment.js +331 -0
  42. package/scripts/deploy-sdk.sh +176 -0
  43. package/scripts/deployment-readiness-report.json +179 -0
  44. package/scripts/dev/README.md +264 -0
  45. package/scripts/dev/claude-flow-wrapper.sh +35 -0
  46. package/scripts/dev/claude-monitor.py +419 -0
  47. package/scripts/dev/claude-sparc.sh +562 -0
  48. package/scripts/dev/claude-wrapper.sh +17 -0
  49. package/scripts/dev/demo-phase3-compliance.js +172 -0
  50. package/scripts/dev/demo-task-system.ts +224 -0
  51. package/scripts/dev/deployment-validator.js +315 -0
  52. package/scripts/dev/spawn-claude-terminal.sh +32 -0
  53. package/scripts/dev/start-portal.sh +506 -0
  54. package/scripts/dev/start-web-ui.js +15 -0
  55. package/scripts/dev/stop-portal.sh +311 -0
  56. package/scripts/dev/validate-examples.ts +288 -0
  57. package/scripts/dev/validate-phase2.cjs +451 -0
  58. package/scripts/dev/validate-phase2.js +785 -0
  59. package/scripts/dev/validate-phase3.cjs +208 -0
  60. package/scripts/dev/validate-security-remediation.js +1 -0
  61. package/scripts/ecosystem.config.cjs +90 -0
  62. package/scripts/fix-js-extensions.js +167 -0
  63. package/scripts/generate-basic-types.js +73 -0
  64. package/scripts/generate-changelog.js +318 -0
  65. package/scripts/git-hooks/pre-commit.sh +143 -0
  66. package/scripts/health-checks.js +634 -0
  67. package/scripts/hook-wrapper.sh +54 -0
  68. package/scripts/install/README.md +375 -0
  69. package/scripts/install/REDIS_SETUP_VALIDATION.json +245 -0
  70. package/scripts/install/check-prerequisites.js +303 -0
  71. package/scripts/install/config-wizard.js +606 -0
  72. package/scripts/install/dependency-checker.js +385 -0
  73. package/scripts/install/health-check.js +765 -0
  74. package/scripts/install/install.js +256 -0
  75. package/scripts/install/installation-benchmark.js +461 -0
  76. package/scripts/install/quick-install.js +720 -0
  77. package/scripts/install/quick-start-wizard.js +295 -0
  78. package/scripts/install/redis-cli.js +289 -0
  79. package/scripts/install/redis-install-guides.md +407 -0
  80. package/scripts/install/redis-setup.js +559 -0
  81. package/scripts/install/redis-test.js +278 -0
  82. package/scripts/install/service-manager.js +672 -0
  83. package/scripts/install/setup.js +832 -0
  84. package/scripts/install/uninstall.js +526 -0
  85. package/scripts/install/update.js +461 -0
  86. package/scripts/install-pre-commit-hook.sh +127 -0
  87. package/scripts/legacy/README.md +272 -0
  88. package/scripts/legacy/batch-fix-ts.sh +54 -0
  89. package/scripts/legacy/build-migration.sh +105 -0
  90. package/scripts/legacy/build-monitor.js +209 -0
  91. package/scripts/legacy/build-with-filter.sh +84 -0
  92. package/scripts/legacy/build-workaround.sh +71 -0
  93. package/scripts/legacy/fix-ts-advanced.js +358 -0
  94. package/scripts/legacy/fix-ts-final.sh +50 -0
  95. package/scripts/legacy/fix-ts-targeted.sh +49 -0
  96. package/scripts/legacy/fix-typescript-errors.js +305 -0
  97. package/scripts/legacy/force-build.sh +63 -0
  98. package/scripts/legacy/optimize-performance.js +400 -0
  99. package/scripts/legacy/performance-monitor.js +263 -0
  100. package/scripts/legacy/performance-monitoring.js +532 -0
  101. package/scripts/legacy/performance-test-runner.js +645 -0
  102. package/scripts/legacy/quick-fix-ts.js +281 -0
  103. package/scripts/legacy/safe-build.sh +63 -0
  104. package/scripts/memory-monitor-coordinator.js +322 -0
  105. package/scripts/migrate-to-sdk.sh +520 -0
  106. package/scripts/migration/QUICK-START.md +189 -0
  107. package/scripts/migration/QUICK-START.md.backup-1760135091363 +189 -0
  108. package/scripts/migration/README.md +464 -0
  109. package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md +500 -0
  110. package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md.backup-1760135091348 +500 -0
  111. package/scripts/migration/UPDATE-PATHS-README.md +464 -0
  112. package/scripts/migration/UPDATE-PATHS-README.md.backup-1760135091337 +464 -0
  113. package/scripts/migration/example-patterns.json +19 -0
  114. package/scripts/migration/install-arm64.js +78 -0
  115. package/scripts/migration/install.js +83 -0
  116. package/scripts/migration/migrate-hooks.js +173 -0
  117. package/scripts/migration/migration-examples.ts +318 -0
  118. package/scripts/migration/reorganize-workspace.js +504 -0
  119. package/scripts/migration/test-update-paths.js +359 -0
  120. package/scripts/migration/update-paths.js +664 -0
  121. package/scripts/migration/validate-migration.js +647 -0
  122. package/scripts/monitor-loop.sh +65 -0
  123. package/scripts/monitor-memory.sh +47 -0
  124. package/scripts/monitor-migration.js +339 -0
  125. package/scripts/monitor.py +43 -0
  126. package/scripts/monitoring/README.md +178 -0
  127. package/scripts/monitoring/alert-monitor.sh +220 -0
  128. package/scripts/monitoring/analyze-resources.sh +199 -0
  129. package/scripts/monitoring/dashboards/rate-limiting-dashboard.json +211 -0
  130. package/scripts/monitoring/dynamic-monitor.sh +85 -0
  131. package/scripts/monitoring/launch-stability-test.sh +184 -0
  132. package/scripts/monitoring/monitor-test.sh +93 -0
  133. package/scripts/monitoring/pre-test-validation.sh +208 -0
  134. package/scripts/monitoring/quick-test-alerting.sh +118 -0
  135. package/scripts/monitoring/quick-test-rate-limiting.sh +206 -0
  136. package/scripts/monitoring/rate-limiting-monitor.sh +380 -0
  137. package/scripts/monitoring/resource-monitor.sh +126 -0
  138. package/scripts/monitoring/stability-monitor.js +429 -0
  139. package/scripts/monitoring/test-monitor-quick.sh +54 -0
  140. package/scripts/monitoring/view-alerts.sh +307 -0
  141. package/scripts/npm-metrics-collector.js +482 -0
  142. package/scripts/npm-package-validation.cjs +299 -0
  143. package/scripts/optimization/build-optimizer.js +438 -0
  144. package/scripts/optimization/config-validator.js +761 -0
  145. package/scripts/optimization/test-optimization.js +432 -0
  146. package/scripts/optimization/unified-activation.js +839 -0
  147. package/scripts/optimize-package-swarm.js +54 -0
  148. package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
  149. package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
  150. package/scripts/performance/test-enhanced-backend.sh +504 -0
  151. package/scripts/performance-monitor.js +644 -0
  152. package/scripts/performance-test-runner.js +698 -0
  153. package/scripts/post-deployment-monitoring.js +350 -0
  154. package/scripts/post-edit-pipeline.js +2091 -0
  155. package/scripts/post-install-claude-md.js +78 -0
  156. package/scripts/postinstall.js +79 -0
  157. package/scripts/pre-publish-validation.cjs +212 -0
  158. package/scripts/pre-publish-validation.js +429 -0
  159. package/scripts/redis-lua/cleanup-blocking-coordination.lua +198 -0
  160. package/scripts/release-announcement.js +425 -0
  161. package/scripts/release-notification.js +248 -0
  162. package/scripts/release-rollback.js +376 -0
  163. package/scripts/release-validation.js +460 -0
  164. package/scripts/rollback-sdk.sh +66 -0
  165. package/scripts/run-production-validation.ts +590 -0
  166. package/scripts/run-stability-validation.sh +687 -0
  167. package/scripts/security/README.md +339 -0
  168. package/scripts/security/deployment-validation.cjs +279 -0
  169. package/scripts/security/envelope-encryption-confidence-report.cjs +422 -0
  170. package/scripts/security/install-git-hooks.sh +132 -0
  171. package/scripts/security/install-git-secrets.sh +295 -0
  172. package/scripts/security/rotate-api-keys.js +469 -0
  173. package/scripts/security/ruv-swarm-safe.js +74 -0
  174. package/scripts/security/security-audit.cjs +538 -0
  175. package/scripts/security/setup-redis-auth.sh +397 -0
  176. package/scripts/security/validate-envelope-encryption.cjs +340 -0
  177. package/scripts/security-scan.js +492 -0
  178. package/scripts/src/web/frontend/.claude-flow/metrics/agent-metrics.json +1 -0
  179. package/scripts/src/web/frontend/.claude-flow/metrics/performance.json +9 -0
  180. package/scripts/src/web/frontend/.claude-flow/metrics/task-metrics.json +10 -0
  181. package/scripts/switch-api.sh +158 -0
  182. package/scripts/sync-agents.js +290 -0
  183. package/scripts/test/50-agent-test.js +625 -0
  184. package/scripts/test/NEW_STABILITY_TEST_GUIDE.md +407 -0
  185. package/scripts/test/README.md +236 -0
  186. package/scripts/test/STABILITY_TEST_EXAMPLE.md +347 -0
  187. package/scripts/test/STABILITY_TEST_README.md +480 -0
  188. package/scripts/test/agent-worker.js +309 -0
  189. package/scripts/test/ai-coordination-test.js +650 -0
  190. package/scripts/test/ai-mesh-coordination-test.js +416 -0
  191. package/scripts/test/check-links.ts +274 -0
  192. package/scripts/test/check-performance-regression.ts +168 -0
  193. package/scripts/test/cli-agent-coordination-test.js +313 -0
  194. package/scripts/test/coordinator-multilingual-test.js +396 -0
  195. package/scripts/test/coordinator-transparency-demo.js +585 -0
  196. package/scripts/test/coverage-report.ts +692 -0
  197. package/scripts/test/generate-swarm-tests.js +633 -0
  198. package/scripts/test/integration-test-validation.cjs +253 -0
  199. package/scripts/test/load-test-swarm.js +576 -0
  200. package/scripts/test/mesh-coordination-zero-overlap-test.js +740 -0
  201. package/scripts/test/multilingual-hello-world-test.js +390 -0
  202. package/scripts/test/quick-multilingual-demo.js +464 -0
  203. package/scripts/test/real-agent-test.js +312 -0
  204. package/scripts/test/run-phase3-compliance-tests.js +427 -0
  205. package/scripts/test/run-stability-test-examples.sh +292 -0
  206. package/scripts/test/stability-results/stability-metrics.jsonl +83 -0
  207. package/scripts/test/stability-results/stability-test-report.json +128 -0
  208. package/scripts/test/stability-results/stability-test.log +1827 -0
  209. package/scripts/test/stability-test-50-agents.js +734 -0
  210. package/scripts/test/test-batch-tasks.ts +29 -0
  211. package/scripts/test/test-byzantine-resolution.js +246 -0
  212. package/scripts/test/test-claude-spawn-options.sh +63 -0
  213. package/scripts/test/test-cli-wizard.js +331 -0
  214. package/scripts/test/test-comprehensive.js +401 -0
  215. package/scripts/test/test-coordination-features.ts +238 -0
  216. package/scripts/test/test-fallback-systems.js +276 -0
  217. package/scripts/test/test-init-command.ts +302 -0
  218. package/scripts/test/test-mcp.ts +251 -0
  219. package/scripts/test/test-runner.ts +568 -0
  220. package/scripts/test/test-swarm-integration.sh +92 -0
  221. package/scripts/test/test-swarm.ts +142 -0
  222. package/scripts/test/validation-summary.ts +408 -0
  223. package/scripts/test-cleanup-performance.sh +416 -0
  224. package/scripts/test-dashboard-auth.cjs +203 -0
  225. package/scripts/test-docker-deployment.sh +207 -0
  226. package/scripts/test-npm-package.cjs +167 -0
  227. package/scripts/test-provider-routing.cjs +226 -0
  228. package/scripts/test-routing-telemetry.cjs +147 -0
  229. package/scripts/test-runner.cjs +154 -0
  230. package/scripts/test-zai-10k.cjs +81 -0
  231. package/scripts/test-zai-api.cjs +191 -0
  232. package/scripts/test-zai-diagnostic.cjs +151 -0
  233. package/scripts/test-zai-final.cjs +128 -0
  234. package/scripts/test-zai-with-env.cjs +85 -0
  235. package/scripts/utils/README.md +261 -0
  236. package/scripts/utils/clean-build-artifacts.sh +94 -0
  237. package/scripts/utils/cleanup-root.sh +69 -0
  238. package/scripts/utils/fix-cliffy-imports.js +307 -0
  239. package/scripts/utils/fix-duplicate-imports.js +114 -0
  240. package/scripts/utils/fix-error-handling.cjs +70 -0
  241. package/scripts/utils/fix-import-paths.js +104 -0
  242. package/scripts/utils/fix-imports.js +116 -0
  243. package/scripts/utils/fix-shebang.js +78 -0
  244. package/scripts/utils/fix-test-modules.js +27 -0
  245. package/scripts/utils/fix-timezone-issue-246.js +200 -0
  246. package/scripts/utils/fix-ts-comprehensive.py +182 -0
  247. package/scripts/utils/fix-ts-targeted-batch.js +250 -0
  248. package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
  249. package/scripts/utils/simple-test-fixer.js +190 -0
  250. package/scripts/utils/validate-metrics-structure.cjs +144 -0
  251. package/scripts/validate-agent-hooks.js +506 -0
  252. package/scripts/validate-changelog.js +241 -0
  253. package/scripts/validate-coordination-cli.js +69 -0
  254. package/scripts/validate-coordination-toggle-integration.cjs +501 -0
  255. package/scripts/validate-docker-infrastructure.sh +502 -0
  256. package/scripts/validate-entry-points.js +300 -0
  257. package/scripts/validate-stage3-performance.ts +377 -0
  258. package/scripts/validate-template-bundling.js +180 -0
  259. package/scripts/validation/README.md +33 -0
  260. package/scripts/validation/acl-security-validation.cjs +214 -0
  261. package/scripts/validation/acl-security-validation.js +402 -0
  262. package/scripts/validation/byzantine-verification.js +407 -0
  263. package/scripts/validation/final-phase-2-consensus.cjs +219 -0
  264. package/scripts/validation/final-security-validation.js +791 -0
  265. package/scripts/validation/final-wasm-validation.cjs +840 -0
  266. package/scripts/validation/integration-test-analysis.js +105 -0
  267. package/scripts/validation/phase-0-comprehensive-validation.js +474 -0
  268. package/scripts/validation/phase-0-consensus-report.js +139 -0
  269. package/scripts/validation/phase-0-final-report.js +112 -0
  270. package/scripts/validation/phase-0-redis-consensus-report.js +129 -0
  271. package/scripts/validation/phase-0-validation-improved.js +490 -0
  272. package/scripts/validation/phase-0-validation-test.js +65 -0
  273. package/scripts/validation/phase-1-consensus-report.cjs +342 -0
  274. package/scripts/validation/phase-1-consensus-validation.cjs +551 -0
  275. package/scripts/validation/phase-1-consensus-validation.js +551 -0
  276. package/scripts/validation/phase-2-consensus-report.cjs +186 -0
  277. package/scripts/validation/phase-2-validation.cjs +171 -0
  278. package/scripts/validation/phase-2-validation.js +171 -0
  279. package/scripts/validation/phase-4-consensus-report.js +181 -0
  280. package/scripts/validation/phase-4-final-validation.js +351 -0
  281. package/scripts/validation/phase-5-consensus-report.cjs +113 -0
  282. package/scripts/validation/phase-5-consensus-report.js +113 -0
  283. package/scripts/validation/security-analysis.js +49 -0
  284. package/scripts/validation/security-validation.js +492 -0
  285. package/scripts/validation/simple-security-validation.js +464 -0
  286. package/scripts/verify-installation.js +112 -0
  287. package/scripts/verify-mcp-server.js +86 -0
  288. 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
+ }