onbuzz 4.9.13 → 4.10.0
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/node_modules/glob/README.md +31 -5
- package/node_modules/glob/dist/commonjs/glob.d.ts +8 -0
- package/node_modules/glob/dist/commonjs/glob.d.ts.map +1 -1
- package/node_modules/glob/dist/commonjs/glob.js +2 -1
- package/node_modules/glob/dist/commonjs/glob.js.map +1 -1
- package/node_modules/glob/dist/commonjs/index.min.js +3 -3
- package/node_modules/glob/dist/commonjs/index.min.js.map +4 -4
- package/node_modules/glob/dist/commonjs/pattern.d.ts +3 -0
- package/node_modules/glob/dist/commonjs/pattern.d.ts.map +1 -1
- package/node_modules/glob/dist/commonjs/pattern.js +4 -0
- package/node_modules/glob/dist/commonjs/pattern.js.map +1 -1
- package/node_modules/glob/dist/esm/glob.d.ts +8 -0
- package/node_modules/glob/dist/esm/glob.d.ts.map +1 -1
- package/node_modules/glob/dist/esm/glob.js +2 -1
- package/node_modules/glob/dist/esm/glob.js.map +1 -1
- package/node_modules/glob/dist/esm/index.min.js +3 -3
- package/node_modules/glob/dist/esm/index.min.js.map +4 -4
- package/node_modules/glob/dist/esm/pattern.d.ts +3 -0
- package/node_modules/glob/dist/esm/pattern.d.ts.map +1 -1
- package/node_modules/glob/dist/esm/pattern.js +4 -0
- package/node_modules/glob/dist/esm/pattern.js.map +1 -1
- package/node_modules/{@isaacs → glob/node_modules}/balanced-match/README.md +7 -10
- package/node_modules/{@isaacs → glob/node_modules}/balanced-match/package.json +7 -18
- package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/README.md +3 -6
- package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/commonjs/index.js +6 -4
- package/node_modules/glob/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -0
- package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/esm/index.js +6 -4
- package/node_modules/glob/node_modules/brace-expansion/dist/esm/index.js.map +1 -0
- package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/package.json +11 -7
- package/node_modules/glob/node_modules/minimatch/README.md +76 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.d.ts +4 -2
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js +309 -55
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/ast.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.js +2 -4
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/brace-expressions.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.d.ts +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js +4 -4
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/escape.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.d.ts +81 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.js +232 -134
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/index.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.d.ts +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.js +8 -8
- package/node_modules/glob/node_modules/minimatch/dist/commonjs/unescape.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.d.ts +4 -2
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.js +309 -55
- package/node_modules/glob/node_modules/minimatch/dist/esm/ast.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.js +2 -4
- package/node_modules/glob/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.d.ts +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.js +4 -4
- package/node_modules/glob/node_modules/minimatch/dist/esm/escape.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.d.ts +81 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.js +232 -134
- package/node_modules/glob/node_modules/minimatch/dist/esm/index.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.d.ts +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.d.ts.map +1 -1
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.js +8 -8
- package/node_modules/glob/node_modules/minimatch/dist/esm/unescape.js.map +1 -1
- package/node_modules/glob/node_modules/minimatch/package.json +17 -11
- package/node_modules/glob/package.json +10 -13
- package/node_modules/minipass/LICENSE.md +55 -0
- package/node_modules/minipass/dist/commonjs/index.d.ts +12 -16
- package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -1
- package/node_modules/minipass/dist/commonjs/index.js +13 -3
- package/node_modules/minipass/dist/commonjs/index.js.map +1 -1
- package/node_modules/minipass/dist/esm/index.d.ts +12 -16
- package/node_modules/minipass/dist/esm/index.d.ts.map +1 -1
- package/node_modules/minipass/dist/esm/index.js +3 -1
- package/node_modules/minipass/dist/esm/index.js.map +1 -1
- package/node_modules/minipass/package.json +9 -14
- package/node_modules/path-scurry/node_modules/lru-cache/README.md +96 -10
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel-browser.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel-browser.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel.d.ts +5 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel.js +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/index.d.ts +1400 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/index.js +1726 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/index.min.js +2 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/perf.d.ts +12 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/perf.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/perf.js +10 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/browser/perf.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/diagnostics-channel-cjs.cjs.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/diagnostics-channel-cjs.d.cts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/diagnostics-channel.d.ts +5 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.d.ts +109 -32
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -1
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js +334 -197
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.js.map +1 -1
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.min.js +1 -1
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/index.min.js.map +4 -4
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel-node.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel-node.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel.d.ts +5 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel.js +9 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/index.d.ts +1400 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/index.js +1726 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/index.min.js +2 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/perf.d.ts +12 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/perf.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/perf.js +10 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/node/perf.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/perf.d.ts +12 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/perf.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/perf.js +10 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/perf.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/diagnostics-channel-browser.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/diagnostics-channel-browser.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.d.ts +5 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.js +4 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/index.d.ts +1400 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/index.js +1722 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/index.min.js +2 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/index.min.js.map +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/perf.d.ts +12 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/perf.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/perf.js +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/browser/perf.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/diagnostics-channel-esm.d.mts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/diagnostics-channel-esm.mjs.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/diagnostics-channel.d.ts +5 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/diagnostics-channel.js +19 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.d.ts +109 -32
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -1
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.js +333 -196
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.js.map +1 -1
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.min.js +1 -1
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/index.min.js.map +4 -4
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/diagnostics-channel-node.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/diagnostics-channel-node.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/diagnostics-channel.d.ts +5 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js +6 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/index.d.ts +1400 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/index.js +1722 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/index.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/index.min.js +2 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/index.min.js.map +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/perf.d.ts +12 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/perf.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/perf.js +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/node/perf.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/perf.d.ts +12 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/perf.d.ts.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/perf.js +7 -0
- package/node_modules/path-scurry/node_modules/lru-cache/dist/esm/perf.js.map +1 -0
- package/node_modules/path-scurry/node_modules/lru-cache/package.json +71 -18
- package/node_modules/path-scurry/package.json +8 -24
- package/package.json +1 -1
- package/scripts/debug-balance-probe.mjs +35 -35
- package/scripts/push-image.sh +43 -43
- package/scripts/setup-acr.sh +65 -65
- package/scripts/verify-optional-deps.js +96 -1
- package/src/__tests__/composioCliFlags.test.js +239 -239
- package/src/analyzers/CSSAnalyzer.js +298 -297
- package/src/analyzers/ConfigValidator.js +691 -690
- package/src/analyzers/ESLintAnalyzer.js +320 -320
- package/src/analyzers/JavaScriptAnalyzer.js +260 -261
- package/src/analyzers/PrettierFormatter.js +246 -247
- package/src/analyzers/PythonAnalyzer.js +283 -283
- package/src/analyzers/SecurityAnalyzer.js +729 -729
- package/src/analyzers/SparrowAnalyzer.js +341 -341
- package/src/analyzers/TypeScriptAnalyzer.js +247 -247
- package/src/analyzers/__tests__/CSSAnalyzer.test.js +41 -41
- package/src/analyzers/__tests__/ConfigValidator.test.js +362 -362
- package/src/analyzers/__tests__/JavaScriptAnalyzer.test.js +40 -40
- package/src/analyzers/__tests__/PythonAnalyzer.test.js +205 -208
- package/src/analyzers/__tests__/SecurityAnalyzer.test.js +303 -303
- package/src/analyzers/__tests__/TypeScriptAnalyzer.test.js +187 -187
- package/src/analyzers/codeCloneDetector/analyzer.js +344 -344
- package/src/analyzers/codeCloneDetector/detector.js +250 -250
- package/src/analyzers/codeCloneDetector/index.js +194 -192
- package/src/analyzers/codeCloneDetector/parser.js +199 -199
- package/src/core/__tests__/agentPool.test.js +866 -866
- package/src/core/__tests__/agentPoolAutoResume.test.js +209 -209
- package/src/core/__tests__/agentPoolWakeOnMessage.test.js +315 -315
- package/src/core/__tests__/agentScheduler.emptyResponseChatStall.test.js +213 -213
- package/src/core/__tests__/agentScheduler.errorCategorisation.test.js +246 -246
- package/src/core/__tests__/agentScheduler.firstChunkTimeout.test.js +138 -138
- package/src/core/__tests__/agentScheduler.modeTransitions.test.js +233 -233
- package/src/core/__tests__/agentScheduler.nativePromptPick.test.js +319 -319
- package/src/core/__tests__/agentScheduler.taskLifecycleInstruction.test.js +78 -78
- package/src/core/__tests__/agentScheduler.visualizer.test.js +258 -258
- package/src/core/__tests__/flowCheckpointStore.test.js +140 -140
- package/src/core/__tests__/flowEndToEnd.test.js +565 -565
- package/src/core/__tests__/flowFieldMapping.test.js +188 -189
- package/src/core/__tests__/flowLintClientMirror.test.js +96 -98
- package/src/core/__tests__/flowSavePayload.test.js +170 -169
- package/src/core/__tests__/flowTemplates.test.js +311 -311
- package/src/core/__tests__/flowVersionStore.test.js +123 -123
- package/src/core/__tests__/messageProcessor.test.js +669 -669
- package/src/core/__tests__/stateManager.test.js +0 -1
- package/src/core/agentPool.js +2474 -2475
- package/src/core/agentScheduler.js +1 -4
- package/src/core/contextManager.js +708 -708
- package/src/core/flowExecutor.js +1510 -1510
- package/src/core/flowFieldMapping.js +136 -138
- package/src/core/messageProcessor.js +953 -954
- package/src/core/orchestrator.js +593 -595
- package/src/core/stateManager.js +1765 -1752
- package/src/index.js +1221 -1221
- package/src/interfaces/__tests__/archivedAgentDelete.test.js +207 -207
- package/src/interfaces/__tests__/bulkAgentRoute.test.js +361 -361
- package/src/interfaces/__tests__/imageServing.test.js +228 -228
- package/src/interfaces/__tests__/remoteSessionAuth.test.js +308 -308
- package/src/interfaces/__tests__/videoJobsRoutes.test.js +178 -179
- package/src/interfaces/__tests__/webServer.marketplace.test.js +629 -629
- package/src/interfaces/schedulerRoutes.js +50 -50
- package/src/interfaces/terminal/__tests__/smoke/connection.test.js +341 -350
- package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +156 -156
- package/src/interfaces/terminal/__tests__/smoke/imports.test.js +325 -330
- package/src/interfaces/terminal/__tests__/smoke/tools.test.js +385 -388
- package/src/interfaces/terminal/api/session.js +265 -266
- package/src/interfaces/terminal/api/websocket.js +496 -497
- package/src/interfaces/terminal/components/AgentCreator.js +691 -705
- package/src/interfaces/terminal/components/AgentEditor.js +676 -678
- package/src/interfaces/terminal/components/AgentSwitcher.js +331 -330
- package/src/interfaces/terminal/components/ErrorPanel.js +263 -264
- package/src/interfaces/terminal/components/Header.js +28 -28
- package/src/interfaces/terminal/components/Layout.js +598 -603
- package/src/interfaces/terminal/components/MessageList.js +280 -281
- package/src/interfaces/terminal/components/SettingsPanel.js +410 -415
- package/src/interfaces/terminal/components/StatusBar.js +2 -0
- package/src/interfaces/terminal/index.js +168 -168
- package/src/interfaces/terminal/state/useAgentControl.js +496 -496
- package/src/interfaces/terminal/state/useAgents.js +537 -537
- package/src/interfaces/terminal/state/useMessages.js +629 -630
- package/src/interfaces/terminal/state/useTools.js +554 -554
- package/src/interfaces/terminal/utils/debugLogger.js +44 -44
- package/src/interfaces/terminal/utils/settingsStorage.js +232 -232
- package/src/interfaces/webServer.js +7578 -7579
- package/src/interfaces/webServer.js.bak +7046 -7046
- package/src/modules/fileExplorer/__tests__/zipDownload.test.js +237 -237
- package/src/modules/fileExplorer/controller.js +470 -469
- package/src/modules/fileExplorer/routes.js +285 -286
- package/src/modules/widget/__tests__/isDisabled.test.js +41 -41
- package/src/modules/widget/__tests__/routes.test.js +677 -678
- package/src/modules/widget/__tests__/runtime.test.js +401 -401
- package/src/modules/widget/__tests__/versioning.test.js +309 -309
- package/src/modules/widget/__tests__/webComponentRuntime.test.js +565 -565
- package/src/modules/widget/__tests__/widgetTool.test.js +316 -316
- package/src/modules/widget/routes.js +435 -435
- package/src/modules/widget/runtime/bundle.js +640 -640
- package/src/modules/widget/runtime/webComponentBundle.js +470 -470
- package/src/modules/widget/schema.js +182 -181
- package/src/modules/widget/widgetTool.js +1389 -1389
- package/src/services/__tests__/agentActivityService.test.js +401 -402
- package/src/services/__tests__/benchmarkService.test.js +184 -184
- package/src/services/__tests__/contextInjectionService.test.js +246 -246
- package/src/services/__tests__/conversationQuery.test.js +721 -723
- package/src/services/__tests__/credentialVault.test.js +469 -469
- package/src/services/__tests__/discordService.integration.test.js +638 -639
- package/src/services/__tests__/flowContextService.test.js +590 -590
- package/src/services/__tests__/memoryService.test.js +1 -1
- package/src/services/__tests__/messageSource.test.js +380 -380
- package/src/services/__tests__/modelRouterNaming.test.js +111 -111
- package/src/services/__tests__/projectDetector.test.js +34 -34
- package/src/services/__tests__/promptService.test.js +242 -242
- package/src/services/__tests__/telegramService.test.js +941 -941
- package/src/services/__tests__/tokenCountingService.test.js +48 -48
- package/src/services/agentActivityService.js +419 -420
- package/src/services/aiService.js +2997 -3001
- package/src/services/apiKeyManager.js +359 -359
- package/src/services/benchmarkService.js +196 -196
- package/src/services/codebaseKnowledgeService.js +2 -2
- package/src/services/composioService.js +738 -738
- package/src/services/conversationCompactionService.js +1258 -1257
- package/src/services/credentialVault.js +685 -685
- package/src/services/discordService.js +792 -793
- package/src/services/embeddings/__tests__/azureCustomProvider.test.js +232 -232
- package/src/services/embeddings/__tests__/embeddingService.test.js +417 -417
- package/src/services/embeddings/__tests__/localProvider.test.js +263 -263
- package/src/services/embeddings/autoRecall.js +218 -219
- package/src/services/embeddings/indexers/__tests__/agentIndexer.test.js +232 -232
- package/src/services/embeddings/indexers/__tests__/memoryIndexer.test.js +418 -418
- package/src/services/embeddings/indexers/__tests__/reminisceIndexer.test.js +356 -357
- package/src/services/embeddings/indexers/__tests__/skillsIndexer.test.js +145 -145
- package/src/services/embeddings/indexers/__tests__/taskIndexer.test.js +146 -146
- package/src/services/embeddings/indexers/composioIndexer.js +279 -279
- package/src/services/embeddings/providerInterface.js +206 -206
- package/src/services/embeddings/providers/localProvider.js +11 -7
- package/src/services/embeddings/providers/openaiProvider.js +101 -101
- package/src/services/embeddings/vectorStore/inMemoryJsonStore.js +356 -356
- package/src/services/errorHandler.js +809 -809
- package/src/services/flowContextService.js +586 -586
- package/src/services/grounding/MockAdapter.js +125 -125
- package/src/services/modelRouterService.js +26 -31
- package/src/services/modelsService.js +322 -322
- package/src/services/ollamaService.js +452 -452
- package/src/services/projectDetector.js +403 -404
- package/src/services/promptService.js +418 -418
- package/src/services/qualityInspector.js +795 -795
- package/src/services/scheduleService.js +726 -726
- package/src/services/serviceRegistry.js +386 -386
- package/src/services/telegrafBot.js +174 -174
- package/src/services/telegramService.js +1972 -1972
- package/src/services/visualEditorBridge.js +1033 -1033
- package/src/services/visualEditorServer.js +1769 -1774
- package/src/services/whatsappService.js +667 -668
- package/src/tools/__tests__/agentCommunicationTool.findAgent.test.js +226 -226
- package/src/tools/__tests__/agentCommunicationTool.test.js +3 -3
- package/src/tools/__tests__/agentDelayTool.test.js +342 -342
- package/src/tools/__tests__/baseTool.test.js +3 -3
- package/src/tools/__tests__/codeMapTool.test.js +915 -915
- package/src/tools/__tests__/fileContentReplaceTool.test.js +309 -309
- package/src/tools/__tests__/fileTreeTool.test.js +274 -274
- package/src/tools/__tests__/filesystemTool.test.js +815 -815
- package/src/tools/__tests__/foundryWebSearchTool.test.js +252 -252
- package/src/tools/__tests__/imageTool.validator.test.js +194 -194
- package/src/tools/__tests__/jobDoneTool.test.js +580 -581
- package/src/tools/__tests__/memoryTool.forgetStale.test.js +272 -272
- package/src/tools/__tests__/memoryTool.reminisce.test.js +2 -2
- package/src/tools/__tests__/memoryTool.reminisceSemanticSearch.test.js +301 -301
- package/src/tools/__tests__/memoryTool.semanticSearch.test.js +405 -405
- package/src/tools/__tests__/memoryTool.teamPool.test.js +293 -293
- package/src/tools/__tests__/memoryTool.test.js +1 -1
- package/src/tools/__tests__/seekTool.test.js +282 -282
- package/src/tools/__tests__/skillsTool.search.test.js +164 -164
- package/src/tools/__tests__/skillsTool.test.js +226 -226
- package/src/tools/__tests__/staticAnalysisTool.test.js +509 -509
- package/src/tools/__tests__/taskManagerTool.discipline.test.js +137 -137
- package/src/tools/__tests__/taskManagerTool.search.test.js +143 -143
- package/src/tools/__tests__/taskManagerTool.test.js +866 -866
- package/src/tools/__tests__/terminalTool.test.js +448 -448
- package/src/tools/__tests__/toolShapeForgiveness.test.js +259 -260
- package/src/tools/__tests__/userPromptTool.test.js +297 -297
- package/src/tools/__tests__/videoTool.jobs.test.js +147 -147
- package/src/tools/__tests__/webTool.e2e.test.js +609 -603
- package/src/tools/__tests__/webTool.unit.test.js +195 -195
- package/src/tools/__tests__/webTool.visionModel.test.js +75 -75
- package/src/tools/agentCommunicationTool.js +8 -10
- package/src/tools/agentDelayTool.js +496 -497
- package/src/tools/asyncToolManager.js +602 -603
- package/src/tools/baseTool.js +12 -11
- package/src/tools/cloneDetectionTool.js +576 -581
- package/src/tools/codeMapTool.js +0 -6
- package/src/tools/composioTool.js +617 -617
- package/src/tools/dependencyResolverTool.js +1211 -1212
- package/src/tools/desktop/DesktopTool.js +629 -638
- package/src/tools/desktop/__tests__/DesktopTool.e2e.test.js +306 -306
- package/src/tools/desktop/__tests__/DesktopTool.test.js +507 -507
- package/src/tools/desktop/__tests__/osController.test.js +364 -364
- package/src/tools/desktop/osController.js +491 -491
- package/src/tools/docxTool.js +623 -623
- package/src/tools/excelTool.js +636 -636
- package/src/tools/fileContentReplaceTool.js +5 -7
- package/src/tools/fileSystemTool.js +12 -19
- package/src/tools/fileTreeTool.js +840 -840
- package/src/tools/foundryWebSearchTool.js +273 -273
- package/src/tools/helpTool.js +198 -198
- package/src/tools/imageTool.js +1397 -1397
- package/src/tools/importAnalyzerTool.js +1056 -1056
- package/src/tools/jobDoneTool.js +495 -495
- package/src/tools/memoryTool.js +1 -1
- package/src/tools/office/pres/__tests__/presSystem.test.js +365 -365
- package/src/tools/office/pres/archetypes/agenda.js +61 -61
- package/src/tools/office/pres/archetypes/bentoGrid.js +218 -219
- package/src/tools/office/pres/archetypes/bigStat.js +140 -142
- package/src/tools/office/pres/archetypes/closing.js +70 -70
- package/src/tools/office/pres/archetypes/hero.js +70 -70
- package/src/tools/office/pres/archetypes/productHero.js +93 -94
- package/src/tools/office/pres/archetypes/table.js +73 -74
- package/src/tools/office/pres/backgrounds/orb.js +66 -66
- package/src/tools/office/pres/components.js +422 -423
- package/src/tools/officeTool.js +441 -441
- package/src/tools/pdfTool.js +625 -627
- package/src/tools/platformControlTool.js +1081 -1081
- package/src/tools/seekTool.js +917 -918
- package/src/tools/skillsTool.js +1 -1
- package/src/tools/staticAnalysisTool.js +2143 -2146
- package/src/tools/taskManagerTool.js +3324 -3324
- package/src/tools/terminalTool.js +2615 -2618
- package/src/tools/videoTool.js +1303 -1303
- package/src/tools/visionTool.js +508 -508
- package/src/tools/visualEditorTool.js +1289 -1290
- package/src/tools/webTool.js +3368 -3368
- package/src/tools/whatsappTool.js +464 -464
- package/src/types/__tests__/agent.test.js +499 -499
- package/src/types/__tests__/contextReference.test.js +606 -606
- package/src/types/__tests__/conversation.test.js +555 -555
- package/src/types/__tests__/toolCommand.test.js +584 -584
- package/src/types/contextReference.js +974 -971
- package/src/types/conversation.js +729 -729
- package/src/types/toolCommand.js +746 -746
- package/src/utilities/__tests__/attachmentValidator.test.js +80 -80
- package/src/utilities/__tests__/auditReport.test.js +328 -328
- package/src/utilities/__tests__/directoryAccessManager.test.js +388 -388
- package/src/utilities/__tests__/jsonRepair.test.js +103 -104
- package/src/utilities/__tests__/modeTransitionReasons.test.js +105 -105
- package/src/utilities/__tests__/platformUtils.test.js +80 -87
- package/src/utilities/__tests__/structuredFileValidator.test.js +261 -263
- package/src/utilities/__tests__/toolConstants.test.js +92 -94
- package/src/utilities/__tests__/useIsTouchDevice.detect.test.js +114 -114
- package/src/utilities/__tests__/webUiUtilSync.test.js +117 -117
- package/src/utilities/attachmentValidator.js +284 -288
- package/src/utilities/authCache.js.backup-1779570472481 +121 -121
- package/src/utilities/browserStealth.js +631 -630
- package/src/utilities/configManager.js +616 -617
- package/src/utilities/directoryAccessManager.js +564 -565
- package/src/utilities/fileProcessor.js +308 -307
- package/src/utilities/humanBehavior.js +454 -453
- package/src/utilities/logger.js +479 -479
- package/src/utilities/structuredFileValidator.js +696 -699
- package/src/utilities/tagParser.js +5 -10
- package/src/utilities/userDataDir.js +308 -308
- package/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js.map +0 -1
- package/node_modules/@isaacs/brace-expansion/dist/esm/index.js.map +0 -1
- package/node_modules/minipass/LICENSE +0 -15
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/LICENSE.md +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/commonjs/index.d.ts +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/commonjs/index.d.ts.map +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/commonjs/index.js +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/commonjs/index.js.map +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/commonjs/package.json +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/esm/index.d.ts +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/esm/index.d.ts.map +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/esm/index.js +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/esm/index.js.map +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/balanced-match/dist/esm/package.json +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/LICENSE +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/commonjs/index.d.ts +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/commonjs/index.d.ts.map +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/commonjs/package.json +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/esm/index.d.ts +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/esm/index.d.ts.map +0 -0
- /package/node_modules/{@isaacs → glob/node_modules}/brace-expansion/dist/esm/package.json +0 -0
|
@@ -1,350 +1,341 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Connection Management - Smoke Tests
|
|
3
|
-
* Verifies that connection management modules can be imported and basic functionality works
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { describe, test, expect } from '@jest/globals';
|
|
7
|
-
|
|
8
|
-
describe('Connection Management - Imports', () => {
|
|
9
|
-
test('useConnection hook can be imported', async () => {
|
|
10
|
-
const { useConnection } = await import('../../state/useConnection.js');
|
|
11
|
-
|
|
12
|
-
expect(useConnection).toBeDefined();
|
|
13
|
-
expect(typeof useConnection).toBe('function');
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test('useConnection is default export', async () => {
|
|
17
|
-
const module = await import('../../state/useConnection.js');
|
|
18
|
-
|
|
19
|
-
expect(module.default).toBeDefined();
|
|
20
|
-
expect(typeof module.default).toBe('function');
|
|
21
|
-
expect(module.default).toBe(module.useConnection);
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
describe('Connection Management - Constants', () => {
|
|
26
|
-
test('CONNECTION_STATUS constants are defined', async () => {
|
|
27
|
-
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
28
|
-
|
|
29
|
-
expect(CONNECTION_STATUS).toBeDefined();
|
|
30
|
-
expect(CONNECTION_STATUS.CONNECTING).toBe('connecting');
|
|
31
|
-
expect(CONNECTION_STATUS.CONNECTED).toBe('connected');
|
|
32
|
-
expect(CONNECTION_STATUS.DISCONNECTED).toBe('disconnected');
|
|
33
|
-
expect(CONNECTION_STATUS.RECONNECTING).toBe('reconnecting');
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test('CONNECTION_STATUS is alias for CONNECTION_STATE', async () => {
|
|
37
|
-
const { CONNECTION_STATUS, CONNECTION_STATE } = await import('../../config/constants.js');
|
|
38
|
-
|
|
39
|
-
expect(CONNECTION_STATUS).toBe(CONNECTION_STATE);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('RECONNECT_CONFIG constants are defined', async () => {
|
|
43
|
-
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
44
|
-
|
|
45
|
-
expect(RECONNECT_CONFIG).toBeDefined();
|
|
46
|
-
expect(RECONNECT_CONFIG.INITIAL_DELAY).toBeDefined();
|
|
47
|
-
expect(RECONNECT_CONFIG.MAX_DELAY).toBeDefined();
|
|
48
|
-
expect(RECONNECT_CONFIG.BACKOFF_MULTIPLIER).toBeDefined();
|
|
49
|
-
expect(RECONNECT_CONFIG.MAX_ATTEMPTS).toBeDefined();
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test('RECONNECT_CONFIG values are reasonable', async () => {
|
|
53
|
-
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
54
|
-
|
|
55
|
-
// Initial delay should be > 0
|
|
56
|
-
expect(RECONNECT_CONFIG.INITIAL_DELAY).toBeGreaterThan(0);
|
|
57
|
-
|
|
58
|
-
// Max delay should be > initial delay
|
|
59
|
-
expect(RECONNECT_CONFIG.MAX_DELAY).toBeGreaterThan(RECONNECT_CONFIG.INITIAL_DELAY);
|
|
60
|
-
|
|
61
|
-
// Backoff multiplier should be > 1 for exponential growth
|
|
62
|
-
expect(RECONNECT_CONFIG.BACKOFF_MULTIPLIER).toBeGreaterThan(1);
|
|
63
|
-
|
|
64
|
-
// Max attempts should be reasonable (not 0 or negative)
|
|
65
|
-
expect(RECONNECT_CONFIG.MAX_ATTEMPTS).toBeGreaterThan(0);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('Connection Management - Integration', () => {
|
|
70
|
-
test('useConnection hook integrates with SessionManager and WebSocketManager', async () => {
|
|
71
|
-
const { useConnection } = await import('../../state/useConnection.js');
|
|
72
|
-
const { SessionManager } = await import('../../api/session.js');
|
|
73
|
-
const { WebSocketManager } = await import('../../api/websocket.js');
|
|
74
|
-
|
|
75
|
-
// Create dependencies
|
|
76
|
-
const sessionManager = new SessionManager('localhost', 8080);
|
|
77
|
-
const wsManager = new WebSocketManager('localhost', 8080);
|
|
78
|
-
|
|
79
|
-
// Verify all components exist
|
|
80
|
-
expect(sessionManager).toBeDefined();
|
|
81
|
-
expect(wsManager).toBeDefined();
|
|
82
|
-
|
|
83
|
-
// useConnection expects these as parameters
|
|
84
|
-
// (we can't actually call the hook outside React, but we verify the interface)
|
|
85
|
-
expect(typeof useConnection).toBe('function');
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
test('Full connection stack can be imported together', async () => {
|
|
89
|
-
const [
|
|
90
|
-
constantsModule,
|
|
91
|
-
sessionModule,
|
|
92
|
-
websocketModule,
|
|
93
|
-
connectionModule,
|
|
94
|
-
] = await Promise.all([
|
|
95
|
-
import('../../config/constants.js'),
|
|
96
|
-
import('../../api/session.js'),
|
|
97
|
-
import('../../api/websocket.js'),
|
|
98
|
-
import('../../state/useConnection.js'),
|
|
99
|
-
]);
|
|
100
|
-
|
|
101
|
-
// Verify all modules loaded
|
|
102
|
-
expect(constantsModule.CONNECTION_STATUS).toBeDefined();
|
|
103
|
-
expect(constantsModule.RECONNECT_CONFIG).toBeDefined();
|
|
104
|
-
expect(sessionModule.SessionManager).toBeDefined();
|
|
105
|
-
expect(websocketModule.WebSocketManager).toBeDefined();
|
|
106
|
-
expect(connectionModule.useConnection).toBeDefined();
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
describe('Connection Management - Hook Interface Verification', () => {
|
|
111
|
-
test('useConnection returns expected interface shape', async () => {
|
|
112
|
-
const { useConnection } = await import('../../state/useConnection.js');
|
|
113
|
-
|
|
114
|
-
// We can verify the function signature
|
|
115
|
-
expect(useConnection.length).toBe(2); // sessionManager, wsManager
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
describe('Connection Management - Status Values', () => {
|
|
120
|
-
test('CONNECTION_STATUS values are lowercase strings', async () => {
|
|
121
|
-
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
122
|
-
|
|
123
|
-
expect(typeof CONNECTION_STATUS.CONNECTING).toBe('string');
|
|
124
|
-
expect(typeof CONNECTION_STATUS.CONNECTED).toBe('string');
|
|
125
|
-
expect(typeof CONNECTION_STATUS.DISCONNECTED).toBe('string');
|
|
126
|
-
expect(typeof CONNECTION_STATUS.RECONNECTING).toBe('string');
|
|
127
|
-
|
|
128
|
-
expect(CONNECTION_STATUS.CONNECTING).toBe(CONNECTION_STATUS.CONNECTING.toLowerCase());
|
|
129
|
-
expect(CONNECTION_STATUS.CONNECTED).toBe(CONNECTION_STATUS.CONNECTED.toLowerCase());
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
test('CONNECTION_STATUS has all required states', async () => {
|
|
133
|
-
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
134
|
-
|
|
135
|
-
const states = Object.keys(CONNECTION_STATUS);
|
|
136
|
-
expect(states).toContain('CONNECTING');
|
|
137
|
-
expect(states).toContain('CONNECTED');
|
|
138
|
-
expect(states).toContain('DISCONNECTED');
|
|
139
|
-
expect(states).toContain('RECONNECTING');
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
describe('Connection Management - Exponential Backoff Logic', () => {
|
|
144
|
-
test('Exponential backoff delay calculation works correctly', async () => {
|
|
145
|
-
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
146
|
-
|
|
147
|
-
// Simulate exponential backoff calculation
|
|
148
|
-
const getReconnectDelay = (attempt) => {
|
|
149
|
-
return Math.min(
|
|
150
|
-
RECONNECT_CONFIG.INITIAL_DELAY * Math.pow(RECONNECT_CONFIG.BACKOFF_MULTIPLIER, attempt),
|
|
151
|
-
RECONNECT_CONFIG.MAX_DELAY
|
|
152
|
-
);
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
// Test increasing delays
|
|
156
|
-
const delay0 = getReconnectDelay(0);
|
|
157
|
-
const delay1 = getReconnectDelay(1);
|
|
158
|
-
const delay2 = getReconnectDelay(2);
|
|
159
|
-
|
|
160
|
-
expect(delay0).toBe(RECONNECT_CONFIG.INITIAL_DELAY);
|
|
161
|
-
expect(delay1).toBeGreaterThan(delay0);
|
|
162
|
-
expect(delay2).toBeGreaterThan(delay1);
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
test('Exponential backoff respects max delay', async () => {
|
|
166
|
-
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
167
|
-
|
|
168
|
-
// Simulate exponential backoff calculation
|
|
169
|
-
const getReconnectDelay = (attempt) => {
|
|
170
|
-
return Math.min(
|
|
171
|
-
RECONNECT_CONFIG.INITIAL_DELAY * Math.pow(RECONNECT_CONFIG.BACKOFF_MULTIPLIER, attempt),
|
|
172
|
-
RECONNECT_CONFIG.MAX_DELAY
|
|
173
|
-
);
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
// Test with very large attempt number
|
|
177
|
-
const delayLarge = getReconnectDelay(100);
|
|
178
|
-
|
|
179
|
-
// Should be capped at MAX_DELAY
|
|
180
|
-
expect(delayLarge).toBe(RECONNECT_CONFIG.MAX_DELAY);
|
|
181
|
-
expect(delayLarge).toBeLessThanOrEqual(RECONNECT_CONFIG.MAX_DELAY);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
describe('Connection Management - Session State', () => {
|
|
186
|
-
test('Session state should track validity', async () => {
|
|
187
|
-
//
|
|
188
|
-
let sessionId =
|
|
189
|
-
let sessionValid =
|
|
190
|
-
let sessionExpiration =
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
expect(
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
// Verify all fields present
|
|
343
|
-
expect(connectionInfo.status).toBeDefined();
|
|
344
|
-
expect(connectionInfo.isConnected).toBe(true);
|
|
345
|
-
expect(connectionInfo.isReconnecting).toBe(false);
|
|
346
|
-
expect(connectionInfo.sessionId).toBeDefined();
|
|
347
|
-
expect(connectionInfo.sessionValid).toBe(true);
|
|
348
|
-
expect(connectionInfo.uptime).toBeGreaterThan(0);
|
|
349
|
-
});
|
|
350
|
-
});
|
|
1
|
+
/**
|
|
2
|
+
* Connection Management - Smoke Tests
|
|
3
|
+
* Verifies that connection management modules can be imported and basic functionality works
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { describe, test, expect } from '@jest/globals';
|
|
7
|
+
|
|
8
|
+
describe('Connection Management - Imports', () => {
|
|
9
|
+
test('useConnection hook can be imported', async () => {
|
|
10
|
+
const { useConnection } = await import('../../state/useConnection.js');
|
|
11
|
+
|
|
12
|
+
expect(useConnection).toBeDefined();
|
|
13
|
+
expect(typeof useConnection).toBe('function');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
test('useConnection is default export', async () => {
|
|
17
|
+
const module = await import('../../state/useConnection.js');
|
|
18
|
+
|
|
19
|
+
expect(module.default).toBeDefined();
|
|
20
|
+
expect(typeof module.default).toBe('function');
|
|
21
|
+
expect(module.default).toBe(module.useConnection);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
describe('Connection Management - Constants', () => {
|
|
26
|
+
test('CONNECTION_STATUS constants are defined', async () => {
|
|
27
|
+
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
28
|
+
|
|
29
|
+
expect(CONNECTION_STATUS).toBeDefined();
|
|
30
|
+
expect(CONNECTION_STATUS.CONNECTING).toBe('connecting');
|
|
31
|
+
expect(CONNECTION_STATUS.CONNECTED).toBe('connected');
|
|
32
|
+
expect(CONNECTION_STATUS.DISCONNECTED).toBe('disconnected');
|
|
33
|
+
expect(CONNECTION_STATUS.RECONNECTING).toBe('reconnecting');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('CONNECTION_STATUS is alias for CONNECTION_STATE', async () => {
|
|
37
|
+
const { CONNECTION_STATUS, CONNECTION_STATE } = await import('../../config/constants.js');
|
|
38
|
+
|
|
39
|
+
expect(CONNECTION_STATUS).toBe(CONNECTION_STATE);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('RECONNECT_CONFIG constants are defined', async () => {
|
|
43
|
+
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
44
|
+
|
|
45
|
+
expect(RECONNECT_CONFIG).toBeDefined();
|
|
46
|
+
expect(RECONNECT_CONFIG.INITIAL_DELAY).toBeDefined();
|
|
47
|
+
expect(RECONNECT_CONFIG.MAX_DELAY).toBeDefined();
|
|
48
|
+
expect(RECONNECT_CONFIG.BACKOFF_MULTIPLIER).toBeDefined();
|
|
49
|
+
expect(RECONNECT_CONFIG.MAX_ATTEMPTS).toBeDefined();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('RECONNECT_CONFIG values are reasonable', async () => {
|
|
53
|
+
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
54
|
+
|
|
55
|
+
// Initial delay should be > 0
|
|
56
|
+
expect(RECONNECT_CONFIG.INITIAL_DELAY).toBeGreaterThan(0);
|
|
57
|
+
|
|
58
|
+
// Max delay should be > initial delay
|
|
59
|
+
expect(RECONNECT_CONFIG.MAX_DELAY).toBeGreaterThan(RECONNECT_CONFIG.INITIAL_DELAY);
|
|
60
|
+
|
|
61
|
+
// Backoff multiplier should be > 1 for exponential growth
|
|
62
|
+
expect(RECONNECT_CONFIG.BACKOFF_MULTIPLIER).toBeGreaterThan(1);
|
|
63
|
+
|
|
64
|
+
// Max attempts should be reasonable (not 0 or negative)
|
|
65
|
+
expect(RECONNECT_CONFIG.MAX_ATTEMPTS).toBeGreaterThan(0);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
describe('Connection Management - Integration', () => {
|
|
70
|
+
test('useConnection hook integrates with SessionManager and WebSocketManager', async () => {
|
|
71
|
+
const { useConnection } = await import('../../state/useConnection.js');
|
|
72
|
+
const { SessionManager } = await import('../../api/session.js');
|
|
73
|
+
const { WebSocketManager } = await import('../../api/websocket.js');
|
|
74
|
+
|
|
75
|
+
// Create dependencies
|
|
76
|
+
const sessionManager = new SessionManager('localhost', 8080);
|
|
77
|
+
const wsManager = new WebSocketManager('localhost', 8080);
|
|
78
|
+
|
|
79
|
+
// Verify all components exist
|
|
80
|
+
expect(sessionManager).toBeDefined();
|
|
81
|
+
expect(wsManager).toBeDefined();
|
|
82
|
+
|
|
83
|
+
// useConnection expects these as parameters
|
|
84
|
+
// (we can't actually call the hook outside React, but we verify the interface)
|
|
85
|
+
expect(typeof useConnection).toBe('function');
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
test('Full connection stack can be imported together', async () => {
|
|
89
|
+
const [
|
|
90
|
+
constantsModule,
|
|
91
|
+
sessionModule,
|
|
92
|
+
websocketModule,
|
|
93
|
+
connectionModule,
|
|
94
|
+
] = await Promise.all([
|
|
95
|
+
import('../../config/constants.js'),
|
|
96
|
+
import('../../api/session.js'),
|
|
97
|
+
import('../../api/websocket.js'),
|
|
98
|
+
import('../../state/useConnection.js'),
|
|
99
|
+
]);
|
|
100
|
+
|
|
101
|
+
// Verify all modules loaded
|
|
102
|
+
expect(constantsModule.CONNECTION_STATUS).toBeDefined();
|
|
103
|
+
expect(constantsModule.RECONNECT_CONFIG).toBeDefined();
|
|
104
|
+
expect(sessionModule.SessionManager).toBeDefined();
|
|
105
|
+
expect(websocketModule.WebSocketManager).toBeDefined();
|
|
106
|
+
expect(connectionModule.useConnection).toBeDefined();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
describe('Connection Management - Hook Interface Verification', () => {
|
|
111
|
+
test('useConnection returns expected interface shape', async () => {
|
|
112
|
+
const { useConnection } = await import('../../state/useConnection.js');
|
|
113
|
+
|
|
114
|
+
// We can verify the function signature
|
|
115
|
+
expect(useConnection.length).toBe(2); // sessionManager, wsManager
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
describe('Connection Management - Status Values', () => {
|
|
120
|
+
test('CONNECTION_STATUS values are lowercase strings', async () => {
|
|
121
|
+
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
122
|
+
|
|
123
|
+
expect(typeof CONNECTION_STATUS.CONNECTING).toBe('string');
|
|
124
|
+
expect(typeof CONNECTION_STATUS.CONNECTED).toBe('string');
|
|
125
|
+
expect(typeof CONNECTION_STATUS.DISCONNECTED).toBe('string');
|
|
126
|
+
expect(typeof CONNECTION_STATUS.RECONNECTING).toBe('string');
|
|
127
|
+
|
|
128
|
+
expect(CONNECTION_STATUS.CONNECTING).toBe(CONNECTION_STATUS.CONNECTING.toLowerCase());
|
|
129
|
+
expect(CONNECTION_STATUS.CONNECTED).toBe(CONNECTION_STATUS.CONNECTED.toLowerCase());
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
test('CONNECTION_STATUS has all required states', async () => {
|
|
133
|
+
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
134
|
+
|
|
135
|
+
const states = Object.keys(CONNECTION_STATUS);
|
|
136
|
+
expect(states).toContain('CONNECTING');
|
|
137
|
+
expect(states).toContain('CONNECTED');
|
|
138
|
+
expect(states).toContain('DISCONNECTED');
|
|
139
|
+
expect(states).toContain('RECONNECTING');
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
describe('Connection Management - Exponential Backoff Logic', () => {
|
|
144
|
+
test('Exponential backoff delay calculation works correctly', async () => {
|
|
145
|
+
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
146
|
+
|
|
147
|
+
// Simulate exponential backoff calculation
|
|
148
|
+
const getReconnectDelay = (attempt) => {
|
|
149
|
+
return Math.min(
|
|
150
|
+
RECONNECT_CONFIG.INITIAL_DELAY * Math.pow(RECONNECT_CONFIG.BACKOFF_MULTIPLIER, attempt),
|
|
151
|
+
RECONNECT_CONFIG.MAX_DELAY
|
|
152
|
+
);
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// Test increasing delays
|
|
156
|
+
const delay0 = getReconnectDelay(0);
|
|
157
|
+
const delay1 = getReconnectDelay(1);
|
|
158
|
+
const delay2 = getReconnectDelay(2);
|
|
159
|
+
|
|
160
|
+
expect(delay0).toBe(RECONNECT_CONFIG.INITIAL_DELAY);
|
|
161
|
+
expect(delay1).toBeGreaterThan(delay0);
|
|
162
|
+
expect(delay2).toBeGreaterThan(delay1);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
test('Exponential backoff respects max delay', async () => {
|
|
166
|
+
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
167
|
+
|
|
168
|
+
// Simulate exponential backoff calculation
|
|
169
|
+
const getReconnectDelay = (attempt) => {
|
|
170
|
+
return Math.min(
|
|
171
|
+
RECONNECT_CONFIG.INITIAL_DELAY * Math.pow(RECONNECT_CONFIG.BACKOFF_MULTIPLIER, attempt),
|
|
172
|
+
RECONNECT_CONFIG.MAX_DELAY
|
|
173
|
+
);
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
// Test with very large attempt number
|
|
177
|
+
const delayLarge = getReconnectDelay(100);
|
|
178
|
+
|
|
179
|
+
// Should be capped at MAX_DELAY
|
|
180
|
+
expect(delayLarge).toBe(RECONNECT_CONFIG.MAX_DELAY);
|
|
181
|
+
expect(delayLarge).toBeLessThanOrEqual(RECONNECT_CONFIG.MAX_DELAY);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
describe('Connection Management - Session State', () => {
|
|
186
|
+
test('Session state should track validity', async () => {
|
|
187
|
+
// Simulate session initialization
|
|
188
|
+
let sessionId = 'test-session-123';
|
|
189
|
+
let sessionValid = true;
|
|
190
|
+
let sessionExpiration = Date.now() + 3600000; // 1 hour from now
|
|
191
|
+
|
|
192
|
+
expect(sessionId).toBeDefined();
|
|
193
|
+
expect(sessionValid).toBe(true);
|
|
194
|
+
expect(sessionExpiration).toBeGreaterThan(Date.now());
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
test('Session state should invalidate', async () => {
|
|
198
|
+
// Simulate session invalidation
|
|
199
|
+
let sessionId = null;
|
|
200
|
+
let sessionValid = false;
|
|
201
|
+
|
|
202
|
+
expect(sessionId).toBeNull();
|
|
203
|
+
expect(sessionValid).toBe(false);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
describe('Connection Management - Connection Metrics', () => {
|
|
208
|
+
test('Connection uptime can be tracked', async () => {
|
|
209
|
+
// Mock uptime tracking
|
|
210
|
+
const connectionStartTime = Date.now();
|
|
211
|
+
|
|
212
|
+
// Wait a bit
|
|
213
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
214
|
+
|
|
215
|
+
const uptime = Date.now() - connectionStartTime;
|
|
216
|
+
|
|
217
|
+
expect(uptime).toBeGreaterThan(0);
|
|
218
|
+
expect(uptime).toBeGreaterThanOrEqual(100);
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
test('Connection metrics track timestamps', async () => {
|
|
222
|
+
// Mock connection metrics
|
|
223
|
+
const lastConnectedAt = Date.now();
|
|
224
|
+
|
|
225
|
+
// Wait a bit
|
|
226
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
227
|
+
|
|
228
|
+
const lastDisconnectedAt = Date.now();
|
|
229
|
+
|
|
230
|
+
expect(lastConnectedAt).toBeDefined();
|
|
231
|
+
expect(lastDisconnectedAt).toBeDefined();
|
|
232
|
+
expect(lastDisconnectedAt).toBeGreaterThan(lastConnectedAt);
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
test('Reconnection attempts can be tracked', async () => {
|
|
236
|
+
// Mock reconnection attempt tracking
|
|
237
|
+
let reconnectAttempts = 0;
|
|
238
|
+
|
|
239
|
+
// Simulate failed attempts
|
|
240
|
+
reconnectAttempts += 1;
|
|
241
|
+
expect(reconnectAttempts).toBe(1);
|
|
242
|
+
|
|
243
|
+
reconnectAttempts += 1;
|
|
244
|
+
expect(reconnectAttempts).toBe(2);
|
|
245
|
+
|
|
246
|
+
// Reset on successful connection
|
|
247
|
+
reconnectAttempts = 0;
|
|
248
|
+
expect(reconnectAttempts).toBe(0);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
describe('Connection Management - Connection Status Transitions', () => {
|
|
253
|
+
test('Connection status transitions follow valid flow', async () => {
|
|
254
|
+
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
255
|
+
|
|
256
|
+
// Valid transition: DISCONNECTED -> CONNECTING -> CONNECTED
|
|
257
|
+
let status = CONNECTION_STATUS.DISCONNECTED;
|
|
258
|
+
expect(status).toBe('disconnected');
|
|
259
|
+
|
|
260
|
+
status = CONNECTION_STATUS.CONNECTING;
|
|
261
|
+
expect(status).toBe('connecting');
|
|
262
|
+
|
|
263
|
+
status = CONNECTION_STATUS.CONNECTED;
|
|
264
|
+
expect(status).toBe('connected');
|
|
265
|
+
|
|
266
|
+
// Valid transition: CONNECTED -> DISCONNECTED -> RECONNECTING -> CONNECTED
|
|
267
|
+
status = CONNECTION_STATUS.DISCONNECTED;
|
|
268
|
+
expect(status).toBe('disconnected');
|
|
269
|
+
|
|
270
|
+
status = CONNECTION_STATUS.RECONNECTING;
|
|
271
|
+
expect(status).toBe('reconnecting');
|
|
272
|
+
|
|
273
|
+
status = CONNECTION_STATUS.CONNECTED;
|
|
274
|
+
expect(status).toBe('connected');
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
describe('Connection Management - WebSocket Event Integration', () => {
|
|
279
|
+
test('WebSocketManager has event emitter methods', async () => {
|
|
280
|
+
const { WebSocketManager } = await import('../../api/websocket.js');
|
|
281
|
+
|
|
282
|
+
const wsManager = new WebSocketManager('localhost', 8080);
|
|
283
|
+
|
|
284
|
+
// Verify event emitter methods exist
|
|
285
|
+
expect(wsManager.on).toBeDefined();
|
|
286
|
+
expect(wsManager.off).toBeDefined();
|
|
287
|
+
expect(typeof wsManager.on).toBe('function');
|
|
288
|
+
expect(typeof wsManager.off).toBe('function');
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
describe('Connection Management - Max Attempts Limit', () => {
|
|
293
|
+
test('Reconnection should stop after max attempts', async () => {
|
|
294
|
+
const { RECONNECT_CONFIG } = await import('../../config/constants.js');
|
|
295
|
+
|
|
296
|
+
// Mock reconnection attempt tracking
|
|
297
|
+
let reconnectAttempts = 0;
|
|
298
|
+
|
|
299
|
+
// Simulate reconnection attempts
|
|
300
|
+
for (let i = 0; i < RECONNECT_CONFIG.MAX_ATTEMPTS + 5; i++) {
|
|
301
|
+
if (reconnectAttempts < RECONNECT_CONFIG.MAX_ATTEMPTS) {
|
|
302
|
+
reconnectAttempts += 1;
|
|
303
|
+
} else {
|
|
304
|
+
// Should stop incrementing
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// Should not exceed max attempts
|
|
310
|
+
expect(reconnectAttempts).toBe(RECONNECT_CONFIG.MAX_ATTEMPTS);
|
|
311
|
+
expect(reconnectAttempts).toBeLessThanOrEqual(RECONNECT_CONFIG.MAX_ATTEMPTS);
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
describe('Connection Management - Connection Info', () => {
|
|
316
|
+
test('Connection info should contain all metrics', async () => {
|
|
317
|
+
const { CONNECTION_STATUS } = await import('../../config/constants.js');
|
|
318
|
+
|
|
319
|
+
// Mock connection info
|
|
320
|
+
const connectionInfo = {
|
|
321
|
+
status: CONNECTION_STATUS.CONNECTED,
|
|
322
|
+
isConnected: true,
|
|
323
|
+
isReconnecting: false,
|
|
324
|
+
sessionId: 'test-session-123',
|
|
325
|
+
sessionValid: true,
|
|
326
|
+
sessionExpiration: Date.now() + 3600000,
|
|
327
|
+
uptime: 5000,
|
|
328
|
+
lastConnectedAt: Date.now() - 5000,
|
|
329
|
+
lastDisconnectedAt: null,
|
|
330
|
+
reconnectAttempts: 0,
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// Verify all fields present
|
|
334
|
+
expect(connectionInfo.status).toBeDefined();
|
|
335
|
+
expect(connectionInfo.isConnected).toBe(true);
|
|
336
|
+
expect(connectionInfo.isReconnecting).toBe(false);
|
|
337
|
+
expect(connectionInfo.sessionId).toBeDefined();
|
|
338
|
+
expect(connectionInfo.sessionValid).toBe(true);
|
|
339
|
+
expect(connectionInfo.uptime).toBeGreaterThan(0);
|
|
340
|
+
});
|
|
341
|
+
});
|