@vybestack/llxprt-code-core 0.1.18-nightly.250811.b0db22c6 → 0.1.18-nightly.250812.12fa8ad2

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 (485) hide show
  1. package/README.md +49 -2
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/auth/anthropic-device-flow.d.ts +53 -0
  6. package/dist/src/auth/anthropic-device-flow.js +208 -0
  7. package/dist/src/auth/anthropic-device-flow.js.map +1 -0
  8. package/dist/src/auth/token-store.js +11 -7
  9. package/dist/src/auth/token-store.js.map +1 -1
  10. package/dist/src/config/config.d.ts +7 -1
  11. package/dist/src/config/config.js +42 -4
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/config/profileManager.d.ts +14 -4
  14. package/dist/src/config/profileManager.js +90 -11
  15. package/dist/src/config/profileManager.js.map +1 -1
  16. package/dist/src/core/contentGenerator.d.ts +2 -1
  17. package/dist/src/core/contentGenerator.js +1 -0
  18. package/dist/src/core/contentGenerator.js.map +1 -1
  19. package/dist/src/index.d.ts +6 -0
  20. package/dist/src/index.js +5 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/providers/BaseProvider.d.ts +51 -0
  23. package/dist/src/providers/BaseProvider.js +136 -1
  24. package/dist/src/providers/BaseProvider.js.map +1 -1
  25. package/dist/src/providers/IProvider.d.ts +1 -0
  26. package/dist/src/providers/LoggingProviderWrapper.d.ts +1 -0
  27. package/dist/src/providers/LoggingProviderWrapper.js +3 -0
  28. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  29. package/dist/src/providers/ProviderManager.d.ts +0 -1
  30. package/dist/src/providers/ProviderManager.js +23 -14
  31. package/dist/src/providers/ProviderManager.js.map +1 -1
  32. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
  33. package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
  34. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  35. package/dist/src/providers/gemini/GeminiProvider.d.ts +4 -0
  36. package/dist/src/providers/gemini/GeminiProvider.js +33 -1
  37. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  38. package/dist/src/providers/openai/OpenAIProvider.d.ts +32 -0
  39. package/dist/src/providers/openai/OpenAIProvider.js +200 -13
  40. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  41. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
  42. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
  43. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
  44. package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
  45. package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
  46. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
  47. package/dist/src/settings/SettingsService.d.ts +32 -0
  48. package/dist/src/settings/SettingsService.js +204 -0
  49. package/dist/src/settings/SettingsService.js.map +1 -0
  50. package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
  51. package/dist/src/settings/settingsServiceInstance.js +24 -0
  52. package/dist/src/settings/settingsServiceInstance.js.map +1 -0
  53. package/dist/src/settings/types.d.ts +141 -0
  54. package/dist/src/settings/types.js +5 -0
  55. package/dist/src/settings/types.js.map +1 -0
  56. package/package.json +4 -2
  57. package/dist/src/auth/auth-integration.spec.d.ts +0 -6
  58. package/dist/src/auth/auth-integration.spec.js +0 -384
  59. package/dist/src/auth/auth-integration.spec.js.map +0 -1
  60. package/dist/src/auth/precedence.test.d.ts +0 -6
  61. package/dist/src/auth/precedence.test.js +0 -374
  62. package/dist/src/auth/precedence.test.js.map +0 -1
  63. package/dist/src/auth/qwen-device-flow.spec.d.ts +0 -6
  64. package/dist/src/auth/qwen-device-flow.spec.js +0 -793
  65. package/dist/src/auth/qwen-device-flow.spec.js.map +0 -1
  66. package/dist/src/auth/token-store.spec.d.ts +0 -6
  67. package/dist/src/auth/token-store.spec.js +0 -405
  68. package/dist/src/auth/token-store.spec.js.map +0 -1
  69. package/dist/src/code_assist/converter.test.d.ts +0 -6
  70. package/dist/src/code_assist/converter.test.js +0 -279
  71. package/dist/src/code_assist/converter.test.js.map +0 -1
  72. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  73. package/dist/src/code_assist/oauth2.test.js +0 -370
  74. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  75. package/dist/src/code_assist/server.test.d.ts +0 -6
  76. package/dist/src/code_assist/server.test.js +0 -134
  77. package/dist/src/code_assist/server.test.js.map +0 -1
  78. package/dist/src/code_assist/setup.test.d.ts +0 -6
  79. package/dist/src/code_assist/setup.test.js +0 -65
  80. package/dist/src/code_assist/setup.test.js.map +0 -1
  81. package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
  82. package/dist/src/config/config.alwaysAllow.test.js +0 -84
  83. package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
  84. package/dist/src/config/config.ephemeral.test.d.ts +0 -6
  85. package/dist/src/config/config.ephemeral.test.js +0 -152
  86. package/dist/src/config/config.ephemeral.test.js.map +0 -1
  87. package/dist/src/config/config.test.d.ts +0 -6
  88. package/dist/src/config/config.test.js +0 -369
  89. package/dist/src/config/config.test.js.map +0 -1
  90. package/dist/src/config/endpoints.test.d.ts +0 -6
  91. package/dist/src/config/endpoints.test.js +0 -196
  92. package/dist/src/config/endpoints.test.js.map +0 -1
  93. package/dist/src/config/flashFallback.test.d.ts +0 -6
  94. package/dist/src/config/flashFallback.test.js +0 -91
  95. package/dist/src/config/flashFallback.test.js.map +0 -1
  96. package/dist/src/core/client.test.d.ts +0 -6
  97. package/dist/src/core/client.test.js +0 -1323
  98. package/dist/src/core/client.test.js.map +0 -1
  99. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  100. package/dist/src/core/contentGenerator.test.js +0 -103
  101. package/dist/src/core/contentGenerator.test.js.map +0 -1
  102. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  103. package/dist/src/core/coreToolScheduler.test.js +0 -637
  104. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  105. package/dist/src/core/geminiChat.test.d.ts +0 -6
  106. package/dist/src/core/geminiChat.test.js +0 -425
  107. package/dist/src/core/geminiChat.test.js.map +0 -1
  108. package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
  109. package/dist/src/core/googleGenAIWrapper.test.js +0 -104
  110. package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
  111. package/dist/src/core/logger.test.d.ts +0 -6
  112. package/dist/src/core/logger.test.js +0 -467
  113. package/dist/src/core/logger.test.js.map +0 -1
  114. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
  115. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
  116. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
  117. package/dist/src/core/prompts-async.test.d.ts +0 -6
  118. package/dist/src/core/prompts-async.test.js +0 -115
  119. package/dist/src/core/prompts-async.test.js.map +0 -1
  120. package/dist/src/core/prompts.test.d.ts +0 -6
  121. package/dist/src/core/prompts.test.js +0 -68
  122. package/dist/src/core/prompts.test.js.map +0 -1
  123. package/dist/src/core/subagent.test.d.ts +0 -6
  124. package/dist/src/core/subagent.test.js +0 -510
  125. package/dist/src/core/subagent.test.js.map +0 -1
  126. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  127. package/dist/src/core/tokenLimits.test.js +0 -66
  128. package/dist/src/core/tokenLimits.test.js.map +0 -1
  129. package/dist/src/core/turn.test.d.ts +0 -6
  130. package/dist/src/core/turn.test.js +0 -366
  131. package/dist/src/core/turn.test.js.map +0 -1
  132. package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
  133. package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
  134. package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
  135. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  136. package/dist/src/ide/ide-installer.test.js +0 -55
  137. package/dist/src/ide/ide-installer.test.js.map +0 -1
  138. package/dist/src/ide/ideContext.test.d.ts +0 -6
  139. package/dist/src/ide/ideContext.test.js +0 -265
  140. package/dist/src/ide/ideContext.test.js.map +0 -1
  141. package/dist/src/index.test.d.ts +0 -6
  142. package/dist/src/index.test.js +0 -12
  143. package/dist/src/index.test.js.map +0 -1
  144. package/dist/src/integration-tests/oauth-integration.spec.d.ts +0 -6
  145. package/dist/src/integration-tests/oauth-integration.spec.js +0 -518
  146. package/dist/src/integration-tests/oauth-integration.spec.js.map +0 -1
  147. package/dist/src/integration-tests/oauth-simple-test.spec.d.ts +0 -1
  148. package/dist/src/integration-tests/oauth-simple-test.spec.js +0 -88
  149. package/dist/src/integration-tests/oauth-simple-test.spec.js.map +0 -1
  150. package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
  151. package/dist/src/integration-tests/todo-system.test.js +0 -46
  152. package/dist/src/integration-tests/todo-system.test.js.map +0 -1
  153. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  154. package/dist/src/mcp/google-auth-provider.test.js +0 -54
  155. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  156. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  157. package/dist/src/mcp/oauth-provider.test.js +0 -602
  158. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  159. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  160. package/dist/src/mcp/oauth-token-storage.test.js +0 -205
  161. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  162. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  163. package/dist/src/mcp/oauth-utils.test.js +0 -144
  164. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  165. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
  166. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
  167. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
  168. package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
  169. package/dist/src/parsers/TextToolCallParser.test.js +0 -225
  170. package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
  171. package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
  172. package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
  173. package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
  174. package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
  175. package/dist/src/prompt-config/prompt-cache.test.js +0 -437
  176. package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
  177. package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
  178. package/dist/src/prompt-config/prompt-installer.test.js +0 -503
  179. package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
  180. package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
  181. package/dist/src/prompt-config/prompt-loader.test.js +0 -413
  182. package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
  183. package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
  184. package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
  185. package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
  186. package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
  187. package/dist/src/prompt-config/prompt-service.test.js +0 -811
  188. package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
  189. package/dist/src/providers/BaseProvider.test.d.ts +0 -6
  190. package/dist/src/providers/BaseProvider.test.js +0 -472
  191. package/dist/src/providers/BaseProvider.test.js.map +0 -1
  192. package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
  193. package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
  194. package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
  195. package/dist/src/providers/ProviderManager.test.d.ts +0 -6
  196. package/dist/src/providers/ProviderManager.test.js +0 -284
  197. package/dist/src/providers/ProviderManager.test.js.map +0 -1
  198. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
  199. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
  200. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
  201. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
  202. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
  203. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
  204. package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
  205. package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
  206. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
  207. package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
  208. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
  209. package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
  210. package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
  211. package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
  212. package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
  213. package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
  214. package/dist/src/providers/integration/multi-provider.integration.test.js +0 -308
  215. package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
  216. package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
  217. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
  218. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
  219. package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
  220. package/dist/src/providers/openai/ConversationCache.test.js +0 -113
  221. package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
  222. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
  223. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
  224. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
  225. package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
  226. package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
  227. package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
  228. package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
  229. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
  230. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
  231. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
  232. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
  233. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
  234. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
  235. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
  236. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
  237. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
  238. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
  239. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
  240. package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
  241. package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
  242. package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
  243. package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
  244. package/dist/src/providers/openai/OpenAIProvider.test.js +0 -621
  245. package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
  246. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
  247. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
  248. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
  249. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
  250. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
  251. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
  252. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
  253. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
  254. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
  255. package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
  256. package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
  257. package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
  258. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
  259. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
  260. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
  261. package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
  262. package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
  263. package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
  264. package/dist/src/providers/openai/openai-oauth.spec.d.ts +0 -16
  265. package/dist/src/providers/openai/openai-oauth.spec.js +0 -544
  266. package/dist/src/providers/openai/openai-oauth.spec.js.map +0 -1
  267. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
  268. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
  269. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
  270. package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
  271. package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
  272. package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
  273. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  274. package/dist/src/services/fileDiscoveryService.test.js +0 -143
  275. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  276. package/dist/src/services/gitService.test.d.ts +0 -6
  277. package/dist/src/services/gitService.test.js +0 -209
  278. package/dist/src/services/gitService.test.js.map +0 -1
  279. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  280. package/dist/src/services/loopDetectionService.test.js +0 -484
  281. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  282. package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
  283. package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
  284. package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
  285. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  286. package/dist/src/services/shellExecutionService.test.js +0 -272
  287. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  288. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
  289. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
  290. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
  291. package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
  292. package/dist/src/services/shellExecutionService.windows.test.js +0 -79
  293. package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
  294. package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
  295. package/dist/src/services/tool-call-tracker-service.test.js +0 -99
  296. package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
  297. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -6
  298. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -187
  299. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
  300. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  301. package/dist/src/telemetry/loggers.test.js +0 -573
  302. package/dist/src/telemetry/loggers.test.js.map +0 -1
  303. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  304. package/dist/src/telemetry/metrics.test.js +0 -212
  305. package/dist/src/telemetry/metrics.test.js.map +0 -1
  306. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  307. package/dist/src/telemetry/telemetry.test.js +0 -54
  308. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  309. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  310. package/dist/src/telemetry/uiTelemetry.test.js +0 -518
  311. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  312. package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
  313. package/dist/src/tools/ToolFormatter.test.js +0 -349
  314. package/dist/src/tools/ToolFormatter.test.js.map +0 -1
  315. package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
  316. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
  317. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
  318. package/dist/src/tools/diffOptions.test.d.ts +0 -6
  319. package/dist/src/tools/diffOptions.test.js +0 -119
  320. package/dist/src/tools/diffOptions.test.js.map +0 -1
  321. package/dist/src/tools/edit.test.d.ts +0 -6
  322. package/dist/src/tools/edit.test.js +0 -689
  323. package/dist/src/tools/edit.test.js.map +0 -1
  324. package/dist/src/tools/glob.test.d.ts +0 -6
  325. package/dist/src/tools/glob.test.js +0 -332
  326. package/dist/src/tools/glob.test.js.map +0 -1
  327. package/dist/src/tools/grep.test.d.ts +0 -6
  328. package/dist/src/tools/grep.test.js +0 -272
  329. package/dist/src/tools/grep.test.js.map +0 -1
  330. package/dist/src/tools/ls.test.d.ts +0 -6
  331. package/dist/src/tools/ls.test.js +0 -357
  332. package/dist/src/tools/ls.test.js.map +0 -1
  333. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  334. package/dist/src/tools/mcp-client.test.js +0 -617
  335. package/dist/src/tools/mcp-client.test.js.map +0 -1
  336. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  337. package/dist/src/tools/mcp-tool.test.js +0 -501
  338. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  339. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  340. package/dist/src/tools/memoryTool.test.js +0 -266
  341. package/dist/src/tools/memoryTool.test.js.map +0 -1
  342. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  343. package/dist/src/tools/modifiable-tool.test.js +0 -193
  344. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  345. package/dist/src/tools/read-file.test.d.ts +0 -6
  346. package/dist/src/tools/read-file.test.js +0 -319
  347. package/dist/src/tools/read-file.test.js.map +0 -1
  348. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  349. package/dist/src/tools/read-many-files.test.js +0 -644
  350. package/dist/src/tools/read-many-files.test.js.map +0 -1
  351. package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
  352. package/dist/src/tools/shell.multibyte.test.js +0 -75
  353. package/dist/src/tools/shell.multibyte.test.js.map +0 -1
  354. package/dist/src/tools/shell.test.d.ts +0 -6
  355. package/dist/src/tools/shell.test.js +0 -367
  356. package/dist/src/tools/shell.test.js.map +0 -1
  357. package/dist/src/tools/todo-pause.spec.d.ts +0 -6
  358. package/dist/src/tools/todo-pause.spec.js +0 -287
  359. package/dist/src/tools/todo-pause.spec.js.map +0 -1
  360. package/dist/src/tools/todo-read.test.d.ts +0 -6
  361. package/dist/src/tools/todo-read.test.js +0 -162
  362. package/dist/src/tools/todo-read.test.js.map +0 -1
  363. package/dist/src/tools/todo-schemas.test.d.ts +0 -6
  364. package/dist/src/tools/todo-schemas.test.js +0 -341
  365. package/dist/src/tools/todo-schemas.test.js.map +0 -1
  366. package/dist/src/tools/todo-store.test.d.ts +0 -6
  367. package/dist/src/tools/todo-store.test.js +0 -169
  368. package/dist/src/tools/todo-store.test.js.map +0 -1
  369. package/dist/src/tools/todo-write.test.d.ts +0 -6
  370. package/dist/src/tools/todo-write.test.js +0 -226
  371. package/dist/src/tools/todo-write.test.js.map +0 -1
  372. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  373. package/dist/src/tools/tool-registry.test.js +0 -468
  374. package/dist/src/tools/tool-registry.test.js.map +0 -1
  375. package/dist/src/tools/tools.test.d.ts +0 -6
  376. package/dist/src/tools/tools.test.js +0 -117
  377. package/dist/src/tools/tools.test.js.map +0 -1
  378. package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
  379. package/dist/src/tools/web-fetch.integration.test.js +0 -532
  380. package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
  381. package/dist/src/tools/web-search.test.d.ts +0 -6
  382. package/dist/src/tools/web-search.test.js +0 -230
  383. package/dist/src/tools/web-search.test.js.map +0 -1
  384. package/dist/src/tools/write-file.test.d.ts +0 -6
  385. package/dist/src/tools/write-file.test.js +0 -465
  386. package/dist/src/tools/write-file.test.js.map +0 -1
  387. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  388. package/dist/src/utils/bfsFileSearch.test.js +0 -191
  389. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  390. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  391. package/dist/src/utils/editCorrector.test.js +0 -564
  392. package/dist/src/utils/editCorrector.test.js.map +0 -1
  393. package/dist/src/utils/editor.test.d.ts +0 -6
  394. package/dist/src/utils/editor.test.js +0 -445
  395. package/dist/src/utils/editor.test.js.map +0 -1
  396. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  397. package/dist/src/utils/environmentContext.test.js +0 -139
  398. package/dist/src/utils/environmentContext.test.js.map +0 -1
  399. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  400. package/dist/src/utils/errorReporting.test.js +0 -130
  401. package/dist/src/utils/errorReporting.test.js.map +0 -1
  402. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  403. package/dist/src/utils/fileUtils.test.js +0 -363
  404. package/dist/src/utils/fileUtils.test.js.map +0 -1
  405. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  406. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  407. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  408. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  409. package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
  410. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  411. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  412. package/dist/src/utils/filesearch/ignore.test.js +0 -57
  413. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  414. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  415. package/dist/src/utils/filesearch/result-cache.test.js +0 -47
  416. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  417. package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
  418. package/dist/src/utils/flashFallback.integration.test.js +0 -120
  419. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  420. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  421. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
  422. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  423. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  424. package/dist/src/utils/getFolderStructure.test.js +0 -282
  425. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  426. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  427. package/dist/src/utils/gitIgnoreParser.test.js +0 -154
  428. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  429. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  430. package/dist/src/utils/memoryDiscovery.test.js +0 -181
  431. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  432. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  433. package/dist/src/utils/memoryImportProcessor.test.js +0 -715
  434. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  435. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  436. package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
  437. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  438. package/dist/src/utils/partUtils.test.d.ts +0 -6
  439. package/dist/src/utils/partUtils.test.js +0 -130
  440. package/dist/src/utils/partUtils.test.js.map +0 -1
  441. package/dist/src/utils/paths.test.d.ts +0 -6
  442. package/dist/src/utils/paths.test.js +0 -153
  443. package/dist/src/utils/paths.test.js.map +0 -1
  444. package/dist/src/utils/retry.test.d.ts +0 -6
  445. package/dist/src/utils/retry.test.js +0 -322
  446. package/dist/src/utils/retry.test.js.map +0 -1
  447. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  448. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  449. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  450. package/dist/src/utils/sanitization.test.d.ts +0 -6
  451. package/dist/src/utils/sanitization.test.js +0 -81
  452. package/dist/src/utils/sanitization.test.js.map +0 -1
  453. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  454. package/dist/src/utils/schemaValidator.test.js +0 -146
  455. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  456. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  457. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  458. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  459. package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
  460. package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
  461. package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
  462. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  463. package/dist/src/utils/shell-utils.test.js +0 -200
  464. package/dist/src/utils/shell-utils.test.js.map +0 -1
  465. package/dist/src/utils/summarizer.test.d.ts +0 -6
  466. package/dist/src/utils/summarizer.test.js +0 -131
  467. package/dist/src/utils/summarizer.test.js.map +0 -1
  468. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  469. package/dist/src/utils/systemEncoding.test.js +0 -368
  470. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  471. package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
  472. package/dist/src/utils/toolOutputLimiter.test.js +0 -164
  473. package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
  474. package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
  475. package/dist/src/utils/unicodeUtils.test.js +0 -120
  476. package/dist/src/utils/unicodeUtils.test.js.map +0 -1
  477. package/dist/src/utils/user_account.test.d.ts +0 -6
  478. package/dist/src/utils/user_account.test.js +0 -153
  479. package/dist/src/utils/user_account.test.js.map +0 -1
  480. package/dist/src/utils/user_id.test.d.ts +0 -6
  481. package/dist/src/utils/user_id.test.js +0 -21
  482. package/dist/src/utils/user_id.test.js.map +0 -1
  483. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  484. package/dist/src/utils/workspaceContext.test.js +0 -209
  485. package/dist/src/utils/workspaceContext.test.js.map +0 -1
@@ -1,2 +1,2 @@
1
- export declare const RESPONSES_API_MODELS: readonly ["gpt-4o", "gpt-4o-mini", "gpt-4o-realtime", "gpt-4-turbo", "gpt-4-turbo-preview", "o3-pro", "o3", "o3-mini", "o1", "o1-mini", "gpt-4.1"];
1
+ export declare const RESPONSES_API_MODELS: readonly ["gpt-5", "gpt-4o", "gpt-4o-mini", "gpt-4o-realtime", "gpt-4-turbo", "gpt-4-turbo-preview", "o3-pro", "o3", "o3-mini", "o1", "o1-mini", "gpt-4.1"];
2
2
  export type ResponsesApiModel = (typeof RESPONSES_API_MODELS)[number];
@@ -1,4 +1,5 @@
1
1
  export const RESPONSES_API_MODELS = [
2
+ 'gpt-5',
2
3
  'gpt-4o',
3
4
  'gpt-4o-mini',
4
5
  'gpt-4o-realtime',
@@ -1 +1 @@
1
- {"version":3,"file":"RESPONSES_API_MODELS.js","sourceRoot":"","sources":["../../../../src/providers/openai/RESPONSES_API_MODELS.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,qBAAqB;IACrB,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,SAAS;IACT,SAAS;CACD,CAAC"}
1
+ {"version":3,"file":"RESPONSES_API_MODELS.js","sourceRoot":"","sources":["../../../../src/providers/openai/RESPONSES_API_MODELS.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO;IACP,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,qBAAqB;IACrB,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,SAAS;IACT,SAAS;CACD,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { IMessage } from '../../index.js';
7
+ /**
8
+ * Interface for cancelled tool information
9
+ */
10
+ export interface CancelledToolInfo {
11
+ toolCallId: string;
12
+ toolName?: string;
13
+ timestamp?: string;
14
+ }
15
+ /**
16
+ * Creates synthetic tool responses for cancelled tool calls to maintain
17
+ * API compliance with OpenAI's Responses format requirements.
18
+ *
19
+ * The OpenAI API requires that every tool_call in an assistant message
20
+ * must have a corresponding tool message with matching tool_call_id.
21
+ * When tools are cancelled (e.g., via ESC key), we need to create
22
+ * synthetic responses to satisfy this requirement.
23
+ */
24
+ export declare class SyntheticToolResponseHandler {
25
+ /**
26
+ * Creates synthetic tool responses for cancelled tools
27
+ * @param cancelledTools Array of cancelled tool information
28
+ * @returns Array of synthetic tool response messages
29
+ */
30
+ static createSyntheticResponses(cancelledTools: CancelledToolInfo[]): IMessage[];
31
+ /**
32
+ * Identifies tool calls that need synthetic responses by comparing
33
+ * assistant messages with tool_calls against existing tool responses
34
+ * @param messages The conversation history
35
+ * @returns Array of tool call IDs that need synthetic responses
36
+ */
37
+ static identifyMissingToolResponses(messages: IMessage[]): string[];
38
+ /**
39
+ * Patches a message history to include synthetic responses for any
40
+ * tool calls that don't have corresponding tool responses
41
+ * @param messages The original message history
42
+ * @returns Patched message history with synthetic responses added
43
+ */
44
+ static patchMessageHistory(messages: IMessage[]): IMessage[];
45
+ /**
46
+ * Adds a user-facing cancellation notice to the message history
47
+ * @param messages The message history
48
+ * @param cancelledCount Number of tools that were cancelled
49
+ * @returns Message history with cancellation notice added
50
+ */
51
+ static addCancellationNotice(messages: IMessage[], cancelledCount: number): IMessage[];
52
+ }
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ContentGeneratorRole } from '../../index.js';
7
+ /**
8
+ * Creates synthetic tool responses for cancelled tool calls to maintain
9
+ * API compliance with OpenAI's Responses format requirements.
10
+ *
11
+ * The OpenAI API requires that every tool_call in an assistant message
12
+ * must have a corresponding tool message with matching tool_call_id.
13
+ * When tools are cancelled (e.g., via ESC key), we need to create
14
+ * synthetic responses to satisfy this requirement.
15
+ */
16
+ export class SyntheticToolResponseHandler {
17
+ /**
18
+ * Creates synthetic tool responses for cancelled tools
19
+ * @param cancelledTools Array of cancelled tool information
20
+ * @returns Array of synthetic tool response messages
21
+ */
22
+ static createSyntheticResponses(cancelledTools) {
23
+ return cancelledTools.map((tool) => ({
24
+ role: 'tool',
25
+ tool_call_id: tool.toolCallId,
26
+ content: JSON.stringify({
27
+ status: 'cancelled',
28
+ message: 'Tool execution cancelled by user',
29
+ error_type: 'user_interruption',
30
+ tool_name: tool.toolName,
31
+ timestamp: tool.timestamp || new Date().toISOString(),
32
+ }),
33
+ // Mark as synthetic for debugging/filtering
34
+ _synthetic: true,
35
+ _cancelled: true,
36
+ }));
37
+ }
38
+ /**
39
+ * Identifies tool calls that need synthetic responses by comparing
40
+ * assistant messages with tool_calls against existing tool responses
41
+ * @param messages The conversation history
42
+ * @returns Array of tool call IDs that need synthetic responses
43
+ */
44
+ static identifyMissingToolResponses(messages) {
45
+ const toolCallIds = new Set();
46
+ const toolResponseIds = new Set();
47
+ // Collect all tool call IDs from assistant messages
48
+ messages.forEach((msg) => {
49
+ if (msg.role === 'assistant' && msg.tool_calls) {
50
+ msg.tool_calls.forEach((toolCall) => {
51
+ if (toolCall.id) {
52
+ toolCallIds.add(toolCall.id);
53
+ }
54
+ });
55
+ }
56
+ });
57
+ // Collect all tool response IDs
58
+ messages.forEach((msg) => {
59
+ if (msg.role === 'tool' && msg.tool_call_id) {
60
+ toolResponseIds.add(msg.tool_call_id);
61
+ }
62
+ });
63
+ // Find tool calls without responses
64
+ const missingIds = [];
65
+ toolCallIds.forEach((id) => {
66
+ if (!toolResponseIds.has(id)) {
67
+ missingIds.push(id);
68
+ }
69
+ });
70
+ return missingIds;
71
+ }
72
+ /**
73
+ * Patches a message history to include synthetic responses for any
74
+ * tool calls that don't have corresponding tool responses
75
+ * @param messages The original message history
76
+ * @returns Patched message history with synthetic responses added
77
+ */
78
+ static patchMessageHistory(messages) {
79
+ const missingToolIds = this.identifyMissingToolResponses(messages);
80
+ if (missingToolIds.length === 0) {
81
+ return messages;
82
+ }
83
+ // Find the last assistant message with tool calls
84
+ let lastAssistantIndex = -1;
85
+ for (let i = messages.length - 1; i >= 0; i--) {
86
+ if (messages[i].role === 'assistant' && messages[i].tool_calls) {
87
+ lastAssistantIndex = i;
88
+ break;
89
+ }
90
+ }
91
+ if (lastAssistantIndex === -1) {
92
+ return messages;
93
+ }
94
+ // Extract tool names from the assistant message
95
+ const toolNameMap = new Map();
96
+ const assistantMsg = messages[lastAssistantIndex];
97
+ if (assistantMsg.tool_calls) {
98
+ assistantMsg.tool_calls.forEach((toolCall) => {
99
+ if (toolCall.id && toolCall.function?.name) {
100
+ toolNameMap.set(toolCall.id, toolCall.function.name);
101
+ }
102
+ });
103
+ }
104
+ // Create synthetic responses with tool names
105
+ const cancelledTools = missingToolIds.map((id) => ({
106
+ toolCallId: id,
107
+ toolName: toolNameMap.get(id),
108
+ }));
109
+ const syntheticResponses = this.createSyntheticResponses(cancelledTools);
110
+ // Insert synthetic responses right after the assistant message
111
+ const patchedMessages = [...messages];
112
+ patchedMessages.splice(lastAssistantIndex + 1, 0, ...syntheticResponses);
113
+ return patchedMessages;
114
+ }
115
+ /**
116
+ * Adds a user-facing cancellation notice to the message history
117
+ * @param messages The message history
118
+ * @param cancelledCount Number of tools that were cancelled
119
+ * @returns Message history with cancellation notice added
120
+ */
121
+ static addCancellationNotice(messages, cancelledCount) {
122
+ const notice = {
123
+ role: ContentGeneratorRole.ASSISTANT,
124
+ content: `${cancelledCount} tool execution${cancelledCount > 1 ? 's were' : ' was'} cancelled. You can retry specific tools or continue with the conversation.`,
125
+ };
126
+ return [...messages, notice];
127
+ }
128
+ }
129
+ //# sourceMappingURL=syntheticToolResponses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntheticToolResponses.js","sourceRoot":"","sources":["../../../../src/providers/openai/syntheticToolResponses.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWhE;;;;;;;;GAQG;AACH,MAAM,OAAO,4BAA4B;IACvC;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,CAC7B,cAAmC;QAEnC,OAAO,cAAc,CAAC,GAAG,CACvB,CAAC,IAAI,EAAE,EAAE,CACP,CAAC;YACC,IAAI,EAAE,MAAe;YACrB,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,kCAAkC;gBAC3C,UAAU,EAAE,mBAAmB;gBAC/B,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtD,CAAC;YACF,4CAA4C;YAC5C,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAa,CACjB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,4BAA4B,CAAC,QAAoB;QACtD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,oDAAoD;QACpD,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC/C,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAClC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAChB,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gCAAgC;QAChC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC5C,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAoB;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAEnE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,kDAAkD;QAClD,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/D,kBAAkB,GAAG,CAAC,CAAC;gBACvB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC5B,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC3C,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;oBAC3C,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,6CAA6C;QAC7C,MAAM,cAAc,GAAwB,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACtE,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QAEzE,+DAA+D;QAC/D,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QACtC,eAAe,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAEzE,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAC1B,QAAoB,EACpB,cAAsB;QAEtB,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,oBAAoB,CAAC,SAAS;YACpC,OAAO,EAAE,GAAG,cAAc,kBAAkB,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,6EAA6E;SAChK,CAAC;QAEF,OAAO,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import { EventEmitter } from 'events';
2
+ import { ISettingsService, GlobalSettings, ProviderSettings, SettingsChangeEvent, EventListener, EventUnsubscribe, DiagnosticsInfo } from './types.js';
3
+ export declare class SettingsService extends EventEmitter implements ISettingsService {
4
+ private settings;
5
+ private eventEmitter;
6
+ constructor();
7
+ get(key: string): unknown;
8
+ set(key: string, value: unknown): void;
9
+ getProviderSettings(provider: string): Record<string, unknown>;
10
+ setProviderSetting(provider: string, key: string, value: unknown): void;
11
+ clear(): void;
12
+ getAllGlobalSettings(): Record<string, unknown>;
13
+ private getNestedValue;
14
+ private setNestedValue;
15
+ on(event: 'settings_changed', listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
16
+ on(eventName: string | symbol, listener: (...args: unknown[]) => void): this;
17
+ off(event: string, listener: (...args: unknown[]) => void): this;
18
+ getSettings(): Promise<GlobalSettings>;
19
+ getSettings(provider: string): Promise<ProviderSettings>;
20
+ updateSettings(changes: Partial<GlobalSettings>): Promise<void>;
21
+ updateSettings(provider: string, changes: Partial<ProviderSettings>): Promise<void>;
22
+ switchProvider(newProvider: string): Promise<void>;
23
+ exportForProfile(): Promise<{
24
+ defaultProvider: string;
25
+ providers: Record<string, ProviderSettings>;
26
+ }>;
27
+ importFromProfile(profileData: unknown): Promise<void>;
28
+ setCurrentProfileName(profileName: string | null): void;
29
+ getCurrentProfileName(): string | null;
30
+ getDiagnosticsData(): Promise<DiagnosticsInfo>;
31
+ onSettingsChanged(listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
32
+ }
@@ -0,0 +1,204 @@
1
+ import { EventEmitter } from 'events';
2
+ export class SettingsService extends EventEmitter {
3
+ settings;
4
+ eventEmitter;
5
+ constructor() {
6
+ super();
7
+ // Lines 05-14: Initialize in-memory only, no repository parameter
8
+ this.settings = {
9
+ providers: {},
10
+ global: {},
11
+ activeProvider: null,
12
+ };
13
+ this.eventEmitter = new EventEmitter();
14
+ }
15
+ // Lines 16-23: Direct synchronous access to settings object
16
+ get(key) {
17
+ if (key.includes('.')) {
18
+ return this.getNestedValue(this.settings, key);
19
+ }
20
+ return this.settings.global[key];
21
+ }
22
+ // Lines 25-38: Store old value, update in-memory object, emit change event, NO file writes
23
+ set(key, value) {
24
+ const oldValue = this.get(key);
25
+ if (key.includes('.')) {
26
+ this.setNestedValue(this.settings, key, value);
27
+ }
28
+ else {
29
+ this.settings.global[key] = value;
30
+ }
31
+ this.eventEmitter.emit('change', {
32
+ key,
33
+ oldValue,
34
+ newValue: value,
35
+ });
36
+ }
37
+ // Lines 40-54: Provider-specific methods - direct manipulation of settings.providers
38
+ getProviderSettings(provider) {
39
+ return this.settings.providers[provider] || {};
40
+ }
41
+ setProviderSetting(provider, key, value) {
42
+ if (!this.settings.providers[provider]) {
43
+ this.settings.providers[provider] = {};
44
+ }
45
+ const oldValue = this.settings.providers[provider][key];
46
+ this.settings.providers[provider][key] = value;
47
+ this.eventEmitter.emit('provider-change', {
48
+ provider,
49
+ key,
50
+ oldValue,
51
+ newValue: value,
52
+ });
53
+ }
54
+ // Lines 56-64: Clear method - reset to empty state, emit cleared event
55
+ clear() {
56
+ this.settings = {
57
+ providers: {},
58
+ global: {},
59
+ activeProvider: null,
60
+ };
61
+ this.eventEmitter.emit('cleared');
62
+ }
63
+ // Public method to get all global settings
64
+ getAllGlobalSettings() {
65
+ return { ...this.settings.global };
66
+ }
67
+ // Helper methods for nested key support
68
+ getNestedValue(obj, key) {
69
+ const keys = key.split('.');
70
+ let current = obj;
71
+ for (const k of keys) {
72
+ if (current && typeof current === 'object' && k in current) {
73
+ current = current[k];
74
+ }
75
+ else {
76
+ return undefined;
77
+ }
78
+ }
79
+ return current;
80
+ }
81
+ setNestedValue(obj, key, value) {
82
+ const keys = key.split('.');
83
+ let current = obj;
84
+ for (let i = 0; i < keys.length - 1; i++) {
85
+ const k = keys[i];
86
+ if (!current[k] || typeof current[k] !== 'object') {
87
+ current[k] = {};
88
+ }
89
+ current = current[k];
90
+ }
91
+ current[keys[keys.length - 1]] = value;
92
+ }
93
+ on(event, listener) {
94
+ if (event === 'settings_changed') {
95
+ return this.onSettingsChanged(listener);
96
+ }
97
+ this.eventEmitter.on(event, listener);
98
+ return this;
99
+ }
100
+ off(event, listener) {
101
+ this.eventEmitter.off(event, listener);
102
+ return this;
103
+ }
104
+ getSettings(provider) {
105
+ if (provider === undefined) {
106
+ return Promise.resolve({
107
+ providers: this.settings.providers,
108
+ });
109
+ }
110
+ return Promise.resolve(this.getProviderSettings(provider));
111
+ }
112
+ updateSettings(providerOrChanges, changes) {
113
+ if (typeof providerOrChanges === 'string' && changes) {
114
+ // Provider-specific update
115
+ for (const [key, value] of Object.entries(changes)) {
116
+ this.setProviderSetting(providerOrChanges, key, value);
117
+ }
118
+ }
119
+ else if (providerOrChanges && typeof providerOrChanges === 'object') {
120
+ // Global update
121
+ for (const [key, value] of Object.entries(providerOrChanges)) {
122
+ this.set(key, value);
123
+ }
124
+ }
125
+ return Promise.resolve();
126
+ }
127
+ switchProvider(newProvider) {
128
+ this.set('activeProvider', newProvider);
129
+ return Promise.resolve();
130
+ }
131
+ exportForProfile() {
132
+ // Get activeProvider from global settings first, then fallback to direct field or default
133
+ const activeProvider = this.settings.global.activeProvider ||
134
+ this.settings.activeProvider ||
135
+ 'openai';
136
+ return Promise.resolve({
137
+ defaultProvider: activeProvider,
138
+ providers: this.settings.providers,
139
+ });
140
+ }
141
+ importFromProfile(profileData) {
142
+ // Don't clear ALL settings - just clear provider settings
143
+ // Keep global settings like activeProvider if it's already set correctly
144
+ this.settings.providers = {};
145
+ // Import profile data
146
+ if (profileData && typeof profileData === 'object') {
147
+ const data = profileData;
148
+ // Set the active provider
149
+ if (data.defaultProvider) {
150
+ this.set('activeProvider', data.defaultProvider);
151
+ this.settings.activeProvider = data.defaultProvider;
152
+ }
153
+ // Import provider settings
154
+ if (data.providers) {
155
+ for (const [provider, settings] of Object.entries(data.providers)) {
156
+ if (settings && typeof settings === 'object') {
157
+ for (const [key, value] of Object.entries(settings)) {
158
+ this.setProviderSetting(provider, key, value);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ return Promise.resolve();
165
+ }
166
+ setCurrentProfileName(profileName) {
167
+ this.set('currentProfile', profileName);
168
+ }
169
+ getCurrentProfileName() {
170
+ return this.get('currentProfile');
171
+ }
172
+ getDiagnosticsData() {
173
+ // Get activeProvider from global settings (set via set() method) or fallback to direct field or default
174
+ const activeProvider = this.settings.global.activeProvider ||
175
+ this.settings.activeProvider ||
176
+ 'openai';
177
+ const providerSettings = this.getProviderSettings(activeProvider);
178
+ // Get the model from provider settings, fallback to 'unknown' if not set
179
+ const model = providerSettings.model || 'unknown';
180
+ // Extract model parameters from provider settings (exclude 'model' itself)
181
+ const modelParams = {};
182
+ for (const [key, value] of Object.entries(providerSettings)) {
183
+ if (key !== 'model' && value !== undefined) {
184
+ modelParams[key] = value;
185
+ }
186
+ }
187
+ return Promise.resolve({
188
+ provider: activeProvider,
189
+ model,
190
+ profile: this.getCurrentProfileName(),
191
+ providerSettings,
192
+ ephemeralSettings: this.settings.global,
193
+ modelParams,
194
+ allSettings: {
195
+ providers: this.settings.providers,
196
+ },
197
+ });
198
+ }
199
+ onSettingsChanged(listener) {
200
+ this.eventEmitter.on('settings_changed', listener);
201
+ return () => this.eventEmitter.removeListener('settings_changed', listener);
202
+ }
203
+ }
204
+ //# sourceMappingURL=SettingsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsService.js","sourceRoot":"","sources":["../../../src/settings/SettingsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Centralized SettingsService singleton instance
3
+ */
4
+ import { SettingsService } from './SettingsService.js';
5
+ /**
6
+ * Get or create the global SettingsService singleton instance
7
+ */
8
+ export declare function getSettingsService(): SettingsService;
9
+ /**
10
+ * Reset the settings service instance (for testing)
11
+ */
12
+ export declare function resetSettingsService(): void;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Centralized SettingsService singleton instance
3
+ */
4
+ import { SettingsService } from './SettingsService.js';
5
+ let settingsServiceInstance = null;
6
+ /**
7
+ * Get or create the global SettingsService singleton instance
8
+ */
9
+ export function getSettingsService() {
10
+ if (!settingsServiceInstance) {
11
+ settingsServiceInstance = new SettingsService();
12
+ }
13
+ return settingsServiceInstance;
14
+ }
15
+ /**
16
+ * Reset the settings service instance (for testing)
17
+ */
18
+ export function resetSettingsService() {
19
+ if (settingsServiceInstance) {
20
+ settingsServiceInstance.clear();
21
+ }
22
+ settingsServiceInstance = null;
23
+ }
24
+ //# sourceMappingURL=settingsServiceInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsServiceInstance.js","sourceRoot":"","sources":["../../../src/settings/settingsServiceInstance.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,IAAI,uBAAuB,GAA2B,IAAI,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,uBAAuB,EAAE,CAAC;QAC5B,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IACD,uBAAuB,GAAG,IAAI,CAAC;AACjC,CAAC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Settings service interfaces and types
3
+ */
4
+ /**
5
+ * Global settings schema matching the specification
6
+ */
7
+ export interface GlobalSettings {
8
+ defaultProvider?: string;
9
+ providers: Record<string, ProviderSettings>;
10
+ ui?: UISettings | null;
11
+ telemetry?: TelemetrySettings;
12
+ advanced?: AdvancedSettings;
13
+ }
14
+ /**
15
+ * Provider-specific settings
16
+ */
17
+ export interface ProviderSettings {
18
+ enabled: boolean;
19
+ apiKey?: string;
20
+ baseUrl?: string;
21
+ model?: string;
22
+ maxTokens?: number;
23
+ temperature?: number;
24
+ toolFormat?: 'auto' | 'openai' | 'qwen' | 'hermes' | 'xml' | 'anthropic' | 'deepseek' | 'gemma' | 'llama';
25
+ [key: string]: unknown;
26
+ }
27
+ /**
28
+ * UI-related settings
29
+ */
30
+ export interface UISettings {
31
+ theme?: 'light' | 'dark' | 'auto';
32
+ fontSize?: number;
33
+ compactMode?: boolean;
34
+ }
35
+ /**
36
+ * Telemetry settings
37
+ */
38
+ export interface TelemetrySettings {
39
+ enabled: boolean;
40
+ level?: 'minimal' | 'standard' | 'detailed';
41
+ }
42
+ /**
43
+ * Advanced settings
44
+ */
45
+ export interface AdvancedSettings {
46
+ debug?: boolean;
47
+ logLevel?: 'error' | 'warn' | 'info' | 'debug';
48
+ maxRetries?: number;
49
+ timeout?: number;
50
+ }
51
+ /**
52
+ * Event emitted when settings change
53
+ */
54
+ export interface SettingsChangeEvent {
55
+ type: 'settings_changed';
56
+ changes: Partial<GlobalSettings>;
57
+ timestamp: Date;
58
+ }
59
+ /**
60
+ * Event listener function type
61
+ */
62
+ export type EventListener<T = unknown> = (event: T) => void;
63
+ /**
64
+ * Event unsubscribe function type
65
+ */
66
+ export type EventUnsubscribe = () => void;
67
+ /**
68
+ * Comprehensive diagnostics information from SettingsService
69
+ */
70
+ export interface DiagnosticsInfo {
71
+ provider: string;
72
+ model: string;
73
+ profile: string | null;
74
+ providerSettings: ProviderSettings;
75
+ ephemeralSettings: Record<string, unknown>;
76
+ modelParams: Record<string, unknown>;
77
+ allSettings: GlobalSettings;
78
+ }
79
+ /**
80
+ * Settings service interface
81
+ */
82
+ export interface ISettingsService {
83
+ /**
84
+ * Get current global settings
85
+ */
86
+ getSettings(): Promise<GlobalSettings>;
87
+ getSettings(provider: string): Promise<ProviderSettings>;
88
+ /**
89
+ * Update global settings (partial update)
90
+ */
91
+ updateSettings(updates: Partial<GlobalSettings>): Promise<void>;
92
+ updateSettings(provider: string, updates: Partial<ProviderSettings>): Promise<void>;
93
+ /**
94
+ * Switch to a different provider and update settings
95
+ */
96
+ switchProvider(providerId: string): Promise<void>;
97
+ /**
98
+ * Subscribe to settings change events
99
+ */
100
+ onSettingsChanged(listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
101
+ /**
102
+ * Subscribe to settings change events (legacy method)
103
+ */
104
+ on(event: 'settings_changed', listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
105
+ /**
106
+ * Emit a settings change event
107
+ */
108
+ emit(event: 'settings_changed', data: SettingsChangeEvent): void;
109
+ /**
110
+ * Get comprehensive diagnostics data from centralized source
111
+ */
112
+ getDiagnosticsData?(): Promise<DiagnosticsInfo>;
113
+ /**
114
+ * Export current settings for profile storage
115
+ */
116
+ exportForProfile?(): Promise<{
117
+ defaultProvider: string;
118
+ providers: Record<string, ProviderSettings>;
119
+ ui?: UISettings;
120
+ telemetry?: TelemetrySettings;
121
+ advanced?: AdvancedSettings;
122
+ }>;
123
+ /**
124
+ * Import settings from profile data
125
+ */
126
+ importFromProfile?(profileData: {
127
+ defaultProvider: string;
128
+ providers: Record<string, ProviderSettings>;
129
+ ui?: UISettings;
130
+ telemetry?: TelemetrySettings;
131
+ advanced?: AdvancedSettings;
132
+ }): Promise<void>;
133
+ /**
134
+ * Set the current profile name (for tracking)
135
+ */
136
+ setCurrentProfileName?(profileName: string | null): void;
137
+ /**
138
+ * Get the current profile name
139
+ */
140
+ getCurrentProfileName?(): string | null;
141
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Settings service interfaces and types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/settings/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}