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.
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/main.js +1 -1
- package/dist/src/coordination/byzantine-memory-channels.js +25 -1
- package/dist/src/index.js +384 -35
- package/dist/src/utils/error-handler.js +2 -36
- package/dist/src/web/api/apm-routes.js +353 -0
- package/dist/src/web/api/config/api-config.js +184 -0
- package/dist/src/web/api/middleware/auth.js +203 -0
- package/dist/src/web/api/middleware/cache.js +273 -0
- package/dist/src/web/api/middleware/error-handler.js +257 -0
- package/dist/src/web/api/middleware/request-logger.js +215 -0
- package/dist/src/web/api/middleware/validation.js +323 -0
- package/dist/src/web/api/routes/events.js +463 -0
- package/dist/src/web/api/routes/hierarchy.js +300 -0
- package/dist/src/web/api/routes/index.js +12 -0
- package/dist/src/web/api/routes/metrics.js +559 -0
- package/dist/src/web/api/routes/parallel-status.js +359 -0
- package/dist/src/web/api/routes/status.js +448 -0
- package/dist/src/web/api/server.js +462 -0
- package/dist/src/web/dashboard/hooks/useWebSocket.js +383 -0
- package/dist/src/web/dashboard/index.js +85 -0
- package/dist/src/web/dashboard/realtime/CustomSyncManager.js +439 -0
- package/dist/src/web/dashboard/realtime/NativeWebSocketManager.js +323 -0
- package/dist/src/web/dashboard/realtime/PerformanceBenchmark.js +527 -0
- package/dist/src/web/dashboard/realtime/RealtimeCommunicationManager.js +474 -0
- package/dist/src/web/dashboard/realtime/RealtimeServer.js +666 -0
- package/dist/src/web/dashboard/realtime/SSEManager.js +426 -0
- package/dist/src/web/dashboard/types.js +4 -0
- package/dist/src/web/messaging/agent-status-tracker.js +453 -0
- package/dist/src/web/messaging/human-intervention-system.js +305 -0
- package/dist/src/web/messaging/message-filter.js +302 -0
- package/dist/src/web/messaging/swarm-message-router.js +324 -0
- package/dist/src/web/messaging/transparency-logger.js +421 -0
- package/dist/src/web/portal-server.js +460 -0
- package/dist/src/web/server.js +322 -0
- package/dist/src/web/websocket/apm-websocket-handler.js +453 -0
- package/dist/src/web/websocket/websocket-manager.js +780 -0
- package/package.json +6 -4
- package/dist/src/cli/minimal-main.js +0 -22
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js +0 -23
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +0 -57
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +0 -401
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +0 -181
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js +0 -44
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +0 -157
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/edit.js +0 -71
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/editorState/browser/editorState.js +0 -112
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findController.js +0 -990
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findDecorations.js +0 -296
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findModel.js +0 -488
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findOptionsWidget.js +0 -138
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findState.js +0 -243
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findWidget.js +0 -1177
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/folding.js +0 -1093
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +0 -133
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingModel.js +0 -538
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingRanges.js +0 -351
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +0 -49
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/format.js +0 -360
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formatActions.js +0 -263
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formattingEdit.js +0 -54
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +0 -149
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/hover/browser/contentHover.js +0 -874
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commandIds.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commands.js +0 -199
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js +0 -70
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +0 -26
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +0 -153
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +0 -33
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +0 -354
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js +0 -146
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/suggest/browser/completionModel.js +0 -224
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +0 -119
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/edcore.main.js +0 -14
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.all.js +0 -63
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.api.js +0 -55
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.main.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.worker.js +0 -25
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/standalone/browser/colorizer.js +0 -118
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/css.worker.js +0 -36869
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/cssMode.js +0 -2035
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cameligo/cameligo.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/clojure/clojure.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/coffee/coffee.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cpp/cpp.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csharp/csharp.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csp/csp.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/css/css.js +0 -12
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cypher/cypher.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dart/dart.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dockerfile/dockerfile.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/ecl/ecl.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/elixir/elixir.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/flow9/flow9.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.js +0 -745
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.de.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.es.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.fr.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.it.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ja.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ko.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ru.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-cn.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-tw.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssMode.js +0 -13
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssWorker.js +0 -81
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/cli.js +0 -64
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/example.js +0 -36
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/index.js +0 -205
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/test.js +0 -260
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.browser.js +0 -34
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.js +0 -35
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.native.js +0 -26
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.browser.js +0 -34
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.js +0 -45
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/nanoid.js +0 -1
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/non-secure/index.js +0 -21
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/url-alphabet/index.js +0 -3
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/bin/nodemon.js +0 -16
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/index.js +0 -49
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/parse.js +0 -230
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/command.js +0 -43
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/defaults.js +0 -34
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/exec.js +0 -234
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/index.js +0 -93
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/load.js +0 -225
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/help/index.js +0 -27
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/index.js +0 -1
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/index.js +0 -4
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/match.js +0 -287
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/run.js +0 -562
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/signals.js +0 -34
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/watch.js +0 -244
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/nodemon.js +0 -317
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/add.js +0 -89
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/index.js +0 -53
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/parse.js +0 -43
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/spawn.js +0 -74
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/bus.js +0 -44
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/clone.js +0 -40
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/colour.js +0 -26
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/index.js +0 -103
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/log.js +0 -82
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/merge.js +0 -47
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/version.js +0 -100
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/brace-expansion/index.js +0 -201
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/has-flag/index.js +0 -8
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/minimatch/minimatch.js +0 -947
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/browser.js +0 -5
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/index.js +0 -131
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/bin/pidtree.js +0 -128
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/index.js +0 -49
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/bin.js +0 -61
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/get.js +0 -45
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/pidtree.js +0 -104
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/ps.js +0 -47
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/wmic.js +0 -49
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/doc.js +0 -1270
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/acorn.js +0 -15
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/angular.js +0 -2
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/babel.js +0 -15
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/estree.js +0 -36
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/flow.js +0 -19
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/glimmer.js +0 -29
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/graphql.js +0 -29
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/html.js +0 -22
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/markdown.js +0 -63
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/meriyah.js +0 -4
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/postcss.js +0 -54
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/typescript.js +0 -20
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/yaml.js +0 -160
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/standalone.js +0 -34
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/bin/react-scripts.js +0 -58
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/env.js +0 -112
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/getHttpsConfig.js +0 -74
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/babelTransform.js +0 -37
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/cssTransform.js +0 -22
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/fileTransform.js +0 -40
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/modules.js +0 -142
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/paths.js +0 -153
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack/persistentCache/createEnvironmentHash.js +0 -9
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack.config.js +0 -796
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpackDevServer.config.js +0 -135
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/build.js +0 -225
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/eject.js +0 -340
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human Intervention System - Allows humans to redirect agents without stopping them
|
|
3
|
+
* Supports swarm relaunching up to 10 times for iterative improvement
|
|
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
|
+
import { EventEmitter } from "events";
|
|
18
|
+
export class HumanInterventionSystem extends EventEmitter {
|
|
19
|
+
/**
|
|
20
|
+
* Send human intervention to agents with swarm relaunch capability
|
|
21
|
+
*/ async sendIntervention(intervention) {
|
|
22
|
+
const interventionId = this.generateInterventionId();
|
|
23
|
+
const fullIntervention = {
|
|
24
|
+
...intervention,
|
|
25
|
+
id: interventionId,
|
|
26
|
+
status: 'pending'
|
|
27
|
+
};
|
|
28
|
+
// Handle special case: swarm relaunch
|
|
29
|
+
if (intervention.action === 'relaunch-swarm') {
|
|
30
|
+
return await this.handleSwarmRelaunch(fullIntervention);
|
|
31
|
+
}
|
|
32
|
+
this.interventions.set(interventionId, fullIntervention);
|
|
33
|
+
// Add to swarm queue
|
|
34
|
+
if (!this.interventionQueue.has(intervention.swarmId)) {
|
|
35
|
+
this.interventionQueue.set(intervention.swarmId, []);
|
|
36
|
+
}
|
|
37
|
+
this.interventionQueue.get(intervention.swarmId).push(fullIntervention);
|
|
38
|
+
// Emit intervention event
|
|
39
|
+
this.emit('intervention', fullIntervention);
|
|
40
|
+
this.logger.info('Human intervention sent', {
|
|
41
|
+
interventionId,
|
|
42
|
+
swarmId: intervention.swarmId,
|
|
43
|
+
agentId: intervention.agentId,
|
|
44
|
+
action: intervention.action
|
|
45
|
+
});
|
|
46
|
+
return interventionId;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Handle swarm relaunch with learning from previous attempts
|
|
50
|
+
*/ async handleSwarmRelaunch(intervention) {
|
|
51
|
+
const currentRelaunch = this.swarmRelaunches.get(intervention.swarmId);
|
|
52
|
+
const relaunchCount = currentRelaunch ? currentRelaunch.relaunchCount + 1 : 1;
|
|
53
|
+
if (relaunchCount > this.MAX_RELAUNCHES) {
|
|
54
|
+
this.logger.warn('Maximum relaunch attempts reached', {
|
|
55
|
+
swarmId: intervention.swarmId,
|
|
56
|
+
relaunchCount
|
|
57
|
+
});
|
|
58
|
+
intervention.status = 'rejected';
|
|
59
|
+
intervention.response = {
|
|
60
|
+
agentId: 'system',
|
|
61
|
+
message: `Cannot relaunch swarm: maximum ${this.MAX_RELAUNCHES} attempts reached`,
|
|
62
|
+
timestamp: new Date().toISOString(),
|
|
63
|
+
actionTaken: 'rejected'
|
|
64
|
+
};
|
|
65
|
+
this.interventions.set(intervention.id, intervention);
|
|
66
|
+
return intervention.id;
|
|
67
|
+
}
|
|
68
|
+
// Create relaunch configuration
|
|
69
|
+
const relaunchConfig = {
|
|
70
|
+
swarmId: intervention.swarmId,
|
|
71
|
+
reason: intervention.message,
|
|
72
|
+
modifications: {
|
|
73
|
+
agentTypes: this.determineOptimalAgentTypes(intervention),
|
|
74
|
+
objective: intervention.metadata?.newGoal,
|
|
75
|
+
constraints: intervention.metadata?.constraints,
|
|
76
|
+
priority: intervention.metadata?.newPriority
|
|
77
|
+
},
|
|
78
|
+
relaunchCount,
|
|
79
|
+
maxRelaunches: this.MAX_RELAUNCHES,
|
|
80
|
+
preserveContext: true,
|
|
81
|
+
learningsFromPrevious: this.extractLearningsFromPreviousAttempts(intervention.swarmId)
|
|
82
|
+
};
|
|
83
|
+
this.swarmRelaunches.set(intervention.swarmId, relaunchConfig);
|
|
84
|
+
intervention.metadata = {
|
|
85
|
+
...intervention.metadata,
|
|
86
|
+
relaunchCount
|
|
87
|
+
};
|
|
88
|
+
this.interventions.set(intervention.id, intervention);
|
|
89
|
+
// Emit relaunch event
|
|
90
|
+
this.emit('swarm-relaunch-requested', {
|
|
91
|
+
intervention,
|
|
92
|
+
relaunchConfig
|
|
93
|
+
});
|
|
94
|
+
this.logger.info('Swarm relaunch initiated', {
|
|
95
|
+
swarmId: intervention.swarmId,
|
|
96
|
+
relaunchCount,
|
|
97
|
+
reason: intervention.message
|
|
98
|
+
});
|
|
99
|
+
return intervention.id;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Determine optimal agent composition based on previous attempts
|
|
103
|
+
*/ determineOptimalAgentTypes(intervention) {
|
|
104
|
+
const relaunchHistory = this.swarmRelaunches.get(intervention.swarmId);
|
|
105
|
+
if (!relaunchHistory) {
|
|
106
|
+
// First attempt - balanced approach
|
|
107
|
+
return [
|
|
108
|
+
'researcher',
|
|
109
|
+
'coder',
|
|
110
|
+
'reviewer'
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
// Adjust based on what worked/didn't work
|
|
114
|
+
const objective = intervention.metadata?.newGoal || 'general';
|
|
115
|
+
if (objective.toLowerCase().includes('research') || objective.toLowerCase().includes('analyze')) {
|
|
116
|
+
return [
|
|
117
|
+
'researcher',
|
|
118
|
+
'researcher',
|
|
119
|
+
'reviewer'
|
|
120
|
+
]; // Research-heavy
|
|
121
|
+
}
|
|
122
|
+
if (objective.toLowerCase().includes('build') || objective.toLowerCase().includes('implement')) {
|
|
123
|
+
return [
|
|
124
|
+
'researcher',
|
|
125
|
+
'coder',
|
|
126
|
+
'coder'
|
|
127
|
+
]; // Implementation-heavy
|
|
128
|
+
}
|
|
129
|
+
if (objective.toLowerCase().includes('review') || objective.toLowerCase().includes('quality')) {
|
|
130
|
+
return [
|
|
131
|
+
'researcher',
|
|
132
|
+
'reviewer',
|
|
133
|
+
'reviewer'
|
|
134
|
+
]; // Quality-focused
|
|
135
|
+
}
|
|
136
|
+
// Default balanced approach
|
|
137
|
+
return [
|
|
138
|
+
'researcher',
|
|
139
|
+
'coder',
|
|
140
|
+
'reviewer'
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Extract learnings from previous swarm attempts
|
|
145
|
+
*/ extractLearningsFromPreviousAttempts(swarmId) {
|
|
146
|
+
const learnings = [];
|
|
147
|
+
const interventions = Array.from(this.interventions.values()).filter((i)=>i.swarmId === swarmId).sort((a, b)=>new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
|
|
148
|
+
for (const intervention of interventions){
|
|
149
|
+
if (intervention.status === 'applied' && intervention.response) {
|
|
150
|
+
learnings.push(`${intervention.action}: ${intervention.response.actionTaken}`);
|
|
151
|
+
}
|
|
152
|
+
if (intervention.metadata?.reasoning) {
|
|
153
|
+
learnings.push(`Human insight: ${intervention.metadata.reasoning}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Add default learnings for common patterns
|
|
157
|
+
const relaunchCount = this.swarmRelaunches.get(swarmId)?.relaunchCount || 0;
|
|
158
|
+
if (relaunchCount > 0) {
|
|
159
|
+
learnings.push(`This is attempt #${relaunchCount + 1} - apply lessons from previous attempts`);
|
|
160
|
+
}
|
|
161
|
+
if (relaunchCount > 2) {
|
|
162
|
+
learnings.push('Multiple attempts suggest complexity - break down into smaller tasks');
|
|
163
|
+
}
|
|
164
|
+
if (relaunchCount > 5) {
|
|
165
|
+
learnings.push('High relaunch count - consider fundamental approach change');
|
|
166
|
+
}
|
|
167
|
+
return learnings;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Agent acknowledges intervention
|
|
171
|
+
*/ async acknowledgeIntervention(interventionId, agentId) {
|
|
172
|
+
const intervention = this.interventions.get(interventionId);
|
|
173
|
+
if (!intervention) {
|
|
174
|
+
throw new Error(`Intervention ${interventionId} not found`);
|
|
175
|
+
}
|
|
176
|
+
intervention.status = 'acknowledged';
|
|
177
|
+
intervention.response = {
|
|
178
|
+
agentId,
|
|
179
|
+
message: `Intervention acknowledged by agent ${agentId}`,
|
|
180
|
+
timestamp: new Date().toISOString(),
|
|
181
|
+
actionTaken: 'acknowledged'
|
|
182
|
+
};
|
|
183
|
+
this.emit('intervention-acknowledged', intervention);
|
|
184
|
+
this.logger.debug('Intervention acknowledged', {
|
|
185
|
+
interventionId,
|
|
186
|
+
agentId,
|
|
187
|
+
swarmId: intervention.swarmId
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Agent applies intervention
|
|
192
|
+
*/ async applyIntervention(interventionId, agentId, actionDetails) {
|
|
193
|
+
const intervention = this.interventions.get(interventionId);
|
|
194
|
+
if (!intervention) {
|
|
195
|
+
throw new Error(`Intervention ${interventionId} not found`);
|
|
196
|
+
}
|
|
197
|
+
intervention.status = 'applied';
|
|
198
|
+
intervention.response = {
|
|
199
|
+
agentId,
|
|
200
|
+
message: `Intervention applied: ${actionDetails}`,
|
|
201
|
+
timestamp: new Date().toISOString(),
|
|
202
|
+
actionTaken: actionDetails
|
|
203
|
+
};
|
|
204
|
+
this.emit('intervention-applied', intervention);
|
|
205
|
+
this.logger.info('Intervention applied', {
|
|
206
|
+
interventionId,
|
|
207
|
+
agentId,
|
|
208
|
+
swarmId: intervention.swarmId,
|
|
209
|
+
actionTaken: actionDetails
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get pending interventions for a swarm
|
|
214
|
+
*/ getPendingInterventions(swarmId) {
|
|
215
|
+
const swarmQueue = this.interventionQueue.get(swarmId) || [];
|
|
216
|
+
return swarmQueue.filter((i)=>i.status === 'pending');
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get intervention history for a swarm
|
|
220
|
+
*/ getInterventionHistory(swarmId) {
|
|
221
|
+
return Array.from(this.interventions.values()).filter((i)=>i.swarmId === swarmId).sort((a, b)=>new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get swarm relaunch information
|
|
225
|
+
*/ getSwarmRelaunchInfo(swarmId) {
|
|
226
|
+
return this.swarmRelaunches.get(swarmId) || null;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Check if swarm can be relaunched
|
|
230
|
+
*/ canRelaunchSwarm(swarmId) {
|
|
231
|
+
const relaunchConfig = this.swarmRelaunches.get(swarmId);
|
|
232
|
+
const currentCount = relaunchConfig?.relaunchCount || 0;
|
|
233
|
+
const remaining = this.MAX_RELAUNCHES - currentCount;
|
|
234
|
+
if (remaining <= 0) {
|
|
235
|
+
return {
|
|
236
|
+
canRelaunch: false,
|
|
237
|
+
remainingAttempts: 0,
|
|
238
|
+
reason: `Maximum ${this.MAX_RELAUNCHES} relaunches reached`
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
canRelaunch: true,
|
|
243
|
+
remainingAttempts: remaining
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get intervention statistics
|
|
248
|
+
*/ getInterventionStats(swarmId) {
|
|
249
|
+
let targetInterventions = Array.from(this.interventions.values());
|
|
250
|
+
if (swarmId) {
|
|
251
|
+
targetInterventions = targetInterventions.filter((i)=>i.swarmId === swarmId);
|
|
252
|
+
}
|
|
253
|
+
const stats = {
|
|
254
|
+
total: targetInterventions.length,
|
|
255
|
+
byStatus: {
|
|
256
|
+
pending: targetInterventions.filter((i)=>i.status === 'pending').length,
|
|
257
|
+
acknowledged: targetInterventions.filter((i)=>i.status === 'acknowledged').length,
|
|
258
|
+
applied: targetInterventions.filter((i)=>i.status === 'applied').length,
|
|
259
|
+
rejected: targetInterventions.filter((i)=>i.status === 'rejected').length
|
|
260
|
+
},
|
|
261
|
+
byAction: {},
|
|
262
|
+
swarmRelaunches: this.swarmRelaunches.size,
|
|
263
|
+
averageRelaunchCount: 0
|
|
264
|
+
};
|
|
265
|
+
// Count by action type
|
|
266
|
+
for (const intervention of targetInterventions){
|
|
267
|
+
stats.byAction[intervention.action] = (stats.byAction[intervention.action] || 0) + 1;
|
|
268
|
+
}
|
|
269
|
+
// Calculate average relaunch count
|
|
270
|
+
if (this.swarmRelaunches.size > 0) {
|
|
271
|
+
const totalRelaunches = Array.from(this.swarmRelaunches.values()).reduce((sum, config)=>sum + config.relaunchCount, 0);
|
|
272
|
+
stats.averageRelaunchCount = totalRelaunches / this.swarmRelaunches.size;
|
|
273
|
+
}
|
|
274
|
+
return stats;
|
|
275
|
+
}
|
|
276
|
+
generateInterventionId() {
|
|
277
|
+
return `intervention_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
278
|
+
}
|
|
279
|
+
getInterventionCount() {
|
|
280
|
+
return this.interventions.size;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Clean up old interventions
|
|
284
|
+
*/ cleanupOldInterventions(maxAge = 7 * 24 * 60 * 60 * 1000) {
|
|
285
|
+
const cutoff = new Date(Date.now() - maxAge);
|
|
286
|
+
for (const [id, intervention] of this.interventions.entries()){
|
|
287
|
+
if (new Date(intervention.timestamp) < cutoff) {
|
|
288
|
+
this.interventions.delete(id);
|
|
289
|
+
// Clean up from queue
|
|
290
|
+
const swarmQueue = this.interventionQueue.get(intervention.swarmId);
|
|
291
|
+
if (swarmQueue) {
|
|
292
|
+
const index = swarmQueue.findIndex((i)=>i.id === id);
|
|
293
|
+
if (index > -1) {
|
|
294
|
+
swarmQueue.splice(index, 1);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
constructor(logger){
|
|
301
|
+
super(), _define_property(this, "logger", void 0), _define_property(this, "interventions", void 0), _define_property(this, "swarmRelaunches", void 0), _define_property(this, "MAX_RELAUNCHES", void 0), _define_property(this, "interventionQueue", void 0 // swarmId -> interventions
|
|
302
|
+
), this.logger = logger, this.interventions = new Map(), this.swarmRelaunches = new Map(), this.MAX_RELAUNCHES = 10, this.interventionQueue = new Map();
|
|
303
|
+
this.setMaxListeners(100);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Filter - Advanced filtering and search for agent messages
|
|
3
|
+
*/ function _define_property(obj, key, value) {
|
|
4
|
+
if (key in obj) {
|
|
5
|
+
Object.defineProperty(obj, key, {
|
|
6
|
+
value: value,
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
writable: true
|
|
10
|
+
});
|
|
11
|
+
} else {
|
|
12
|
+
obj[key] = value;
|
|
13
|
+
}
|
|
14
|
+
return obj;
|
|
15
|
+
}
|
|
16
|
+
export class MessageFilter {
|
|
17
|
+
/**
|
|
18
|
+
* Set filter configuration for a specific user/client
|
|
19
|
+
*/ setUserFilter(userId, config) {
|
|
20
|
+
this.userFilters.set(userId, config);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Remove filter for a user/client
|
|
24
|
+
*/ removeUserFilter(userId) {
|
|
25
|
+
this.userFilters.delete(userId);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Filter a message based on user preferences
|
|
29
|
+
*/ filterMessage(message, userId) {
|
|
30
|
+
if (!userId) return message;
|
|
31
|
+
const filter = this.userFilters.get(userId);
|
|
32
|
+
if (!filter) return message;
|
|
33
|
+
if (!this.messagePassesFilter(message, filter)) {
|
|
34
|
+
return null; // Message filtered out
|
|
35
|
+
}
|
|
36
|
+
return message;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Filter an array of messages
|
|
40
|
+
*/ filterMessages(messages, filter) {
|
|
41
|
+
return messages.filter((message)=>this.messagePassesFilter(message, filter));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Search messages with advanced criteria
|
|
45
|
+
*/ searchMessages(messages, searchConfig) {
|
|
46
|
+
let results = [
|
|
47
|
+
...messages
|
|
48
|
+
];
|
|
49
|
+
// Apply text search
|
|
50
|
+
if (searchConfig.query) {
|
|
51
|
+
results = this.performTextSearch(results, searchConfig.query, searchConfig);
|
|
52
|
+
}
|
|
53
|
+
// Sort results
|
|
54
|
+
if (searchConfig.sortBy) {
|
|
55
|
+
results = this.sortMessages(results, searchConfig.sortBy, searchConfig.sortOrder || 'desc');
|
|
56
|
+
}
|
|
57
|
+
return results;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get filter suggestions based on available data
|
|
61
|
+
*/ getFilterSuggestions(messages) {
|
|
62
|
+
const messageTypes = [
|
|
63
|
+
...new Set(messages.map((m)=>m.messageType))
|
|
64
|
+
];
|
|
65
|
+
const agentTypes = [
|
|
66
|
+
...new Set(messages.map((m)=>m.agentType))
|
|
67
|
+
];
|
|
68
|
+
const agentIds = [
|
|
69
|
+
...new Set(messages.map((m)=>m.agentId))
|
|
70
|
+
];
|
|
71
|
+
const priorities = [
|
|
72
|
+
...new Set(messages.map((m)=>m.priority))
|
|
73
|
+
];
|
|
74
|
+
// Extract tags from metadata
|
|
75
|
+
const tags = [
|
|
76
|
+
...new Set(messages.flatMap((m)=>m.metadata?.tags || []).filter(Boolean))
|
|
77
|
+
];
|
|
78
|
+
// Get date range
|
|
79
|
+
const timestamps = messages.map((m)=>new Date(m.timestamp).getTime());
|
|
80
|
+
const dateRange = {
|
|
81
|
+
start: new Date(Math.min(...timestamps)).toISOString(),
|
|
82
|
+
end: new Date(Math.max(...timestamps)).toISOString()
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
messageTypes,
|
|
86
|
+
agentTypes,
|
|
87
|
+
agentIds,
|
|
88
|
+
priorities,
|
|
89
|
+
tags,
|
|
90
|
+
dateRange
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Create smart filters based on user behavior
|
|
95
|
+
*/ createSmartFilter(userId, interactionHistory) {
|
|
96
|
+
const smartFilter = {};
|
|
97
|
+
// Analyze user's viewing patterns
|
|
98
|
+
const viewedMessageTypes = interactionHistory.filter((h)=>h.action === 'view').map((h)=>h.messageType);
|
|
99
|
+
if (viewedMessageTypes.length > 0) {
|
|
100
|
+
const mostViewedTypes = this.getMostFrequent(viewedMessageTypes, 3);
|
|
101
|
+
smartFilter.messageTypes = mostViewedTypes;
|
|
102
|
+
}
|
|
103
|
+
// Analyze searched keywords
|
|
104
|
+
const searchQueries = interactionHistory.filter((h)=>h.action === 'search').map((h)=>h.query);
|
|
105
|
+
if (searchQueries.length > 0) {
|
|
106
|
+
smartFilter.contentKeywords = this.extractKeywords(searchQueries);
|
|
107
|
+
}
|
|
108
|
+
// Analyze time preferences
|
|
109
|
+
const viewTimes = interactionHistory.filter((h)=>h.action === 'view').map((h)=>new Date(h.timestamp).getHours());
|
|
110
|
+
// If user typically views recent messages, prefer recent timeRange
|
|
111
|
+
const averageHour = viewTimes.reduce((sum, hour)=>sum + hour, 0) / viewTimes.length;
|
|
112
|
+
if (averageHour > 0) {
|
|
113
|
+
smartFilter.timeRange = {
|
|
114
|
+
start: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(),
|
|
115
|
+
end: new Date().toISOString()
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return smartFilter;
|
|
119
|
+
}
|
|
120
|
+
messagePassesFilter(message, filter) {
|
|
121
|
+
// Message type filter
|
|
122
|
+
if (filter.messageTypes && !filter.messageTypes.includes(message.messageType)) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
// Agent type filter
|
|
126
|
+
if (filter.agentTypes && !filter.agentTypes.includes(message.agentType)) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
// Agent ID filter
|
|
130
|
+
if (filter.agentIds && !filter.agentIds.includes(message.agentId)) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
// Priority filter
|
|
134
|
+
if (filter.priorities && !filter.priorities.includes(message.priority)) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
// Time range filter
|
|
138
|
+
if (filter.timeRange) {
|
|
139
|
+
const messageTime = new Date(message.timestamp);
|
|
140
|
+
const start = new Date(filter.timeRange.start);
|
|
141
|
+
const end = new Date(filter.timeRange.end);
|
|
142
|
+
if (messageTime < start || messageTime > end) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Content keywords filter
|
|
147
|
+
if (filter.contentKeywords && filter.contentKeywords.length > 0) {
|
|
148
|
+
const content = message.content.toLowerCase();
|
|
149
|
+
const hasKeyword = filter.contentKeywords.some((keyword)=>content.includes(keyword.toLowerCase()));
|
|
150
|
+
if (!hasKeyword) return false;
|
|
151
|
+
}
|
|
152
|
+
// Reasoning filter
|
|
153
|
+
if (filter.hasReasoning !== undefined) {
|
|
154
|
+
const hasReasoning = !!message.metadata?.reasoning;
|
|
155
|
+
if (filter.hasReasoning !== hasReasoning) return false;
|
|
156
|
+
}
|
|
157
|
+
// Alternatives filter
|
|
158
|
+
if (filter.hasAlternatives !== undefined) {
|
|
159
|
+
const hasAlternatives = !!(message.metadata?.alternatives && message.metadata.alternatives.length > 0);
|
|
160
|
+
if (filter.hasAlternatives !== hasAlternatives) return false;
|
|
161
|
+
}
|
|
162
|
+
// Confidence range filter
|
|
163
|
+
if (filter.confidenceRange && message.metadata?.confidence !== undefined) {
|
|
164
|
+
const confidence = message.metadata.confidence;
|
|
165
|
+
if (confidence < filter.confidenceRange.min || confidence > filter.confidenceRange.max) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Thread ID filter
|
|
170
|
+
if (filter.threadIds && (!message.threadId || !filter.threadIds.includes(message.threadId))) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
// Tags filter
|
|
174
|
+
if (filter.tags && filter.tags.length > 0) {
|
|
175
|
+
const messageTags = message.metadata?.tags || [];
|
|
176
|
+
const hasTag = filter.tags.some((tag)=>messageTags.includes(tag));
|
|
177
|
+
if (!hasTag) return false;
|
|
178
|
+
}
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
performTextSearch(messages, query, config) {
|
|
182
|
+
const searchFields = config.fields || [
|
|
183
|
+
'content',
|
|
184
|
+
'metadata.reasoning'
|
|
185
|
+
];
|
|
186
|
+
const fuzzy = config.fuzzy || false;
|
|
187
|
+
return messages.filter((message)=>{
|
|
188
|
+
for (const field of searchFields){
|
|
189
|
+
const value = this.getNestedProperty(message, field);
|
|
190
|
+
if (value && this.matchesQuery(value, query, fuzzy)) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return false;
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
matchesQuery(text, query, fuzzy) {
|
|
198
|
+
const normalizedText = text.toLowerCase();
|
|
199
|
+
const normalizedQuery = query.toLowerCase();
|
|
200
|
+
if (!fuzzy) {
|
|
201
|
+
return normalizedText.includes(normalizedQuery);
|
|
202
|
+
}
|
|
203
|
+
// Simple fuzzy matching - check if most query words are present
|
|
204
|
+
const queryWords = normalizedQuery.split(' ');
|
|
205
|
+
const matchedWords = queryWords.filter((word)=>normalizedText.includes(word));
|
|
206
|
+
return matchedWords.length / queryWords.length >= 0.6; // 60% word match threshold
|
|
207
|
+
}
|
|
208
|
+
sortMessages(messages, sortBy, order) {
|
|
209
|
+
return messages.sort((a, b)=>{
|
|
210
|
+
let compareValue = 0;
|
|
211
|
+
switch(sortBy){
|
|
212
|
+
case 'timestamp':
|
|
213
|
+
compareValue = new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime();
|
|
214
|
+
break;
|
|
215
|
+
case 'priority':
|
|
216
|
+
const priorityOrder = {
|
|
217
|
+
low: 1,
|
|
218
|
+
medium: 2,
|
|
219
|
+
high: 3,
|
|
220
|
+
urgent: 4
|
|
221
|
+
};
|
|
222
|
+
compareValue = priorityOrder[a.priority] - priorityOrder[b.priority];
|
|
223
|
+
break;
|
|
224
|
+
case 'relevance':
|
|
225
|
+
// Simple relevance based on message metadata richness
|
|
226
|
+
const aScore = this.calculateRelevanceScore(a);
|
|
227
|
+
const bScore = this.calculateRelevanceScore(b);
|
|
228
|
+
compareValue = aScore - bScore;
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
return order === 'asc' ? compareValue : -compareValue;
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
calculateRelevanceScore(message) {
|
|
235
|
+
let score = 0;
|
|
236
|
+
// Score based on metadata richness
|
|
237
|
+
if (message.metadata?.reasoning) score += 3;
|
|
238
|
+
if (message.metadata?.alternatives) score += 2;
|
|
239
|
+
if (message.metadata?.confidence) score += 1;
|
|
240
|
+
if (message.metadata?.dependencies) score += 1;
|
|
241
|
+
if (message.metadata?.tags) score += message.metadata.tags.length * 0.5;
|
|
242
|
+
// Score based on message type importance
|
|
243
|
+
const typeScores = {
|
|
244
|
+
decision: 5,
|
|
245
|
+
coordination: 4,
|
|
246
|
+
reasoning: 3,
|
|
247
|
+
'progress-update': 2,
|
|
248
|
+
'task-start': 2,
|
|
249
|
+
completion: 1,
|
|
250
|
+
error: 4
|
|
251
|
+
};
|
|
252
|
+
score += typeScores[message.messageType] || 1;
|
|
253
|
+
return score;
|
|
254
|
+
}
|
|
255
|
+
getNestedProperty(obj, path) {
|
|
256
|
+
return path.split('.').reduce((current, key)=>current && current[key], obj);
|
|
257
|
+
}
|
|
258
|
+
getMostFrequent(array, count) {
|
|
259
|
+
const frequency = new Map();
|
|
260
|
+
for (const item of array){
|
|
261
|
+
frequency.set(item, (frequency.get(item) || 0) + 1);
|
|
262
|
+
}
|
|
263
|
+
return Array.from(frequency.entries()).sort((a, b)=>b[1] - a[1]).slice(0, count).map((entry)=>entry[0]);
|
|
264
|
+
}
|
|
265
|
+
extractKeywords(queries) {
|
|
266
|
+
// Simple keyword extraction - split queries and find common terms
|
|
267
|
+
const words = queries.flatMap((query)=>query.toLowerCase().split(' ')).filter((word)=>word.length > 3); // Filter out short words
|
|
268
|
+
return this.getMostFrequent(words, 5);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Export filter configuration
|
|
272
|
+
*/ exportFilter(userId) {
|
|
273
|
+
return this.userFilters.get(userId) || null;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Import filter configuration
|
|
277
|
+
*/ importFilter(userId, config) {
|
|
278
|
+
this.userFilters.set(userId, config);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Get filter statistics
|
|
282
|
+
*/ getFilterStats() {
|
|
283
|
+
const allFilters = Array.from(this.userFilters.values());
|
|
284
|
+
const filterTypes = {};
|
|
285
|
+
for (const filter of allFilters){
|
|
286
|
+
if (filter.messageTypes) filterTypes['messageTypes'] = (filterTypes['messageTypes'] || 0) + 1;
|
|
287
|
+
if (filter.agentTypes) filterTypes['agentTypes'] = (filterTypes['agentTypes'] || 0) + 1;
|
|
288
|
+
if (filter.priorities) filterTypes['priorities'] = (filterTypes['priorities'] || 0) + 1;
|
|
289
|
+
if (filter.timeRange) filterTypes['timeRange'] = (filterTypes['timeRange'] || 0) + 1;
|
|
290
|
+
if (filter.contentKeywords) filterTypes['contentKeywords'] = (filterTypes['contentKeywords'] || 0) + 1;
|
|
291
|
+
if (filter.hasReasoning !== undefined) filterTypes['hasReasoning'] = (filterTypes['hasReasoning'] || 0) + 1;
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
totalUsers: this.userFilters.size,
|
|
295
|
+
mostUsedFilters: filterTypes,
|
|
296
|
+
averageFiltersPerUser: allFilters.length / this.userFilters.size || 0
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
constructor(){
|
|
300
|
+
_define_property(this, "userFilters", new Map());
|
|
301
|
+
}
|
|
302
|
+
}
|