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,44 +1,44 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug Logger
|
|
3
|
-
* Logs to file instead of console to avoid corrupting Ink UI
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import fs from 'fs';
|
|
7
|
-
import path from 'path';
|
|
8
|
-
import { resolveModuleFilename } from '../../../utilities/esmCjsPath.js';
|
|
9
|
-
|
|
10
|
-
const __dirname = path.dirname(resolveModuleFilename(import.meta.url));
|
|
11
|
-
const LOG_FILE = path.join(__dirname, '../../../../debug-terminal-ui.log');
|
|
12
|
-
|
|
13
|
-
// Clear log file on startup
|
|
14
|
-
try {
|
|
15
|
-
fs.writeFileSync(LOG_FILE, `=== Terminal UI Debug Log - ${new Date().toISOString()} ===\n`);
|
|
16
|
-
} catch
|
|
17
|
-
// Silently fail if we can't create log file
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Log a debug message to file
|
|
22
|
-
*/
|
|
23
|
-
export function debugLog(component, message, data = null) {
|
|
24
|
-
try {
|
|
25
|
-
const timestamp = new Date().toISOString();
|
|
26
|
-
let logLine = `[${timestamp}] [${component}] ${message}`;
|
|
27
|
-
|
|
28
|
-
if (data !== null && data !== undefined) {
|
|
29
|
-
if (typeof data === 'object') {
|
|
30
|
-
logLine += ` ${JSON.stringify(data)}`;
|
|
31
|
-
} else {
|
|
32
|
-
logLine += ` ${data}`;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
logLine += '\n';
|
|
37
|
-
|
|
38
|
-
fs.appendFileSync(LOG_FILE, logLine);
|
|
39
|
-
} catch
|
|
40
|
-
// Silently fail - don't break the app if logging fails
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export default debugLog;
|
|
1
|
+
/**
|
|
2
|
+
* Debug Logger
|
|
3
|
+
* Logs to file instead of console to avoid corrupting Ink UI
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { resolveModuleFilename } from '../../../utilities/esmCjsPath.js';
|
|
9
|
+
|
|
10
|
+
const __dirname = path.dirname(resolveModuleFilename(import.meta.url));
|
|
11
|
+
const LOG_FILE = path.join(__dirname, '../../../../debug-terminal-ui.log');
|
|
12
|
+
|
|
13
|
+
// Clear log file on startup
|
|
14
|
+
try {
|
|
15
|
+
fs.writeFileSync(LOG_FILE, `=== Terminal UI Debug Log - ${new Date().toISOString()} ===\n`);
|
|
16
|
+
} catch {
|
|
17
|
+
// Silently fail if we can't create log file
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Log a debug message to file
|
|
22
|
+
*/
|
|
23
|
+
export function debugLog(component, message, data = null) {
|
|
24
|
+
try {
|
|
25
|
+
const timestamp = new Date().toISOString();
|
|
26
|
+
let logLine = `[${timestamp}] [${component}] ${message}`;
|
|
27
|
+
|
|
28
|
+
if (data !== null && data !== undefined) {
|
|
29
|
+
if (typeof data === 'object') {
|
|
30
|
+
logLine += ` ${JSON.stringify(data)}`;
|
|
31
|
+
} else {
|
|
32
|
+
logLine += ` ${data}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
logLine += '\n';
|
|
37
|
+
|
|
38
|
+
fs.appendFileSync(LOG_FILE, logLine);
|
|
39
|
+
} catch {
|
|
40
|
+
// Silently fail - don't break the app if logging fails
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default debugLog;
|
|
@@ -1,232 +1,232 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Settings Storage Utility
|
|
3
|
-
* Handles persistent storage of Terminal UI settings including API keys
|
|
4
|
-
*
|
|
5
|
-
* UPDATED: Settings are now stored in a platform-appropriate user data directory
|
|
6
|
-
* that persists across npm package updates. See userDataDir.js for details.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import fs from 'fs';
|
|
10
|
-
import path from 'path';
|
|
11
|
-
import { getUserDataPaths } from '../../../utilities/userDataDir.js';
|
|
12
|
-
|
|
13
|
-
// UPDATED: Use persistent user data directory instead of package-relative path
|
|
14
|
-
// This ensures settings survive npm package updates (npm i -g)
|
|
15
|
-
const userPaths = getUserDataPaths();
|
|
16
|
-
const SETTINGS_DIR = userPaths.settings;
|
|
17
|
-
const SETTINGS_FILE = path.join(SETTINGS_DIR, 'terminal-settings.json');
|
|
18
|
-
|
|
19
|
-
// Legacy paths for migration detection
|
|
20
|
-
const LEGACY_SETTINGS_PATHS = [
|
|
21
|
-
// Old: relative to package installation
|
|
22
|
-
path.join(process.cwd(), 'loxia-state', 'terminal-settings.json'),
|
|
23
|
-
path.join(process.cwd(), '.loxia-state', 'terminal-settings.json'),
|
|
24
|
-
];
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Default settings structure
|
|
28
|
-
*/
|
|
29
|
-
const DEFAULT_SETTINGS = {
|
|
30
|
-
// Connection settings
|
|
31
|
-
autoReconnect: true,
|
|
32
|
-
reconnectDelay: 3000,
|
|
33
|
-
heartbeatInterval: 30000,
|
|
34
|
-
|
|
35
|
-
// Display settings
|
|
36
|
-
showTimestamps: true,
|
|
37
|
-
compactMode: false,
|
|
38
|
-
colorScheme: 'default',
|
|
39
|
-
maxMessages: 100,
|
|
40
|
-
|
|
41
|
-
// Behavior settings
|
|
42
|
-
autoScroll: true,
|
|
43
|
-
playSound: false,
|
|
44
|
-
confirmOnExit: true,
|
|
45
|
-
saveHistory: true,
|
|
46
|
-
|
|
47
|
-
// API Keys
|
|
48
|
-
apiKeys: {
|
|
49
|
-
loxia: '', // Loxia Platform API Key (for Azure backend)
|
|
50
|
-
anthropic: '', // Optional: Direct Anthropic API access
|
|
51
|
-
openai: '', // Optional: Direct OpenAI API access
|
|
52
|
-
deepseek: '', // Optional: Direct DeepSeek API access
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
// Metadata
|
|
56
|
-
version: '1.0.0',
|
|
57
|
-
lastModified: null,
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Ensure settings directory exists
|
|
62
|
-
*/
|
|
63
|
-
function ensureSettingsDir() {
|
|
64
|
-
if (!fs.existsSync(SETTINGS_DIR)) {
|
|
65
|
-
fs.mkdirSync(SETTINGS_DIR, { recursive: true });
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Attempt to migrate settings from legacy location
|
|
71
|
-
* @returns {Object|null} Migrated settings or null if not found
|
|
72
|
-
*/
|
|
73
|
-
function tryMigrateLegacySettings() {
|
|
74
|
-
for (const legacyPath of LEGACY_SETTINGS_PATHS) {
|
|
75
|
-
try {
|
|
76
|
-
if (fs.existsSync(legacyPath)) {
|
|
77
|
-
const fileContent = fs.readFileSync(legacyPath, 'utf8');
|
|
78
|
-
const legacySettings = JSON.parse(fileContent);
|
|
79
|
-
console.log(`Migrating settings from legacy location: ${legacyPath}`);
|
|
80
|
-
return legacySettings;
|
|
81
|
-
}
|
|
82
|
-
} catch
|
|
83
|
-
// Continue to next legacy path
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Load settings from disk
|
|
91
|
-
* @returns {Object} Settings object
|
|
92
|
-
*/
|
|
93
|
-
export function loadSettings() {
|
|
94
|
-
try {
|
|
95
|
-
ensureSettingsDir();
|
|
96
|
-
|
|
97
|
-
if (!fs.existsSync(SETTINGS_FILE)) {
|
|
98
|
-
// No settings in new location, try to migrate from legacy location
|
|
99
|
-
const legacySettings = tryMigrateLegacySettings();
|
|
100
|
-
if (legacySettings) {
|
|
101
|
-
// Save migrated settings to new location
|
|
102
|
-
const mergedSettings = {
|
|
103
|
-
...DEFAULT_SETTINGS,
|
|
104
|
-
...legacySettings,
|
|
105
|
-
apiKeys: {
|
|
106
|
-
...DEFAULT_SETTINGS.apiKeys,
|
|
107
|
-
...(legacySettings.apiKeys || {}),
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
saveSettings(mergedSettings);
|
|
111
|
-
console.log(`Settings migrated to persistent location: ${SETTINGS_FILE}`);
|
|
112
|
-
return mergedSettings;
|
|
113
|
-
}
|
|
114
|
-
// No settings file exists anywhere, return defaults
|
|
115
|
-
return { ...DEFAULT_SETTINGS };
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const fileContent = fs.readFileSync(SETTINGS_FILE, 'utf8');
|
|
119
|
-
const savedSettings = JSON.parse(fileContent);
|
|
120
|
-
|
|
121
|
-
// Merge with defaults to handle new settings added in updates
|
|
122
|
-
return {
|
|
123
|
-
...DEFAULT_SETTINGS,
|
|
124
|
-
...savedSettings,
|
|
125
|
-
apiKeys: {
|
|
126
|
-
...DEFAULT_SETTINGS.apiKeys,
|
|
127
|
-
...(savedSettings.apiKeys || {}),
|
|
128
|
-
},
|
|
129
|
-
};
|
|
130
|
-
} catch (error) {
|
|
131
|
-
console.error('Error loading settings:', error.message);
|
|
132
|
-
return { ...DEFAULT_SETTINGS };
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Save settings to disk
|
|
138
|
-
* @param {Object} settings - Settings object to save
|
|
139
|
-
* @returns {boolean} Success status
|
|
140
|
-
*/
|
|
141
|
-
export function saveSettings(settings) {
|
|
142
|
-
try {
|
|
143
|
-
ensureSettingsDir();
|
|
144
|
-
|
|
145
|
-
const settingsToSave = {
|
|
146
|
-
...settings,
|
|
147
|
-
version: '1.0.0',
|
|
148
|
-
lastModified: new Date().toISOString(),
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
fs.writeFileSync(SETTINGS_FILE, JSON.stringify(settingsToSave, null, 2), 'utf8');
|
|
152
|
-
return true;
|
|
153
|
-
} catch (error) {
|
|
154
|
-
console.error('Error saving settings:', error.message);
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Check if Loxia API key is configured
|
|
161
|
-
* @returns {boolean} True if API key exists
|
|
162
|
-
*/
|
|
163
|
-
export function hasLoxiaApiKey() {
|
|
164
|
-
const settings = loadSettings();
|
|
165
|
-
return !!(settings.apiKeys?.loxia && settings.apiKeys.loxia.trim().length > 0);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Get Loxia API key
|
|
170
|
-
* @returns {string|null} API key or null
|
|
171
|
-
*/
|
|
172
|
-
export function getLoxiaApiKey() {
|
|
173
|
-
const settings = loadSettings();
|
|
174
|
-
return settings.apiKeys?.loxia || null;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Get all vendor API keys
|
|
179
|
-
* @returns {Object} Vendor keys object
|
|
180
|
-
*/
|
|
181
|
-
export function getVendorApiKeys() {
|
|
182
|
-
const settings = loadSettings();
|
|
183
|
-
const apiKeys = settings.apiKeys || {};
|
|
184
|
-
|
|
185
|
-
return {
|
|
186
|
-
anthropic: apiKeys.anthropic || '',
|
|
187
|
-
openai: apiKeys.openai || '',
|
|
188
|
-
deepseek: apiKeys.deepseek || '',
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Update API keys
|
|
194
|
-
* @param {Object} keys - API keys object { loxia, anthropic, openai, deepseek }
|
|
195
|
-
* @returns {boolean} Success status
|
|
196
|
-
*/
|
|
197
|
-
export function updateApiKeys(keys) {
|
|
198
|
-
const settings = loadSettings();
|
|
199
|
-
|
|
200
|
-
settings.apiKeys = {
|
|
201
|
-
...settings.apiKeys,
|
|
202
|
-
...keys,
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
return saveSettings(settings);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Clear all settings (reset to defaults)
|
|
210
|
-
* @returns {boolean} Success status
|
|
211
|
-
*/
|
|
212
|
-
export function clearSettings() {
|
|
213
|
-
try {
|
|
214
|
-
if (fs.existsSync(SETTINGS_FILE)) {
|
|
215
|
-
fs.unlinkSync(SETTINGS_FILE);
|
|
216
|
-
}
|
|
217
|
-
return true;
|
|
218
|
-
} catch (error) {
|
|
219
|
-
console.error('Error clearing settings:', error.message);
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
export default {
|
|
225
|
-
loadSettings,
|
|
226
|
-
saveSettings,
|
|
227
|
-
hasLoxiaApiKey,
|
|
228
|
-
getLoxiaApiKey,
|
|
229
|
-
getVendorApiKeys,
|
|
230
|
-
updateApiKeys,
|
|
231
|
-
clearSettings,
|
|
232
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Settings Storage Utility
|
|
3
|
+
* Handles persistent storage of Terminal UI settings including API keys
|
|
4
|
+
*
|
|
5
|
+
* UPDATED: Settings are now stored in a platform-appropriate user data directory
|
|
6
|
+
* that persists across npm package updates. See userDataDir.js for details.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import fs from 'fs';
|
|
10
|
+
import path from 'path';
|
|
11
|
+
import { getUserDataPaths } from '../../../utilities/userDataDir.js';
|
|
12
|
+
|
|
13
|
+
// UPDATED: Use persistent user data directory instead of package-relative path
|
|
14
|
+
// This ensures settings survive npm package updates (npm i -g)
|
|
15
|
+
const userPaths = getUserDataPaths();
|
|
16
|
+
const SETTINGS_DIR = userPaths.settings;
|
|
17
|
+
const SETTINGS_FILE = path.join(SETTINGS_DIR, 'terminal-settings.json');
|
|
18
|
+
|
|
19
|
+
// Legacy paths for migration detection
|
|
20
|
+
const LEGACY_SETTINGS_PATHS = [
|
|
21
|
+
// Old: relative to package installation
|
|
22
|
+
path.join(process.cwd(), 'loxia-state', 'terminal-settings.json'),
|
|
23
|
+
path.join(process.cwd(), '.loxia-state', 'terminal-settings.json'),
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Default settings structure
|
|
28
|
+
*/
|
|
29
|
+
const DEFAULT_SETTINGS = {
|
|
30
|
+
// Connection settings
|
|
31
|
+
autoReconnect: true,
|
|
32
|
+
reconnectDelay: 3000,
|
|
33
|
+
heartbeatInterval: 30000,
|
|
34
|
+
|
|
35
|
+
// Display settings
|
|
36
|
+
showTimestamps: true,
|
|
37
|
+
compactMode: false,
|
|
38
|
+
colorScheme: 'default',
|
|
39
|
+
maxMessages: 100,
|
|
40
|
+
|
|
41
|
+
// Behavior settings
|
|
42
|
+
autoScroll: true,
|
|
43
|
+
playSound: false,
|
|
44
|
+
confirmOnExit: true,
|
|
45
|
+
saveHistory: true,
|
|
46
|
+
|
|
47
|
+
// API Keys
|
|
48
|
+
apiKeys: {
|
|
49
|
+
loxia: '', // Loxia Platform API Key (for Azure backend)
|
|
50
|
+
anthropic: '', // Optional: Direct Anthropic API access
|
|
51
|
+
openai: '', // Optional: Direct OpenAI API access
|
|
52
|
+
deepseek: '', // Optional: Direct DeepSeek API access
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
// Metadata
|
|
56
|
+
version: '1.0.0',
|
|
57
|
+
lastModified: null,
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Ensure settings directory exists
|
|
62
|
+
*/
|
|
63
|
+
function ensureSettingsDir() {
|
|
64
|
+
if (!fs.existsSync(SETTINGS_DIR)) {
|
|
65
|
+
fs.mkdirSync(SETTINGS_DIR, { recursive: true });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Attempt to migrate settings from legacy location
|
|
71
|
+
* @returns {Object|null} Migrated settings or null if not found
|
|
72
|
+
*/
|
|
73
|
+
function tryMigrateLegacySettings() {
|
|
74
|
+
for (const legacyPath of LEGACY_SETTINGS_PATHS) {
|
|
75
|
+
try {
|
|
76
|
+
if (fs.existsSync(legacyPath)) {
|
|
77
|
+
const fileContent = fs.readFileSync(legacyPath, 'utf8');
|
|
78
|
+
const legacySettings = JSON.parse(fileContent);
|
|
79
|
+
console.log(`Migrating settings from legacy location: ${legacyPath}`);
|
|
80
|
+
return legacySettings;
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
// Continue to next legacy path
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Load settings from disk
|
|
91
|
+
* @returns {Object} Settings object
|
|
92
|
+
*/
|
|
93
|
+
export function loadSettings() {
|
|
94
|
+
try {
|
|
95
|
+
ensureSettingsDir();
|
|
96
|
+
|
|
97
|
+
if (!fs.existsSync(SETTINGS_FILE)) {
|
|
98
|
+
// No settings in new location, try to migrate from legacy location
|
|
99
|
+
const legacySettings = tryMigrateLegacySettings();
|
|
100
|
+
if (legacySettings) {
|
|
101
|
+
// Save migrated settings to new location
|
|
102
|
+
const mergedSettings = {
|
|
103
|
+
...DEFAULT_SETTINGS,
|
|
104
|
+
...legacySettings,
|
|
105
|
+
apiKeys: {
|
|
106
|
+
...DEFAULT_SETTINGS.apiKeys,
|
|
107
|
+
...(legacySettings.apiKeys || {}),
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
saveSettings(mergedSettings);
|
|
111
|
+
console.log(`Settings migrated to persistent location: ${SETTINGS_FILE}`);
|
|
112
|
+
return mergedSettings;
|
|
113
|
+
}
|
|
114
|
+
// No settings file exists anywhere, return defaults
|
|
115
|
+
return { ...DEFAULT_SETTINGS };
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const fileContent = fs.readFileSync(SETTINGS_FILE, 'utf8');
|
|
119
|
+
const savedSettings = JSON.parse(fileContent);
|
|
120
|
+
|
|
121
|
+
// Merge with defaults to handle new settings added in updates
|
|
122
|
+
return {
|
|
123
|
+
...DEFAULT_SETTINGS,
|
|
124
|
+
...savedSettings,
|
|
125
|
+
apiKeys: {
|
|
126
|
+
...DEFAULT_SETTINGS.apiKeys,
|
|
127
|
+
...(savedSettings.apiKeys || {}),
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
} catch (error) {
|
|
131
|
+
console.error('Error loading settings:', error.message);
|
|
132
|
+
return { ...DEFAULT_SETTINGS };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Save settings to disk
|
|
138
|
+
* @param {Object} settings - Settings object to save
|
|
139
|
+
* @returns {boolean} Success status
|
|
140
|
+
*/
|
|
141
|
+
export function saveSettings(settings) {
|
|
142
|
+
try {
|
|
143
|
+
ensureSettingsDir();
|
|
144
|
+
|
|
145
|
+
const settingsToSave = {
|
|
146
|
+
...settings,
|
|
147
|
+
version: '1.0.0',
|
|
148
|
+
lastModified: new Date().toISOString(),
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
fs.writeFileSync(SETTINGS_FILE, JSON.stringify(settingsToSave, null, 2), 'utf8');
|
|
152
|
+
return true;
|
|
153
|
+
} catch (error) {
|
|
154
|
+
console.error('Error saving settings:', error.message);
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Check if Loxia API key is configured
|
|
161
|
+
* @returns {boolean} True if API key exists
|
|
162
|
+
*/
|
|
163
|
+
export function hasLoxiaApiKey() {
|
|
164
|
+
const settings = loadSettings();
|
|
165
|
+
return !!(settings.apiKeys?.loxia && settings.apiKeys.loxia.trim().length > 0);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Get Loxia API key
|
|
170
|
+
* @returns {string|null} API key or null
|
|
171
|
+
*/
|
|
172
|
+
export function getLoxiaApiKey() {
|
|
173
|
+
const settings = loadSettings();
|
|
174
|
+
return settings.apiKeys?.loxia || null;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Get all vendor API keys
|
|
179
|
+
* @returns {Object} Vendor keys object
|
|
180
|
+
*/
|
|
181
|
+
export function getVendorApiKeys() {
|
|
182
|
+
const settings = loadSettings();
|
|
183
|
+
const apiKeys = settings.apiKeys || {};
|
|
184
|
+
|
|
185
|
+
return {
|
|
186
|
+
anthropic: apiKeys.anthropic || '',
|
|
187
|
+
openai: apiKeys.openai || '',
|
|
188
|
+
deepseek: apiKeys.deepseek || '',
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Update API keys
|
|
194
|
+
* @param {Object} keys - API keys object { loxia, anthropic, openai, deepseek }
|
|
195
|
+
* @returns {boolean} Success status
|
|
196
|
+
*/
|
|
197
|
+
export function updateApiKeys(keys) {
|
|
198
|
+
const settings = loadSettings();
|
|
199
|
+
|
|
200
|
+
settings.apiKeys = {
|
|
201
|
+
...settings.apiKeys,
|
|
202
|
+
...keys,
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
return saveSettings(settings);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Clear all settings (reset to defaults)
|
|
210
|
+
* @returns {boolean} Success status
|
|
211
|
+
*/
|
|
212
|
+
export function clearSettings() {
|
|
213
|
+
try {
|
|
214
|
+
if (fs.existsSync(SETTINGS_FILE)) {
|
|
215
|
+
fs.unlinkSync(SETTINGS_FILE);
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
} catch (error) {
|
|
219
|
+
console.error('Error clearing settings:', error.message);
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export default {
|
|
225
|
+
loadSettings,
|
|
226
|
+
saveSettings,
|
|
227
|
+
hasLoxiaApiKey,
|
|
228
|
+
getLoxiaApiKey,
|
|
229
|
+
getVendorApiKeys,
|
|
230
|
+
updateApiKeys,
|
|
231
|
+
clearSettings,
|
|
232
|
+
};
|