claude-flow-novice 2.0.3 → 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 (228) hide show
  1. package/dist/src/cli/commands/swarm.js +1 -1
  2. package/dist/src/cli/main.js +1 -1
  3. package/dist/src/coordination/byzantine-memory-channels.js +25 -1
  4. package/dist/src/index.js +384 -35
  5. package/dist/src/utils/error-handler.js +2 -36
  6. package/dist/src/web/api/apm-routes.js +353 -0
  7. package/dist/src/web/api/config/api-config.js +184 -0
  8. package/dist/src/web/api/middleware/auth.js +203 -0
  9. package/dist/src/web/api/middleware/cache.js +273 -0
  10. package/dist/src/web/api/middleware/error-handler.js +257 -0
  11. package/dist/src/web/api/middleware/request-logger.js +215 -0
  12. package/dist/src/web/api/middleware/validation.js +323 -0
  13. package/dist/src/web/api/routes/events.js +463 -0
  14. package/dist/src/web/api/routes/hierarchy.js +300 -0
  15. package/dist/src/web/api/routes/index.js +12 -0
  16. package/dist/src/web/api/routes/metrics.js +559 -0
  17. package/dist/src/web/api/routes/parallel-status.js +359 -0
  18. package/dist/src/web/api/routes/status.js +448 -0
  19. package/dist/src/web/api/server.js +462 -0
  20. package/dist/src/web/dashboard/hooks/useWebSocket.js +383 -0
  21. package/dist/src/web/dashboard/index.js +85 -0
  22. package/dist/src/web/dashboard/realtime/CustomSyncManager.js +439 -0
  23. package/dist/src/web/dashboard/realtime/NativeWebSocketManager.js +323 -0
  24. package/dist/src/web/dashboard/realtime/PerformanceBenchmark.js +527 -0
  25. package/dist/src/web/dashboard/realtime/RealtimeCommunicationManager.js +474 -0
  26. package/dist/src/web/dashboard/realtime/RealtimeServer.js +666 -0
  27. package/dist/src/web/dashboard/realtime/SSEManager.js +426 -0
  28. package/dist/src/web/dashboard/types.js +4 -0
  29. package/dist/src/web/messaging/agent-status-tracker.js +453 -0
  30. package/dist/src/web/messaging/human-intervention-system.js +305 -0
  31. package/dist/src/web/messaging/message-filter.js +302 -0
  32. package/dist/src/web/messaging/swarm-message-router.js +324 -0
  33. package/dist/src/web/messaging/transparency-logger.js +421 -0
  34. package/dist/src/web/portal-server.js +460 -0
  35. package/dist/src/web/server.js +322 -0
  36. package/dist/src/web/websocket/apm-websocket-handler.js +453 -0
  37. package/dist/src/web/websocket/websocket-manager.js +780 -0
  38. package/package.json +6 -4
  39. package/dist/src/cli/minimal-main.js +0 -22
  40. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js +0 -23
  41. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +0 -57
  42. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +0 -401
  43. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +0 -181
  44. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js +0 -44
  45. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +0 -157
  46. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/edit.js +0 -71
  47. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/editorState/browser/editorState.js +0 -112
  48. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findController.js +0 -990
  49. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findDecorations.js +0 -296
  50. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findModel.js +0 -488
  51. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findOptionsWidget.js +0 -138
  52. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findState.js +0 -243
  53. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findWidget.js +0 -1177
  54. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/folding.js +0 -1093
  55. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +0 -133
  56. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingModel.js +0 -538
  57. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingRanges.js +0 -351
  58. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +0 -49
  59. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/format.js +0 -360
  60. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formatActions.js +0 -263
  61. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formattingEdit.js +0 -54
  62. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +0 -149
  63. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/hover/browser/contentHover.js +0 -874
  64. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commandIds.js +0 -7
  65. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commands.js +0 -199
  66. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js +0 -70
  67. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +0 -26
  68. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +0 -153
  69. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +0 -33
  70. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +0 -354
  71. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js +0 -146
  72. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/suggest/browser/completionModel.js +0 -224
  73. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +0 -119
  74. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/edcore.main.js +0 -14
  75. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.all.js +0 -63
  76. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.api.js +0 -55
  77. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.main.js +0 -7
  78. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.worker.js +0 -25
  79. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/standalone/browser/colorizer.js +0 -118
  80. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/css.worker.js +0 -36869
  81. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/cssMode.js +0 -2035
  82. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
  83. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
  84. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
  85. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
  86. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
  87. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
  88. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
  89. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
  90. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
  91. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
  92. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
  93. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
  94. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
  95. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
  96. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
  97. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
  98. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
  99. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
  100. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
  101. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
  102. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
  103. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
  104. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
  105. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
  106. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
  107. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
  108. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
  109. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
  110. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
  111. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
  112. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
  113. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
  114. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
  115. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
  116. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
  117. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
  118. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
  119. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
  120. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
  121. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
  122. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
  123. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
  124. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cameligo/cameligo.js +0 -10
  125. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/clojure/clojure.js +0 -10
  126. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/coffee/coffee.js +0 -10
  127. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cpp/cpp.js +0 -10
  128. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csharp/csharp.js +0 -10
  129. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csp/csp.js +0 -10
  130. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/css/css.js +0 -12
  131. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cypher/cypher.js +0 -10
  132. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dart/dart.js +0 -10
  133. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dockerfile/dockerfile.js +0 -10
  134. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/ecl/ecl.js +0 -10
  135. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/elixir/elixir.js +0 -10
  136. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/flow9/flow9.js +0 -10
  137. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.js +0 -745
  138. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.de.js +0 -31
  139. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.es.js +0 -31
  140. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.fr.js +0 -29
  141. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.it.js +0 -29
  142. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ja.js +0 -31
  143. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.js +0 -29
  144. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ko.js +0 -29
  145. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ru.js +0 -31
  146. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-cn.js +0 -31
  147. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-tw.js +0 -29
  148. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssMode.js +0 -13
  149. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssWorker.js +0 -81
  150. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/cli.js +0 -64
  151. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/example.js +0 -36
  152. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/index.js +0 -205
  153. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/test.js +0 -260
  154. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.browser.js +0 -34
  155. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.js +0 -35
  156. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.native.js +0 -26
  157. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.browser.js +0 -34
  158. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.js +0 -45
  159. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/nanoid.js +0 -1
  160. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/non-secure/index.js +0 -21
  161. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/url-alphabet/index.js +0 -3
  162. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/bin/nodemon.js +0 -16
  163. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/index.js +0 -49
  164. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/parse.js +0 -230
  165. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/command.js +0 -43
  166. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/defaults.js +0 -34
  167. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/exec.js +0 -234
  168. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/index.js +0 -93
  169. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/load.js +0 -225
  170. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/help/index.js +0 -27
  171. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/index.js +0 -1
  172. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/index.js +0 -4
  173. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/match.js +0 -287
  174. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/run.js +0 -562
  175. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/signals.js +0 -34
  176. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/watch.js +0 -244
  177. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/nodemon.js +0 -317
  178. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/add.js +0 -89
  179. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/index.js +0 -53
  180. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/parse.js +0 -43
  181. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/spawn.js +0 -74
  182. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/bus.js +0 -44
  183. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/clone.js +0 -40
  184. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/colour.js +0 -26
  185. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/index.js +0 -103
  186. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/log.js +0 -82
  187. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/merge.js +0 -47
  188. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/version.js +0 -100
  189. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/brace-expansion/index.js +0 -201
  190. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/has-flag/index.js +0 -8
  191. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/minimatch/minimatch.js +0 -947
  192. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/browser.js +0 -5
  193. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/index.js +0 -131
  194. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/bin/pidtree.js +0 -128
  195. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/index.js +0 -49
  196. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/bin.js +0 -61
  197. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/get.js +0 -45
  198. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/pidtree.js +0 -104
  199. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/ps.js +0 -47
  200. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/wmic.js +0 -49
  201. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/doc.js +0 -1270
  202. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/acorn.js +0 -15
  203. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/angular.js +0 -2
  204. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/babel.js +0 -15
  205. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/estree.js +0 -36
  206. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/flow.js +0 -19
  207. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/glimmer.js +0 -29
  208. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/graphql.js +0 -29
  209. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/html.js +0 -22
  210. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/markdown.js +0 -63
  211. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/meriyah.js +0 -4
  212. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/postcss.js +0 -54
  213. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/typescript.js +0 -20
  214. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/yaml.js +0 -160
  215. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/standalone.js +0 -34
  216. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/bin/react-scripts.js +0 -58
  217. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/env.js +0 -112
  218. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/getHttpsConfig.js +0 -74
  219. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/babelTransform.js +0 -37
  220. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/cssTransform.js +0 -22
  221. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/fileTransform.js +0 -40
  222. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/modules.js +0 -142
  223. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/paths.js +0 -153
  224. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack/persistentCache/createEnvironmentHash.js +0 -9
  225. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack.config.js +0 -796
  226. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpackDevServer.config.js +0 -135
  227. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/build.js +0 -225
  228. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/eject.js +0 -340
@@ -0,0 +1,780 @@
1
+ /**
2
+ * WebSocket Manager - Real-time communication for swarm transparency
3
+ * Integrates with Claude Flow and ruv-swarm MCP systems
4
+ */ function _define_property(obj, key, value) {
5
+ if (key in obj) {
6
+ Object.defineProperty(obj, key, {
7
+ value: value,
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true
11
+ });
12
+ } else {
13
+ obj[key] = value;
14
+ }
15
+ return obj;
16
+ }
17
+ const MESSAGE_SCHEMAS = {
18
+ 'join-swarm': {
19
+ type: 'join-swarm',
20
+ required: [
21
+ 'swarmId'
22
+ ],
23
+ validate: (data)=>{
24
+ return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100 && (!data.userId || typeof data.userId === 'string' && data.userId.length <= 100);
25
+ }
26
+ },
27
+ 'leave-swarm': {
28
+ type: 'leave-swarm',
29
+ required: [
30
+ 'swarmId'
31
+ ],
32
+ validate: (data)=>{
33
+ return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100;
34
+ }
35
+ },
36
+ 'send-intervention': {
37
+ type: 'send-intervention',
38
+ required: [
39
+ 'swarmId',
40
+ 'message',
41
+ 'action'
42
+ ],
43
+ validate: (data)=>{
44
+ return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100 && typeof data.message === 'string' && data.message.length > 0 && data.message.length <= 5000 && typeof data.action === 'string' && data.action.length > 0 && data.action.length <= 100 && (!data.agentId || typeof data.agentId === 'string' && data.agentId.length <= 100);
45
+ }
46
+ },
47
+ 'request-status': {
48
+ type: 'request-status',
49
+ required: [],
50
+ validate: (data)=>{
51
+ return (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100) && (!data.agentId || typeof data.agentId === 'string' && data.agentId.length <= 100);
52
+ }
53
+ },
54
+ 'set-filter': {
55
+ type: 'set-filter',
56
+ required: [],
57
+ validate: (data)=>{
58
+ // Allow any JSON object but limit size
59
+ return JSON.stringify(data).length <= 10000;
60
+ }
61
+ },
62
+ 'claude-flow-command': {
63
+ type: 'claude-flow-command',
64
+ required: [
65
+ 'command'
66
+ ],
67
+ validate: (data)=>{
68
+ const allowedCommands = [
69
+ 'swarm_status',
70
+ 'agent_list',
71
+ 'task_orchestrate',
72
+ 'swarm_init',
73
+ 'memory_usage'
74
+ ];
75
+ return typeof data.command === 'string' && allowedCommands.includes(data.command) && (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100);
76
+ }
77
+ },
78
+ 'ruv-swarm-command': {
79
+ type: 'ruv-swarm-command',
80
+ required: [
81
+ 'command'
82
+ ],
83
+ validate: (data)=>{
84
+ const allowedCommands = [
85
+ 'swarm_status',
86
+ 'agent_list',
87
+ 'swarm_monitor',
88
+ 'performance_report'
89
+ ];
90
+ return typeof data.command === 'string' && allowedCommands.includes(data.command) && (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100);
91
+ }
92
+ }
93
+ };
94
+ export class WebSocketManager {
95
+ setupSecurityMiddleware() {
96
+ // Add origin validation middleware
97
+ this.io.use((socket, next)=>{
98
+ const origin = socket.handshake.headers.origin;
99
+ if (!origin) {
100
+ this.logger.warn('WebSocket connection rejected: No origin header', {
101
+ socketId: socket.id,
102
+ ip: socket.handshake.address
103
+ });
104
+ return next(new Error('Origin header required'));
105
+ }
106
+ if (!this.ALLOWED_ORIGINS.includes(origin)) {
107
+ this.logger.warn('WebSocket connection rejected: Invalid origin', {
108
+ socketId: socket.id,
109
+ origin,
110
+ ip: socket.handshake.address
111
+ });
112
+ return next(new Error('Origin not allowed'));
113
+ }
114
+ next();
115
+ });
116
+ }
117
+ validateMessage(messageType, data) {
118
+ const schema = MESSAGE_SCHEMAS[messageType];
119
+ if (!schema) {
120
+ this.logger.warn('Unknown message type', {
121
+ messageType
122
+ });
123
+ return false;
124
+ }
125
+ // Check required fields
126
+ for (const field of schema.required){
127
+ if (!(field in data)) {
128
+ this.logger.warn('Missing required field', {
129
+ messageType,
130
+ field
131
+ });
132
+ return false;
133
+ }
134
+ }
135
+ // Run custom validation
136
+ if (!schema.validate(data)) {
137
+ this.logger.warn('Message validation failed', {
138
+ messageType,
139
+ data
140
+ });
141
+ return false;
142
+ }
143
+ return true;
144
+ }
145
+ checkRateLimit(socketId) {
146
+ const now = Date.now();
147
+ const rateLimitEntry = this.rateLimiting.get(socketId);
148
+ if (!rateLimitEntry) {
149
+ this.rateLimiting.set(socketId, {
150
+ count: 1,
151
+ lastReset: now
152
+ });
153
+ return true;
154
+ }
155
+ // Reset counter if window has expired
156
+ if (now - rateLimitEntry.lastReset > this.RATE_LIMIT_WINDOW) {
157
+ this.rateLimiting.set(socketId, {
158
+ count: 1,
159
+ lastReset: now
160
+ });
161
+ return true;
162
+ }
163
+ // Check if rate limit exceeded
164
+ if (rateLimitEntry.count >= this.RATE_LIMIT_MAX_REQUESTS) {
165
+ this.logger.warn('Rate limit exceeded', {
166
+ socketId,
167
+ count: rateLimitEntry.count,
168
+ window: this.RATE_LIMIT_WINDOW
169
+ });
170
+ return false;
171
+ }
172
+ // Increment counter
173
+ rateLimitEntry.count++;
174
+ return true;
175
+ }
176
+ setupSocketHandlers() {
177
+ this.io.on('connection', (socket)=>{
178
+ this.handleNewConnection(socket);
179
+ socket.on('join-swarm', (data)=>{
180
+ if (!this.checkRateLimit(socket.id)) {
181
+ socket.emit('error', {
182
+ message: 'Rate limit exceeded'
183
+ });
184
+ return;
185
+ }
186
+ if (!this.validateMessage('join-swarm', data)) {
187
+ socket.emit('error', {
188
+ message: 'Invalid message format'
189
+ });
190
+ return;
191
+ }
192
+ this.handleJoinSwarm(socket, data);
193
+ });
194
+ socket.on('leave-swarm', (data)=>{
195
+ if (!this.checkRateLimit(socket.id)) {
196
+ socket.emit('error', {
197
+ message: 'Rate limit exceeded'
198
+ });
199
+ return;
200
+ }
201
+ if (!this.validateMessage('leave-swarm', data)) {
202
+ socket.emit('error', {
203
+ message: 'Invalid message format'
204
+ });
205
+ return;
206
+ }
207
+ this.handleLeaveSwarm(socket, data);
208
+ });
209
+ socket.on('send-intervention', (data)=>{
210
+ if (!this.checkRateLimit(socket.id)) {
211
+ socket.emit('error', {
212
+ message: 'Rate limit exceeded'
213
+ });
214
+ return;
215
+ }
216
+ if (!this.validateMessage('send-intervention', data)) {
217
+ socket.emit('error', {
218
+ message: 'Invalid message format'
219
+ });
220
+ return;
221
+ }
222
+ this.handleHumanIntervention(socket, data);
223
+ });
224
+ socket.on('request-status', (data)=>{
225
+ if (!this.checkRateLimit(socket.id)) {
226
+ socket.emit('error', {
227
+ message: 'Rate limit exceeded'
228
+ });
229
+ return;
230
+ }
231
+ if (!this.validateMessage('request-status', data)) {
232
+ socket.emit('error', {
233
+ message: 'Invalid message format'
234
+ });
235
+ return;
236
+ }
237
+ this.handleStatusRequest(socket, data);
238
+ });
239
+ socket.on('set-filter', (filterConfig)=>{
240
+ if (!this.checkRateLimit(socket.id)) {
241
+ socket.emit('error', {
242
+ message: 'Rate limit exceeded'
243
+ });
244
+ return;
245
+ }
246
+ if (!this.validateMessage('set-filter', filterConfig)) {
247
+ socket.emit('error', {
248
+ message: 'Invalid message format'
249
+ });
250
+ return;
251
+ }
252
+ this.handleFilterUpdate(socket, filterConfig);
253
+ });
254
+ // Claude Flow MCP integration events
255
+ socket.on('claude-flow-command', (data)=>{
256
+ if (!this.checkRateLimit(socket.id)) {
257
+ socket.emit('error', {
258
+ message: 'Rate limit exceeded'
259
+ });
260
+ return;
261
+ }
262
+ if (!this.validateMessage('claude-flow-command', data)) {
263
+ socket.emit('error', {
264
+ message: 'Invalid message format'
265
+ });
266
+ return;
267
+ }
268
+ this.handleClaudeFlowCommand(socket, data);
269
+ });
270
+ // ruv-swarm MCP integration events
271
+ socket.on('ruv-swarm-command', (data)=>{
272
+ if (!this.checkRateLimit(socket.id)) {
273
+ socket.emit('error', {
274
+ message: 'Rate limit exceeded'
275
+ });
276
+ return;
277
+ }
278
+ if (!this.validateMessage('ruv-swarm-command', data)) {
279
+ socket.emit('error', {
280
+ message: 'Invalid message format'
281
+ });
282
+ return;
283
+ }
284
+ this.handleRuvSwarmCommand(socket, data);
285
+ });
286
+ socket.on('disconnect', ()=>{
287
+ this.handleDisconnection(socket);
288
+ });
289
+ });
290
+ }
291
+ handleNewConnection(socket) {
292
+ const connection = {
293
+ socketId: socket.id,
294
+ joinedSwarms: new Set(),
295
+ lastActivity: new Date().toISOString()
296
+ };
297
+ this.connections.set(socket.id, connection);
298
+ this.logger.info('WebSocket client connected', {
299
+ socketId: socket.id,
300
+ clientsCount: this.connections.size
301
+ });
302
+ // Send initial connection success
303
+ socket.emit('connected', {
304
+ socketId: socket.id,
305
+ serverTime: new Date().toISOString(),
306
+ supportedEvents: [
307
+ 'agent-message',
308
+ 'status-change',
309
+ 'human-intervention',
310
+ 'transparency-insight',
311
+ 'claude-flow-event',
312
+ 'ruv-swarm-event'
313
+ ]
314
+ });
315
+ }
316
+ handleJoinSwarm(socket, data) {
317
+ const connection = this.connections.get(socket.id);
318
+ if (!connection) return;
319
+ connection.joinedSwarms.add(data.swarmId);
320
+ connection.userId = data.userId;
321
+ connection.lastActivity = new Date().toISOString();
322
+ // Add to swarm subscriptions
323
+ if (!this.swarmSubscriptions.has(data.swarmId)) {
324
+ this.swarmSubscriptions.set(data.swarmId, new Set());
325
+ }
326
+ this.swarmSubscriptions.get(data.swarmId).add(socket.id);
327
+ // Join Socket.IO room
328
+ socket.join(`swarm-${data.swarmId}`);
329
+ this.logger.info('Client joined swarm', {
330
+ socketId: socket.id,
331
+ swarmId: data.swarmId,
332
+ userId: data.userId
333
+ });
334
+ // Send join confirmation with current swarm state
335
+ socket.emit('swarm-joined', {
336
+ swarmId: data.swarmId,
337
+ timestamp: new Date().toISOString(),
338
+ subscribersCount: this.swarmSubscriptions.get(data.swarmId).size
339
+ });
340
+ // Request initial swarm data using MCP integration
341
+ this.requestSwarmStatusFromMCP(data.swarmId, socket);
342
+ }
343
+ handleLeaveSwarm(socket, data) {
344
+ const connection = this.connections.get(socket.id);
345
+ if (!connection) return;
346
+ connection.joinedSwarms.delete(data.swarmId);
347
+ // Remove from swarm subscriptions
348
+ const swarmSubs = this.swarmSubscriptions.get(data.swarmId);
349
+ if (swarmSubs) {
350
+ swarmSubs.delete(socket.id);
351
+ if (swarmSubs.size === 0) {
352
+ this.swarmSubscriptions.delete(data.swarmId);
353
+ }
354
+ }
355
+ // Leave Socket.IO room
356
+ socket.leave(`swarm-${data.swarmId}`);
357
+ this.logger.info('Client left swarm', {
358
+ socketId: socket.id,
359
+ swarmId: data.swarmId
360
+ });
361
+ socket.emit('swarm-left', {
362
+ swarmId: data.swarmId,
363
+ timestamp: new Date().toISOString()
364
+ });
365
+ }
366
+ async handleHumanIntervention(socket, data) {
367
+ try {
368
+ this.logger.info('Human intervention received', {
369
+ socketId: socket.id,
370
+ swarmId: data.swarmId,
371
+ agentId: data.agentId,
372
+ action: data.action
373
+ });
374
+ // Forward intervention to Claude Flow MCP
375
+ await this.forwardInterventionToClaudeFlow(data, socket);
376
+ // Broadcast intervention to other clients in the swarm
377
+ socket.to(`swarm-${data.swarmId}`).emit('human-intervention', {
378
+ ...data,
379
+ fromClient: socket.id,
380
+ timestamp: new Date().toISOString()
381
+ });
382
+ } catch (error) {
383
+ this.logger.error('Error handling human intervention', {
384
+ error: error.message,
385
+ socketId: socket.id,
386
+ swarmId: data.swarmId
387
+ });
388
+ socket.emit('intervention-error', {
389
+ error: 'Failed to process intervention',
390
+ originalData: data
391
+ });
392
+ }
393
+ }
394
+ handleStatusRequest(socket, data) {
395
+ // Request status from MCP systems
396
+ if (data.swarmId) {
397
+ this.requestSwarmStatusFromMCP(data.swarmId, socket);
398
+ }
399
+ if (data.agentId) {
400
+ this.requestAgentStatusFromMCP(data.agentId, socket);
401
+ }
402
+ }
403
+ handleFilterUpdate(socket, filterConfig) {
404
+ const connection = this.connections.get(socket.id);
405
+ if (!connection) return;
406
+ connection.filters = filterConfig;
407
+ connection.lastActivity = new Date().toISOString();
408
+ socket.emit('filter-updated', {
409
+ status: 'success',
410
+ filterConfig
411
+ });
412
+ }
413
+ async handleClaudeFlowCommand(socket, data) {
414
+ try {
415
+ this.logger.info('Claude Flow MCP command received', {
416
+ socketId: socket.id,
417
+ command: data.command,
418
+ swarmId: data.swarmId
419
+ });
420
+ // Execute Claude Flow MCP command
421
+ const result = await this.executeClaudeFlowMCPCommand(data.command, data.params);
422
+ socket.emit('claude-flow-response', {
423
+ command: data.command,
424
+ result,
425
+ timestamp: new Date().toISOString()
426
+ });
427
+ // If it's a swarm-related command, broadcast to swarm room
428
+ if (data.swarmId) {
429
+ socket.to(`swarm-${data.swarmId}`).emit('claude-flow-event', {
430
+ command: data.command,
431
+ result,
432
+ fromClient: socket.id,
433
+ timestamp: new Date().toISOString()
434
+ });
435
+ }
436
+ } catch (error) {
437
+ this.logger.error('Claude Flow MCP command error', {
438
+ error: error.message,
439
+ command: data.command
440
+ });
441
+ socket.emit('claude-flow-error', {
442
+ command: data.command,
443
+ error: error.message
444
+ });
445
+ }
446
+ }
447
+ async handleRuvSwarmCommand(socket, data) {
448
+ try {
449
+ this.logger.info('ruv-swarm MCP command received', {
450
+ socketId: socket.id,
451
+ command: data.command,
452
+ swarmId: data.swarmId
453
+ });
454
+ // Execute ruv-swarm MCP command
455
+ const result = await this.executeRuvSwarmMCPCommand(data.command, data.params);
456
+ socket.emit('ruv-swarm-response', {
457
+ command: data.command,
458
+ result,
459
+ timestamp: new Date().toISOString()
460
+ });
461
+ // If it's a swarm-related command, broadcast to swarm room
462
+ if (data.swarmId) {
463
+ socket.to(`swarm-${data.swarmId}`).emit('ruv-swarm-event', {
464
+ command: data.command,
465
+ result,
466
+ fromClient: socket.id,
467
+ timestamp: new Date().toISOString()
468
+ });
469
+ }
470
+ } catch (error) {
471
+ this.logger.error('ruv-swarm MCP command error', {
472
+ error: error.message,
473
+ command: data.command
474
+ });
475
+ socket.emit('ruv-swarm-error', {
476
+ command: data.command,
477
+ error: error.message
478
+ });
479
+ }
480
+ }
481
+ handleDisconnection(socket) {
482
+ const connection = this.connections.get(socket.id);
483
+ if (!connection) return;
484
+ // Remove from all swarm subscriptions
485
+ for (const swarmId of connection.joinedSwarms){
486
+ const swarmSubs = this.swarmSubscriptions.get(swarmId);
487
+ if (swarmSubs) {
488
+ swarmSubs.delete(socket.id);
489
+ if (swarmSubs.size === 0) {
490
+ this.swarmSubscriptions.delete(swarmId);
491
+ }
492
+ }
493
+ }
494
+ // Clean up rate limiting data
495
+ this.rateLimiting.delete(socket.id);
496
+ this.connections.delete(socket.id);
497
+ this.logger.info('WebSocket client disconnected', {
498
+ socketId: socket.id,
499
+ clientsCount: this.connections.size
500
+ });
501
+ }
502
+ /**
503
+ * Broadcast event to all clients in a swarm
504
+ */ broadcastToSwarm(swarmId, event) {
505
+ this.io.to(`swarm-${swarmId}`).emit(event.type, {
506
+ ...event.data,
507
+ timestamp: event.timestamp,
508
+ swarmId,
509
+ agentId: event.agentId
510
+ });
511
+ this.logger.debug('Event broadcast to swarm', {
512
+ swarmId,
513
+ eventType: event.type,
514
+ subscribersCount: this.swarmSubscriptions.get(swarmId)?.size || 0
515
+ });
516
+ }
517
+ /**
518
+ * Send event to specific client
519
+ */ sendToClient(socketId, event) {
520
+ const socket = this.io.sockets.sockets.get(socketId);
521
+ if (socket) {
522
+ socket.emit(event.type, {
523
+ ...event.data,
524
+ timestamp: event.timestamp
525
+ });
526
+ }
527
+ }
528
+ /**
529
+ * Get connection statistics
530
+ */ getConnectionStats() {
531
+ const activeSwarms = this.swarmSubscriptions.size;
532
+ const totalSubscriptions = Array.from(this.swarmSubscriptions.values()).reduce((sum, subs)=>sum + subs.size, 0);
533
+ return {
534
+ totalConnections: this.connections.size,
535
+ activeSwarms,
536
+ averageSubscriptionsPerSwarm: activeSwarms > 0 ? totalSubscriptions / activeSwarms : 0
537
+ };
538
+ }
539
+ /**
540
+ * Request swarm status from Claude Flow MCP
541
+ */ async requestSwarmStatusFromMCP(swarmId, socket) {
542
+ try {
543
+ // Use Claude Flow MCP to get swarm status
544
+ const swarmStatus = await this.executeClaudeFlowMCPCommand('swarm_status', {
545
+ swarmId
546
+ });
547
+ socket.emit('swarm-status', {
548
+ swarmId,
549
+ status: swarmStatus,
550
+ source: 'claude-flow-mcp',
551
+ timestamp: new Date().toISOString()
552
+ });
553
+ // Also try ruv-swarm MCP for additional metrics
554
+ try {
555
+ const ruvSwarmStatus = await this.executeRuvSwarmMCPCommand('swarm_status', {
556
+ verbose: true
557
+ });
558
+ socket.emit('ruv-swarm-status', {
559
+ swarmId,
560
+ status: ruvSwarmStatus,
561
+ source: 'ruv-swarm-mcp',
562
+ timestamp: new Date().toISOString()
563
+ });
564
+ } catch (ruvError) {
565
+ // ruv-swarm might not be available, that's okay
566
+ this.logger.debug('ruv-swarm MCP not available for status', {
567
+ swarmId
568
+ });
569
+ }
570
+ } catch (error) {
571
+ this.logger.error('Error requesting swarm status from MCP', {
572
+ error: error.message,
573
+ swarmId
574
+ });
575
+ socket.emit('status-error', {
576
+ swarmId,
577
+ error: 'Failed to fetch swarm status'
578
+ });
579
+ }
580
+ }
581
+ /**
582
+ * Request agent status from MCP systems
583
+ */ async requestAgentStatusFromMCP(agentId, socket) {
584
+ try {
585
+ // Try both MCP systems for comprehensive agent data
586
+ const [claudeFlowResult, ruvSwarmResult] = await Promise.allSettled([
587
+ this.executeClaudeFlowMCPCommand('agent_list', {
588
+ filter: 'all'
589
+ }),
590
+ this.executeRuvSwarmMCPCommand('agent_list', {
591
+ filter: 'all'
592
+ })
593
+ ]);
594
+ const responses = {
595
+ agentId,
596
+ timestamp: new Date().toISOString()
597
+ };
598
+ if (claudeFlowResult.status === 'fulfilled') {
599
+ responses.claudeFlowData = claudeFlowResult.value;
600
+ }
601
+ if (ruvSwarmResult.status === 'fulfilled') {
602
+ responses.ruvSwarmData = ruvSwarmResult.value;
603
+ }
604
+ socket.emit('agent-status', responses);
605
+ } catch (error) {
606
+ this.logger.error('Error requesting agent status from MCP', {
607
+ error: error.message,
608
+ agentId
609
+ });
610
+ socket.emit('agent-status-error', {
611
+ agentId,
612
+ error: 'Failed to fetch agent status'
613
+ });
614
+ }
615
+ }
616
+ /**
617
+ * Forward human intervention to Claude Flow MCP
618
+ */ async forwardInterventionToClaudeFlow(intervention, socket) {
619
+ try {
620
+ // Use task orchestration to send human message
621
+ const result = await this.executeClaudeFlowMCPCommand('task_orchestrate', {
622
+ task: `Human intervention: ${intervention.message}`,
623
+ strategy: 'adaptive',
624
+ priority: 'high',
625
+ metadata: {
626
+ humanIntervention: true,
627
+ action: intervention.action,
628
+ targetAgent: intervention.agentId,
629
+ ...intervention.metadata
630
+ }
631
+ });
632
+ socket.emit('intervention-forwarded', {
633
+ interventionId: result.taskId || 'unknown',
634
+ status: 'sent',
635
+ mcpResponse: result
636
+ });
637
+ } catch (error) {
638
+ throw new Error(`Failed to forward intervention to Claude Flow MCP: ${error.message}`);
639
+ }
640
+ }
641
+ /**
642
+ * Execute Claude Flow MCP command
643
+ */ async executeClaudeFlowMCPCommand(command, params) {
644
+ // This would integrate with the actual MCP system
645
+ // For now, we'll simulate the integration
646
+ this.logger.debug('Executing Claude Flow MCP command', {
647
+ command,
648
+ params
649
+ });
650
+ // Simulate MCP commands that would be available
651
+ switch(command){
652
+ case 'swarm_status':
653
+ return {
654
+ swarmId: params?.swarmId || 'unknown',
655
+ status: 'active',
656
+ agents: 3,
657
+ tasks: {
658
+ active: 2,
659
+ completed: 5,
660
+ failed: 0
661
+ }
662
+ };
663
+ case 'agent_list':
664
+ return {
665
+ agents: [
666
+ {
667
+ id: 'researcher-1',
668
+ type: 'researcher',
669
+ status: 'active'
670
+ },
671
+ {
672
+ id: 'coder-1',
673
+ type: 'coder',
674
+ status: 'working'
675
+ },
676
+ {
677
+ id: 'reviewer-1',
678
+ type: 'reviewer',
679
+ status: 'idle'
680
+ }
681
+ ]
682
+ };
683
+ case 'task_orchestrate':
684
+ return {
685
+ taskId: `task_${Date.now()}`,
686
+ status: 'queued',
687
+ priority: params?.priority || 'medium',
688
+ strategy: params?.strategy || 'adaptive'
689
+ };
690
+ default:
691
+ throw new Error(`Unknown Claude Flow MCP command: ${command}`);
692
+ }
693
+ }
694
+ /**
695
+ * Execute ruv-swarm MCP command
696
+ */ async executeRuvSwarmMCPCommand(command, params) {
697
+ // This would integrate with the actual ruv-swarm MCP system
698
+ this.logger.debug('Executing ruv-swarm MCP command', {
699
+ command,
700
+ params
701
+ });
702
+ // Simulate ruv-swarm MCP commands
703
+ switch(command){
704
+ case 'swarm_status':
705
+ return {
706
+ topology: 'mesh',
707
+ agents: 3,
708
+ performance: {
709
+ efficiency: 87.5
710
+ },
711
+ memory: {
712
+ usage: '45MB'
713
+ }
714
+ };
715
+ case 'agent_list':
716
+ return {
717
+ agents: [
718
+ {
719
+ id: 'agent-001',
720
+ capabilities: [
721
+ 'research',
722
+ 'analysis'
723
+ ]
724
+ },
725
+ {
726
+ id: 'agent-002',
727
+ capabilities: [
728
+ 'coding',
729
+ 'testing'
730
+ ]
731
+ },
732
+ {
733
+ id: 'agent-003',
734
+ capabilities: [
735
+ 'review',
736
+ 'optimization'
737
+ ]
738
+ }
739
+ ]
740
+ };
741
+ default:
742
+ throw new Error(`Unknown ruv-swarm MCP command: ${command}`);
743
+ }
744
+ }
745
+ /**
746
+ * Get active swarm connections
747
+ */ getActiveSwarms() {
748
+ return Array.from(this.swarmSubscriptions.keys());
749
+ }
750
+ /**
751
+ * Get clients connected to a specific swarm
752
+ */ getSwarmClients(swarmId) {
753
+ return Array.from(this.swarmSubscriptions.get(swarmId) || []);
754
+ }
755
+ constructor(io, logger){
756
+ _define_property(this, "io", void 0);
757
+ _define_property(this, "logger", void 0);
758
+ _define_property(this, "connections", void 0);
759
+ _define_property(this, "swarmSubscriptions", void 0); // swarmId -> socketIds
760
+ _define_property(this, "rateLimiting", void 0); // socketId -> rate limit data
761
+ _define_property(this, "RATE_LIMIT_WINDOW", void 0); // 1 minute
762
+ _define_property(this, "RATE_LIMIT_MAX_REQUESTS", void 0); // 100 requests per minute
763
+ _define_property(this, "ALLOWED_ORIGINS", void 0);
764
+ this.io = io;
765
+ this.logger = logger;
766
+ this.connections = new Map();
767
+ this.swarmSubscriptions = new Map();
768
+ this.rateLimiting = new Map();
769
+ this.RATE_LIMIT_WINDOW = 60000;
770
+ this.RATE_LIMIT_MAX_REQUESTS = 100;
771
+ this.ALLOWED_ORIGINS = [
772
+ 'http://localhost:3000',
773
+ 'http://localhost:3001',
774
+ 'https://localhost:3000',
775
+ 'https://localhost:3001'
776
+ ];
777
+ this.setupSecurityMiddleware();
778
+ this.setupSocketHandlers();
779
+ }
780
+ }