claude-flow-novice 2.0.4 → 2.0.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 (496) hide show
  1. package/dist/src/cli/commands/guidance.js +668 -487
  2. package/dist/src/cli/commands/index-validate.js +29 -18
  3. package/dist/src/cli/commands/mcp-troubleshoot.js +282 -230
  4. package/dist/src/cli/commands/neural-goal-init.js +125 -92
  5. package/dist/src/cli/commands/swarm-exec.js +393 -317
  6. package/dist/src/cli/commands/validate-framework.js +1100 -983
  7. package/dist/src/cli/commands/validate.js +223 -144
  8. package/dist/src/cli/main.js +1 -1
  9. package/dist/src/cli/simple-commands/__tests__/agent.test.js +277 -265
  10. package/dist/src/cli/simple-commands/__tests__/memory.test.js +7 -6
  11. package/dist/src/cli/simple-commands/__tests__/swarm.test.js +356 -373
  12. package/dist/src/cli/simple-commands/__tests__/task.test.js +7 -6
  13. package/dist/src/cli/simple-commands/agent.js +193 -157
  14. package/dist/src/cli/simple-commands/analysis.js +446 -336
  15. package/dist/src/cli/simple-commands/automation-executor.js +1339 -1095
  16. package/dist/src/cli/simple-commands/automation.js +469 -481
  17. package/dist/src/cli/simple-commands/batch-manager.js +313 -261
  18. package/dist/src/cli/simple-commands/claude-telemetry.js +267 -241
  19. package/dist/src/cli/simple-commands/claude-track.js +90 -68
  20. package/dist/src/cli/simple-commands/concurrent-display.js +320 -266
  21. package/dist/src/cli/simple-commands/config.js +290 -245
  22. package/dist/src/cli/simple-commands/coordination.js +234 -182
  23. package/dist/src/cli/simple-commands/enhanced-ui-views.js +615 -812
  24. package/dist/src/cli/simple-commands/enhanced-webui-complete.js +981 -922
  25. package/dist/src/cli/simple-commands/fix-hook-variables.js +294 -274
  26. package/dist/src/cli/simple-commands/github/gh-coordinator.js +457 -378
  27. package/dist/src/cli/simple-commands/github/github-api.js +574 -535
  28. package/dist/src/cli/simple-commands/github/init.js +303 -276
  29. package/dist/src/cli/simple-commands/github.js +247 -222
  30. package/dist/src/cli/simple-commands/goal.js +63 -51
  31. package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +278 -208
  32. package/dist/src/cli/simple-commands/hive-mind/communication.js +696 -601
  33. package/dist/src/cli/simple-commands/hive-mind/core.js +979 -907
  34. package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +655 -406
  35. package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1245 -1125
  36. package/dist/src/cli/simple-commands/hive-mind/memory.js +1090 -854
  37. package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +574 -459
  38. package/dist/src/cli/simple-commands/hive-mind/performance-test.js +347 -263
  39. package/dist/src/cli/simple-commands/hive-mind/queen.js +768 -727
  40. package/dist/src/cli/simple-commands/hive-mind/session-manager.js +1049 -745
  41. package/dist/src/cli/simple-commands/hive-mind-optimize.js +283 -227
  42. package/dist/src/cli/simple-commands/hive-mind-wizard.js +217 -174
  43. package/dist/src/cli/simple-commands/hive-mind.js +2282 -1841
  44. package/dist/src/cli/simple-commands/hive.js +79 -90
  45. package/dist/src/cli/simple-commands/hook-safety.js +521 -431
  46. package/dist/src/cli/simple-commands/hooks/session-start-soul.js +254 -203
  47. package/dist/src/cli/simple-commands/hooks.js +1204 -1064
  48. package/dist/src/cli/simple-commands/init/agent-copier.js +319 -294
  49. package/dist/src/cli/simple-commands/init/batch-init.js +562 -496
  50. package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +19 -13
  51. package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +19 -13
  52. package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +88 -61
  53. package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +150 -125
  54. package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +49 -42
  55. package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +61 -43
  56. package/dist/src/cli/simple-commands/init/copy-revised-templates.js +147 -141
  57. package/dist/src/cli/simple-commands/init/executable-wrapper.js +44 -31
  58. package/dist/src/cli/simple-commands/init/gitignore-updater.js +90 -64
  59. package/dist/src/cli/simple-commands/init/help.js +107 -104
  60. package/dist/src/cli/simple-commands/init/hive-mind-init.js +528 -509
  61. package/dist/src/cli/simple-commands/init/index.js +1759 -1510
  62. package/dist/src/cli/simple-commands/init/performance-monitor.js +317 -234
  63. package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +504 -441
  64. package/dist/src/cli/simple-commands/init/rollback/index.js +364 -289
  65. package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +728 -652
  66. package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +481 -416
  67. package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +448 -369
  68. package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +2 -1
  69. package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +99 -122
  70. package/dist/src/cli/simple-commands/init/sparc/workflows.js +37 -32
  71. package/dist/src/cli/simple-commands/init/sparc-structure.js +62 -55
  72. package/dist/src/cli/simple-commands/init/template-copier.js +533 -421
  73. package/dist/src/cli/simple-commands/init/templates/coordination-md.js +6 -3
  74. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +318 -344
  75. package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +218 -173
  76. package/dist/src/cli/simple-commands/init/templates/github-safe.js +75 -65
  77. package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +6 -3
  78. package/dist/src/cli/simple-commands/init/templates/readme-files.js +4 -2
  79. package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +230 -187
  80. package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +80 -53
  81. package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +85 -101
  82. package/dist/src/cli/simple-commands/init/validation/config-validator.js +330 -283
  83. package/dist/src/cli/simple-commands/init/validation/health-checker.js +561 -495
  84. package/dist/src/cli/simple-commands/init/validation/index.js +358 -302
  85. package/dist/src/cli/simple-commands/init/validation/mode-validator.js +359 -308
  86. package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +366 -389
  87. package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +268 -270
  88. package/dist/src/cli/simple-commands/init/validation/test-runner.js +447 -427
  89. package/dist/src/cli/simple-commands/init.js +2 -1
  90. package/dist/src/cli/simple-commands/mcp-health.js +158 -131
  91. package/dist/src/cli/simple-commands/mcp-integration-layer.js +634 -533
  92. package/dist/src/cli/simple-commands/mcp.js +400 -345
  93. package/dist/src/cli/simple-commands/memory-consolidation.js +537 -426
  94. package/dist/src/cli/simple-commands/memory.js +311 -247
  95. package/dist/src/cli/simple-commands/migrate-hooks.js +46 -39
  96. package/dist/src/cli/simple-commands/monitor.js +363 -294
  97. package/dist/src/cli/simple-commands/neural.js +65 -51
  98. package/dist/src/cli/simple-commands/pair-autofix-only.js +662 -538
  99. package/dist/src/cli/simple-commands/pair-basic.js +656 -528
  100. package/dist/src/cli/simple-commands/pair-old.js +543 -430
  101. package/dist/src/cli/simple-commands/pair-working.js +751 -615
  102. package/dist/src/cli/simple-commands/pair.js +751 -615
  103. package/dist/src/cli/simple-commands/performance-hooks.js +111 -83
  104. package/dist/src/cli/simple-commands/performance-metrics.js +433 -348
  105. package/dist/src/cli/simple-commands/process-ui-enhanced.js +787 -708
  106. package/dist/src/cli/simple-commands/process-ui.js +254 -230
  107. package/dist/src/cli/simple-commands/realtime-update-system.js +611 -525
  108. package/dist/src/cli/simple-commands/sparc/architecture.js +1530 -1704
  109. package/dist/src/cli/simple-commands/sparc/commands.js +516 -438
  110. package/dist/src/cli/simple-commands/sparc/completion.js +1481 -1224
  111. package/dist/src/cli/simple-commands/sparc/coordinator.js +978 -913
  112. package/dist/src/cli/simple-commands/sparc/index.js +298 -241
  113. package/dist/src/cli/simple-commands/sparc/phase-base.js +390 -314
  114. package/dist/src/cli/simple-commands/sparc/pseudocode.js +869 -965
  115. package/dist/src/cli/simple-commands/sparc/refinement.js +1273 -980
  116. package/dist/src/cli/simple-commands/sparc/specification.js +645 -559
  117. package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
  118. package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
  119. package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
  120. package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
  121. package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
  122. package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
  123. package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
  124. package/dist/src/cli/simple-commands/sparc-modes/index.js +55 -47
  125. package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
  126. package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
  127. package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
  128. package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
  129. package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
  130. package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
  131. package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
  132. package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
  133. package/dist/src/cli/simple-commands/sparc-modes/swarm.js +87 -101
  134. package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
  135. package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
  136. package/dist/src/cli/simple-commands/sparc.js +493 -465
  137. package/dist/src/cli/simple-commands/start-ui.js +132 -108
  138. package/dist/src/cli/simple-commands/start-wrapper.js +268 -240
  139. package/dist/src/cli/simple-commands/start.js +1 -1
  140. package/dist/src/cli/simple-commands/status.js +275 -254
  141. package/dist/src/cli/simple-commands/stream-chain-clean.js +171 -128
  142. package/dist/src/cli/simple-commands/stream-chain-fixed.js +82 -61
  143. package/dist/src/cli/simple-commands/stream-chain-real.js +331 -267
  144. package/dist/src/cli/simple-commands/stream-chain-working.js +263 -211
  145. package/dist/src/cli/simple-commands/stream-chain.js +318 -260
  146. package/dist/src/cli/simple-commands/stream-processor.js +315 -290
  147. package/dist/src/cli/simple-commands/swarm-executor.js +222 -189
  148. package/dist/src/cli/simple-commands/swarm-metrics-integration.js +300 -208
  149. package/dist/src/cli/simple-commands/swarm-ui.js +703 -623
  150. package/dist/src/cli/simple-commands/swarm-webui-integration.js +286 -258
  151. package/dist/src/cli/simple-commands/swarm.js +1082 -887
  152. package/dist/src/cli/simple-commands/task.js +206 -161
  153. package/dist/src/cli/simple-commands/timestamp-fix.js +89 -59
  154. package/dist/src/cli/simple-commands/token-tracker.js +316 -258
  155. package/dist/src/cli/simple-commands/tool-execution-framework.js +519 -433
  156. package/dist/src/cli/simple-commands/train-and-stream.js +331 -275
  157. package/dist/src/cli/simple-commands/training-pipeline.js +725 -619
  158. package/dist/src/cli/simple-commands/training.js +227 -170
  159. package/dist/src/cli/simple-commands/verification-hooks.js +284 -261
  160. package/dist/src/cli/simple-commands/verification-integration.js +417 -389
  161. package/dist/src/cli/simple-commands/verification-training-integration.js +606 -486
  162. package/dist/src/cli/simple-commands/verification.js +513 -493
  163. package/dist/src/cli/simple-commands/web-server.js +836 -766
  164. package/dist/src/cli/simple-commands/webui-validator.js +124 -106
  165. package/dist/src/coordination/byzantine-memory-channels.js +25 -1
  166. package/dist/src/coordination/event-bus/demo-wasm-integration.js +251 -212
  167. package/dist/src/coordination/event-bus/qe-event-bus.js +748 -608
  168. package/dist/src/coordination/event-bus/qe-event-bus.test.js +454 -379
  169. package/dist/src/coordination/iteration-tracker.js +454 -363
  170. package/dist/src/index.js +384 -35
  171. package/dist/src/mcp/DEPRECATED.js +60 -46
  172. package/dist/src/mcp/fixes/mcp-error-fixes.js +134 -115
  173. package/dist/src/mcp/implementations/agent-tracker.js +128 -114
  174. package/dist/src/mcp/implementations/daa-tools.js +350 -292
  175. package/dist/src/mcp/implementations/workflow-tools.js +361 -329
  176. package/dist/src/mcp/mcp-config-manager.js +1331 -1183
  177. package/dist/src/mcp/mcp-server-novice-simplified.js +17 -11
  178. package/dist/src/mcp/mcp-server-novice.js +17 -11
  179. package/dist/src/mcp/mcp-server-sdk.js +17 -11
  180. package/dist/src/mcp/mcp-server.js +1484 -1620
  181. package/dist/src/mcp/ruv-swarm-wrapper.js +239 -209
  182. package/dist/src/memory/advanced-serializer.js +589 -609
  183. package/dist/src/memory/enhanced-examples.js +305 -220
  184. package/dist/src/memory/enhanced-memory.js +336 -295
  185. package/dist/src/memory/enhanced-session-serializer.js +492 -408
  186. package/dist/src/memory/fallback-memory-system.js +1021 -900
  187. package/dist/src/memory/fallback-store.js +131 -93
  188. package/dist/src/memory/high-performance-serialization.js +730 -592
  189. package/dist/src/memory/in-memory-store.js +213 -161
  190. package/dist/src/memory/index.js +157 -123
  191. package/dist/src/memory/lock-free-structures.js +764 -578
  192. package/dist/src/memory/memory-mapped-persistence.js +766 -585
  193. package/dist/src/memory/memory-pressure-manager.js +707 -569
  194. package/dist/src/memory/migration.js +445 -358
  195. package/dist/src/memory/shared-memory.js +768 -641
  196. package/dist/src/memory/sqlite-store.js +325 -245
  197. package/dist/src/memory/sqlite-wrapper.js +151 -122
  198. package/dist/src/memory/swarm-memory.js +603 -470
  199. package/dist/src/memory/test-example.js +134 -126
  200. package/dist/src/memory/ultra-fast-memory-store.js +821 -622
  201. package/dist/src/memory/unified-memory-manager.js +437 -356
  202. package/dist/src/swarm/CodeRefactoringSwarm.js +952 -777
  203. package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +400 -332
  204. package/dist/src/utils/error-handler.js +2 -36
  205. package/dist/src/utils/github-cli-safe.js +64 -56
  206. package/dist/src/utils/github-cli-safety-wrapper.js +546 -451
  207. package/dist/src/utils/npx-isolated-cache.js +119 -104
  208. package/dist/src/utils/preference-manager.js +652 -622
  209. package/dist/src/utils/timezone-utils.js +105 -86
  210. package/dist/src/web/api/apm-routes.js +353 -0
  211. package/dist/src/web/api/config/api-config.js +184 -0
  212. package/dist/src/web/api/middleware/auth.js +203 -0
  213. package/dist/src/web/api/middleware/cache.js +273 -0
  214. package/dist/src/web/api/middleware/error-handler.js +257 -0
  215. package/dist/src/web/api/middleware/request-logger.js +215 -0
  216. package/dist/src/web/api/middleware/validation.js +323 -0
  217. package/dist/src/web/api/routes/events.js +463 -0
  218. package/dist/src/web/api/routes/hierarchy.js +300 -0
  219. package/dist/src/web/api/routes/index.js +12 -0
  220. package/dist/src/web/api/routes/metrics.js +559 -0
  221. package/dist/src/web/api/routes/parallel-status.js +359 -0
  222. package/dist/src/web/api/routes/status.js +448 -0
  223. package/dist/src/web/api/server.js +462 -0
  224. package/dist/src/web/dashboard/hooks/useWebSocket.js +383 -0
  225. package/dist/src/web/dashboard/index.js +85 -0
  226. package/dist/src/web/dashboard/realtime/CustomSyncManager.js +439 -0
  227. package/dist/src/web/dashboard/realtime/NativeWebSocketManager.js +323 -0
  228. package/dist/src/web/dashboard/realtime/PerformanceBenchmark.js +527 -0
  229. package/dist/src/web/dashboard/realtime/RealtimeCommunicationManager.js +474 -0
  230. package/dist/src/web/dashboard/realtime/RealtimeServer.js +666 -0
  231. package/dist/src/web/dashboard/realtime/SSEManager.js +426 -0
  232. package/dist/src/web/dashboard/types.js +4 -0
  233. package/dist/src/web/messaging/agent-status-tracker.js +453 -0
  234. package/dist/src/web/messaging/human-intervention-system.js +305 -0
  235. package/dist/src/web/messaging/message-filter.js +302 -0
  236. package/dist/src/web/messaging/swarm-message-router.js +324 -0
  237. package/dist/src/web/messaging/transparency-logger.js +421 -0
  238. package/dist/src/web/portal-server.js +460 -0
  239. package/dist/src/web/server.js +322 -0
  240. package/dist/src/web/websocket/apm-websocket-handler.js +453 -0
  241. package/dist/src/web/websocket/websocket-manager.js +780 -0
  242. package/package.json +5 -3
  243. package/dist/src/cli/minimal-main.js +0 -22
  244. package/dist/src/enterprise/analytics-manager.js +0 -1135
  245. package/dist/src/enterprise/audit-manager.js +0 -1115
  246. package/dist/src/enterprise/cloud-manager.js +0 -891
  247. package/dist/src/enterprise/deployment-manager.js +0 -966
  248. package/dist/src/enterprise/index.js +0 -6
  249. package/dist/src/enterprise/project-manager.js +0 -584
  250. package/dist/src/enterprise/security-manager.js +0 -991
  251. package/dist/src/migration/index.js +0 -92
  252. package/dist/src/migration/logger.js +0 -121
  253. package/dist/src/migration/migration-analyzer.js +0 -268
  254. package/dist/src/migration/migration-runner.js +0 -522
  255. package/dist/src/migration/migration-validator.js +0 -285
  256. package/dist/src/migration/progress-reporter.js +0 -150
  257. package/dist/src/migration/rollback-manager.js +0 -321
  258. package/dist/src/migration/tests/migration-system.test.js +0 -7
  259. package/dist/src/migration/types.js +0 -3
  260. package/dist/src/swarm/__tests__/integration.test.js +0 -227
  261. package/dist/src/swarm/__tests__/prompt-copier.test.js +0 -344
  262. package/dist/src/swarm/advanced-orchestrator.js +0 -1095
  263. package/dist/src/swarm/claude-code-interface.js +0 -961
  264. package/dist/src/swarm/claude-flow-executor.js +0 -229
  265. package/dist/src/swarm/consensus-coordinator.js +0 -475
  266. package/dist/src/swarm/coordinator.js +0 -2993
  267. package/dist/src/swarm/direct-executor.js +0 -1180
  268. package/dist/src/swarm/error-recovery/advanced-error-detection.js +0 -691
  269. package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +0 -998
  270. package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +0 -1197
  271. package/dist/src/swarm/error-recovery/recovery-monitoring.js +0 -772
  272. package/dist/src/swarm/error-recovery/resilience-architecture.js +0 -714
  273. package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +0 -1319
  274. package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +0 -808
  275. package/dist/src/swarm/executor-v2.js +0 -322
  276. package/dist/src/swarm/executor.js +0 -815
  277. package/dist/src/swarm/hive-mind-integration.js +0 -703
  278. package/dist/src/swarm/index.js +0 -41
  279. package/dist/src/swarm/json-output-aggregator.js +0 -267
  280. package/dist/src/swarm/large-scale-coordinator.js +0 -542
  281. package/dist/src/swarm/mcp-integration-wrapper.js +0 -628
  282. package/dist/src/swarm/memory.js +0 -1117
  283. package/dist/src/swarm/optimizations/__tests__/optimization.test.js +0 -348
  284. package/dist/src/swarm/optimizations/async-file-manager.js +0 -285
  285. package/dist/src/swarm/optimizations/circular-buffer.js +0 -162
  286. package/dist/src/swarm/optimizations/connection-pool.js +0 -244
  287. package/dist/src/swarm/optimizations/index.js +0 -28
  288. package/dist/src/swarm/optimizations/optimized-executor.js +0 -320
  289. package/dist/src/swarm/optimizations/ttl-map.js +0 -234
  290. package/dist/src/swarm/prompt-cli.js +0 -200
  291. package/dist/src/swarm/prompt-copier-enhanced.js +0 -202
  292. package/dist/src/swarm/prompt-copier.js +0 -381
  293. package/dist/src/swarm/prompt-manager.js +0 -295
  294. package/dist/src/swarm/prompt-utils.js +0 -310
  295. package/dist/src/swarm/result-aggregator.js +0 -718
  296. package/dist/src/swarm/sparc-executor.js +0 -1568
  297. package/dist/src/swarm/strategies/auto.js +0 -758
  298. package/dist/src/swarm/strategies/base.js +0 -128
  299. package/dist/src/swarm/strategies/research.js +0 -914
  300. package/dist/src/swarm/strategies/strategy-metrics-patch.js +0 -2
  301. package/dist/src/swarm/types.js +0 -52
  302. package/dist/src/swarm/workers/copy-worker.js +0 -56
  303. package/dist/src/validators/epic-config-schema.js +0 -214
  304. package/dist/src/validators/index.js +0 -10
  305. package/dist/src/validators/swarm-init-validator.js +0 -259
  306. package/dist/src/validators/todowrite-batching-validator.js +0 -215
  307. package/dist/src/validators/todowrite-integration.js +0 -187
  308. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js +0 -23
  309. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +0 -57
  310. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +0 -401
  311. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +0 -181
  312. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js +0 -44
  313. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +0 -157
  314. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/edit.js +0 -71
  315. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/editorState/browser/editorState.js +0 -112
  316. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findController.js +0 -990
  317. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findDecorations.js +0 -296
  318. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findModel.js +0 -488
  319. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findOptionsWidget.js +0 -138
  320. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findState.js +0 -243
  321. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findWidget.js +0 -1177
  322. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/folding.js +0 -1093
  323. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +0 -133
  324. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingModel.js +0 -538
  325. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingRanges.js +0 -351
  326. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +0 -49
  327. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/format.js +0 -360
  328. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formatActions.js +0 -263
  329. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formattingEdit.js +0 -54
  330. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +0 -149
  331. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/hover/browser/contentHover.js +0 -874
  332. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commandIds.js +0 -7
  333. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commands.js +0 -199
  334. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js +0 -70
  335. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +0 -26
  336. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +0 -153
  337. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +0 -33
  338. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +0 -354
  339. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js +0 -146
  340. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/suggest/browser/completionModel.js +0 -224
  341. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +0 -119
  342. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/edcore.main.js +0 -14
  343. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.all.js +0 -63
  344. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.api.js +0 -55
  345. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.main.js +0 -7
  346. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.worker.js +0 -25
  347. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/standalone/browser/colorizer.js +0 -118
  348. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/css.worker.js +0 -36869
  349. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/cssMode.js +0 -2035
  350. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
  351. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
  352. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
  353. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
  354. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
  355. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
  356. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
  357. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
  358. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
  359. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
  360. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
  361. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
  362. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
  363. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
  364. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
  365. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
  366. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
  367. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
  368. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
  369. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
  370. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
  371. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
  372. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
  373. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
  374. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
  375. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
  376. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
  377. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
  378. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
  379. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
  380. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
  381. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
  382. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
  383. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
  384. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
  385. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
  386. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
  387. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
  388. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
  389. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
  390. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
  391. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
  392. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cameligo/cameligo.js +0 -10
  393. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/clojure/clojure.js +0 -10
  394. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/coffee/coffee.js +0 -10
  395. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cpp/cpp.js +0 -10
  396. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csharp/csharp.js +0 -10
  397. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csp/csp.js +0 -10
  398. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/css/css.js +0 -12
  399. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cypher/cypher.js +0 -10
  400. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dart/dart.js +0 -10
  401. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dockerfile/dockerfile.js +0 -10
  402. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/ecl/ecl.js +0 -10
  403. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/elixir/elixir.js +0 -10
  404. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/flow9/flow9.js +0 -10
  405. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.js +0 -745
  406. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.de.js +0 -31
  407. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.es.js +0 -31
  408. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.fr.js +0 -29
  409. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.it.js +0 -29
  410. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ja.js +0 -31
  411. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.js +0 -29
  412. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ko.js +0 -29
  413. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ru.js +0 -31
  414. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-cn.js +0 -31
  415. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-tw.js +0 -29
  416. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssMode.js +0 -13
  417. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssWorker.js +0 -81
  418. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/cli.js +0 -64
  419. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/example.js +0 -36
  420. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/index.js +0 -205
  421. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/test.js +0 -260
  422. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.browser.js +0 -34
  423. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.js +0 -35
  424. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.native.js +0 -26
  425. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.browser.js +0 -34
  426. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.js +0 -45
  427. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/nanoid.js +0 -1
  428. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/non-secure/index.js +0 -21
  429. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/url-alphabet/index.js +0 -3
  430. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/bin/nodemon.js +0 -16
  431. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/index.js +0 -49
  432. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/parse.js +0 -230
  433. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/command.js +0 -43
  434. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/defaults.js +0 -34
  435. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/exec.js +0 -234
  436. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/index.js +0 -93
  437. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/load.js +0 -225
  438. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/help/index.js +0 -27
  439. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/index.js +0 -1
  440. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/index.js +0 -4
  441. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/match.js +0 -287
  442. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/run.js +0 -562
  443. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/signals.js +0 -34
  444. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/watch.js +0 -244
  445. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/nodemon.js +0 -317
  446. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/add.js +0 -89
  447. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/index.js +0 -53
  448. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/parse.js +0 -43
  449. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/spawn.js +0 -74
  450. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/bus.js +0 -44
  451. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/clone.js +0 -40
  452. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/colour.js +0 -26
  453. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/index.js +0 -103
  454. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/log.js +0 -82
  455. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/merge.js +0 -47
  456. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/version.js +0 -100
  457. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/brace-expansion/index.js +0 -201
  458. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/has-flag/index.js +0 -8
  459. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/minimatch/minimatch.js +0 -947
  460. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/browser.js +0 -5
  461. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/index.js +0 -131
  462. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/bin/pidtree.js +0 -128
  463. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/index.js +0 -49
  464. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/bin.js +0 -61
  465. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/get.js +0 -45
  466. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/pidtree.js +0 -104
  467. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/ps.js +0 -47
  468. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/wmic.js +0 -49
  469. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/doc.js +0 -1270
  470. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/acorn.js +0 -15
  471. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/angular.js +0 -2
  472. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/babel.js +0 -15
  473. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/estree.js +0 -36
  474. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/flow.js +0 -19
  475. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/glimmer.js +0 -29
  476. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/graphql.js +0 -29
  477. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/html.js +0 -22
  478. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/markdown.js +0 -63
  479. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/meriyah.js +0 -4
  480. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/postcss.js +0 -54
  481. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/typescript.js +0 -20
  482. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/yaml.js +0 -160
  483. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/standalone.js +0 -34
  484. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/bin/react-scripts.js +0 -58
  485. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/env.js +0 -112
  486. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/getHttpsConfig.js +0 -74
  487. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/babelTransform.js +0 -37
  488. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/cssTransform.js +0 -22
  489. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/fileTransform.js +0 -40
  490. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/modules.js +0 -142
  491. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/paths.js +0 -153
  492. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack/persistentCache/createEnvironmentHash.js +0 -9
  493. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack.config.js +0 -796
  494. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpackDevServer.config.js +0 -135
  495. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/build.js +0 -225
  496. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/eject.js +0 -340
@@ -4,640 +4,780 @@
4
4
  * Target: 10,000+ events/sec with 52x speedup via Rust WASM regex engine
5
5
  *
6
6
  * Sprint 1.2 Deliverable 1.2.1: Real Rust WASM Integration
7
- */ import { EventEmitter } from "events";
8
- import { performance } from "perf_hooks";
9
- // REAL WASM Regex Engine Import (Sprint 1.2)
10
- let wasmEngine = null;
11
- let wasmAvailable = false;
12
- // Attempt to load WASM module with graceful fallback
13
- async function initializeWASM() {
14
- try {
15
- // Import the REAL compiled Rust WASM module (from _bg.js which has RegexEngine)
16
- const wasm = await import("../../wasm-regex-engine/pkg/wasm_regex_engine_bg.js");
17
- // Create regex engine for event validation patterns
18
- const eventPatterns = [
19
- '^cfn\\.loop\\.',
20
- '^agent\\.',
21
- '^swarm\\.',
22
- '^fleet\\.',
23
- '^compliance\\.',
24
- '^performance\\.',
25
- '^dashboard\\.',
26
- '^eventbus\\.' // Event bus internal events
27
- ];
28
- wasmEngine = new wasm.RegexEngine(eventPatterns);
29
- wasmAvailable = true;
30
- console.log('āœ… WASM Regex Engine loaded successfully (52x acceleration enabled)');
31
- console.log(` Patterns compiled: ${wasmEngine.pattern_count()}`);
32
- return true;
33
- } catch (error) {
34
- console.warn('āš ļø WASM unavailable, falling back to JavaScript validation:', error.message);
35
- wasmAvailable = false;
36
- return false;
37
- }
38
- }
39
- // Initialize WASM on module load
40
- const wasmInitPromise = initializeWASM();
7
+ */
8
+
9
+ import { EventEmitter } from 'events';
10
+ import { performance } from 'perf_hooks';
11
+ import { createHash } from 'crypto';
12
+
13
+ // REAL WASM Regex Engine Import (Sprint 1.2)
14
+ let wasmEngine = null;
15
+ let wasmAvailable = false;
16
+
17
+ // Attempt to load WASM module with graceful fallback
18
+ async function initializeWASM() {
19
+ try {
20
+ // Import the REAL compiled Rust WASM module (from _bg.js which has RegexEngine)
21
+ const wasm = await import('../../wasm-regex-engine/pkg/wasm_regex_engine_bg.js');
22
+
23
+ // Create regex engine for event validation patterns
24
+ const eventPatterns = [
25
+ '^cfn\\.loop\\.', // CFN Loop events
26
+ '^agent\\.', // Agent lifecycle events
27
+ '^swarm\\.', // Swarm coordination events
28
+ '^fleet\\.', // Fleet management events
29
+ '^compliance\\.', // Compliance validation events
30
+ '^performance\\.', // Performance monitoring events
31
+ '^dashboard\\.', // Dashboard events
32
+ '^eventbus\\.' // Event bus internal events
33
+ ];
34
+
35
+ wasmEngine = new wasm.RegexEngine(eventPatterns);
36
+ wasmAvailable = true;
37
+
38
+ console.log('āœ… WASM Regex Engine loaded successfully (52x acceleration enabled)');
39
+ console.log(` Patterns compiled: ${wasmEngine.pattern_count()}`);
40
+
41
+ return true;
42
+ } catch (error) {
43
+ console.warn('āš ļø WASM unavailable, falling back to JavaScript validation:', error.message);
44
+ wasmAvailable = false;
45
+ return false;
46
+ }
47
+ }
48
+
49
+ // Initialize WASM on module load
50
+ const wasmInitPromise = initializeWASM();
51
+
41
52
  /**
42
53
  * High-Performance Event Bus with WASM Acceleration
43
54
  * Implements mandatory Redis pub/sub coordination (Critical Rule #19)
44
- */ export class QEEventBus extends EventEmitter {
45
- /**
55
+ */
56
+ export class QEEventBus extends EventEmitter {
57
+ constructor(config = {}) {
58
+ super();
59
+
60
+ this.config = {
61
+ throughputTarget: 10000, // events/sec
62
+ latencyTarget: 50, // ms
63
+ workerThreads: 4,
64
+ batchSize: 100,
65
+ batchTimeout: 10, // ms
66
+ enableWASM: true,
67
+ enableSIMD: true,
68
+ enableZeroCopy: true,
69
+ priorityLevels: 10,
70
+ failureThreshold: 5, // Circuit breaker: failures before opening
71
+ recoveryTimeout: 30000, // Circuit breaker: 30s before retry
72
+ ...config
73
+ };
74
+
75
+ // Event routing tables (hash-based O(1) lookup)
76
+ this.subscribers = new Map(); // pattern -> Set<handler>
77
+ this.routingCache = new Map(); // eventType -> cachedRoute
78
+ this.priorityQueues = Array.from({ length: this.config.priorityLevels }, () => []);
79
+
80
+ // Performance metrics
81
+ this.metrics = {
82
+ eventsProcessed: 0,
83
+ eventsPublished: 0,
84
+ totalLatency: 0,
85
+ wasmValidations: 0,
86
+ jsValidations: 0,
87
+ wasmErrors: 0,
88
+ wasmCleanupsPerformed: 0,
89
+ batchesProcessed: 0,
90
+ routingHits: 0,
91
+ routingMisses: 0,
92
+ errors: 0,
93
+ throughput: 0,
94
+ avgLatency: 0,
95
+ // Circuit breaker metrics
96
+ circuitState: 'CLOSED',
97
+ circuitOpens: 0,
98
+ eventsRejected: 0,
99
+ bypassEvents: 0,
100
+ recoveryAttempts: 0
101
+ };
102
+
103
+ // Circuit breaker state machine
104
+ this.circuitBreaker = {
105
+ state: 'CLOSED', // CLOSED | OPEN | HALF-OPEN
106
+ consecutiveFailures: 0,
107
+ failureThreshold: this.config.failureThreshold,
108
+ recoveryTimeout: this.config.recoveryTimeout,
109
+ halfOpenSuccesses: 0,
110
+ halfOpenThreshold: 3, // Successes needed to close circuit
111
+ lastStateChange: Date.now(),
112
+ openedAt: null
113
+ };
114
+
115
+ // Batching state
116
+ this.eventBatch = [];
117
+ this.batchTimer = null;
118
+
119
+ // WASM state
120
+ this.wasmReady = false;
121
+
122
+ // Active state
123
+ this.active = false;
124
+ this.startTime = null;
125
+ }
126
+
127
+ /**
46
128
  * Initialize QE Event Bus with WASM acceleration
47
- */ async initialize() {
48
- console.log('šŸš€ Initializing QE Event Bus with WASM acceleration...');
49
- try {
50
- // Wait for WASM initialization
51
- await wasmInitPromise;
52
- this.wasmReady = wasmAvailable;
53
- if (this.wasmReady) {
54
- console.log('āœ… WASM Regex Engine ready for 52x speedup');
55
- console.log(' SIMD validation: ENABLED');
56
- console.log(' Zero-copy batching: ENABLED');
57
- console.log(' Hash-based routing: ENABLED');
58
- } else {
59
- console.log('āš ļø Running in JavaScript fallback mode');
60
- }
61
- // Start batch processing
62
- this.enableBatching();
63
- this.active = true;
64
- this.startTime = performance.now();
65
- console.log(`āœ… QE Event Bus initialized (target: ${this.config.throughputTarget} events/sec)`);
66
- return true;
67
- } catch (error) {
68
- console.error('āŒ Failed to initialize QE Event Bus:', error.message);
69
- throw error;
70
- }
71
- }
72
- /**
129
+ */
130
+ async initialize() {
131
+ console.log('šŸš€ Initializing QE Event Bus with WASM acceleration...');
132
+
133
+ try {
134
+ // Wait for WASM initialization
135
+ await wasmInitPromise;
136
+ this.wasmReady = wasmAvailable;
137
+
138
+ if (this.wasmReady) {
139
+ console.log('āœ… WASM Regex Engine ready for 52x speedup');
140
+ console.log(' SIMD validation: ENABLED');
141
+ console.log(' Zero-copy batching: ENABLED');
142
+ console.log(' Hash-based routing: ENABLED');
143
+ } else {
144
+ console.log('āš ļø Running in JavaScript fallback mode');
145
+ }
146
+
147
+ // Start batch processing
148
+ this.enableBatching();
149
+
150
+ this.active = true;
151
+ this.startTime = performance.now();
152
+
153
+ console.log(`āœ… QE Event Bus initialized (target: ${this.config.throughputTarget} events/sec)`);
154
+
155
+ return true;
156
+ } catch (error) {
157
+ console.error('āŒ Failed to initialize QE Event Bus:', error.message);
158
+ throw error;
159
+ }
160
+ }
161
+
162
+ /**
73
163
  * Subscribe to event pattern with handler
74
164
  * Builds hash-based routing table for O(1) lookup
75
- */ subscribe(pattern, handler, options = {}) {
76
- if (!this.subscribers.has(pattern)) {
77
- this.subscribers.set(pattern, new Set());
78
- }
79
- const handlerInfo = {
80
- handler,
81
- priority: options.priority || 5,
82
- batchSize: options.batchSize || this.config.batchSize,
83
- filter: options.filter
84
- };
85
- this.subscribers.get(pattern).add(handlerInfo);
86
- // Invalidate routing cache for this pattern
87
- this.routingCache.clear();
88
- console.log(`šŸ“” Subscribed to pattern: ${pattern} (priority: ${handlerInfo.priority})`);
89
- return ()=>this.unsubscribe(pattern, handler);
90
- }
91
- /**
165
+ */
166
+ subscribe(pattern, handler, options = {}) {
167
+ if (!this.subscribers.has(pattern)) {
168
+ this.subscribers.set(pattern, new Set());
169
+ }
170
+
171
+ const handlerInfo = {
172
+ handler,
173
+ priority: options.priority || 5,
174
+ batchSize: options.batchSize || this.config.batchSize,
175
+ filter: options.filter
176
+ };
177
+
178
+ this.subscribers.get(pattern).add(handlerInfo);
179
+
180
+ // Invalidate routing cache for this pattern
181
+ this.routingCache.clear();
182
+
183
+ console.log(`šŸ“” Subscribed to pattern: ${pattern} (priority: ${handlerInfo.priority})`);
184
+
185
+ return () => this.unsubscribe(pattern, handler);
186
+ }
187
+
188
+ /**
92
189
  * Unsubscribe handler from pattern
93
- */ unsubscribe(pattern, handler) {
94
- const handlers = this.subscribers.get(pattern);
95
- if (handlers) {
96
- handlers.forEach((info)=>{
97
- if (info.handler === handler) {
98
- handlers.delete(info);
99
- }
100
- });
101
- if (handlers.size === 0) {
102
- this.subscribers.delete(pattern);
103
- }
104
- this.routingCache.clear();
105
- }
106
- }
107
- /**
190
+ */
191
+ unsubscribe(pattern, handler) {
192
+ const handlers = this.subscribers.get(pattern);
193
+ if (handlers) {
194
+ handlers.forEach(info => {
195
+ if (info.handler === handler) {
196
+ handlers.delete(info);
197
+ }
198
+ });
199
+
200
+ if (handlers.size === 0) {
201
+ this.subscribers.delete(pattern);
202
+ }
203
+
204
+ this.routingCache.clear();
205
+ }
206
+ }
207
+
208
+ /**
108
209
  * Publish event with WASM-accelerated validation
109
210
  * Lines 352-396: WASM validation logic
110
- */ async publish(eventType, data, options = {}) {
111
- if (!this.active) {
112
- throw new Error('QE Event Bus not active');
113
- }
114
- const startTime = performance.now();
115
- const priority = options.priority || 5;
116
- // Create event envelope
117
- const event = {
118
- id: this.generateEventId(),
119
- type: eventType,
120
- data,
121
- timestamp: startTime,
122
- priority,
123
- source: options.source || 'unknown'
124
- };
125
- // WASM-ACCELERATED VALIDATION (52x speedup)
126
- // Lines 352-396: Replace with WASM validation
127
- const validationStart = performance.now();
128
- let isValid = false;
129
- if (this.wasmReady && this.config.enableWASM) {
130
- try {
131
- // REAL WASM validation using compiled Rust regex engine
132
- // has_match is the fastest check (SIMD-accelerated)
133
- isValid = wasmEngine.has_match(eventType);
134
- this.metrics.wasmValidations++;
135
- // Optional: Get detailed match info for logging
136
- if (isValid && options.verbose) {
137
- const matches = wasmEngine.match_all(eventType);
138
- console.log(`āœ“ WASM validated: ${eventType}`, matches);
139
- }
140
- } catch (error) {
141
- console.warn('āš ļø WASM validation failed, falling back to JS:', error.message);
142
- isValid = this.validateEventTypeJS(eventType);
143
- this.metrics.jsValidations++;
144
- this.metrics.wasmErrors = (this.metrics.wasmErrors || 0) + 1;
145
- } finally{
146
- // Ensure WASM buffer cleanup even on error (Sprint 1.3 memory safety)
147
- if (wasmEngine && typeof wasmEngine.clearBuffer === 'function') {
148
- try {
149
- wasmEngine.clearBuffer();
150
- } catch (cleanupError) {
151
- // Log but don't fail on cleanup errors
152
- console.warn('āš ļø WASM buffer cleanup warning:', cleanupError.message);
153
- }
154
- }
155
- }
156
- } else {
157
- // JavaScript fallback validation
158
- isValid = this.validateEventTypeJS(eventType);
159
- this.metrics.jsValidations++;
160
- }
161
- const validationTime = performance.now() - validationStart;
162
- if (!isValid) {
163
- this.metrics.errors++;
164
- throw new Error(`Invalid event type: ${eventType} (validation: ${validationTime.toFixed(3)}ms)`);
165
- }
166
- // Add to priority queue
167
- this.priorityQueues[priority].push(event);
168
- this.metrics.eventsPublished++;
169
- // High priority events are processed immediately
170
- if (priority >= 8) {
171
- await this.processEvent(event);
172
- } else {
173
- // Normal/low priority events are batched
174
- this.eventBatch.push(event);
175
- // Process batch if full
176
- if (this.eventBatch.length >= this.config.batchSize) {
177
- await this.processBatch();
178
- }
179
- }
180
- const totalLatency = performance.now() - startTime;
181
- this.metrics.totalLatency += totalLatency;
182
- return {
183
- eventId: event.id,
184
- latency: totalLatency,
185
- validationTime,
186
- wasmAccelerated: this.wasmReady && this.config.enableWASM
187
- };
188
- }
189
- /**
211
+ */
212
+ async publish(eventType, data, options = {}) {
213
+ if (!this.active) {
214
+ throw new Error('QE Event Bus not active');
215
+ }
216
+
217
+ const startTime = performance.now();
218
+ const priority = options.priority || 5;
219
+
220
+ // Create event envelope
221
+ const event = {
222
+ id: this.generateEventId(),
223
+ type: eventType,
224
+ data,
225
+ timestamp: startTime,
226
+ priority,
227
+ source: options.source || 'unknown'
228
+ };
229
+
230
+ // WASM-ACCELERATED VALIDATION (52x speedup)
231
+ // Lines 352-396: Replace with WASM validation
232
+ const validationStart = performance.now();
233
+ let isValid = false;
234
+
235
+ if (this.wasmReady && this.config.enableWASM) {
236
+ try {
237
+ // REAL WASM validation using compiled Rust regex engine
238
+ // has_match is the fastest check (SIMD-accelerated)
239
+ isValid = wasmEngine.has_match(eventType);
240
+ this.metrics.wasmValidations++;
241
+
242
+ // Optional: Get detailed match info for logging
243
+ if (isValid && options.verbose) {
244
+ const matches = wasmEngine.match_all(eventType);
245
+ console.log(`āœ“ WASM validated: ${eventType}`, matches);
246
+ }
247
+ } catch (error) {
248
+ console.warn('āš ļø WASM validation failed, falling back to JS:', error.message);
249
+ isValid = this.validateEventTypeJS(eventType);
250
+ this.metrics.jsValidations++;
251
+ this.metrics.wasmErrors = (this.metrics.wasmErrors || 0) + 1;
252
+ } finally {
253
+ // Ensure WASM buffer cleanup even on error (Sprint 1.3 memory safety)
254
+ if (wasmEngine && typeof wasmEngine.clearBuffer === 'function') {
255
+ try {
256
+ wasmEngine.clearBuffer();
257
+ } catch (cleanupError) {
258
+ // Log but don't fail on cleanup errors
259
+ console.warn('āš ļø WASM buffer cleanup warning:', cleanupError.message);
260
+ }
261
+ }
262
+ }
263
+ } else {
264
+ // JavaScript fallback validation
265
+ isValid = this.validateEventTypeJS(eventType);
266
+ this.metrics.jsValidations++;
267
+ }
268
+
269
+ const validationTime = performance.now() - validationStart;
270
+
271
+ if (!isValid) {
272
+ this.metrics.errors++;
273
+ throw new Error(`Invalid event type: ${eventType} (validation: ${validationTime.toFixed(3)}ms)`);
274
+ }
275
+
276
+ // Add to priority queue
277
+ this.priorityQueues[priority].push(event);
278
+ this.metrics.eventsPublished++;
279
+
280
+ // High priority events are processed immediately
281
+ if (priority >= 8) {
282
+ await this.processEvent(event);
283
+ } else {
284
+ // Normal/low priority events are batched
285
+ this.eventBatch.push(event);
286
+
287
+ // Process batch if full
288
+ if (this.eventBatch.length >= this.config.batchSize) {
289
+ await this.processBatch();
290
+ }
291
+ }
292
+
293
+ const totalLatency = performance.now() - startTime;
294
+ this.metrics.totalLatency += totalLatency;
295
+
296
+ return {
297
+ eventId: event.id,
298
+ latency: totalLatency,
299
+ validationTime,
300
+ wasmAccelerated: this.wasmReady && this.config.enableWASM
301
+ };
302
+ }
303
+
304
+ /**
190
305
  * JavaScript fallback validation (no WASM)
191
- */ validateEventTypeJS(eventType) {
192
- // JavaScript regex validation (slower fallback)
193
- const validPatterns = [
194
- /^cfn\.loop\./,
195
- /^agent\./,
196
- /^swarm\./,
197
- /^fleet\./,
198
- /^compliance\./,
199
- /^performance\./,
200
- /^dashboard\./,
201
- /^eventbus\./
202
- ];
203
- return validPatterns.some((pattern)=>pattern.test(eventType));
204
- }
205
- /**
306
+ */
307
+ validateEventTypeJS(eventType) {
308
+ // JavaScript regex validation (slower fallback)
309
+ const validPatterns = [
310
+ /^cfn\.loop\./,
311
+ /^agent\./,
312
+ /^swarm\./,
313
+ /^fleet\./,
314
+ /^compliance\./,
315
+ /^performance\./,
316
+ /^dashboard\./,
317
+ /^eventbus\./
318
+ ];
319
+
320
+ return validPatterns.some(pattern => pattern.test(eventType));
321
+ }
322
+
323
+ /**
206
324
  * Enable batching for high throughput
207
- */ enableBatching() {
208
- this.batchTimer = setInterval(()=>{
209
- if (this.eventBatch.length > 0) {
210
- this.processBatch();
211
- }
212
- }, this.config.batchTimeout);
213
- }
214
- /**
325
+ */
326
+ enableBatching() {
327
+ this.batchTimer = setInterval(() => {
328
+ if (this.eventBatch.length > 0) {
329
+ this.processBatch();
330
+ }
331
+ }, this.config.batchTimeout);
332
+ }
333
+
334
+ /**
215
335
  * Process event batch with zero-copy optimization
216
336
  * Lines 523-530: Zero-copy batching implementation
217
- */ async processBatch() {
218
- if (this.eventBatch.length === 0) return;
219
- const batchStart = performance.now();
220
- // ZERO-COPY BATCH PROCESSING (Lines 523-530)
221
- // Extract batch without copying (swap reference)
222
- const batch = this.eventBatch;
223
- this.eventBatch = [];
224
- try {
225
- // SIMD-style parallel processing (simulate with Promise.all)
226
- await Promise.all(batch.map((event)=>this.processEvent(event)));
227
- this.metrics.batchesProcessed++;
228
- const batchTime = performance.now() - batchStart;
229
- const eventsPerSec = (batch.length / (batchTime / 1000)).toFixed(0);
230
- if (batch.length > 10) {
231
- console.log(`šŸ“¦ Batch processed: ${batch.length} events in ${batchTime.toFixed(2)}ms (${eventsPerSec} events/sec)`);
232
- }
233
- } catch (error) {
234
- console.error('āŒ Batch processing failed:', error.message);
235
- this.metrics.errors++;
236
- }
237
- }
238
- /**
337
+ */
338
+ async processBatch() {
339
+ if (this.eventBatch.length === 0) return;
340
+
341
+ const batchStart = performance.now();
342
+
343
+ // ZERO-COPY BATCH PROCESSING (Lines 523-530)
344
+ // Extract batch without copying (swap reference)
345
+ const batch = this.eventBatch;
346
+ this.eventBatch = [];
347
+
348
+ try {
349
+ // SIMD-style parallel processing (simulate with Promise.all)
350
+ await Promise.all(batch.map(event => this.processEvent(event)));
351
+
352
+ this.metrics.batchesProcessed++;
353
+
354
+ const batchTime = performance.now() - batchStart;
355
+ const eventsPerSec = (batch.length / (batchTime / 1000)).toFixed(0);
356
+
357
+ if (batch.length > 10) {
358
+ console.log(`šŸ“¦ Batch processed: ${batch.length} events in ${batchTime.toFixed(2)}ms (${eventsPerSec} events/sec)`);
359
+ }
360
+ } catch (error) {
361
+ console.error('āŒ Batch processing failed:', error.message);
362
+ this.metrics.errors++;
363
+ }
364
+ }
365
+
366
+ /**
239
367
  * Process single event with hash-based routing and circuit breaker protection
240
368
  * Lines 623-646: O(1) hash-based routing implementation
241
- */ async processEvent(event) {
242
- // CIRCUIT BREAKER: Check if event should be processed
243
- // Priority 8-9 events bypass circuit breaker for critical coordination
244
- if (!this.isHighPriority(event)) {
245
- const canProcess = this.checkCircuit();
246
- if (!canProcess) {
247
- this.metrics.eventsRejected++;
248
- const error = new Error(`Circuit breaker OPEN - event rejected: ${event.type}`);
249
- error.code = 'CIRCUIT_OPEN';
250
- throw error;
251
- }
252
- } else {
253
- // Track priority bypass events
254
- this.metrics.bypassEvents++;
255
- }
256
- const routingStart = performance.now();
257
- try {
258
- // HASH-BASED O(1) ROUTING (Lines 623-646)
259
- // Check routing cache first
260
- let routes = this.routingCache.get(event.type);
261
- if (!routes) {
262
- // Cache miss: compute routes and cache them
263
- routes = this.computeRoutes(event.type);
264
- this.routingCache.set(event.type, routes);
265
- this.metrics.routingMisses++;
266
- // Limit cache size to prevent memory bloat
267
- if (this.routingCache.size > 10000) {
268
- // Evict oldest 1000 entries
269
- const keysToDelete = Array.from(this.routingCache.keys()).slice(0, 1000);
270
- keysToDelete.forEach((key)=>this.routingCache.delete(key));
271
- }
272
- } else {
273
- this.metrics.routingHits++;
274
- }
275
- const routingTime = performance.now() - routingStart;
276
- // Execute handlers
277
- const handlerStart = performance.now();
278
- const handlerPromises = routes.map(({ handler, filter })=>{
279
- // Apply filter if present
280
- if (filter && !filter(event)) {
281
- return Promise.resolve();
282
- }
283
- // Execute handler
284
- return Promise.resolve(handler(event)).catch((error)=>{
285
- console.error(`āŒ Handler failed for ${event.type}:`, error.message);
286
- this.metrics.errors++;
287
- throw error; // Re-throw to trigger circuit breaker
288
- });
289
- });
290
- await Promise.all(handlerPromises);
291
- const handlerTime = performance.now() - handlerStart;
292
- this.metrics.eventsProcessed++;
293
- // Emit for local listeners
294
- this.emit('event', event);
295
- this.emit(`event:${event.type}`, event);
296
- // Performance logging (only for slow events)
297
- if (handlerTime > 10) {
298
- console.warn(`āš ļø Slow event processing: ${event.type} (routing: ${routingTime.toFixed(3)}ms, handlers: ${handlerTime.toFixed(3)}ms)`);
299
- }
300
- // CIRCUIT BREAKER: Record successful processing
301
- this.recordSuccess();
302
- } catch (error) {
303
- // CIRCUIT BREAKER: Record failure
304
- this.recordFailure(error);
305
- throw error; // Re-throw for caller
306
- }
307
- }
308
- /**
369
+ */
370
+ async processEvent(event) {
371
+ // CIRCUIT BREAKER: Check if event should be processed
372
+ // Priority 8-9 events bypass circuit breaker for critical coordination
373
+ if (!this.isHighPriority(event)) {
374
+ const canProcess = this.checkCircuit();
375
+ if (!canProcess) {
376
+ this.metrics.eventsRejected++;
377
+ const error = new Error(`Circuit breaker OPEN - event rejected: ${event.type}`);
378
+ error.code = 'CIRCUIT_OPEN';
379
+ throw error;
380
+ }
381
+ } else {
382
+ // Track priority bypass events
383
+ this.metrics.bypassEvents++;
384
+ }
385
+
386
+ const routingStart = performance.now();
387
+
388
+ try {
389
+ // HASH-BASED O(1) ROUTING (Lines 623-646)
390
+ // Check routing cache first
391
+ let routes = this.routingCache.get(event.type);
392
+
393
+ if (!routes) {
394
+ // Cache miss: compute routes and cache them
395
+ routes = this.computeRoutes(event.type);
396
+ this.routingCache.set(event.type, routes);
397
+ this.metrics.routingMisses++;
398
+
399
+ // Limit cache size to prevent memory bloat
400
+ if (this.routingCache.size > 10000) {
401
+ // Evict oldest 1000 entries
402
+ const keysToDelete = Array.from(this.routingCache.keys()).slice(0, 1000);
403
+ keysToDelete.forEach(key => this.routingCache.delete(key));
404
+ }
405
+ } else {
406
+ this.metrics.routingHits++;
407
+ }
408
+
409
+ const routingTime = performance.now() - routingStart;
410
+
411
+ // Execute handlers
412
+ const handlerStart = performance.now();
413
+ const handlerPromises = routes.map(({ handler, filter }) => {
414
+ // Apply filter if present
415
+ if (filter && !filter(event)) {
416
+ return Promise.resolve();
417
+ }
418
+
419
+ // Execute handler
420
+ return Promise.resolve(handler(event)).catch(error => {
421
+ console.error(`āŒ Handler failed for ${event.type}:`, error.message);
422
+ this.metrics.errors++;
423
+ throw error; // Re-throw to trigger circuit breaker
424
+ });
425
+ });
426
+
427
+ await Promise.all(handlerPromises);
428
+
429
+ const handlerTime = performance.now() - handlerStart;
430
+ this.metrics.eventsProcessed++;
431
+
432
+ // Emit for local listeners
433
+ this.emit('event', event);
434
+ this.emit(`event:${event.type}`, event);
435
+
436
+ // Performance logging (only for slow events)
437
+ if (handlerTime > 10) {
438
+ console.warn(`āš ļø Slow event processing: ${event.type} (routing: ${routingTime.toFixed(3)}ms, handlers: ${handlerTime.toFixed(3)}ms)`);
439
+ }
440
+
441
+ // CIRCUIT BREAKER: Record successful processing
442
+ this.recordSuccess();
443
+
444
+ } catch (error) {
445
+ // CIRCUIT BREAKER: Record failure
446
+ this.recordFailure(error);
447
+ throw error; // Re-throw for caller
448
+ }
449
+ }
450
+
451
+ /**
309
452
  * Compute routes for event type using pattern matching
310
453
  * Uses JavaScript regex (compiled and cached for O(1) routing)
311
- */ computeRoutes(eventType) {
312
- const routes = [];
313
- for (const [pattern, handlers] of this.subscribers.entries()){
314
- // JavaScript regex pattern matching (very fast for routing)
315
- // WASM is used for event validation, JS is fine for routing patterns
316
- try {
317
- const regex = new RegExp(pattern);
318
- if (regex.test(eventType)) {
319
- handlers.forEach((handlerInfo)=>{
320
- routes.push(handlerInfo);
321
- });
322
- }
323
- } catch (error) {
324
- // Invalid regex pattern, skip it
325
- console.warn(`Invalid pattern: ${pattern}`, error.message);
326
- }
327
- }
328
- // Sort by priority (higher priority first)
329
- routes.sort((a, b)=>b.priority - a.priority);
330
- return routes;
331
- }
332
- /**
454
+ */
455
+ computeRoutes(eventType) {
456
+ const routes = [];
457
+
458
+ for (const [pattern, handlers] of this.subscribers.entries()) {
459
+ // JavaScript regex pattern matching (very fast for routing)
460
+ // WASM is used for event validation, JS is fine for routing patterns
461
+ try {
462
+ const regex = new RegExp(pattern);
463
+ if (regex.test(eventType)) {
464
+ handlers.forEach(handlerInfo => {
465
+ routes.push(handlerInfo);
466
+ });
467
+ }
468
+ } catch (error) {
469
+ // Invalid regex pattern, skip it
470
+ console.warn(`Invalid pattern: ${pattern}`, error.message);
471
+ }
472
+ }
473
+
474
+ // Sort by priority (higher priority first)
475
+ routes.sort((a, b) => b.priority - a.priority);
476
+
477
+ return routes;
478
+ }
479
+
480
+ /**
333
481
  * Generate unique event ID
334
- */ generateEventId() {
335
- // High-performance ID generation
336
- const timestamp = Date.now();
337
- const random = Math.random().toString(36).substr(2, 9);
338
- return `evt_${timestamp}_${random}`;
339
- }
340
- /**
482
+ */
483
+ generateEventId() {
484
+ // High-performance ID generation
485
+ const timestamp = Date.now();
486
+ const random = Math.random().toString(36).substr(2, 9);
487
+ return `evt_${timestamp}_${random}`;
488
+ }
489
+
490
+ /**
341
491
  * Get performance metrics
342
- */ getMetrics() {
343
- const uptime = this.startTime ? (performance.now() - this.startTime) / 1000 : 0;
344
- const avgLatency = this.metrics.eventsProcessed > 0 ? this.metrics.totalLatency / this.metrics.eventsProcessed : 0;
345
- const throughput = uptime > 0 ? this.metrics.eventsProcessed / uptime : 0;
346
- return {
347
- ...this.metrics,
348
- avgLatency: avgLatency.toFixed(3),
349
- throughput: throughput.toFixed(0),
350
- uptime: uptime.toFixed(1),
351
- wasmEnabled: this.wasmReady,
352
- wasmSpeedup: this.wasmReady ? '52x' : 'N/A',
353
- routingHitRate: this.metrics.routingMisses > 0 ? (this.metrics.routingHits / (this.metrics.routingHits + this.metrics.routingMisses) * 100).toFixed(1) : '0',
354
- targetThroughput: this.config.throughputTarget,
355
- targetLatency: this.config.latencyTarget
356
- };
357
- }
358
- /**
492
+ */
493
+ getMetrics() {
494
+ const uptime = this.startTime ? (performance.now() - this.startTime) / 1000 : 0;
495
+ const avgLatency = this.metrics.eventsProcessed > 0
496
+ ? this.metrics.totalLatency / this.metrics.eventsProcessed
497
+ : 0;
498
+ const throughput = uptime > 0
499
+ ? this.metrics.eventsProcessed / uptime
500
+ : 0;
501
+
502
+ return {
503
+ ...this.metrics,
504
+ avgLatency: avgLatency.toFixed(3),
505
+ throughput: throughput.toFixed(0),
506
+ uptime: uptime.toFixed(1),
507
+ wasmEnabled: this.wasmReady,
508
+ wasmSpeedup: this.wasmReady ? '52x' : 'N/A',
509
+ routingHitRate: this.metrics.routingMisses > 0
510
+ ? ((this.metrics.routingHits / (this.metrics.routingHits + this.metrics.routingMisses)) * 100).toFixed(1)
511
+ : '0',
512
+ targetThroughput: this.config.throughputTarget,
513
+ targetLatency: this.config.latencyTarget
514
+ };
515
+ }
516
+
517
+ /**
359
518
  * Get real-time dashboard data
360
- */ getDashboard() {
361
- const metrics = this.getMetrics();
362
- return {
363
- status: this.active ? 'active' : 'inactive',
364
- health: this.computeHealth(metrics),
365
- metrics,
366
- queues: {
367
- batch: this.eventBatch.length,
368
- priorities: this.priorityQueues.map((q, i)=>({
369
- priority: i,
370
- size: q.length
371
- })).filter((q)=>q.size > 0)
372
- },
373
- cache: {
374
- routes: this.routingCache.size,
375
- hitRate: metrics.routingHitRate
376
- },
377
- wasm: {
378
- enabled: this.wasmReady,
379
- validations: this.metrics.wasmValidations,
380
- fallbacks: this.metrics.jsValidations
381
- },
382
- circuitBreaker: this.getCircuitStatus()
383
- };
384
- }
385
- /**
519
+ */
520
+ getDashboard() {
521
+ const metrics = this.getMetrics();
522
+
523
+ return {
524
+ status: this.active ? 'active' : 'inactive',
525
+ health: this.computeHealth(metrics),
526
+ metrics,
527
+ queues: {
528
+ batch: this.eventBatch.length,
529
+ priorities: this.priorityQueues.map((q, i) => ({
530
+ priority: i,
531
+ size: q.length
532
+ })).filter(q => q.size > 0)
533
+ },
534
+ cache: {
535
+ routes: this.routingCache.size,
536
+ hitRate: metrics.routingHitRate
537
+ },
538
+ wasm: {
539
+ enabled: this.wasmReady,
540
+ validations: this.metrics.wasmValidations,
541
+ fallbacks: this.metrics.jsValidations
542
+ },
543
+ circuitBreaker: this.getCircuitStatus()
544
+ };
545
+ }
546
+
547
+ /**
386
548
  * Compute overall health score
387
- */ computeHealth(metrics) {
388
- let score = 100;
389
- // Throughput check
390
- if (parseFloat(metrics.throughput) < this.config.throughputTarget * 0.5) {
391
- score -= 20;
392
- }
393
- // Latency check
394
- if (parseFloat(metrics.avgLatency) > this.config.latencyTarget) {
395
- score -= 15;
396
- }
397
- // Error rate check
398
- const errorRate = metrics.eventsProcessed > 0 ? metrics.errors / metrics.eventsProcessed * 100 : 0;
399
- if (errorRate > 5) {
400
- score -= 25;
401
- }
402
- // Routing efficiency check
403
- if (parseFloat(metrics.routingHitRate) < 80) {
404
- score -= 10;
405
- }
406
- // Circuit breaker check
407
- if (this.circuitBreaker.state === 'OPEN') {
408
- score -= 30; // Major health impact when circuit is open
409
- } else if (this.circuitBreaker.state === 'HALF-OPEN') {
410
- score -= 15; // Moderate impact during recovery
411
- }
412
- return {
413
- score: Math.max(0, score),
414
- status: score >= 80 ? 'healthy' : score >= 60 ? 'degraded' : 'unhealthy'
415
- };
416
- }
417
- /**
549
+ */
550
+ computeHealth(metrics) {
551
+ let score = 100;
552
+
553
+ // Throughput check
554
+ if (parseFloat(metrics.throughput) < this.config.throughputTarget * 0.5) {
555
+ score -= 20;
556
+ }
557
+
558
+ // Latency check
559
+ if (parseFloat(metrics.avgLatency) > this.config.latencyTarget) {
560
+ score -= 15;
561
+ }
562
+
563
+ // Error rate check
564
+ const errorRate = metrics.eventsProcessed > 0
565
+ ? (metrics.errors / metrics.eventsProcessed) * 100
566
+ : 0;
567
+ if (errorRate > 5) {
568
+ score -= 25;
569
+ }
570
+
571
+ // Routing efficiency check
572
+ if (parseFloat(metrics.routingHitRate) < 80) {
573
+ score -= 10;
574
+ }
575
+
576
+ // Circuit breaker check
577
+ if (this.circuitBreaker.state === 'OPEN') {
578
+ score -= 30; // Major health impact when circuit is open
579
+ } else if (this.circuitBreaker.state === 'HALF-OPEN') {
580
+ score -= 15; // Moderate impact during recovery
581
+ }
582
+
583
+ return {
584
+ score: Math.max(0, score),
585
+ status: score >= 80 ? 'healthy' : score >= 60 ? 'degraded' : 'unhealthy'
586
+ };
587
+ }
588
+
589
+ /**
418
590
  * Check if event is high priority (8-9) and should bypass circuit breaker
419
- */ isHighPriority(event) {
420
- return event.priority !== undefined && event.priority >= 8;
421
- }
422
- /**
591
+ */
592
+ isHighPriority(event) {
593
+ return event.priority !== undefined && event.priority >= 8;
594
+ }
595
+
596
+ /**
423
597
  * Check circuit breaker state and determine if event can be processed
424
598
  * @returns {boolean} true if event can be processed, false if rejected
425
- */ checkCircuit() {
426
- const now = Date.now();
427
- switch(this.circuitBreaker.state){
428
- case 'CLOSED':
429
- return true; // Normal operation
430
- case 'OPEN':
431
- const timeOpen = now - this.circuitBreaker.openedAt;
432
- if (timeOpen >= this.circuitBreaker.recoveryTimeout) {
433
- this.transitionTo('HALF-OPEN');
434
- this.metrics.recoveryAttempts++;
435
- return true; // Allow testing
436
- }
437
- return false; // Reject events
438
- case 'HALF-OPEN':
439
- return true; // Allow for testing
440
- default:
441
- return true;
442
- }
443
- }
444
- /**
599
+ */
600
+ checkCircuit() {
601
+ const now = Date.now();
602
+
603
+ switch (this.circuitBreaker.state) {
604
+ case 'CLOSED':
605
+ return true; // Normal operation
606
+
607
+ case 'OPEN':
608
+ const timeOpen = now - this.circuitBreaker.openedAt;
609
+ if (timeOpen >= this.circuitBreaker.recoveryTimeout) {
610
+ this.transitionTo('HALF-OPEN');
611
+ this.metrics.recoveryAttempts++;
612
+ return true; // Allow testing
613
+ }
614
+ return false; // Reject events
615
+
616
+ case 'HALF-OPEN':
617
+ return true; // Allow for testing
618
+
619
+ default:
620
+ return true;
621
+ }
622
+ }
623
+
624
+ /**
445
625
  * Record successful event processing for circuit breaker
446
- */ recordSuccess() {
447
- switch(this.circuitBreaker.state){
448
- case 'CLOSED':
449
- // Reset failure counter on success
450
- this.circuitBreaker.consecutiveFailures = 0;
451
- break;
452
- case 'HALF-OPEN':
453
- // Track successes in half-open state
454
- this.circuitBreaker.halfOpenSuccesses++;
455
- if (this.circuitBreaker.halfOpenSuccesses >= this.circuitBreaker.halfOpenThreshold) {
456
- this.transitionTo('CLOSED');
457
- }
458
- break;
459
- }
460
- }
461
- /**
626
+ */
627
+ recordSuccess() {
628
+ switch (this.circuitBreaker.state) {
629
+ case 'CLOSED':
630
+ // Reset failure counter on success
631
+ this.circuitBreaker.consecutiveFailures = 0;
632
+ break;
633
+
634
+ case 'HALF-OPEN':
635
+ // Track successes in half-open state
636
+ this.circuitBreaker.halfOpenSuccesses++;
637
+ if (this.circuitBreaker.halfOpenSuccesses >= this.circuitBreaker.halfOpenThreshold) {
638
+ this.transitionTo('CLOSED');
639
+ }
640
+ break;
641
+ }
642
+ }
643
+
644
+ /**
462
645
  * Record failed event processing for circuit breaker
463
- */ recordFailure(error) {
464
- this.circuitBreaker.consecutiveFailures++;
465
- switch(this.circuitBreaker.state){
466
- case 'CLOSED':
467
- if (this.circuitBreaker.consecutiveFailures >= this.circuitBreaker.failureThreshold) {
468
- this.transitionTo('OPEN');
469
- }
470
- break;
471
- case 'HALF-OPEN':
472
- // Any failure in half-open immediately reopens circuit
473
- this.transitionTo('OPEN');
474
- break;
475
- }
476
- }
477
- /**
646
+ */
647
+ recordFailure(error) {
648
+ this.circuitBreaker.consecutiveFailures++;
649
+
650
+ switch (this.circuitBreaker.state) {
651
+ case 'CLOSED':
652
+ if (this.circuitBreaker.consecutiveFailures >= this.circuitBreaker.failureThreshold) {
653
+ this.transitionTo('OPEN');
654
+ }
655
+ break;
656
+
657
+ case 'HALF-OPEN':
658
+ // Any failure in half-open immediately reopens circuit
659
+ this.transitionTo('OPEN');
660
+ break;
661
+ }
662
+ }
663
+
664
+ /**
478
665
  * Transition circuit breaker to new state
479
- */ transitionTo(newState) {
480
- const oldState = this.circuitBreaker.state;
481
- this.circuitBreaker.state = newState;
482
- this.circuitBreaker.lastStateChange = Date.now();
483
- if (newState === 'OPEN') {
484
- this.circuitBreaker.openedAt = Date.now();
485
- this.metrics.circuitOpens++;
486
- console.log(`šŸ”Œ Circuit breaker: ${oldState} → OPEN (failures: ${this.circuitBreaker.consecutiveFailures})`);
487
- } else if (newState === 'HALF-OPEN') {
488
- this.circuitBreaker.halfOpenSuccesses = 0;
489
- console.log(`šŸ”Œ Circuit breaker: ${oldState} → HALF-OPEN (testing recovery)`);
490
- } else if (newState === 'CLOSED') {
491
- this.circuitBreaker.consecutiveFailures = 0;
492
- this.circuitBreaker.halfOpenSuccesses = 0;
493
- console.log(`šŸ”Œ Circuit breaker: ${oldState} → CLOSED (recovered)`);
494
- }
495
- this.metrics.circuitState = newState;
496
- }
497
- /**
666
+ */
667
+ transitionTo(newState) {
668
+ const oldState = this.circuitBreaker.state;
669
+ this.circuitBreaker.state = newState;
670
+ this.circuitBreaker.lastStateChange = Date.now();
671
+
672
+ if (newState === 'OPEN') {
673
+ this.circuitBreaker.openedAt = Date.now();
674
+ this.metrics.circuitOpens++;
675
+ console.log(`šŸ”Œ Circuit breaker: ${oldState} → OPEN (failures: ${this.circuitBreaker.consecutiveFailures})`);
676
+ } else if (newState === 'HALF-OPEN') {
677
+ this.circuitBreaker.halfOpenSuccesses = 0;
678
+ console.log(`šŸ”Œ Circuit breaker: ${oldState} → HALF-OPEN (testing recovery)`);
679
+ } else if (newState === 'CLOSED') {
680
+ this.circuitBreaker.consecutiveFailures = 0;
681
+ this.circuitBreaker.halfOpenSuccesses = 0;
682
+ console.log(`šŸ”Œ Circuit breaker: ${oldState} → CLOSED (recovered)`);
683
+ }
684
+
685
+ this.metrics.circuitState = newState;
686
+ }
687
+
688
+ /**
498
689
  * Get circuit breaker status and metrics
499
- */ getCircuitStatus() {
500
- return {
501
- state: this.circuitBreaker.state,
502
- consecutiveFailures: this.circuitBreaker.consecutiveFailures,
503
- openedAt: this.circuitBreaker.openedAt,
504
- lastStateChange: this.circuitBreaker.lastStateChange,
505
- failureThreshold: this.circuitBreaker.failureThreshold,
506
- recoveryTimeout: this.circuitBreaker.recoveryTimeout,
507
- metrics: {
508
- circuitOpens: this.metrics.circuitOpens,
509
- eventsRejected: this.metrics.eventsRejected,
510
- bypassEvents: this.metrics.bypassEvents,
511
- recoveryAttempts: this.metrics.recoveryAttempts
512
- }
513
- };
514
- }
515
- /**
690
+ */
691
+ getCircuitStatus() {
692
+ return {
693
+ state: this.circuitBreaker.state,
694
+ consecutiveFailures: this.circuitBreaker.consecutiveFailures,
695
+ openedAt: this.circuitBreaker.openedAt,
696
+ lastStateChange: this.circuitBreaker.lastStateChange,
697
+ failureThreshold: this.circuitBreaker.failureThreshold,
698
+ recoveryTimeout: this.circuitBreaker.recoveryTimeout,
699
+ metrics: {
700
+ circuitOpens: this.metrics.circuitOpens,
701
+ eventsRejected: this.metrics.eventsRejected,
702
+ bypassEvents: this.metrics.bypassEvents,
703
+ recoveryAttempts: this.metrics.recoveryAttempts
704
+ }
705
+ };
706
+ }
707
+
708
+ /**
516
709
  * Graceful shutdown
517
- */ async shutdown() {
518
- console.log('šŸ›‘ Shutting down QE Event Bus...');
519
- this.active = false;
520
- // Process remaining events
521
- if (this.eventBatch.length > 0) {
522
- console.log(`šŸ“¦ Processing ${this.eventBatch.length} remaining events...`);
523
- await this.processBatch();
524
- }
525
- // Process remaining priority queues
526
- for(let i = this.priorityQueues.length - 1; i >= 0; i--){
527
- const queue = this.priorityQueues[i];
528
- if (queue.length > 0) {
529
- console.log(`šŸ“¦ Processing ${queue.length} priority ${i} events...`);
530
- await Promise.all(queue.map((event)=>this.processEvent(event)));
531
- queue.length = 0;
532
- }
533
- }
534
- // Clear batch timer
535
- if (this.batchTimer) {
536
- clearInterval(this.batchTimer);
537
- this.batchTimer = null;
538
- }
539
- // Free WASM resources
540
- if (this.wasmReady && wasmEngine) {
541
- try {
542
- wasmEngine.free();
543
- console.log('āœ… WASM resources freed');
544
- } catch (error) {
545
- console.warn('āš ļø WASM cleanup warning:', error.message);
546
- }
547
- }
548
- // Print final metrics
549
- const finalMetrics = this.getMetrics();
550
- const circuitStatus = this.getCircuitStatus();
551
- console.log('\nšŸ“Š Final QE Event Bus Metrics:');
552
- console.log(` Events Processed: ${finalMetrics.eventsProcessed}`);
553
- console.log(` Events Published: ${finalMetrics.eventsPublished}`);
554
- console.log(` Avg Latency: ${finalMetrics.avgLatency}ms`);
555
- console.log(` Throughput: ${finalMetrics.throughput} events/sec`);
556
- console.log(` WASM Validations: ${finalMetrics.wasmValidations}`);
557
- console.log(` JS Validations: ${finalMetrics.jsValidations}`);
558
- console.log(` Routing Hit Rate: ${finalMetrics.routingHitRate}%`);
559
- console.log(` Errors: ${finalMetrics.errors}`);
560
- console.log(`\nšŸ”Œ Circuit Breaker Metrics:`);
561
- console.log(` Final State: ${circuitStatus.state}`);
562
- console.log(` Circuit Opens: ${circuitStatus.metrics.circuitOpens}`);
563
- console.log(` Events Rejected: ${circuitStatus.metrics.eventsRejected}`);
564
- console.log(` Priority Bypass: ${circuitStatus.metrics.bypassEvents}`);
565
- console.log(` Recovery Attempts: ${circuitStatus.metrics.recoveryAttempts}`);
566
- console.log('āœ… QE Event Bus shutdown complete');
567
- }
568
- constructor(config = {}){
569
- super();
570
- this.config = {
571
- throughputTarget: 10000,
572
- latencyTarget: 50,
573
- workerThreads: 4,
574
- batchSize: 100,
575
- batchTimeout: 10,
576
- enableWASM: true,
577
- enableSIMD: true,
578
- enableZeroCopy: true,
579
- priorityLevels: 10,
580
- failureThreshold: 5,
581
- recoveryTimeout: 30000,
582
- ...config
583
- };
584
- // Event routing tables (hash-based O(1) lookup)
585
- this.subscribers = new Map(); // pattern -> Set<handler>
586
- this.routingCache = new Map(); // eventType -> cachedRoute
587
- this.priorityQueues = Array.from({
588
- length: this.config.priorityLevels
589
- }, ()=>[]);
590
- // Performance metrics
591
- this.metrics = {
592
- eventsProcessed: 0,
593
- eventsPublished: 0,
594
- totalLatency: 0,
595
- wasmValidations: 0,
596
- jsValidations: 0,
597
- wasmErrors: 0,
598
- wasmCleanupsPerformed: 0,
599
- batchesProcessed: 0,
600
- routingHits: 0,
601
- routingMisses: 0,
602
- errors: 0,
603
- throughput: 0,
604
- avgLatency: 0,
605
- // Circuit breaker metrics
606
- circuitState: 'CLOSED',
607
- circuitOpens: 0,
608
- eventsRejected: 0,
609
- bypassEvents: 0,
610
- recoveryAttempts: 0
611
- };
612
- // Circuit breaker state machine
613
- this.circuitBreaker = {
614
- state: 'CLOSED',
615
- consecutiveFailures: 0,
616
- failureThreshold: this.config.failureThreshold,
617
- recoveryTimeout: this.config.recoveryTimeout,
618
- halfOpenSuccesses: 0,
619
- halfOpenThreshold: 3,
620
- lastStateChange: Date.now(),
621
- openedAt: null
622
- };
623
- // Batching state
624
- this.eventBatch = [];
625
- this.batchTimer = null;
626
- // WASM state
627
- this.wasmReady = false;
628
- // Active state
629
- this.active = false;
630
- this.startTime = null;
631
- }
632
- }
633
- // Export singleton instance
634
- export default QEEventBus;
635
- // Export factory function
636
- export function createQEEventBus(config = {}) {
637
- return new QEEventBus(config);
638
- }
639
- // Export WASM initialization status checker
640
- export async function isWASMAvailable() {
641
- await wasmInitPromise;
642
- return wasmAvailable;
643
- }
710
+ */
711
+ async shutdown() {
712
+ console.log('šŸ›‘ Shutting down QE Event Bus...');
713
+
714
+ this.active = false;
715
+
716
+ // Process remaining events
717
+ if (this.eventBatch.length > 0) {
718
+ console.log(`šŸ“¦ Processing ${this.eventBatch.length} remaining events...`);
719
+ await this.processBatch();
720
+ }
721
+
722
+ // Process remaining priority queues
723
+ for (let i = this.priorityQueues.length - 1; i >= 0; i--) {
724
+ const queue = this.priorityQueues[i];
725
+ if (queue.length > 0) {
726
+ console.log(`šŸ“¦ Processing ${queue.length} priority ${i} events...`);
727
+ await Promise.all(queue.map(event => this.processEvent(event)));
728
+ queue.length = 0;
729
+ }
730
+ }
731
+
732
+ // Clear batch timer
733
+ if (this.batchTimer) {
734
+ clearInterval(this.batchTimer);
735
+ this.batchTimer = null;
736
+ }
737
+
738
+ // Free WASM resources
739
+ if (this.wasmReady && wasmEngine) {
740
+ try {
741
+ wasmEngine.free();
742
+ console.log('āœ… WASM resources freed');
743
+ } catch (error) {
744
+ console.warn('āš ļø WASM cleanup warning:', error.message);
745
+ }
746
+ }
747
+
748
+ // Print final metrics
749
+ const finalMetrics = this.getMetrics();
750
+ const circuitStatus = this.getCircuitStatus();
751
+ console.log('\nšŸ“Š Final QE Event Bus Metrics:');
752
+ console.log(` Events Processed: ${finalMetrics.eventsProcessed}`);
753
+ console.log(` Events Published: ${finalMetrics.eventsPublished}`);
754
+ console.log(` Avg Latency: ${finalMetrics.avgLatency}ms`);
755
+ console.log(` Throughput: ${finalMetrics.throughput} events/sec`);
756
+ console.log(` WASM Validations: ${finalMetrics.wasmValidations}`);
757
+ console.log(` JS Validations: ${finalMetrics.jsValidations}`);
758
+ console.log(` Routing Hit Rate: ${finalMetrics.routingHitRate}%`);
759
+ console.log(` Errors: ${finalMetrics.errors}`);
760
+ console.log(`\nšŸ”Œ Circuit Breaker Metrics:`);
761
+ console.log(` Final State: ${circuitStatus.state}`);
762
+ console.log(` Circuit Opens: ${circuitStatus.metrics.circuitOpens}`);
763
+ console.log(` Events Rejected: ${circuitStatus.metrics.eventsRejected}`);
764
+ console.log(` Priority Bypass: ${circuitStatus.metrics.bypassEvents}`);
765
+ console.log(` Recovery Attempts: ${circuitStatus.metrics.recoveryAttempts}`);
766
+
767
+ console.log('āœ… QE Event Bus shutdown complete');
768
+ }
769
+ }
770
+
771
+ // Export singleton instance
772
+ export default QEEventBus;
773
+
774
+ // Export factory function
775
+ export function createQEEventBus(config = {}) {
776
+ return new QEEventBus(config);
777
+ }
778
+
779
+ // Export WASM initialization status checker
780
+ export async function isWASMAvailable() {
781
+ await wasmInitPromise;
782
+ return wasmAvailable;
783
+ }