claude-flow-novice 2.3.4 → 2.3.6

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 (347) hide show
  1. package/dist/src/booster/performance-benchmark.js +1 -1
  2. package/dist/src/booster/wasm-demo.js +1 -1
  3. package/dist/src/cli/command-registry.js +2 -2
  4. package/dist/src/cli/help-formatter.js +137 -109
  5. package/dist/src/cli/simple-cli.js +2528 -2121
  6. package/dist/src/cli/simple-commands/sparc/refinement.js +3 -3
  7. package/dist/src/cli/validation-helper.js +98 -49
  8. package/dist/src/commands/suggest-templates.js +4 -4
  9. package/dist/src/core/version.js +23 -15
  10. package/dist/src/memory/swarm-memory.js +603 -470
  11. package/dist/src/slash-commands/fullstack.js +2 -2
  12. package/dist/src/slash-commands/parse-epic.js +1 -1
  13. package/package.json +1 -1
  14. package/scripts/postinstall.js +41 -31
  15. package/dist/scripts/.claude-flow/metrics/agent-metrics.json +0 -1
  16. package/dist/scripts/.claude-flow/metrics/performance.json +0 -9
  17. package/dist/scripts/.claude-flow/metrics/task-metrics.json +0 -10
  18. package/dist/scripts/CLEANUP_OPTIMIZATION_REPORT.json +0 -312
  19. package/dist/scripts/CLEANUP_PERFORMANCE_OPTIMIZATION.md +0 -387
  20. package/dist/scripts/CLEANUP_QUICK_START.md +0 -268
  21. package/dist/scripts/CLEANUP_TEST_RESULTS.md +0 -205
  22. package/dist/scripts/README.md +0 -339
  23. package/dist/scripts/ace-query.sh +0 -384
  24. package/dist/scripts/agent-token-analysis.js +0 -430
  25. package/dist/scripts/auto-setup.js +0 -332
  26. package/dist/scripts/build/README.md +0 -167
  27. package/dist/scripts/build/build-config.js +0 -27
  28. package/dist/scripts/build/build-prompt-copier.sh +0 -30
  29. package/dist/scripts/build/performance-monitor.js +0 -869
  30. package/dist/scripts/build/prepare-publish.js +0 -150
  31. package/dist/scripts/build/typescript-fixer.js +0 -621
  32. package/dist/scripts/build/unified-builder.sh +0 -428
  33. package/dist/scripts/build/update-bin-version.js +0 -32
  34. package/dist/scripts/build/validate-agents.js +0 -238
  35. package/dist/scripts/build-index.js +0 -43
  36. package/dist/scripts/build-orchestrator.js +0 -320
  37. package/dist/scripts/check-routing-stats.cjs +0 -122
  38. package/dist/scripts/ci-validation.js +0 -375
  39. package/dist/scripts/cleanup-blocking-coordination.sh +0 -420
  40. package/dist/scripts/cleanup-idle-sessions.sh +0 -118
  41. package/dist/scripts/collect-build-metrics.js +0 -65
  42. package/dist/scripts/demo/README.md +0 -79
  43. package/dist/scripts/demo/autoscaling-demo-simplified.js +0 -963
  44. package/dist/scripts/demo/comprehensive-dashboard-test.js +0 -693
  45. package/dist/scripts/demo/confidence-log.js +0 -87
  46. package/dist/scripts/demo/confidence-report.js +0 -82
  47. package/dist/scripts/demo/demo-multi-swarm-coordination.js +0 -325
  48. package/dist/scripts/demo/demo-production-deployment.js +0 -399
  49. package/dist/scripts/demo/demo-visualization-system.js +0 -149
  50. package/dist/scripts/demo/performance-analysis.cjs +0 -71
  51. package/dist/scripts/demo/performance-analysis.js +0 -71
  52. package/dist/scripts/demo/test-autoscaling-demo.js +0 -314
  53. package/dist/scripts/dependency-optimizer.js +0 -349
  54. package/dist/scripts/dependency-security-assessment.js +0 -331
  55. package/dist/scripts/deploy-sdk.sh +0 -176
  56. package/dist/scripts/deployment-readiness-report.json +0 -179
  57. package/dist/scripts/dev/README.md +0 -264
  58. package/dist/scripts/dev/claude-flow-wrapper.sh +0 -35
  59. package/dist/scripts/dev/claude-monitor.py +0 -419
  60. package/dist/scripts/dev/claude-sparc.sh +0 -562
  61. package/dist/scripts/dev/claude-wrapper.sh +0 -17
  62. package/dist/scripts/dev/demo-phase3-compliance.js +0 -172
  63. package/dist/scripts/dev/demo-task-system.ts +0 -224
  64. package/dist/scripts/dev/deployment-validator.js +0 -315
  65. package/dist/scripts/dev/spawn-claude-terminal.sh +0 -32
  66. package/dist/scripts/dev/start-portal.sh +0 -506
  67. package/dist/scripts/dev/start-web-ui.js +0 -15
  68. package/dist/scripts/dev/stop-portal.sh +0 -311
  69. package/dist/scripts/dev/validate-examples.ts +0 -288
  70. package/dist/scripts/dev/validate-phase2.cjs +0 -451
  71. package/dist/scripts/dev/validate-phase2.js +0 -785
  72. package/dist/scripts/dev/validate-phase3.cjs +0 -208
  73. package/dist/scripts/dev/validate-security-remediation.js +0 -1
  74. package/dist/scripts/ecosystem.config.cjs +0 -90
  75. package/dist/scripts/enhanced-memory-spiral-killer.sh +0 -221
  76. package/dist/scripts/fix-js-extensions.js +0 -167
  77. package/dist/scripts/generate-basic-types.js +0 -73
  78. package/dist/scripts/generate-changelog.js +0 -318
  79. package/dist/scripts/git-hooks/pre-commit.sh +0 -143
  80. package/dist/scripts/health-checks.js +0 -634
  81. package/dist/scripts/hook-wrapper.sh +0 -54
  82. package/dist/scripts/install/README.md +0 -375
  83. package/dist/scripts/install/REDIS_SETUP_VALIDATION.json +0 -245
  84. package/dist/scripts/install/check-prerequisites.js +0 -303
  85. package/dist/scripts/install/config-wizard.js +0 -606
  86. package/dist/scripts/install/dependency-checker.js +0 -385
  87. package/dist/scripts/install/health-check.js +0 -765
  88. package/dist/scripts/install/install.js +0 -256
  89. package/dist/scripts/install/installation-benchmark.js +0 -461
  90. package/dist/scripts/install/quick-install.js +0 -720
  91. package/dist/scripts/install/quick-start-wizard.js +0 -295
  92. package/dist/scripts/install/redis-cli.js +0 -289
  93. package/dist/scripts/install/redis-install-guides.md +0 -407
  94. package/dist/scripts/install/redis-setup.js +0 -559
  95. package/dist/scripts/install/redis-test.js +0 -278
  96. package/dist/scripts/install/service-manager.js +0 -672
  97. package/dist/scripts/install/setup.js +0 -832
  98. package/dist/scripts/install/uninstall.js +0 -526
  99. package/dist/scripts/install/update.js +0 -461
  100. package/dist/scripts/install-pre-commit-hook.sh +0 -127
  101. package/dist/scripts/legacy/README.md +0 -272
  102. package/dist/scripts/legacy/batch-fix-ts.sh +0 -54
  103. package/dist/scripts/legacy/build-migration.sh +0 -105
  104. package/dist/scripts/legacy/build-monitor.js +0 -209
  105. package/dist/scripts/legacy/build-with-filter.sh +0 -84
  106. package/dist/scripts/legacy/build-workaround.sh +0 -71
  107. package/dist/scripts/legacy/fix-ts-advanced.js +0 -358
  108. package/dist/scripts/legacy/fix-ts-final.sh +0 -50
  109. package/dist/scripts/legacy/fix-ts-targeted.sh +0 -49
  110. package/dist/scripts/legacy/fix-typescript-errors.js +0 -305
  111. package/dist/scripts/legacy/force-build.sh +0 -63
  112. package/dist/scripts/legacy/optimize-performance.js +0 -400
  113. package/dist/scripts/legacy/performance-monitor.js +0 -263
  114. package/dist/scripts/legacy/performance-monitoring.js +0 -532
  115. package/dist/scripts/legacy/performance-test-runner.js +0 -645
  116. package/dist/scripts/legacy/quick-fix-ts.js +0 -281
  117. package/dist/scripts/legacy/safe-build.sh +0 -63
  118. package/dist/scripts/memory-monitor-coordinator.js +0 -451
  119. package/dist/scripts/migrate-to-sdk.sh +0 -520
  120. package/dist/scripts/migration/QUICK-START.md +0 -189
  121. package/dist/scripts/migration/QUICK-START.md.backup-1760135091363 +0 -189
  122. package/dist/scripts/migration/README.md +0 -464
  123. package/dist/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md +0 -500
  124. package/dist/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md.backup-1760135091348 +0 -500
  125. package/dist/scripts/migration/UPDATE-PATHS-README.md +0 -464
  126. package/dist/scripts/migration/UPDATE-PATHS-README.md.backup-1760135091337 +0 -464
  127. package/dist/scripts/migration/example-patterns.json +0 -19
  128. package/dist/scripts/migration/install-arm64.js +0 -78
  129. package/dist/scripts/migration/install.js +0 -83
  130. package/dist/scripts/migration/migrate-hooks.js +0 -173
  131. package/dist/scripts/migration/migration-examples.ts +0 -318
  132. package/dist/scripts/migration/reorganize-workspace.js +0 -504
  133. package/dist/scripts/migration/test-update-paths.js +0 -359
  134. package/dist/scripts/migration/update-paths.js +0 -664
  135. package/dist/scripts/migration/validate-migration.js +0 -647
  136. package/dist/scripts/monitor-loop.sh +0 -65
  137. package/dist/scripts/monitor-memory.sh +0 -47
  138. package/dist/scripts/monitor-migration.js +0 -339
  139. package/dist/scripts/monitor.py +0 -43
  140. package/dist/scripts/monitoring/README.md +0 -178
  141. package/dist/scripts/monitoring/alert-monitor.sh +0 -220
  142. package/dist/scripts/monitoring/analyze-resources.sh +0 -199
  143. package/dist/scripts/monitoring/dashboards/rate-limiting-dashboard.json +0 -211
  144. package/dist/scripts/monitoring/dynamic-monitor.sh +0 -85
  145. package/dist/scripts/monitoring/launch-stability-test.sh +0 -184
  146. package/dist/scripts/monitoring/monitor-test.sh +0 -93
  147. package/dist/scripts/monitoring/pre-test-validation.sh +0 -208
  148. package/dist/scripts/monitoring/quick-test-alerting.sh +0 -118
  149. package/dist/scripts/monitoring/quick-test-rate-limiting.sh +0 -206
  150. package/dist/scripts/monitoring/rate-limiting-monitor.sh +0 -380
  151. package/dist/scripts/monitoring/resource-monitor.sh +0 -126
  152. package/dist/scripts/monitoring/stability-monitor.js +0 -429
  153. package/dist/scripts/monitoring/test-monitor-quick.sh +0 -54
  154. package/dist/scripts/monitoring/view-alerts.sh +0 -307
  155. package/dist/scripts/npm-metrics-collector.js +0 -482
  156. package/dist/scripts/npm-package-validation.cjs +0 -299
  157. package/dist/scripts/optimization/build-optimizer.js +0 -438
  158. package/dist/scripts/optimization/config-validator.js +0 -761
  159. package/dist/scripts/optimization/test-optimization.js +0 -432
  160. package/dist/scripts/optimization/unified-activation.js +0 -839
  161. package/dist/scripts/optimize-package-swarm.js +0 -54
  162. package/dist/scripts/performance/ACTIVATION_COMMANDS.md +0 -292
  163. package/dist/scripts/performance/sqlite-enhanced-activation.sh +0 -583
  164. package/dist/scripts/performance/test-enhanced-backend.sh +0 -504
  165. package/dist/scripts/performance-monitor.js +0 -644
  166. package/dist/scripts/performance-test-runner.js +0 -698
  167. package/dist/scripts/post-deployment-monitoring.js +0 -350
  168. package/dist/scripts/post-edit-pipeline.js +0 -2091
  169. package/dist/scripts/post-install-claude-md.js +0 -78
  170. package/dist/scripts/postinstall.js +0 -84
  171. package/dist/scripts/pre-publish-validation.cjs +0 -212
  172. package/dist/scripts/pre-publish-validation.js +0 -429
  173. package/dist/scripts/redis-lua/cleanup-blocking-coordination.lua +0 -198
  174. package/dist/scripts/release-announcement.js +0 -425
  175. package/dist/scripts/release-notification.js +0 -248
  176. package/dist/scripts/release-rollback.js +0 -376
  177. package/dist/scripts/release-validation.js +0 -460
  178. package/dist/scripts/rollback-sdk.sh +0 -66
  179. package/dist/scripts/run-production-validation.ts +0 -590
  180. package/dist/scripts/run-stability-validation.sh +0 -687
  181. package/dist/scripts/security/README.md +0 -339
  182. package/dist/scripts/security/deployment-validation.cjs +0 -279
  183. package/dist/scripts/security/envelope-encryption-confidence-report.cjs +0 -422
  184. package/dist/scripts/security/install-git-hooks.sh +0 -132
  185. package/dist/scripts/security/install-git-secrets.sh +0 -295
  186. package/dist/scripts/security/rotate-api-keys.js +0 -469
  187. package/dist/scripts/security/ruv-swarm-safe.js +0 -74
  188. package/dist/scripts/security/security-audit.cjs +0 -538
  189. package/dist/scripts/security/setup-redis-auth.sh +0 -397
  190. package/dist/scripts/security/validate-envelope-encryption.cjs +0 -340
  191. package/dist/scripts/security-scan.js +0 -492
  192. package/dist/scripts/src/web/frontend/.claude-flow/metrics/agent-metrics.json +0 -1
  193. package/dist/scripts/src/web/frontend/.claude-flow/metrics/performance.json +0 -9
  194. package/dist/scripts/src/web/frontend/.claude-flow/metrics/task-metrics.json +0 -10
  195. package/dist/scripts/switch-api.sh +0 -159
  196. package/dist/scripts/sync-agents.js +0 -290
  197. package/dist/scripts/test/50-agent-test.js +0 -625
  198. package/dist/scripts/test/NEW_STABILITY_TEST_GUIDE.md +0 -407
  199. package/dist/scripts/test/README.md +0 -236
  200. package/dist/scripts/test/STABILITY_TEST_EXAMPLE.md +0 -347
  201. package/dist/scripts/test/STABILITY_TEST_README.md +0 -480
  202. package/dist/scripts/test/agent-worker.js +0 -309
  203. package/dist/scripts/test/ai-coordination-test.js +0 -650
  204. package/dist/scripts/test/ai-mesh-coordination-test.js +0 -416
  205. package/dist/scripts/test/check-links.ts +0 -274
  206. package/dist/scripts/test/check-performance-regression.ts +0 -168
  207. package/dist/scripts/test/cli-agent-coordination-test.js +0 -313
  208. package/dist/scripts/test/coordinator-multilingual-test.js +0 -396
  209. package/dist/scripts/test/coordinator-transparency-demo.js +0 -585
  210. package/dist/scripts/test/coverage-report.ts +0 -692
  211. package/dist/scripts/test/generate-swarm-tests.js +0 -633
  212. package/dist/scripts/test/integration-test-validation.cjs +0 -253
  213. package/dist/scripts/test/load-test-swarm.js +0 -576
  214. package/dist/scripts/test/mesh-coordination-zero-overlap-test.js +0 -740
  215. package/dist/scripts/test/multilingual-hello-world-test.js +0 -390
  216. package/dist/scripts/test/quick-multilingual-demo.js +0 -464
  217. package/dist/scripts/test/real-agent-test.js +0 -312
  218. package/dist/scripts/test/run-phase3-compliance-tests.js +0 -427
  219. package/dist/scripts/test/run-stability-test-examples.sh +0 -292
  220. package/dist/scripts/test/stability-results/stability-metrics.jsonl +0 -83
  221. package/dist/scripts/test/stability-results/stability-test-report.json +0 -128
  222. package/dist/scripts/test/stability-results/stability-test.log +0 -1827
  223. package/dist/scripts/test/stability-test-50-agents.js +0 -734
  224. package/dist/scripts/test/test-batch-tasks.ts +0 -29
  225. package/dist/scripts/test/test-byzantine-resolution.js +0 -246
  226. package/dist/scripts/test/test-claude-spawn-options.sh +0 -63
  227. package/dist/scripts/test/test-cli-wizard.js +0 -331
  228. package/dist/scripts/test/test-comprehensive.js +0 -401
  229. package/dist/scripts/test/test-coordination-features.ts +0 -238
  230. package/dist/scripts/test/test-fallback-systems.js +0 -276
  231. package/dist/scripts/test/test-init-command.ts +0 -302
  232. package/dist/scripts/test/test-mcp.ts +0 -251
  233. package/dist/scripts/test/test-runner.ts +0 -568
  234. package/dist/scripts/test/test-swarm-integration.sh +0 -92
  235. package/dist/scripts/test/test-swarm.ts +0 -142
  236. package/dist/scripts/test/validation-summary.ts +0 -408
  237. package/dist/scripts/test-cleanup-performance.sh +0 -416
  238. package/dist/scripts/test-dashboard-auth.cjs +0 -203
  239. package/dist/scripts/test-docker-deployment.sh +0 -207
  240. package/dist/scripts/test-npm-package.cjs +0 -167
  241. package/dist/scripts/test-provider-routing.cjs +0 -226
  242. package/dist/scripts/test-routing-telemetry.cjs +0 -147
  243. package/dist/scripts/test-runner.cjs +0 -154
  244. package/dist/scripts/test-zai-10k.cjs +0 -81
  245. package/dist/scripts/test-zai-api.cjs +0 -191
  246. package/dist/scripts/test-zai-diagnostic.cjs +0 -151
  247. package/dist/scripts/test-zai-final.cjs +0 -128
  248. package/dist/scripts/test-zai-with-env.cjs +0 -85
  249. package/dist/scripts/toggle-cost-savings.cjs +0 -302
  250. package/dist/scripts/unified-memory-monitor.js +0 -526
  251. package/dist/scripts/utils/README.md +0 -261
  252. package/dist/scripts/utils/clean-build-artifacts.sh +0 -94
  253. package/dist/scripts/utils/cleanup-root.sh +0 -69
  254. package/dist/scripts/utils/fix-cliffy-imports.js +0 -307
  255. package/dist/scripts/utils/fix-duplicate-imports.js +0 -114
  256. package/dist/scripts/utils/fix-error-handling.cjs +0 -70
  257. package/dist/scripts/utils/fix-import-paths.js +0 -104
  258. package/dist/scripts/utils/fix-imports.js +0 -116
  259. package/dist/scripts/utils/fix-shebang.js +0 -78
  260. package/dist/scripts/utils/fix-test-modules.js +0 -27
  261. package/dist/scripts/utils/fix-timezone-issue-246.js +0 -200
  262. package/dist/scripts/utils/fix-ts-comprehensive.py +0 -182
  263. package/dist/scripts/utils/fix-ts-targeted-batch.js +0 -250
  264. package/dist/scripts/utils/remove-benchmark-conflicts.sh +0 -140
  265. package/dist/scripts/utils/simple-test-fixer.js +0 -190
  266. package/dist/scripts/utils/validate-metrics-structure.cjs +0 -144
  267. package/dist/scripts/validate-agent-hooks.js +0 -506
  268. package/dist/scripts/validate-changelog.js +0 -241
  269. package/dist/scripts/validate-coordination-cli.js +0 -69
  270. package/dist/scripts/validate-coordination-toggle-integration.cjs +0 -501
  271. package/dist/scripts/validate-docker-infrastructure.sh +0 -502
  272. package/dist/scripts/validate-entry-points.js +0 -300
  273. package/dist/scripts/validate-memory-monitoring.sh +0 -225
  274. package/dist/scripts/validate-stage3-performance.ts +0 -377
  275. package/dist/scripts/validate-template-bundling.js +0 -180
  276. package/dist/scripts/validation/README.md +0 -33
  277. package/dist/scripts/validation/acl-security-validation.cjs +0 -214
  278. package/dist/scripts/validation/acl-security-validation.js +0 -402
  279. package/dist/scripts/validation/byzantine-verification.js +0 -407
  280. package/dist/scripts/validation/final-phase-2-consensus.cjs +0 -219
  281. package/dist/scripts/validation/final-security-validation.js +0 -791
  282. package/dist/scripts/validation/final-wasm-validation.cjs +0 -840
  283. package/dist/scripts/validation/integration-test-analysis.js +0 -105
  284. package/dist/scripts/validation/phase-0-comprehensive-validation.js +0 -474
  285. package/dist/scripts/validation/phase-0-consensus-report.js +0 -139
  286. package/dist/scripts/validation/phase-0-final-report.js +0 -112
  287. package/dist/scripts/validation/phase-0-redis-consensus-report.js +0 -129
  288. package/dist/scripts/validation/phase-0-validation-improved.js +0 -490
  289. package/dist/scripts/validation/phase-0-validation-test.js +0 -65
  290. package/dist/scripts/validation/phase-1-consensus-report.cjs +0 -342
  291. package/dist/scripts/validation/phase-1-consensus-validation.cjs +0 -551
  292. package/dist/scripts/validation/phase-1-consensus-validation.js +0 -551
  293. package/dist/scripts/validation/phase-2-consensus-report.cjs +0 -186
  294. package/dist/scripts/validation/phase-2-validation.cjs +0 -171
  295. package/dist/scripts/validation/phase-2-validation.js +0 -171
  296. package/dist/scripts/validation/phase-4-consensus-report.js +0 -181
  297. package/dist/scripts/validation/phase-4-final-validation.js +0 -351
  298. package/dist/scripts/validation/phase-5-consensus-report.cjs +0 -113
  299. package/dist/scripts/validation/phase-5-consensus-report.js +0 -113
  300. package/dist/scripts/validation/security-analysis.js +0 -49
  301. package/dist/scripts/validation/security-validation.js +0 -492
  302. package/dist/scripts/validation/simple-security-validation.js +0 -464
  303. package/dist/scripts/verify-installation.js +0 -112
  304. package/dist/scripts/verify-mcp-server.js +0 -86
  305. package/dist/scripts/verify-sdk-phase1.cjs +0 -293
  306. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
  307. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
  308. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
  309. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
  310. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
  311. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
  312. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
  313. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
  314. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
  315. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
  316. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
  317. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
  318. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
  319. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
  320. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
  321. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
  322. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
  323. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
  324. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
  325. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
  326. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
  327. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
  328. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
  329. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
  330. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
  331. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
  332. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
  333. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
  334. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
  335. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
  336. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
  337. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
  338. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
  339. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
  340. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
  341. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
  342. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
  343. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
  344. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
  345. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
  346. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
  347. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
@@ -1,429 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Pre-Publish Validation Script
5
- *
6
- * Validates that the package is ready for NPM publication
7
- * Enhanced with package size, coverage, and comprehensive checks
8
- */
9
-
10
- import fs from 'fs';
11
- import path from 'path';
12
- import { fileURLToPath } from 'url';
13
- import { execSync } from 'child_process';
14
-
15
- const __filename = fileURLToPath(import.meta.url);
16
- const __dirname = path.dirname(__filename);
17
- const projectRoot = path.resolve(__dirname, '..');
18
-
19
- console.log('🔍 Running pre-publish validation...\n');
20
-
21
- const MAX_PACKAGE_SIZE = 100 * 1024 * 1024; // 100MB
22
- const MIN_COVERAGE_TARGET = 95; // 95% coverage target
23
-
24
- const validations = [
25
- {
26
- name: 'Build output exists',
27
- critical: true,
28
- validate: () => {
29
- const indexPath = path.join(projectRoot, '.claude-flow-novice/dist/src/index.js');
30
- if (!fs.existsSync(indexPath)) {
31
- throw new Error('Build output not found. Run "npm run build" first.');
32
- }
33
- return { passed: true, details: `Found: ${indexPath}` };
34
- }
35
- },
36
- {
37
- name: 'Type declarations exist',
38
- critical: true,
39
- validate: () => {
40
- const typesPath = path.join(projectRoot, '.claude-flow-novice/dist/index.d.ts');
41
- if (!fs.existsSync(typesPath)) {
42
- throw new Error('Type declarations not found. Run "npm run build" first.');
43
- }
44
- return { passed: true, details: `Found: ${typesPath}` };
45
- }
46
- },
47
- {
48
- name: 'Package.json is valid',
49
- critical: true,
50
- validate: () => {
51
- const packageJson = JSON.parse(fs.readFileSync(path.join(projectRoot, 'package.json'), 'utf8'));
52
-
53
- if (!packageJson.name || !packageJson.version || !packageJson.main) {
54
- throw new Error('package.json is missing required fields (name, version, main)');
55
- }
56
-
57
- if (!packageJson.types) {
58
- throw new Error('package.json is missing "types" field');
59
- }
60
-
61
- return {
62
- passed: true,
63
- details: `${packageJson.name}@${packageJson.version}`
64
- };
65
- }
66
- },
67
- {
68
- name: 'Entry points are valid',
69
- critical: true,
70
- validate: () => {
71
- const packageJson = JSON.parse(fs.readFileSync(path.join(projectRoot, 'package.json'), 'utf8'));
72
- const mainPath = path.join(projectRoot, packageJson.main);
73
- const typesPath = path.join(projectRoot, packageJson.types);
74
-
75
- if (!fs.existsSync(mainPath)) {
76
- throw new Error(`Main entry point not found: ${mainPath}`);
77
- }
78
-
79
- if (!fs.existsSync(typesPath)) {
80
- throw new Error(`Types entry point not found: ${typesPath}`);
81
- }
82
-
83
- // Validate exports
84
- let exportCount = 0;
85
- if (packageJson.exports) {
86
- exportCount = Object.keys(packageJson.exports).length;
87
- }
88
-
89
- return {
90
- passed: true,
91
- details: `Main entry valid, ${exportCount} exports defined`
92
- };
93
- }
94
- },
95
- {
96
- name: 'Binary files exist',
97
- critical: true,
98
- validate: () => {
99
- const packageJson = JSON.parse(fs.readFileSync(path.join(projectRoot, 'package.json'), 'utf8'));
100
- const binaries = [];
101
-
102
- if (packageJson.bin) {
103
- for (const [name, filePath] of Object.entries(packageJson.bin)) {
104
- const fullPath = path.join(projectRoot, filePath);
105
- if (!fs.existsSync(fullPath)) {
106
- throw new Error(`Binary file not found: ${name} -> ${fullPath}`);
107
- }
108
- binaries.push(name);
109
- }
110
- }
111
-
112
- return {
113
- passed: true,
114
- details: `${binaries.length} binaries validated: ${binaries.join(', ')}`
115
- };
116
- }
117
- },
118
- {
119
- name: 'Package size validation',
120
- critical: true,
121
- validate: () => {
122
- try {
123
- // Create package tarball temporarily
124
- execSync('npm pack', { cwd: projectRoot, stdio: 'pipe' });
125
-
126
- // Find the tarball
127
- const files = fs.readdirSync(projectRoot);
128
- const tarball = files.find(f => f.startsWith('claude-flow-novice-') && f.endsWith('.tgz'));
129
-
130
- if (!tarball) {
131
- throw new Error('Package tarball not found');
132
- }
133
-
134
- const tarballPath = path.join(projectRoot, tarball);
135
- const stats = fs.statSync(tarballPath);
136
- const sizeMB = (stats.size / 1024 / 1024).toFixed(2);
137
-
138
- // Clean up tarball
139
- fs.unlinkSync(tarballPath);
140
-
141
- if (stats.size > MAX_PACKAGE_SIZE) {
142
- throw new Error(`Package size ${sizeMB}MB exceeds 100MB limit`);
143
- }
144
-
145
- return {
146
- passed: true,
147
- details: `Package size: ${sizeMB}MB (within 100MB limit)`
148
- };
149
- } catch (error) {
150
- throw new Error(`Package size check failed: ${error.message}`);
151
- }
152
- }
153
- },
154
- {
155
- name: 'Test coverage validation',
156
- critical: false,
157
- validate: () => {
158
- const coveragePath = path.join(projectRoot, 'coverage/coverage-summary.json');
159
-
160
- if (!fs.existsSync(coveragePath)) {
161
- return {
162
- passed: false,
163
- details: 'Coverage report not found. Run tests with coverage first.'
164
- };
165
- }
166
-
167
- const coverage = JSON.parse(fs.readFileSync(coveragePath, 'utf8'));
168
- const total = coverage.total;
169
-
170
- const avgCoverage = Math.round(
171
- (total.lines.pct + total.statements.pct + total.functions.pct + total.branches.pct) / 4
172
- );
173
-
174
- if (avgCoverage < MIN_COVERAGE_TARGET) {
175
- return {
176
- passed: false,
177
- details: `Coverage ${avgCoverage}% below ${MIN_COVERAGE_TARGET}% target (Lines: ${total.lines.pct}%, Statements: ${total.statements.pct}%, Functions: ${total.functions.pct}%, Branches: ${total.branches.pct}%)`
178
- };
179
- }
180
-
181
- return {
182
- passed: true,
183
- details: `Coverage: ${avgCoverage}% (Lines: ${total.lines.pct}%, Statements: ${total.statements.pct}%, Functions: ${total.functions.pct}%, Branches: ${total.branches.pct}%)`
184
- };
185
- }
186
- },
187
- {
188
- name: 'No source files in distribution',
189
- critical: true,
190
- validate: () => {
191
- const npmignorePath = path.join(projectRoot, '.npmignore');
192
-
193
- if (!fs.existsSync(npmignorePath)) {
194
- throw new Error('.npmignore file not found');
195
- }
196
-
197
- const npmignore = fs.readFileSync(npmignorePath, 'utf8');
198
- const excludedPatterns = ['src/', 'tests/', 'test/', '*.test.js', '*.test.ts'];
199
- const missing = excludedPatterns.filter(pattern => !npmignore.includes(pattern));
200
-
201
- if (missing.length > 0) {
202
- throw new Error(`Missing exclusions in .npmignore: ${missing.join(', ')}`);
203
- }
204
-
205
- return {
206
- passed: true,
207
- details: 'Source files properly excluded from package'
208
- };
209
- }
210
- },
211
- {
212
- name: 'Security audit passed',
213
- critical: true,
214
- validate: () => {
215
- try {
216
- const result = execSync('npm audit --audit-level moderate', {
217
- encoding: 'utf8',
218
- stdio: 'pipe',
219
- cwd: projectRoot
220
- });
221
-
222
- if (result.includes('vulnerabilities')) {
223
- const lines = result.split('\n');
224
- const vulnLine = lines.find(line => line.includes('vulnerabilities'));
225
- if (vulnLine && !vulnLine.includes('0 vulnerabilities')) {
226
- throw new Error(`Security issues found: ${vulnLine.trim()}`);
227
- }
228
- }
229
-
230
- return { passed: true, details: 'No security vulnerabilities detected' };
231
- } catch (error) {
232
- // npm audit returns non-zero exit code when vulnerabilities found
233
- if (error.stdout && error.stdout.includes('vulnerabilities')) {
234
- const lines = error.stdout.split('\n');
235
- const vulnLine = lines.find(line => line.includes('vulnerabilities'));
236
- if (vulnLine && !vulnLine.includes('0 vulnerabilities')) {
237
- throw new Error(`Security issues: ${vulnLine.trim()}`);
238
- }
239
- }
240
- throw new Error(`Security audit failed: ${error.message}`);
241
- }
242
- }
243
- },
244
- {
245
- name: 'Dependencies are up to date',
246
- critical: false,
247
- validate: () => {
248
- try {
249
- const result = execSync('npm outdated --json', {
250
- encoding: 'utf8',
251
- stdio: 'pipe',
252
- cwd: projectRoot
253
- });
254
-
255
- const outdated = result ? JSON.parse(result) : {};
256
- const outdatedCount = Object.keys(outdated).length;
257
-
258
- if (outdatedCount > 0) {
259
- const majorUpdates = Object.entries(outdated)
260
- .filter(([, info]) => {
261
- const current = info.current.split('.')[0];
262
- const wanted = info.wanted.split('.')[0];
263
- return current !== wanted;
264
- });
265
-
266
- if (majorUpdates.length > 0) {
267
- const packages = majorUpdates.map(([name]) => name).join(', ');
268
- return {
269
- passed: false,
270
- details: `${majorUpdates.length} major updates available: ${packages}`
271
- };
272
- }
273
- }
274
-
275
- return {
276
- passed: true,
277
- details: outdatedCount === 0 ? 'All dependencies up to date' : `${outdatedCount} minor updates available`
278
- };
279
- } catch (error) {
280
- // npm outdated returns non-zero when there are outdated packages
281
- return { passed: true, details: 'Dependency check completed' };
282
- }
283
- }
284
- },
285
- {
286
- name: 'Build artifacts integrity',
287
- critical: true,
288
- validate: () => {
289
- const distDir = path.join(projectRoot, '.claude-flow-novice/dist');
290
-
291
- if (!fs.existsSync(distDir)) {
292
- throw new Error('Build directory not found');
293
- }
294
-
295
- // Check for essential files
296
- const essentialFiles = [
297
- 'src/index.js',
298
- 'src/cli/index.js',
299
- 'src/cli/main.js'
300
- ];
301
-
302
- const missing = essentialFiles.filter(file =>
303
- !fs.existsSync(path.join(distDir, file))
304
- );
305
-
306
- if (missing.length > 0) {
307
- throw new Error(`Missing build artifacts: ${missing.join(', ')}`);
308
- }
309
-
310
- // Count total files
311
- const countFiles = (dir) => {
312
- let count = 0;
313
- const items = fs.readdirSync(dir);
314
- items.forEach(item => {
315
- const fullPath = path.join(dir, item);
316
- if (fs.statSync(fullPath).isDirectory()) {
317
- count += countFiles(fullPath);
318
- } else {
319
- count++;
320
- }
321
- });
322
- return count;
323
- };
324
-
325
- const fileCount = countFiles(distDir);
326
-
327
- return {
328
- passed: true,
329
- details: `${fileCount} files in build output`
330
- };
331
- }
332
- }
333
- ];
334
-
335
- // Run validations
336
- let criticalPassed = true;
337
- let allPassed = true;
338
- const results = [];
339
-
340
- console.log('═'.repeat(60));
341
- console.log('Critical Validations:');
342
- console.log('═'.repeat(60));
343
-
344
- validations.filter(v => v.critical).forEach(({ name, validate }) => {
345
- try {
346
- const result = validate();
347
- console.log(`✅ ${name}`);
348
- if (result.details) {
349
- console.log(` ${result.details}`);
350
- }
351
- results.push({ name, passed: true, critical: true, details: result.details });
352
- } catch (error) {
353
- console.log(`❌ ${name}`);
354
- console.log(` ${error.message}`);
355
- criticalPassed = false;
356
- allPassed = false;
357
- results.push({ name, passed: false, critical: true, error: error.message });
358
- }
359
- });
360
-
361
- console.log('\n' + '═'.repeat(60));
362
- console.log('Optional Validations:');
363
- console.log('═'.repeat(60));
364
-
365
- validations.filter(v => !v.critical).forEach(({ name, validate }) => {
366
- try {
367
- const result = validate();
368
- console.log(`${result.passed ? '✅' : '⚠️'} ${name}`);
369
- if (result.details) {
370
- console.log(` ${result.details}`);
371
- }
372
- results.push({ name, passed: result.passed, critical: false, details: result.details });
373
- if (!result.passed) {
374
- allPassed = false;
375
- }
376
- } catch (error) {
377
- console.log(`⚠️ ${name}`);
378
- console.log(` ${error.message}`);
379
- results.push({ name, passed: false, critical: false, error: error.message });
380
- allPassed = false;
381
- }
382
- });
383
-
384
- // Generate summary report
385
- console.log('\n' + '═'.repeat(60));
386
- console.log('Validation Summary:');
387
- console.log('═'.repeat(60));
388
-
389
- const criticalCount = results.filter(r => r.critical).length;
390
- const criticalPassedCount = results.filter(r => r.critical && r.passed).length;
391
- const optionalCount = results.filter(r => !r.critical).length;
392
- const optionalPassedCount = results.filter(r => !r.critical && r.passed).length;
393
-
394
- console.log(`Critical: ${criticalPassedCount}/${criticalCount} passed`);
395
- console.log(`Optional: ${optionalPassedCount}/${optionalCount} passed`);
396
- console.log(`Total: ${criticalPassedCount + optionalPassedCount}/${results.length} passed`);
397
-
398
- // Save detailed report
399
- const reportPath = path.join(projectRoot, '.claude-flow-novice/pre-publish-validation-report.json');
400
- fs.mkdirSync(path.dirname(reportPath), { recursive: true });
401
- fs.writeFileSync(reportPath, JSON.stringify({
402
- timestamp: new Date().toISOString(),
403
- summary: {
404
- total: results.length,
405
- passed: criticalPassedCount + optionalPassedCount,
406
- failed: results.length - (criticalPassedCount + optionalPassedCount),
407
- criticalPassed: criticalPassedCount,
408
- criticalTotal: criticalCount,
409
- optionalPassed: optionalPassedCount,
410
- optionalTotal: optionalCount
411
- },
412
- results
413
- }, null, 2));
414
-
415
- console.log(`\n📊 Detailed report saved: ${reportPath}`);
416
-
417
- // Exit with appropriate code
418
- if (!criticalPassed) {
419
- console.log('\n❌ Critical validations failed. Package is NOT ready for publication.');
420
- console.log(' Please fix critical issues before publishing.\n');
421
- process.exit(1);
422
- } else if (!allPassed) {
423
- console.log('\n⚠️ All critical validations passed, but some optional checks failed.');
424
- console.log(' Package can be published, but consider addressing warnings.\n');
425
- process.exit(0);
426
- } else {
427
- console.log('\n🎉 All validations passed! Package is ready for publication.\n');
428
- process.exit(0);
429
- }
@@ -1,198 +0,0 @@
1
- --[[
2
- cleanup-blocking-coordination.lua
3
-
4
- High-performance Redis Lua script for cleaning up stale blocking coordinator state.
5
- Target: <5s for 10,000 coordinators (2,000 coordinators/sec)
6
-
7
- Strategy:
8
- 1. Single SCAN with high COUNT to minimize round trips
9
- 2. Batch MGET to retrieve all heartbeat states in one operation
10
- 3. Filter stale coordinators (startTime < current - 600s)
11
- 4. Batch collection of all related keys (ACKs, signals, idempotency, activity)
12
- 5. Batch DEL of all stale keys in one atomic operation
13
-
14
- Safety:
15
- - Uses SCAN (non-blocking) for key discovery
16
- - TTL-based staleness check (10 minutes = 600 seconds)
17
- - Preserves active coordinators
18
- - Atomic execution prevents race conditions
19
-
20
- Performance optimizations:
21
- - Minimize network round trips (single SCAN, single MGET, single DEL)
22
- - Lua execution is atomic and server-side
23
- - No inter-command latency
24
- - Batch processing reduces overhead
25
-
26
- KEYS: None (discovers keys dynamically)
27
- ARGV[1]: Stale threshold in seconds (default: 600)
28
- ARGV[2]: Dry run flag (0 = production, 1 = dry run)
29
-
30
- Returns: JSON string with cleanup metrics
31
- {
32
- "totalCoordinatorsChecked": 0,
33
- "staleCoordinatorsFound": 0,
34
- "keysDeleted": 0,
35
- "executionTimeMs": 0,
36
- "staleCoordinatorIds": []
37
- }
38
- ]]
39
-
40
- local STALE_THRESHOLD_SECONDS = tonumber(ARGV[1]) or 600
41
- local DRY_RUN = tonumber(ARGV[2]) or 0
42
- local start_time = redis.call('TIME')
43
- local start_time_ms = tonumber(start_time[1]) * 1000 + math.floor(tonumber(start_time[2]) / 1000)
44
-
45
- -- Metrics tracking
46
- local metrics = {
47
- totalCoordinatorsChecked = 0,
48
- staleCoordinatorsFound = 0,
49
- keysDeleted = 0,
50
- executionTimeMs = 0,
51
- staleCoordinatorIds = {}
52
- }
53
-
54
- -- Helper: Get current timestamp in seconds
55
- local function current_timestamp_seconds()
56
- local time = redis.call('TIME')
57
- return tonumber(time[1])
58
- end
59
-
60
- -- Helper: Extract coordinator ID from heartbeat key
61
- local function extract_coordinator_id(heartbeat_key)
62
- -- Format: blocking:heartbeat:{coordinatorId}
63
- return string.match(heartbeat_key, "^blocking:heartbeat:(.+)$")
64
- end
65
-
66
- -- Helper: Parse JSON timestamp from heartbeat value
67
- local function parse_heartbeat_timestamp(heartbeat_value)
68
- -- Format: {"coordinatorId":"...","timestamp":1234567890123,...}
69
- local timestamp_ms = string.match(heartbeat_value, '"timestamp":(%d+)')
70
- if timestamp_ms then
71
- return tonumber(timestamp_ms)
72
- end
73
- return nil
74
- end
75
-
76
- -- Helper: Check if coordinator is stale
77
- local function is_stale(heartbeat_value, current_time_seconds)
78
- local timestamp_ms = parse_heartbeat_timestamp(heartbeat_value)
79
- if not timestamp_ms then
80
- return false -- Invalid heartbeat, skip
81
- end
82
-
83
- local timestamp_seconds = math.floor(timestamp_ms / 1000)
84
- local age_seconds = current_time_seconds - timestamp_seconds
85
-
86
- return age_seconds > STALE_THRESHOLD_SECONDS
87
- end
88
-
89
- -- Helper: Collect all related keys for a coordinator
90
- local function collect_coordinator_keys(coordinator_id)
91
- local keys = {}
92
-
93
- -- 1. Heartbeat key
94
- table.insert(keys, "blocking:heartbeat:" .. coordinator_id)
95
-
96
- -- 2. Signal ACK keys (blocking:ack:coordinatorId:*)
97
- local ack_cursor = "0"
98
- repeat
99
- local ack_result = redis.call('SCAN', ack_cursor, 'MATCH', 'blocking:ack:' .. coordinator_id .. ':*', 'COUNT', 1000)
100
- ack_cursor = ack_result[1]
101
- for _, key in ipairs(ack_result[2]) do
102
- table.insert(keys, key)
103
- end
104
- until ack_cursor == "0"
105
-
106
- -- 3. Signal key
107
- table.insert(keys, "blocking:signal:" .. coordinator_id)
108
-
109
- -- 4. Idempotency keys (blocking:idempotency:*coordinatorId*)
110
- local idemp_cursor = "0"
111
- repeat
112
- local idemp_result = redis.call('SCAN', idemp_cursor, 'MATCH', 'blocking:idempotency:*' .. coordinator_id .. '*', 'COUNT', 1000)
113
- idemp_cursor = idemp_result[1]
114
- for _, key in ipairs(idemp_result[2]) do
115
- table.insert(keys, key)
116
- end
117
- until idemp_cursor == "0"
118
-
119
- -- 5. Activity tracking key
120
- table.insert(keys, "coordinator:activity:" .. coordinator_id)
121
-
122
- return keys
123
- end
124
-
125
- -- Step 1: Scan for all heartbeat keys with high COUNT
126
- local heartbeat_keys = {}
127
- local cursor = "0"
128
- repeat
129
- -- Use COUNT 10000 to minimize SCAN iterations
130
- local result = redis.call('SCAN', cursor, 'MATCH', 'blocking:heartbeat:*', 'COUNT', 10000)
131
- cursor = result[1]
132
- for _, key in ipairs(result[2]) do
133
- table.insert(heartbeat_keys, key)
134
- end
135
- until cursor == "0"
136
-
137
- -- Early exit if no coordinators found
138
- if #heartbeat_keys == 0 then
139
- metrics.executionTimeMs = 0
140
- return cjson.encode(metrics)
141
- end
142
-
143
- metrics.totalCoordinatorsChecked = #heartbeat_keys
144
-
145
- -- Step 2: Batch MGET all heartbeat values
146
- local heartbeat_values = redis.call('MGET', unpack(heartbeat_keys))
147
-
148
- -- Step 3: Filter stale coordinators and collect all keys to delete
149
- local current_time_seconds = current_timestamp_seconds()
150
- local keys_to_delete = {}
151
- local stale_coordinator_ids = {}
152
-
153
- for i, heartbeat_key in ipairs(heartbeat_keys) do
154
- local heartbeat_value = heartbeat_values[i]
155
-
156
- if heartbeat_value and is_stale(heartbeat_value, current_time_seconds) then
157
- local coordinator_id = extract_coordinator_id(heartbeat_key)
158
- if coordinator_id then
159
- table.insert(stale_coordinator_ids, coordinator_id)
160
-
161
- -- Collect all related keys for this stale coordinator
162
- local coordinator_keys = collect_coordinator_keys(coordinator_id)
163
- for _, key in ipairs(coordinator_keys) do
164
- table.insert(keys_to_delete, key)
165
- end
166
- end
167
- end
168
- end
169
-
170
- metrics.staleCoordinatorsFound = #stale_coordinator_ids
171
- metrics.staleCoordinatorIds = stale_coordinator_ids
172
-
173
- -- Step 4: Batch DEL all stale keys
174
- if #keys_to_delete > 0 and DRY_RUN == 0 then
175
- -- Redis DEL command accepts up to ~1M keys, but we'll batch in chunks of 10000 for safety
176
- local batch_size = 10000
177
- local deleted_count = 0
178
-
179
- for i = 1, #keys_to_delete, batch_size do
180
- local batch_end = math.min(i + batch_size - 1, #keys_to_delete)
181
- local batch = {}
182
- for j = i, batch_end do
183
- table.insert(batch, keys_to_delete[j])
184
- end
185
- deleted_count = deleted_count + redis.call('DEL', unpack(batch))
186
- end
187
-
188
- metrics.keysDeleted = deleted_count
189
- elseif DRY_RUN == 1 then
190
- metrics.keysDeleted = #keys_to_delete -- Report what would be deleted
191
- end
192
-
193
- -- Calculate execution time
194
- local end_time = redis.call('TIME')
195
- local end_time_ms = tonumber(end_time[1]) * 1000 + math.floor(tonumber(end_time[2]) / 1000)
196
- metrics.executionTimeMs = end_time_ms - start_time_ms
197
-
198
- return cjson.encode(metrics)