@vybestack/llxprt-code 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/README.md +31 -0
  2. package/dist/package.json +3 -3
  3. package/dist/src/config/auth.test.d.ts +6 -0
  4. package/dist/src/config/auth.test.js +57 -0
  5. package/dist/src/config/auth.test.js.map +1 -0
  6. package/dist/src/config/config.d.ts +1 -1
  7. package/dist/src/config/config.js +27 -14
  8. package/dist/src/config/config.js.map +1 -1
  9. package/dist/src/config/keyBindings.js +2 -2
  10. package/dist/src/config/keyBindings.test.d.ts +6 -0
  11. package/dist/src/config/keyBindings.test.js +51 -0
  12. package/dist/src/config/keyBindings.test.js.map +1 -0
  13. package/dist/src/config/logging/loggingConfig.test.d.ts +6 -0
  14. package/dist/src/config/logging/loggingConfig.test.js +363 -0
  15. package/dist/src/config/logging/loggingConfig.test.js.map +1 -0
  16. package/dist/src/config/settingsSchema.d.ts +0 -9
  17. package/dist/src/config/settingsSchema.js +0 -9
  18. package/dist/src/config/settingsSchema.js.map +1 -1
  19. package/dist/src/config/settingsSchema.test.d.ts +6 -0
  20. package/dist/src/config/settingsSchema.test.js +195 -0
  21. package/dist/src/config/settingsSchema.test.js.map +1 -0
  22. package/dist/src/config/trustedFolders.test.d.ts +6 -0
  23. package/dist/src/config/trustedFolders.test.js +156 -0
  24. package/dist/src/config/trustedFolders.test.js.map +1 -0
  25. package/dist/src/gemini.js +14 -4
  26. package/dist/src/gemini.js.map +1 -1
  27. package/dist/src/gemini.test.d.ts +6 -0
  28. package/dist/src/gemini.test.js +199 -0
  29. package/dist/src/gemini.test.js.map +1 -0
  30. package/dist/src/generated/git-commit.d.ts +1 -1
  31. package/dist/src/generated/git-commit.js +1 -1
  32. package/dist/src/integration-tests/base-url-behavior.integration.test.d.ts +6 -0
  33. package/dist/src/integration-tests/base-url-behavior.integration.test.js +492 -0
  34. package/dist/src/integration-tests/base-url-behavior.integration.test.js.map +1 -0
  35. package/dist/src/integration-tests/cli-args.integration.test.d.ts +6 -0
  36. package/dist/src/integration-tests/cli-args.integration.test.js +398 -0
  37. package/dist/src/integration-tests/cli-args.integration.test.js.map +1 -0
  38. package/dist/src/integration-tests/compression-settings-apply.integration.test.d.ts +6 -0
  39. package/dist/src/integration-tests/compression-settings-apply.integration.test.js +436 -0
  40. package/dist/src/integration-tests/compression-settings-apply.integration.test.js.map +1 -0
  41. package/dist/src/integration-tests/ephemeral-settings.integration.test.d.ts +6 -0
  42. package/dist/src/integration-tests/ephemeral-settings.integration.test.js +290 -0
  43. package/dist/src/integration-tests/ephemeral-settings.integration.test.js.map +1 -0
  44. package/dist/src/integration-tests/model-params-isolation.integration.test.d.ts +6 -0
  45. package/dist/src/integration-tests/model-params-isolation.integration.test.js +564 -0
  46. package/dist/src/integration-tests/model-params-isolation.integration.test.js.map +1 -0
  47. package/dist/src/integration-tests/modelParams.integration.test.d.ts +6 -0
  48. package/dist/src/integration-tests/modelParams.integration.test.js +784 -0
  49. package/dist/src/integration-tests/modelParams.integration.test.js.map +1 -0
  50. package/dist/src/integration-tests/profile-keyfile.integration.test.d.ts +6 -0
  51. package/dist/src/integration-tests/profile-keyfile.integration.test.js +429 -0
  52. package/dist/src/integration-tests/profile-keyfile.integration.test.js.map +1 -0
  53. package/dist/src/integration-tests/profile-system.integration.test.d.ts +6 -0
  54. package/dist/src/integration-tests/profile-system.integration.test.js +364 -0
  55. package/dist/src/integration-tests/profile-system.integration.test.js.map +1 -0
  56. package/dist/src/integration-tests/provider-switching.integration.test.d.ts +6 -0
  57. package/dist/src/integration-tests/provider-switching.integration.test.js +207 -0
  58. package/dist/src/integration-tests/provider-switching.integration.test.js.map +1 -0
  59. package/dist/src/integration-tests/security.integration.test.d.ts +6 -0
  60. package/dist/src/integration-tests/security.integration.test.js +319 -0
  61. package/dist/src/integration-tests/security.integration.test.js.map +1 -0
  62. package/dist/src/integration-tests/test-utils.test.d.ts +6 -0
  63. package/dist/src/integration-tests/test-utils.test.js +221 -0
  64. package/dist/src/integration-tests/test-utils.test.js.map +1 -0
  65. package/dist/src/integration-tests/todo-continuation.integration.test.d.ts +6 -0
  66. package/dist/src/integration-tests/todo-continuation.integration.test.js +559 -0
  67. package/dist/src/integration-tests/todo-continuation.integration.test.js.map +1 -0
  68. package/dist/src/providers/logging/LoggingProviderWrapper.test.d.ts +6 -0
  69. package/dist/src/providers/logging/LoggingProviderWrapper.test.js +305 -0
  70. package/dist/src/providers/logging/LoggingProviderWrapper.test.js.map +1 -0
  71. package/dist/src/providers/logging/git-stats.integration.test.d.ts +6 -0
  72. package/dist/src/providers/logging/git-stats.integration.test.js +245 -0
  73. package/dist/src/providers/logging/git-stats.integration.test.js.map +1 -0
  74. package/dist/src/providers/logging/git-stats.test.d.ts +6 -0
  75. package/dist/src/providers/logging/git-stats.test.js +432 -0
  76. package/dist/src/providers/logging/git-stats.test.js.map +1 -0
  77. package/dist/src/providers/logging/multi-provider-logging.integration.test.d.ts +6 -0
  78. package/dist/src/providers/logging/multi-provider-logging.integration.test.js +531 -0
  79. package/dist/src/providers/logging/multi-provider-logging.integration.test.js.map +1 -0
  80. package/dist/src/providers/logging/performance.test.d.ts +6 -0
  81. package/dist/src/providers/logging/performance.test.js +465 -0
  82. package/dist/src/providers/logging/performance.test.js.map +1 -0
  83. package/dist/src/providers/provider-gemini-switching.test.d.ts +6 -0
  84. package/dist/src/providers/provider-gemini-switching.test.js +129 -0
  85. package/dist/src/providers/provider-gemini-switching.test.js.map +1 -0
  86. package/dist/src/providers/provider-switching.integration.test.d.ts +6 -0
  87. package/dist/src/providers/provider-switching.integration.test.js +113 -0
  88. package/dist/src/providers/provider-switching.integration.test.js.map +1 -0
  89. package/dist/src/providers/providerManagerInstance.test.d.ts +6 -0
  90. package/dist/src/providers/providerManagerInstance.test.js +104 -0
  91. package/dist/src/providers/providerManagerInstance.test.js.map +1 -0
  92. package/dist/src/services/BuiltinCommandLoader.test.d.ts +6 -0
  93. package/dist/src/services/BuiltinCommandLoader.test.js +118 -0
  94. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -0
  95. package/dist/src/services/CommandService.test.d.ts +6 -0
  96. package/dist/src/services/CommandService.test.js +232 -0
  97. package/dist/src/services/CommandService.test.js.map +1 -0
  98. package/dist/src/storage/ConversationStorage.test.d.ts +6 -0
  99. package/dist/src/storage/ConversationStorage.test.js +379 -0
  100. package/dist/src/storage/ConversationStorage.test.js.map +1 -0
  101. package/dist/src/test-utils/customMatchers.d.ts +14 -0
  102. package/dist/src/test-utils/customMatchers.js +46 -0
  103. package/dist/src/test-utils/customMatchers.js.map +1 -0
  104. package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
  105. package/dist/src/test-utils/mockCommandContext.js +86 -0
  106. package/dist/src/test-utils/mockCommandContext.js.map +1 -0
  107. package/dist/src/test-utils/mockCommandContext.test.d.ts +6 -0
  108. package/dist/src/test-utils/mockCommandContext.test.js +51 -0
  109. package/dist/src/test-utils/mockCommandContext.test.js.map +1 -0
  110. package/dist/src/test-utils/responsive-testing.d.ts +14 -0
  111. package/dist/src/test-utils/responsive-testing.js +35 -0
  112. package/dist/src/test-utils/responsive-testing.js.map +1 -0
  113. package/dist/src/test-utils/responsive-testing.test.d.ts +6 -0
  114. package/dist/src/test-utils/responsive-testing.test.js +89 -0
  115. package/dist/src/test-utils/responsive-testing.test.js.map +1 -0
  116. package/dist/src/test-utils/testProviderConfig.d.ts +18 -0
  117. package/dist/src/test-utils/testProviderConfig.js +19 -0
  118. package/dist/src/test-utils/testProviderConfig.js.map +1 -0
  119. package/dist/src/ui/App.js +1 -1
  120. package/dist/src/ui/App.js.map +1 -1
  121. package/dist/src/ui/IdeIntegrationNudge.js +1 -1
  122. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  123. package/dist/src/ui/commands/chatCommand.js +8 -6
  124. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  125. package/dist/src/ui/commands/diagnosticsCommand.js +0 -1
  126. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  127. package/dist/src/ui/commands/ideCommand.js +5 -5
  128. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  129. package/dist/src/ui/commands/keyCommand.test.d.ts +6 -0
  130. package/dist/src/ui/commands/keyCommand.test.js +128 -0
  131. package/dist/src/ui/commands/keyCommand.test.js.map +1 -0
  132. package/dist/src/ui/commands/profileCommand.test.d.ts +6 -0
  133. package/dist/src/ui/commands/profileCommand.test.js +343 -0
  134. package/dist/src/ui/commands/profileCommand.test.js.map +1 -0
  135. package/dist/src/ui/commands/setCommand.test.d.ts +6 -0
  136. package/dist/src/ui/commands/setCommand.test.js +431 -0
  137. package/dist/src/ui/commands/setCommand.test.js.map +1 -0
  138. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +6 -0
  139. package/dist/src/ui/commands/setupGithubCommand.test.js +69 -0
  140. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -0
  141. package/dist/src/ui/commands/toolformatCommand.test.d.ts +1 -0
  142. package/dist/src/ui/commands/toolformatCommand.test.js +145 -0
  143. package/dist/src/ui/commands/toolformatCommand.test.js.map +1 -0
  144. package/dist/src/ui/components/AuthDialog.js +1 -1
  145. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  146. package/dist/src/ui/components/AuthDialog.test.d.ts +6 -0
  147. package/dist/src/ui/components/AuthDialog.test.js +252 -0
  148. package/dist/src/ui/components/AuthDialog.test.js.map +1 -0
  149. package/dist/src/ui/components/ContextIndicator.ui.test.d.ts +1 -0
  150. package/dist/src/ui/components/ContextIndicator.ui.test.js +89 -0
  151. package/dist/src/ui/components/ContextIndicator.ui.test.js.map +1 -0
  152. package/dist/src/ui/components/ContextSummaryDisplay.js +1 -1
  153. package/dist/src/ui/components/ContextUsageDisplay.semantic.test.d.ts +6 -0
  154. package/dist/src/ui/components/ContextUsageDisplay.semantic.test.js +75 -0
  155. package/dist/src/ui/components/ContextUsageDisplay.semantic.test.js.map +1 -0
  156. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +6 -0
  157. package/dist/src/ui/components/FolderTrustDialog.test.js +26 -0
  158. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -0
  159. package/dist/src/ui/components/Footer.d.ts +1 -0
  160. package/dist/src/ui/components/Footer.js +2 -2
  161. package/dist/src/ui/components/Footer.js.map +1 -1
  162. package/dist/src/ui/components/Footer.responsive.test.d.ts +6 -0
  163. package/dist/src/ui/components/Footer.responsive.test.js +262 -0
  164. package/dist/src/ui/components/Footer.responsive.test.js.map +1 -0
  165. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
  166. package/dist/src/ui/components/HistoryItemDisplay.test.js +92 -0
  167. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
  168. package/dist/src/ui/components/InputPrompt.paste.test.d.ts +6 -0
  169. package/dist/src/ui/components/InputPrompt.paste.test.js +263 -0
  170. package/dist/src/ui/components/InputPrompt.paste.test.js.map +1 -0
  171. package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
  172. package/dist/src/ui/components/LoadingIndicator.test.js +149 -0
  173. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
  174. package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.d.ts +6 -0
  175. package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.js +127 -0
  176. package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.js.map +1 -0
  177. package/dist/src/ui/components/ProviderDialog.responsive.test.d.ts +6 -0
  178. package/dist/src/ui/components/ProviderDialog.responsive.test.js +153 -0
  179. package/dist/src/ui/components/ProviderDialog.responsive.test.js.map +1 -0
  180. package/dist/src/ui/components/ProviderModelDialog.responsive.test.d.ts +6 -0
  181. package/dist/src/ui/components/ProviderModelDialog.responsive.test.js +252 -0
  182. package/dist/src/ui/components/ProviderModelDialog.responsive.test.js.map +1 -0
  183. package/dist/src/ui/components/ProviderModelDialog.test.d.ts +6 -0
  184. package/dist/src/ui/components/ProviderModelDialog.test.js +197 -0
  185. package/dist/src/ui/components/ProviderModelDialog.test.js.map +1 -0
  186. package/dist/src/ui/components/SettingsDialog.test.d.ts +6 -0
  187. package/dist/src/ui/components/SettingsDialog.test.js +555 -0
  188. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -0
  189. package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +6 -0
  190. package/dist/src/ui/components/ShellConfirmationDialog.test.js +40 -0
  191. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -0
  192. package/dist/src/ui/components/TodoPanel.responsive.test.d.ts +6 -0
  193. package/dist/src/ui/components/TodoPanel.responsive.test.js +221 -0
  194. package/dist/src/ui/components/TodoPanel.responsive.test.js.map +1 -0
  195. package/dist/src/ui/components/TodoPanel.semantic.test.d.ts +6 -0
  196. package/dist/src/ui/components/TodoPanel.semantic.test.js +137 -0
  197. package/dist/src/ui/components/TodoPanel.semantic.test.js.map +1 -0
  198. package/dist/src/ui/components/__tests__/LayoutManager.test.d.ts +6 -0
  199. package/dist/src/ui/components/__tests__/LayoutManager.test.js +94 -0
  200. package/dist/src/ui/components/__tests__/LayoutManager.test.js.map +1 -0
  201. package/dist/src/ui/components/messages/DiffRenderer.js +9 -7
  202. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  203. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
  204. package/dist/src/ui/components/messages/DiffRenderer.test.js +239 -0
  205. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
  206. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +13 -4
  207. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  208. package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.d.ts +6 -0
  209. package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.js +172 -0
  210. package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.js.map +1 -0
  211. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
  212. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +37 -0
  213. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
  214. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
  215. package/dist/src/ui/components/messages/ToolMessage.test.js +118 -0
  216. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
  217. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
  218. package/dist/src/ui/components/shared/MaxSizedBox.test.js +154 -0
  219. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
  220. package/dist/src/ui/components/shared/RadioButtonSelect.js +1 -1
  221. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  222. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +6 -0
  223. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +112 -0
  224. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -0
  225. package/dist/src/ui/containers/SessionController.test.d.ts +6 -0
  226. package/dist/src/ui/containers/SessionController.test.js +440 -0
  227. package/dist/src/ui/containers/SessionController.test.js.map +1 -0
  228. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +6 -0
  229. package/dist/src/ui/hooks/atCommandProcessor.test.js +830 -0
  230. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -0
  231. package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +6 -0
  232. package/dist/src/ui/hooks/shellCommandProcessor.test.js +328 -0
  233. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -0
  234. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +6 -0
  235. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +191 -0
  236. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -0
  237. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +6 -0
  238. package/dist/src/ui/hooks/useEditorSettings.test.js +221 -0
  239. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -0
  240. package/dist/src/ui/hooks/useGeminiStream.integration.test.d.ts +6 -0
  241. package/dist/src/ui/hooks/useGeminiStream.integration.test.js +800 -0
  242. package/dist/src/ui/hooks/useGeminiStream.integration.test.js.map +1 -0
  243. package/dist/src/ui/hooks/useGeminiStream.js +12 -47
  244. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  245. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +6 -0
  246. package/dist/src/ui/hooks/useGitBranchName.test.js +170 -0
  247. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -0
  248. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +6 -0
  249. package/dist/src/ui/hooks/useHistoryManager.test.js +171 -0
  250. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -0
  251. package/dist/src/ui/hooks/useInputHistory.test.d.ts +6 -0
  252. package/dist/src/ui/hooks/useInputHistory.test.js +207 -0
  253. package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -0
  254. package/dist/src/ui/hooks/useKeypress.test.d.ts +6 -0
  255. package/dist/src/ui/hooks/useKeypress.test.js +171 -0
  256. package/dist/src/ui/hooks/useKeypress.test.js.map +1 -0
  257. package/dist/src/ui/hooks/useResponsive.test.d.ts +6 -0
  258. package/dist/src/ui/hooks/useResponsive.test.js +124 -0
  259. package/dist/src/ui/hooks/useResponsive.test.js.map +1 -0
  260. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +6 -0
  261. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +163 -0
  262. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -0
  263. package/dist/src/ui/hooks/useShellHistory.test.d.ts +6 -0
  264. package/dist/src/ui/hooks/useShellHistory.test.js +162 -0
  265. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -0
  266. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +6 -0
  267. package/dist/src/ui/hooks/useSlashCompletion.test.js +929 -0
  268. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -0
  269. package/dist/src/ui/hooks/useStableCallback.test.d.ts +6 -0
  270. package/dist/src/ui/hooks/useStableCallback.test.js +57 -0
  271. package/dist/src/ui/hooks/useStableCallback.test.js.map +1 -0
  272. package/dist/src/ui/keyMatchers.test.d.ts +6 -0
  273. package/dist/src/ui/keyMatchers.test.js +276 -0
  274. package/dist/src/ui/keyMatchers.test.js.map +1 -0
  275. package/dist/src/ui/reducers/appReducer.test.d.ts +6 -0
  276. package/dist/src/ui/reducers/appReducer.test.js +519 -0
  277. package/dist/src/ui/reducers/appReducer.test.js.map +1 -0
  278. package/dist/src/ui/themes/color-utils.test.d.ts +6 -0
  279. package/dist/src/ui/themes/color-utils.test.js +197 -0
  280. package/dist/src/ui/themes/color-utils.test.js.map +1 -0
  281. package/dist/src/ui/themes/semantic-resolver.test.d.ts +6 -0
  282. package/dist/src/ui/themes/semantic-resolver.test.js +210 -0
  283. package/dist/src/ui/themes/semantic-resolver.test.js.map +1 -0
  284. package/dist/src/ui/themes/semantic-tokens.test.d.ts +6 -0
  285. package/dist/src/ui/themes/semantic-tokens.test.js +272 -0
  286. package/dist/src/ui/themes/semantic-tokens.test.js.map +1 -0
  287. package/dist/src/ui/themes/theme-manager.test.d.ts +6 -0
  288. package/dist/src/ui/themes/theme-manager.test.js +151 -0
  289. package/dist/src/ui/themes/theme-manager.test.js.map +1 -0
  290. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
  291. package/dist/src/ui/utils/MarkdownDisplay.test.js +151 -0
  292. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
  293. package/dist/src/ui/utils/clipboardUtils.test.d.ts +6 -0
  294. package/dist/src/ui/utils/clipboardUtils.test.js +65 -0
  295. package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -0
  296. package/dist/src/ui/utils/commandUtils.test.d.ts +6 -0
  297. package/dist/src/ui/utils/commandUtils.test.js +294 -0
  298. package/dist/src/ui/utils/commandUtils.test.js.map +1 -0
  299. package/dist/src/ui/utils/displayUtils.test.d.ts +6 -0
  300. package/dist/src/ui/utils/displayUtils.test.js +42 -0
  301. package/dist/src/ui/utils/displayUtils.test.js.map +1 -0
  302. package/dist/src/ui/utils/formatters.test.d.ts +6 -0
  303. package/dist/src/ui/utils/formatters.test.js +56 -0
  304. package/dist/src/ui/utils/formatters.test.js.map +1 -0
  305. package/dist/src/ui/utils/markdownUtilities.test.d.ts +6 -0
  306. package/dist/src/ui/utils/markdownUtilities.test.js +42 -0
  307. package/dist/src/ui/utils/markdownUtilities.test.js.map +1 -0
  308. package/dist/src/ui/utils/responsive.test.d.ts +6 -0
  309. package/dist/src/ui/utils/responsive.test.js +107 -0
  310. package/dist/src/ui/utils/responsive.test.js.map +1 -0
  311. package/dist/src/ui/utils/secureInputHandler.test.d.ts +6 -0
  312. package/dist/src/ui/utils/secureInputHandler.test.js +274 -0
  313. package/dist/src/ui/utils/secureInputHandler.test.js.map +1 -0
  314. package/dist/src/ui/utils/updateCheck.test.d.ts +6 -0
  315. package/dist/src/ui/utils/updateCheck.test.js +202 -0
  316. package/dist/src/ui/utils/updateCheck.test.js.map +1 -0
  317. package/dist/src/utils/ConversationContext.test.d.ts +6 -0
  318. package/dist/src/utils/ConversationContext.test.js +64 -0
  319. package/dist/src/utils/ConversationContext.test.js.map +1 -0
  320. package/dist/src/utils/gitUtils.test.d.ts +6 -0
  321. package/dist/src/utils/gitUtils.test.js +113 -0
  322. package/dist/src/utils/gitUtils.test.js.map +1 -0
  323. package/dist/src/utils/installationInfo.test.d.ts +6 -0
  324. package/dist/src/utils/installationInfo.test.js +242 -0
  325. package/dist/src/utils/installationInfo.test.js.map +1 -0
  326. package/dist/src/utils/privacy/ConversationDataRedactor.test.d.ts +6 -0
  327. package/dist/src/utils/privacy/ConversationDataRedactor.test.js +463 -0
  328. package/dist/src/utils/privacy/ConversationDataRedactor.test.js.map +1 -0
  329. package/dist/src/utils/readStdin.js +10 -0
  330. package/dist/src/utils/readStdin.js.map +1 -1
  331. package/dist/src/utils/sandbox.js +2 -2
  332. package/dist/src/utils/sandbox.js.map +1 -1
  333. package/dist/src/utils/settingsUtils.test.d.ts +6 -0
  334. package/dist/src/utils/settingsUtils.test.js +514 -0
  335. package/dist/src/utils/settingsUtils.test.js.map +1 -0
  336. package/dist/src/utils/userStartupWarnings.js +2 -2
  337. package/dist/src/utils/userStartupWarnings.test.d.ts +6 -0
  338. package/dist/src/utils/userStartupWarnings.test.js +67 -0
  339. package/dist/src/utils/userStartupWarnings.test.js.map +1 -0
  340. package/dist/tsconfig.tsbuildinfo +1 -1
  341. package/package.json +3 -3
@@ -0,0 +1,531 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
7
+ import { ContentGeneratorRole, } from '@vybestack/llxprt-code-core';
8
+ // Remove unused interface to fix TS6196 error
9
+ // Mock telemetry system
10
+ const telemetrySystem = {
11
+ logConversationRequest: vi.fn(),
12
+ logProviderSwitch: vi.fn(),
13
+ logConversationComplete: vi.fn(),
14
+ };
15
+ // Test helper functions
16
+ function createMockProvider(name, capabilities) {
17
+ const defaultCapabilities = { streaming: true, tools: true, ...capabilities };
18
+ return {
19
+ name,
20
+ getModels: vi.fn().mockResolvedValue([
21
+ {
22
+ id: `${name}-model-1`,
23
+ name: `${name.charAt(0).toUpperCase() + name.slice(1)} Model 1`,
24
+ },
25
+ ]),
26
+ async *generateChatCompletion(_messages, _tools) {
27
+ // Simulate provider-specific response patterns
28
+ if (name === 'openai') {
29
+ yield {
30
+ content: 'OpenAI response chunk 1',
31
+ role: ContentGeneratorRole.ASSISTANT,
32
+ };
33
+ yield { content: ' chunk 2', role: ContentGeneratorRole.ASSISTANT };
34
+ }
35
+ else if (name === 'anthropic') {
36
+ yield {
37
+ content: 'Claude response: I understand your request.',
38
+ role: ContentGeneratorRole.ASSISTANT,
39
+ };
40
+ }
41
+ else if (name === 'gemini') {
42
+ yield {
43
+ content: 'Gemini response with reasoning...',
44
+ role: ContentGeneratorRole.ASSISTANT,
45
+ };
46
+ }
47
+ },
48
+ getServerTools: vi
49
+ .fn()
50
+ .mockReturnValue(defaultCapabilities.tools ? ['search', 'analyze'] : []),
51
+ invokeServerTool: vi
52
+ .fn()
53
+ .mockResolvedValue({ result: `Tool result from ${name}` }),
54
+ setModel: vi.fn(),
55
+ getCurrentModel: vi.fn().mockReturnValue(`${name}-model-1`),
56
+ getDefaultModel: vi.fn().mockReturnValue(`${name}-default`),
57
+ getToolFormat: vi
58
+ .fn()
59
+ .mockReturnValue(name === 'anthropic' ? 'xml' : 'json'),
60
+ };
61
+ }
62
+ async function consumeAsyncIterable(iterable) {
63
+ const results = [];
64
+ for await (const item of iterable) {
65
+ results.push(item);
66
+ }
67
+ return results;
68
+ }
69
+ // Mock implementations for testing
70
+ class MockProviderManager {
71
+ providers = new Map();
72
+ activeProvider = null;
73
+ registerProvider(provider) {
74
+ this.providers.set(provider.name, provider);
75
+ }
76
+ setActiveProvider(name) {
77
+ if (this.providers.has(name)) {
78
+ const oldProvider = this.activeProvider;
79
+ this.activeProvider = name;
80
+ if (oldProvider && oldProvider !== name) {
81
+ telemetrySystem.logProviderSwitch({
82
+ from_provider: oldProvider,
83
+ to_provider: name,
84
+ context_preserved: this.isContextCompatible(oldProvider, name),
85
+ timestamp: new Date().toISOString(),
86
+ });
87
+ }
88
+ }
89
+ }
90
+ getActiveProvider() {
91
+ return this.activeProvider
92
+ ? this.providers.get(this.activeProvider) || null
93
+ : null;
94
+ }
95
+ getProviderNames() {
96
+ return Array.from(this.providers.keys());
97
+ }
98
+ isContextCompatible(from, to) {
99
+ // Simple heuristic for context compatibility
100
+ const compatiblePairs = new Set([
101
+ 'openai-anthropic',
102
+ 'anthropic-openai',
103
+ 'gemini-openai',
104
+ 'openai-gemini',
105
+ ]);
106
+ return compatiblePairs.has(`${from}-${to}`);
107
+ }
108
+ }
109
+ class MockConversationDataRedactor {
110
+ redactMessage(message, _provider) {
111
+ return {
112
+ ...message,
113
+ content: message.content.replace(/sk-[a-zA-Z0-9]{48}/g, '[REDACTED-API-KEY]'),
114
+ };
115
+ }
116
+ redactConversation(messages, provider) {
117
+ return messages.map((msg) => this.redactMessage(msg, provider));
118
+ }
119
+ }
120
+ class MockLoggingProviderWrapper {
121
+ provider;
122
+ redactor;
123
+ storage;
124
+ constructor(provider, _config, redactor, storage) {
125
+ this.provider = provider;
126
+ this.redactor = redactor;
127
+ this.storage = storage;
128
+ }
129
+ async *generateChatCompletion(messages, tools, toolFormat) {
130
+ const conversationId = `conv_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
131
+ // Log conversation request
132
+ const redactedMessages = this.redactor.redactConversation(messages, this.provider.name);
133
+ const logEntry = {
134
+ timestamp: new Date().toISOString(),
135
+ conversation_id: conversationId,
136
+ provider_name: this.provider.name,
137
+ messages: redactedMessages,
138
+ };
139
+ await this.storage.writeConversationEntry(logEntry);
140
+ telemetrySystem.logConversationRequest({
141
+ conversation_id: conversationId,
142
+ provider_name: this.provider.name,
143
+ message_count: messages.length,
144
+ has_tools: Boolean(tools && tools.length > 0),
145
+ });
146
+ // Stream response from wrapped provider
147
+ const responseChunks = [];
148
+ for await (const chunk of this.provider.generateChatCompletion(messages, tools, toolFormat)) {
149
+ responseChunks.push(chunk);
150
+ yield chunk;
151
+ }
152
+ // Log completion
153
+ telemetrySystem.logConversationComplete({
154
+ conversation_id: conversationId,
155
+ provider_name: this.provider.name,
156
+ response_chunks: responseChunks.length,
157
+ });
158
+ }
159
+ getWrappedProvider() {
160
+ return this.provider;
161
+ }
162
+ }
163
+ class MockConversationStorage {
164
+ entries = [];
165
+ async writeConversationEntry(entry) {
166
+ this.entries.push(entry);
167
+ }
168
+ async getLogFiles() {
169
+ return [
170
+ {
171
+ path: '/test/conversations.log',
172
+ size: this.entries.length * 1000, // Estimate
173
+ created: new Date(),
174
+ lastModified: new Date(),
175
+ },
176
+ ];
177
+ }
178
+ getEntries() {
179
+ return this.entries;
180
+ }
181
+ }
182
+ function createConfigWithLogging(enabled) {
183
+ return {
184
+ getConversationLoggingEnabled: () => enabled,
185
+ };
186
+ }
187
+ describe('Multi-Provider Conversation Logging Integration', () => {
188
+ let providerManager;
189
+ let redactor;
190
+ let storage;
191
+ let config;
192
+ beforeEach(() => {
193
+ vi.clearAllMocks();
194
+ providerManager = new MockProviderManager();
195
+ redactor = new MockConversationDataRedactor();
196
+ storage = new MockConversationStorage();
197
+ config = createConfigWithLogging(true);
198
+ });
199
+ /**
200
+ * @requirement INTEGRATION-001: Cross-provider conversation logging
201
+ * @scenario Conversation spans multiple providers
202
+ * @given ProviderManager with OpenAI, Anthropic, and Gemini providers
203
+ * @when User switches between providers during conversation
204
+ * @then Each provider interaction is logged with correct context
205
+ * @and Provider switches are tracked with context preservation info
206
+ */
207
+ it('should log conversations across multiple provider switches', async () => {
208
+ // Register providers
209
+ const openaiProvider = createMockProvider('openai');
210
+ const anthropicProvider = createMockProvider('anthropic');
211
+ const geminiProvider = createMockProvider('gemini');
212
+ providerManager.registerProvider(openaiProvider);
213
+ providerManager.registerProvider(anthropicProvider);
214
+ providerManager.registerProvider(geminiProvider);
215
+ // Wrap each provider with logging
216
+ const openaiWrapper = new MockLoggingProviderWrapper(openaiProvider, config, redactor, storage);
217
+ const anthropicWrapper = new MockLoggingProviderWrapper(anthropicProvider, config, redactor, storage);
218
+ const geminiWrapper = new MockLoggingProviderWrapper(geminiProvider, config, redactor, storage);
219
+ // Simulate conversation flow with provider switches
220
+ providerManager.setActiveProvider('openai');
221
+ await consumeAsyncIterable(openaiWrapper.generateChatCompletion([
222
+ {
223
+ role: ContentGeneratorRole.USER,
224
+ content: 'Explain quantum computing',
225
+ },
226
+ ]));
227
+ providerManager.setActiveProvider('anthropic');
228
+ await consumeAsyncIterable(anthropicWrapper.generateChatCompletion([
229
+ {
230
+ role: ContentGeneratorRole.USER,
231
+ content: 'Continue the explanation with practical applications',
232
+ },
233
+ ]));
234
+ providerManager.setActiveProvider('gemini');
235
+ await consumeAsyncIterable(geminiWrapper.generateChatCompletion([
236
+ {
237
+ role: ContentGeneratorRole.USER,
238
+ content: 'Summarize the key points',
239
+ },
240
+ ]));
241
+ // Verify logging across providers
242
+ const entries = storage.getEntries();
243
+ expect(entries).toHaveLength(3);
244
+ expect(entries.map((e) => e.provider_name)).toEqual([
245
+ 'openai',
246
+ 'anthropic',
247
+ 'gemini',
248
+ ]);
249
+ // Verify provider switches were logged
250
+ expect(telemetrySystem.logProviderSwitch).toHaveBeenCalledTimes(2);
251
+ expect(telemetrySystem.logProviderSwitch).toHaveBeenCalledWith(expect.objectContaining({
252
+ from_provider: 'openai',
253
+ to_provider: 'anthropic',
254
+ }));
255
+ expect(telemetrySystem.logProviderSwitch).toHaveBeenCalledWith(expect.objectContaining({
256
+ from_provider: 'anthropic',
257
+ to_provider: 'gemini',
258
+ }));
259
+ });
260
+ /**
261
+ * @requirement INTEGRATION-002: Tool usage logging across providers
262
+ * @scenario Different providers with different tool formats
263
+ * @given Providers with different tool formats (JSON vs XML)
264
+ * @when Conversations include tool calls
265
+ * @then Tool usage is logged consistently regardless of provider format
266
+ */
267
+ it('should log tool usage consistently across different provider formats', async () => {
268
+ const openaiProvider = createMockProvider('openai', { tools: true });
269
+ const anthropicProvider = createMockProvider('anthropic', { tools: true });
270
+ const openaiWrapper = new MockLoggingProviderWrapper(openaiProvider, config, redactor, storage);
271
+ const anthropicWrapper = new MockLoggingProviderWrapper(anthropicProvider, config, redactor, storage);
272
+ const tools = [
273
+ {
274
+ type: 'function',
275
+ function: {
276
+ name: 'search_web',
277
+ description: 'Search the web for information',
278
+ parameters: {
279
+ type: 'object',
280
+ properties: { query: { type: 'string' } },
281
+ },
282
+ },
283
+ },
284
+ ];
285
+ const messagesWithTools = [
286
+ {
287
+ role: ContentGeneratorRole.USER,
288
+ content: 'Search for information about AI safety',
289
+ tool_calls: [
290
+ {
291
+ id: 'call_1',
292
+ type: 'function',
293
+ function: {
294
+ name: 'search_web',
295
+ arguments: JSON.stringify({ query: 'AI safety research 2024' }),
296
+ },
297
+ },
298
+ ],
299
+ },
300
+ ];
301
+ // Test with OpenAI (JSON format)
302
+ await consumeAsyncIterable(openaiWrapper.generateChatCompletion(messagesWithTools, tools, 'json'));
303
+ // Test with Anthropic (XML format)
304
+ await consumeAsyncIterable(anthropicWrapper.generateChatCompletion(messagesWithTools, tools, 'xml'));
305
+ const entries = storage.getEntries();
306
+ expect(entries).toHaveLength(2);
307
+ // Both entries should have tool calls logged
308
+ entries.forEach((entry) => {
309
+ expect(entry.messages[0].tool_calls).toBeDefined();
310
+ expect(entry.messages[0].tool_calls[0].function.name).toBe('search_web');
311
+ });
312
+ // Verify telemetry includes tool usage
313
+ expect(telemetrySystem.logConversationRequest).toHaveBeenCalledTimes(2);
314
+ expect(telemetrySystem.logConversationRequest).toHaveBeenCalledWith(expect.objectContaining({ has_tools: true }));
315
+ });
316
+ /**
317
+ * @requirement INTEGRATION-003: Streaming response logging
318
+ * @scenario Providers with different streaming patterns
319
+ * @given Providers that stream responses differently
320
+ * @when Streaming conversations are logged
321
+ * @then Complete responses are captured despite streaming differences
322
+ */
323
+ it('should handle different streaming patterns across providers', async () => {
324
+ const fastStreamProvider = createMockProvider('fast-stream');
325
+ const slowStreamProvider = createMockProvider('slow-stream');
326
+ // Override streaming behavior
327
+ fastStreamProvider.generateChatCompletion = vi
328
+ .fn()
329
+ .mockImplementation(async function* () {
330
+ yield { content: 'Fast', role: ContentGeneratorRole.ASSISTANT };
331
+ yield { content: ' response', role: ContentGeneratorRole.ASSISTANT };
332
+ });
333
+ slowStreamProvider.generateChatCompletion = vi
334
+ .fn()
335
+ .mockImplementation(async function* () {
336
+ yield { content: 'Slow', role: ContentGeneratorRole.ASSISTANT };
337
+ await new Promise((resolve) => setTimeout(resolve, 10)); // Simulate slow streaming
338
+ yield { content: ' deliberate', role: ContentGeneratorRole.ASSISTANT };
339
+ yield { content: ' response', role: ContentGeneratorRole.ASSISTANT };
340
+ });
341
+ const fastWrapper = new MockLoggingProviderWrapper(fastStreamProvider, config, redactor, storage);
342
+ const slowWrapper = new MockLoggingProviderWrapper(slowStreamProvider, config, redactor, storage);
343
+ const message = [
344
+ {
345
+ role: ContentGeneratorRole.USER,
346
+ content: 'Tell me about machine learning',
347
+ },
348
+ ];
349
+ // Test fast streaming
350
+ const fastResult = await consumeAsyncIterable(fastWrapper.generateChatCompletion(message));
351
+ // Test slow streaming
352
+ const slowResult = await consumeAsyncIterable(slowWrapper.generateChatCompletion(message));
353
+ expect(fastResult).toHaveLength(2);
354
+ expect(slowResult).toHaveLength(3);
355
+ // Verify both conversations were logged
356
+ const entries = storage.getEntries();
357
+ expect(entries).toHaveLength(2);
358
+ // Verify completion events were logged
359
+ expect(telemetrySystem.logConversationComplete).toHaveBeenCalledTimes(2);
360
+ expect(telemetrySystem.logConversationComplete).toHaveBeenCalledWith(expect.objectContaining({ response_chunks: 2 }));
361
+ expect(telemetrySystem.logConversationComplete).toHaveBeenCalledWith(expect.objectContaining({ response_chunks: 3 }));
362
+ });
363
+ /**
364
+ * @requirement INTEGRATION-004: Error handling across providers
365
+ * @scenario Provider errors during logged conversations
366
+ * @given Providers that may throw errors
367
+ * @when Provider errors occur during logging
368
+ * @then Logging system handles errors gracefully
369
+ * @and Other provider operations continue normally
370
+ */
371
+ it('should handle provider errors gracefully without affecting logging', async () => {
372
+ const reliableProvider = createMockProvider('reliable');
373
+ const errorProvider = createMockProvider('error-prone');
374
+ // Make error provider throw during generation
375
+ errorProvider.generateChatCompletion = vi
376
+ .fn()
377
+ .mockImplementation(async function* () {
378
+ yield {
379
+ content: 'Starting response...',
380
+ role: ContentGeneratorRole.ASSISTANT,
381
+ };
382
+ throw new Error('Provider API error');
383
+ });
384
+ const reliableWrapper = new MockLoggingProviderWrapper(reliableProvider, config, redactor, storage);
385
+ const errorWrapper = new MockLoggingProviderWrapper(errorProvider, config, redactor, storage);
386
+ const message = [
387
+ { role: ContentGeneratorRole.USER, content: 'Test message' },
388
+ ];
389
+ // Test reliable provider first
390
+ await consumeAsyncIterable(reliableWrapper.generateChatCompletion(message));
391
+ // Test error provider (should handle error gracefully)
392
+ try {
393
+ await consumeAsyncIterable(errorWrapper.generateChatCompletion(message));
394
+ }
395
+ catch (error) {
396
+ expect(error).toBeInstanceOf(Error);
397
+ expect(error.message).toBe('Provider API error');
398
+ }
399
+ // Verify that logging occurred even when provider errored
400
+ const entries = storage.getEntries();
401
+ expect(entries.length).toBeGreaterThan(0);
402
+ // Verify that at least the request was logged for error provider
403
+ expect(telemetrySystem.logConversationRequest).toHaveBeenCalledTimes(2);
404
+ });
405
+ /**
406
+ * @requirement INTEGRATION-005: Concurrent provider operations
407
+ * @scenario Multiple providers handling conversations simultaneously
408
+ * @given Multiple wrapped providers operating concurrently
409
+ * @when Concurrent conversations are initiated
410
+ * @then All conversations are logged correctly without interference
411
+ */
412
+ it('should handle concurrent provider operations without logging conflicts', async () => {
413
+ const providers = [
414
+ createMockProvider('concurrent-1'),
415
+ createMockProvider('concurrent-2'),
416
+ createMockProvider('concurrent-3'),
417
+ ];
418
+ const wrappers = providers.map((provider) => new MockLoggingProviderWrapper(provider, config, redactor, storage));
419
+ const messages = [
420
+ { role: ContentGeneratorRole.USER, content: 'Concurrent test message' },
421
+ ];
422
+ // Start all conversations concurrently
423
+ const concurrentOperations = wrappers.map((wrapper) => consumeAsyncIterable(wrapper.generateChatCompletion(messages)));
424
+ const results = await Promise.all(concurrentOperations);
425
+ // Verify all operations completed
426
+ expect(results).toHaveLength(3);
427
+ results.forEach((result) => {
428
+ expect(result.length).toBeGreaterThan(0);
429
+ });
430
+ // Verify all conversations were logged
431
+ const entries = storage.getEntries();
432
+ expect(entries).toHaveLength(3);
433
+ // Verify each provider was logged correctly
434
+ const providerNames = entries.map((e) => e.provider_name).sort();
435
+ expect(providerNames).toEqual([
436
+ 'concurrent-1',
437
+ 'concurrent-2',
438
+ 'concurrent-3',
439
+ ]);
440
+ // Verify telemetry was called for all
441
+ expect(telemetrySystem.logConversationRequest).toHaveBeenCalledTimes(3);
442
+ expect(telemetrySystem.logConversationComplete).toHaveBeenCalledTimes(3);
443
+ });
444
+ /**
445
+ * @requirement INTEGRATION-006: Provider-specific data redaction
446
+ * @scenario Different providers with provider-specific sensitive data
447
+ * @given Providers with different API key formats and sensitive data patterns
448
+ * @when Conversations contain provider-specific sensitive information
449
+ * @then Data is redacted appropriately based on provider context
450
+ */
451
+ it('should apply provider-specific redaction patterns', async () => {
452
+ const providers = [
453
+ createMockProvider('openai'),
454
+ createMockProvider('anthropic'),
455
+ createMockProvider('gemini'),
456
+ ];
457
+ const wrappers = providers.map((provider) => new MockLoggingProviderWrapper(provider, config, redactor, storage));
458
+ const sensitiveMessages = [
459
+ {
460
+ role: ContentGeneratorRole.USER,
461
+ content: 'My OpenAI key is sk-1234567890abcdef1234567890abcdef12345678',
462
+ },
463
+ {
464
+ role: ContentGeneratorRole.USER,
465
+ content: 'My Anthropic key is sk-ant-api03-abcd1234567890',
466
+ },
467
+ {
468
+ role: ContentGeneratorRole.USER,
469
+ content: 'My Google key is AIzaSyAbcd1234567890',
470
+ },
471
+ ];
472
+ // Test each provider with its specific sensitive data
473
+ for (let i = 0; i < wrappers.length; i++) {
474
+ await consumeAsyncIterable(wrappers[i].generateChatCompletion([sensitiveMessages[i]]));
475
+ }
476
+ const entries = storage.getEntries();
477
+ expect(entries).toHaveLength(3);
478
+ // Verify redaction occurred for all providers
479
+ entries.forEach((entry) => {
480
+ expect(entry.messages[0].content).toContain('[REDACTED-API-KEY]');
481
+ expect(entry.messages[0].content).not.toContain('sk-');
482
+ expect(entry.messages[0].content).not.toContain('AIza');
483
+ });
484
+ });
485
+ /**
486
+ * @requirement INTEGRATION-007: Session continuity across providers
487
+ * @scenario Long conversation session with multiple provider switches
488
+ * @given Long conversation with multiple provider switches
489
+ * @when Session continues across provider changes
490
+ * @then Session context is maintained in logging
491
+ * @and Conversation continuity is tracked
492
+ */
493
+ it('should maintain session continuity across provider switches in logging', async () => {
494
+ // Session ID for testing continuity tracking
495
+ // const _sessionId = 'session_' + Date.now(); // Unused for now but may be needed for future session continuity tests
496
+ const providers = ['openai', 'anthropic', 'gemini'].map((name) => createMockProvider(name));
497
+ const wrappers = providers.map((provider) => new MockLoggingProviderWrapper(provider, config, redactor, storage));
498
+ // Simulate conversation progression
499
+ const conversationMessages = [
500
+ {
501
+ role: ContentGeneratorRole.USER,
502
+ content: 'What is machine learning?',
503
+ },
504
+ {
505
+ role: ContentGeneratorRole.USER,
506
+ content: 'Can you give examples?',
507
+ },
508
+ {
509
+ role: ContentGeneratorRole.USER,
510
+ content: 'How about neural networks specifically?',
511
+ },
512
+ ];
513
+ // Use different provider for each message to simulate switching
514
+ for (let i = 0; i < conversationMessages.length; i++) {
515
+ const wrapper = wrappers[i];
516
+ await consumeAsyncIterable(wrapper.generateChatCompletion([conversationMessages[i]]));
517
+ }
518
+ const entries = storage.getEntries();
519
+ expect(entries).toHaveLength(3);
520
+ // Verify conversation progression
521
+ expect(entries[0].provider_name).toBe('openai');
522
+ expect(entries[1].provider_name).toBe('anthropic');
523
+ expect(entries[2].provider_name).toBe('gemini');
524
+ // Verify each conversation has unique conversation_id but could be linked by session
525
+ const conversationIds = entries.map((e) => e.conversation_id);
526
+ expect(new Set(conversationIds).size).toBe(3); // All unique
527
+ // Verify provider switches were tracked
528
+ expect(telemetrySystem.logProviderSwitch).toHaveBeenCalledTimes(2);
529
+ });
530
+ });
531
+ //# sourceMappingURL=multi-provider-logging.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-provider-logging.integration.test.js","sourceRoot":"","sources":["../../../../src/providers/logging/multi-provider-logging.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};