@vybestack/llxprt-code-core 0.1.18-nightly.250807.306d1939 → 0.1.18-nightly.250811.b0db22c6

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 (323) hide show
  1. package/README.md +1 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.js +3 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/auth/auth-integration.spec.d.ts +6 -0
  6. package/dist/src/auth/auth-integration.spec.js +384 -0
  7. package/dist/src/auth/auth-integration.spec.js.map +1 -0
  8. package/dist/src/auth/precedence.d.ts +55 -0
  9. package/dist/src/auth/precedence.js +211 -0
  10. package/dist/src/auth/precedence.js.map +1 -0
  11. package/dist/src/auth/precedence.test.d.ts +6 -0
  12. package/dist/src/auth/precedence.test.js +374 -0
  13. package/dist/src/auth/precedence.test.js.map +1 -0
  14. package/dist/src/auth/qwen-device-flow.d.ts +45 -0
  15. package/dist/src/auth/qwen-device-flow.js +179 -0
  16. package/dist/src/auth/qwen-device-flow.js.map +1 -0
  17. package/dist/src/auth/qwen-device-flow.spec.d.ts +6 -0
  18. package/dist/src/auth/qwen-device-flow.spec.js +793 -0
  19. package/dist/src/auth/qwen-device-flow.spec.js.map +1 -0
  20. package/dist/src/auth/token-store.d.ts +66 -0
  21. package/dist/src/auth/token-store.js +147 -0
  22. package/dist/src/auth/token-store.js.map +1 -0
  23. package/dist/src/auth/token-store.spec.d.ts +6 -0
  24. package/dist/src/auth/token-store.spec.js +405 -0
  25. package/dist/src/auth/token-store.spec.js.map +1 -0
  26. package/dist/src/auth/types.d.ts +130 -0
  27. package/dist/src/auth/types.js +60 -0
  28. package/dist/src/auth/types.js.map +1 -0
  29. package/dist/src/code_assist/converter.d.ts +2 -1
  30. package/dist/src/code_assist/converter.js +1 -1
  31. package/dist/src/code_assist/converter.js.map +1 -1
  32. package/dist/src/code_assist/converter.test.js +48 -1
  33. package/dist/src/code_assist/converter.test.js.map +1 -1
  34. package/dist/src/code_assist/oauth2.js +2 -1
  35. package/dist/src/code_assist/oauth2.js.map +1 -1
  36. package/dist/src/code_assist/server.test.js +4 -1
  37. package/dist/src/code_assist/server.test.js.map +1 -1
  38. package/dist/src/config/config.alwaysAllow.test.d.ts +6 -0
  39. package/dist/src/config/config.alwaysAllow.test.js +84 -0
  40. package/dist/src/config/config.alwaysAllow.test.js.map +1 -0
  41. package/dist/src/config/config.d.ts +80 -1
  42. package/dist/src/config/config.ephemeral.test.d.ts +6 -0
  43. package/dist/src/config/config.ephemeral.test.js +152 -0
  44. package/dist/src/config/config.ephemeral.test.js.map +1 -0
  45. package/dist/src/config/config.js +135 -0
  46. package/dist/src/config/config.js.map +1 -1
  47. package/dist/src/config/config.test.js +8 -0
  48. package/dist/src/config/config.test.js.map +1 -1
  49. package/dist/src/config/endpoints.d.ts +60 -0
  50. package/dist/src/config/endpoints.js +126 -0
  51. package/dist/src/config/endpoints.js.map +1 -0
  52. package/dist/src/config/endpoints.test.d.ts +6 -0
  53. package/dist/src/config/endpoints.test.js +196 -0
  54. package/dist/src/config/endpoints.test.js.map +1 -0
  55. package/dist/src/core/client.d.ts +0 -2
  56. package/dist/src/core/client.js +19 -97
  57. package/dist/src/core/client.js.map +1 -1
  58. package/dist/src/core/client.test.js +13 -7
  59. package/dist/src/core/client.test.js.map +1 -1
  60. package/dist/src/core/contentGenerator.d.ts +3 -1
  61. package/dist/src/core/contentGenerator.js +3 -1
  62. package/dist/src/core/contentGenerator.js.map +1 -1
  63. package/dist/src/core/coreToolScheduler.d.ts +17 -7
  64. package/dist/src/core/coreToolScheduler.js +121 -18
  65. package/dist/src/core/coreToolScheduler.js.map +1 -1
  66. package/dist/src/core/coreToolScheduler.test.js +25 -37
  67. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  68. package/dist/src/core/geminiChat.d.ts +3 -0
  69. package/dist/src/core/geminiChat.js +17 -13
  70. package/dist/src/core/geminiChat.js.map +1 -1
  71. package/dist/src/core/logger.d.ts +1 -0
  72. package/dist/src/core/logger.js +18 -0
  73. package/dist/src/core/logger.js.map +1 -1
  74. package/dist/src/core/logger.test.js +29 -0
  75. package/dist/src/core/logger.test.js.map +1 -1
  76. package/dist/src/core/loggingContentGenerator.d.ts +24 -0
  77. package/dist/src/core/loggingContentGenerator.js +89 -0
  78. package/dist/src/core/loggingContentGenerator.js.map +1 -0
  79. package/dist/src/core/nonInteractiveToolExecutor.js +21 -1
  80. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  81. package/dist/src/core/nonInteractiveToolExecutor.test.js +8 -31
  82. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  83. package/dist/src/core/subagent.d.ts +230 -0
  84. package/dist/src/core/subagent.js +455 -0
  85. package/dist/src/core/subagent.js.map +1 -0
  86. package/dist/src/core/subagent.test.d.ts +6 -0
  87. package/dist/src/core/subagent.test.js +510 -0
  88. package/dist/src/core/subagent.test.js.map +1 -0
  89. package/dist/src/hooks/tool-render-suppression-hook.d.ts +16 -0
  90. package/dist/src/hooks/tool-render-suppression-hook.js +26 -0
  91. package/dist/src/hooks/tool-render-suppression-hook.js.map +1 -0
  92. package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +6 -0
  93. package/dist/src/hooks/tool-render-suppression-hook.test.js +59 -0
  94. package/dist/src/hooks/tool-render-suppression-hook.test.js.map +1 -0
  95. package/dist/src/ide/ide-client.d.ts +22 -1
  96. package/dist/src/ide/ide-client.js +161 -17
  97. package/dist/src/ide/ide-client.js.map +1 -1
  98. package/dist/src/ide/ideContext.d.ts +127 -32
  99. package/dist/src/ide/ideContext.js +45 -0
  100. package/dist/src/ide/ideContext.js.map +1 -1
  101. package/dist/src/index.d.ts +8 -0
  102. package/dist/src/index.js +10 -0
  103. package/dist/src/index.js.map +1 -1
  104. package/dist/src/integration-tests/oauth-integration.spec.d.ts +6 -0
  105. package/dist/src/integration-tests/oauth-integration.spec.js +518 -0
  106. package/dist/src/integration-tests/oauth-integration.spec.js.map +1 -0
  107. package/dist/src/integration-tests/oauth-simple-test.spec.d.ts +1 -0
  108. package/dist/src/integration-tests/oauth-simple-test.spec.js +88 -0
  109. package/dist/src/integration-tests/oauth-simple-test.spec.js.map +1 -0
  110. package/dist/src/integration-tests/todo-system.test.js +38 -602
  111. package/dist/src/integration-tests/todo-system.test.js.map +1 -1
  112. package/dist/src/providers/BaseProvider.d.ts +98 -0
  113. package/dist/src/providers/BaseProvider.js +180 -0
  114. package/dist/src/providers/BaseProvider.js.map +1 -0
  115. package/dist/src/providers/BaseProvider.test.d.ts +6 -0
  116. package/dist/src/providers/BaseProvider.test.js +472 -0
  117. package/dist/src/providers/BaseProvider.test.js.map +1 -0
  118. package/dist/src/providers/IProviderManager.d.ts +5 -0
  119. package/dist/src/providers/LoggingProviderWrapper.d.ts +53 -0
  120. package/dist/src/providers/LoggingProviderWrapper.js +347 -0
  121. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -0
  122. package/dist/src/providers/ProviderManager.d.ts +20 -0
  123. package/dist/src/providers/ProviderManager.js +214 -1
  124. package/dist/src/providers/ProviderManager.js.map +1 -1
  125. package/dist/src/providers/gemini/GeminiProvider.d.ts +12 -7
  126. package/dist/src/providers/gemini/GeminiProvider.js +135 -152
  127. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  128. package/dist/src/providers/integration/multi-provider.integration.test.js +18 -2
  129. package/dist/src/providers/integration/multi-provider.integration.test.js.map +1 -1
  130. package/dist/src/providers/logging/ProviderContentExtractor.d.ts +27 -0
  131. package/dist/src/providers/logging/ProviderContentExtractor.js +198 -0
  132. package/dist/src/providers/logging/ProviderContentExtractor.js.map +1 -0
  133. package/dist/src/providers/logging/ProviderPerformanceTracker.d.ts +43 -0
  134. package/dist/src/providers/logging/ProviderPerformanceTracker.js +98 -0
  135. package/dist/src/providers/logging/ProviderPerformanceTracker.js.map +1 -0
  136. package/dist/src/providers/openai/OpenAIProvider.d.ts +21 -6
  137. package/dist/src/providers/openai/OpenAIProvider.js +180 -27
  138. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  139. package/dist/src/providers/openai/OpenAIProvider.test.js +109 -2
  140. package/dist/src/providers/openai/OpenAIProvider.test.js.map +1 -1
  141. package/dist/src/providers/openai/openai-oauth.spec.d.ts +16 -0
  142. package/dist/src/providers/openai/openai-oauth.spec.js +544 -0
  143. package/dist/src/providers/openai/openai-oauth.spec.js.map +1 -0
  144. package/dist/src/providers/types/IProviderConfig.d.ts +5 -0
  145. package/dist/src/providers/types.d.ts +47 -0
  146. package/dist/src/services/git-stats-service.d.ts +32 -0
  147. package/dist/src/services/git-stats-service.js +22 -0
  148. package/dist/src/services/git-stats-service.js.map +1 -0
  149. package/dist/src/services/loopDetectionService.js +10 -6
  150. package/dist/src/services/loopDetectionService.js.map +1 -1
  151. package/dist/src/services/loopDetectionService.test.js +139 -0
  152. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  153. package/dist/src/services/shellExecutionService.js +69 -9
  154. package/dist/src/services/shellExecutionService.js.map +1 -1
  155. package/dist/src/services/shellExecutionService.test.js +8 -0
  156. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  157. package/dist/src/services/todo-context-tracker.d.ts +31 -0
  158. package/dist/src/services/todo-context-tracker.js +45 -0
  159. package/dist/src/services/todo-context-tracker.js.map +1 -0
  160. package/dist/src/services/tool-call-tracker-service.d.ts +52 -0
  161. package/dist/src/services/tool-call-tracker-service.js +170 -0
  162. package/dist/src/services/tool-call-tracker-service.js.map +1 -0
  163. package/dist/src/services/tool-call-tracker-service.test.d.ts +6 -0
  164. package/dist/src/services/tool-call-tracker-service.test.js +99 -0
  165. package/dist/src/services/tool-call-tracker-service.test.js.map +1 -0
  166. package/dist/src/storage/ConversationFileWriter.d.ts +16 -0
  167. package/dist/src/storage/ConversationFileWriter.js +69 -0
  168. package/dist/src/storage/ConversationFileWriter.js.map +1 -0
  169. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +8 -0
  170. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +56 -3
  171. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  172. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +6 -0
  173. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +187 -0
  174. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
  175. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
  176. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +11 -0
  177. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  178. package/dist/src/telemetry/constants.d.ts +5 -0
  179. package/dist/src/telemetry/constants.js +5 -0
  180. package/dist/src/telemetry/constants.js.map +1 -1
  181. package/dist/src/telemetry/loggers.d.ts +5 -1
  182. package/dist/src/telemetry/loggers.js +87 -1
  183. package/dist/src/telemetry/loggers.js.map +1 -1
  184. package/dist/src/telemetry/loggers.test.circular.js +7 -2
  185. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  186. package/dist/src/telemetry/loggers.test.js +7 -2
  187. package/dist/src/telemetry/loggers.test.js.map +1 -1
  188. package/dist/src/telemetry/metrics.d.ts +3 -2
  189. package/dist/src/telemetry/metrics.js +7 -1
  190. package/dist/src/telemetry/metrics.js.map +1 -1
  191. package/dist/src/telemetry/metrics.test.js +50 -0
  192. package/dist/src/telemetry/metrics.test.js.map +1 -1
  193. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  194. package/dist/src/telemetry/tool-call-decision.js +29 -0
  195. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  196. package/dist/src/telemetry/types.d.ts +58 -2
  197. package/dist/src/telemetry/types.js +126 -1
  198. package/dist/src/telemetry/types.js.map +1 -1
  199. package/dist/src/telemetry/uiTelemetry.d.ts +4 -1
  200. package/dist/src/telemetry/uiTelemetry.js +3 -1
  201. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  202. package/dist/src/telemetry/uiTelemetry.test.js +13 -2
  203. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  204. package/dist/src/test-utils/tools.d.ts +23 -0
  205. package/dist/src/test-utils/tools.js +41 -0
  206. package/dist/src/test-utils/tools.js.map +1 -0
  207. package/dist/src/tools/diffOptions.d.ts +2 -0
  208. package/dist/src/tools/diffOptions.js +28 -0
  209. package/dist/src/tools/diffOptions.js.map +1 -1
  210. package/dist/src/tools/diffOptions.test.d.ts +6 -0
  211. package/dist/src/tools/diffOptions.test.js +119 -0
  212. package/dist/src/tools/diffOptions.test.js.map +1 -0
  213. package/dist/src/tools/edit.d.ts +9 -33
  214. package/dist/src/tools/edit.js +167 -132
  215. package/dist/src/tools/edit.js.map +1 -1
  216. package/dist/src/tools/edit.test.js +124 -50
  217. package/dist/src/tools/edit.test.js.map +1 -1
  218. package/dist/src/tools/glob.d.ts +3 -10
  219. package/dist/src/tools/glob.js +97 -99
  220. package/dist/src/tools/glob.js.map +1 -1
  221. package/dist/src/tools/glob.test.js +37 -26
  222. package/dist/src/tools/glob.test.js.map +1 -1
  223. package/dist/src/tools/grep.d.ts +3 -35
  224. package/dist/src/tools/grep.js +117 -88
  225. package/dist/src/tools/grep.js.map +1 -1
  226. package/dist/src/tools/grep.test.js +36 -22
  227. package/dist/src/tools/grep.test.js.map +1 -1
  228. package/dist/src/tools/mcp-client.d.ts +14 -3
  229. package/dist/src/tools/mcp-client.js +82 -6
  230. package/dist/src/tools/mcp-client.js.map +1 -1
  231. package/dist/src/tools/mcp-client.test.js +337 -2
  232. package/dist/src/tools/mcp-client.test.js.map +1 -1
  233. package/dist/src/tools/memoryTool.d.ts +2 -2
  234. package/dist/src/tools/memoryTool.js +1 -0
  235. package/dist/src/tools/memoryTool.js.map +1 -1
  236. package/dist/src/tools/modifiable-tool.d.ts +8 -5
  237. package/dist/src/tools/modifiable-tool.js +4 -1
  238. package/dist/src/tools/modifiable-tool.js.map +1 -1
  239. package/dist/src/tools/modifiable-tool.test.js +3 -3
  240. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  241. package/dist/src/tools/read-file.d.ts +4 -6
  242. package/dist/src/tools/read-file.js +87 -46
  243. package/dist/src/tools/read-file.js.map +1 -1
  244. package/dist/src/tools/read-file.test.js +207 -126
  245. package/dist/src/tools/read-file.test.js.map +1 -1
  246. package/dist/src/tools/read-many-files.js +8 -2
  247. package/dist/src/tools/read-many-files.js.map +1 -1
  248. package/dist/src/tools/read-many-files.test.js +16 -0
  249. package/dist/src/tools/read-many-files.test.js.map +1 -1
  250. package/dist/src/tools/shell.test.js +17 -0
  251. package/dist/src/tools/shell.test.js.map +1 -1
  252. package/dist/src/tools/todo-events.d.ts +22 -0
  253. package/dist/src/tools/todo-events.js +24 -0
  254. package/dist/src/tools/todo-events.js.map +1 -0
  255. package/dist/src/tools/todo-pause.d.ts +22 -0
  256. package/dist/src/tools/todo-pause.js +93 -0
  257. package/dist/src/tools/todo-pause.js.map +1 -0
  258. package/dist/src/tools/todo-pause.spec.d.ts +6 -0
  259. package/dist/src/tools/todo-pause.spec.js +287 -0
  260. package/dist/src/tools/todo-pause.spec.js.map +1 -0
  261. package/dist/src/tools/todo-read.js.map +1 -1
  262. package/dist/src/tools/todo-schemas.d.ts +232 -4
  263. package/dist/src/tools/todo-schemas.js +13 -0
  264. package/dist/src/tools/todo-schemas.js.map +1 -1
  265. package/dist/src/tools/todo-schemas.test.js +190 -1
  266. package/dist/src/tools/todo-schemas.test.js.map +1 -1
  267. package/dist/src/tools/todo-store.d.ts +1 -4
  268. package/dist/src/tools/todo-store.js +41 -40
  269. package/dist/src/tools/todo-store.js.map +1 -1
  270. package/dist/src/tools/todo-store.test.js +34 -40
  271. package/dist/src/tools/todo-store.test.js.map +1 -1
  272. package/dist/src/tools/todo-write.d.ts +1 -1
  273. package/dist/src/tools/todo-write.js +84 -47
  274. package/dist/src/tools/todo-write.js.map +1 -1
  275. package/dist/src/tools/todo-write.test.js +23 -9
  276. package/dist/src/tools/todo-write.test.js.map +1 -1
  277. package/dist/src/tools/tool-context.d.ts +2 -0
  278. package/dist/src/tools/tool-error.d.ts +4 -0
  279. package/dist/src/tools/tool-error.js +4 -0
  280. package/dist/src/tools/tool-error.js.map +1 -1
  281. package/dist/src/tools/tool-registry.d.ts +12 -6
  282. package/dist/src/tools/tool-registry.js +19 -4
  283. package/dist/src/tools/tool-registry.js.map +1 -1
  284. package/dist/src/tools/tool-registry.test.js +3 -20
  285. package/dist/src/tools/tool-registry.test.js.map +1 -1
  286. package/dist/src/tools/tools.d.ts +134 -39
  287. package/dist/src/tools/tools.js +115 -10
  288. package/dist/src/tools/tools.js.map +1 -1
  289. package/dist/src/tools/web-search.test.js +1 -0
  290. package/dist/src/tools/web-search.test.js.map +1 -1
  291. package/dist/src/tools/write-file.d.ts +6 -2
  292. package/dist/src/tools/write-file.js +106 -16
  293. package/dist/src/tools/write-file.js.map +1 -1
  294. package/dist/src/tools/write-file.test.js +25 -7
  295. package/dist/src/tools/write-file.test.js.map +1 -1
  296. package/dist/src/types/modelParams.d.ts +4 -0
  297. package/dist/src/utils/environmentContext.d.ts +21 -0
  298. package/dist/src/utils/environmentContext.js +90 -0
  299. package/dist/src/utils/environmentContext.js.map +1 -0
  300. package/dist/src/utils/environmentContext.test.d.ts +6 -0
  301. package/dist/src/utils/environmentContext.test.js +139 -0
  302. package/dist/src/utils/environmentContext.test.js.map +1 -0
  303. package/dist/src/utils/errors.d.ts +3 -0
  304. package/dist/src/utils/errors.js +6 -0
  305. package/dist/src/utils/errors.js.map +1 -1
  306. package/dist/src/utils/fileUtils.d.ts +7 -0
  307. package/dist/src/utils/fileUtils.js +11 -10
  308. package/dist/src/utils/fileUtils.js.map +1 -1
  309. package/dist/src/utils/fileUtils.test.js +1 -4
  310. package/dist/src/utils/fileUtils.test.js.map +1 -1
  311. package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
  312. package/dist/src/utils/filesearch/fileSearch.js +27 -5
  313. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  314. package/dist/src/utils/filesearch/fileSearch.test.js +21 -1
  315. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  316. package/dist/src/utils/memoryDiscovery.js +4 -1
  317. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  318. package/dist/src/utils/shell-utils.js +14 -2
  319. package/dist/src/utils/shell-utils.js.map +1 -1
  320. package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +6 -0
  321. package/dist/src/utils/shell-utils.shellReplacement.test.js +149 -0
  322. package/dist/src/utils/shell-utils.shellReplacement.test.js.map +1 -0
  323. package/package.json +2 -1
package/README.md CHANGED
@@ -266,6 +266,7 @@ Learn more in the [Prompt Configuration Guide](./docs/prompt-configuration.md).
266
266
  - Explore the available **[CLI Commands](./docs/cli/commands.md)**.
267
267
  - If you encounter any issues, review the **[troubleshooting guide](./docs/troubleshooting.md)**.
268
268
  - For more comprehensive documentation, see the [full documentation](./docs/index.md).
269
+ - **Migrating from Gemini CLI?** Check out our [tips for Gemini CLI users](./docs/gemini-cli-tips.md).
269
270
  - Take a look at some [popular tasks](#popular-tasks) for more inspiration.
270
271
  - Check out our **[Official Roadmap](./ROADMAP.md)**
271
272
 
package/dist/index.d.ts CHANGED
@@ -5,3 +5,6 @@
5
5
  */
6
6
  export * from './src/index.js';
7
7
  export { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, } from './src/config/models.js';
8
+ export { QwenDeviceFlow, DeviceFlowConfig, } from './src/auth/qwen-device-flow.js';
9
+ export { MultiProviderTokenStore } from './src/auth/token-store.js';
10
+ export { openBrowserSecurely, shouldLaunchBrowser, } from './src/utils/secure-browser-launcher.js';
package/dist/index.js CHANGED
@@ -5,4 +5,7 @@
5
5
  */
6
6
  export * from './src/index.js';
7
7
  export { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, } from './src/config/models.js';
8
+ export { QwenDeviceFlow, } from './src/auth/qwen-device-flow.js';
9
+ export { MultiProviderTokenStore } from './src/auth/token-store.js';
10
+ export { openBrowserSecurely, shouldLaunchBrowser, } from './src/utils/secure-browser-launcher.js';
8
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wCAAwC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,384 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ describe('Auth Integration: Complete Precedence Flow and Provider Coordination', () => {
8
+ let mockConfig;
9
+ let mockOAuthManager;
10
+ let mockQwenProvider;
11
+ let mockGeminiProvider;
12
+ let originalEnv;
13
+ beforeEach(() => {
14
+ vi.clearAllMocks();
15
+ originalEnv = { ...process.env };
16
+ // Mock configuration system
17
+ mockConfig = {
18
+ getOAuthEnabled: vi.fn(),
19
+ setOAuthEnabled: vi.fn(),
20
+ getHigherPriorityAuth: vi.fn(),
21
+ };
22
+ // Mock OAuth manager
23
+ mockOAuthManager = {
24
+ toggleOAuthEnabled: vi.fn(),
25
+ isOAuthEnabled: vi.fn(),
26
+ getToken: vi.fn(),
27
+ getHigherPriorityAuth: vi.fn(),
28
+ getAuthStatus: vi.fn(),
29
+ };
30
+ // Mock provider instances
31
+ mockQwenProvider = {
32
+ name: 'qwen',
33
+ isAuthenticated: vi.fn(),
34
+ resolveAuthentication: vi.fn(),
35
+ makeApiCall: vi.fn(),
36
+ };
37
+ mockGeminiProvider = {
38
+ name: 'gemini',
39
+ isAuthenticated: vi.fn(),
40
+ resolveAuthentication: vi.fn(),
41
+ makeApiCall: vi.fn(),
42
+ };
43
+ });
44
+ afterEach(() => {
45
+ process.env = originalEnv;
46
+ });
47
+ describe('Complete Auth Precedence Flow', () => {
48
+ /**
49
+ * @scenario Complete precedence chain with OAuth
50
+ * @given CLI arg, env var, and OAuth all available
51
+ * @when Provider resolves authentication
52
+ * @then Uses CLI arg (highest precedence)
53
+ * @and OAuth is not triggered
54
+ */
55
+ it('should follow complete precedence chain: CLI > Env > OAuth', async () => {
56
+ // Given: All auth methods available
57
+ const cliArg = 'cli-api-key-123';
58
+ process.env.OPENAI_API_KEY = 'env-key-456';
59
+ vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
60
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
61
+ vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue('CLI API Key');
62
+ // When: Provider resolves authentication with CLI key
63
+ vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => {
64
+ // Simulate provider precedence logic
65
+ if (cliArg)
66
+ return cliArg;
67
+ if (process.env.OPENAI_API_KEY)
68
+ return process.env.OPENAI_API_KEY;
69
+ return await mockOAuthManager.getToken('qwen');
70
+ });
71
+ const resolvedAuth = await mockQwenProvider.resolveAuthentication();
72
+ // Then: Should use CLI key (highest precedence)
73
+ expect(resolvedAuth).toBe(cliArg);
74
+ expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
75
+ });
76
+ /**
77
+ * @scenario Environment variable fallback
78
+ * @given No CLI arg, env var and OAuth available
79
+ * @when Provider resolves authentication
80
+ * @then Uses env var (second precedence)
81
+ * @and OAuth is not triggered
82
+ */
83
+ it('should fall back to environment variable when no CLI arg', async () => {
84
+ // Given: Env var and OAuth available, no CLI arg
85
+ process.env.OPENAI_API_KEY = 'env-key-456';
86
+ vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
87
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
88
+ vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue('Environment Variable');
89
+ // When: Provider resolves authentication without CLI key
90
+ vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => {
91
+ if (process.env.OPENAI_API_KEY)
92
+ return process.env.OPENAI_API_KEY;
93
+ return await mockOAuthManager.getToken('qwen');
94
+ });
95
+ const resolvedAuth = await mockQwenProvider.resolveAuthentication();
96
+ // Then: Should use environment variable (second precedence)
97
+ expect(resolvedAuth).toBe('env-key-456');
98
+ expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
99
+ });
100
+ /**
101
+ * @scenario OAuth as final fallback
102
+ * @given No CLI arg, no env var, OAuth enabled
103
+ * @when Provider resolves authentication
104
+ * @then Triggers lazy OAuth (lowest precedence)
105
+ * @and Returns OAuth token
106
+ */
107
+ it('should use OAuth as final fallback when no higher precedence auth', async () => {
108
+ // Given: Only OAuth available
109
+ delete process.env.OPENAI_API_KEY;
110
+ vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
111
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
112
+ vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue(null);
113
+ // When: Provider resolves authentication with OAuth only
114
+ vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('qwen'));
115
+ const resolvedAuth = await mockQwenProvider.resolveAuthentication();
116
+ // Then: Should use OAuth token (lowest precedence)
117
+ expect(resolvedAuth).toBe('oauth-token-789');
118
+ expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
119
+ });
120
+ });
121
+ describe('OAuth Enablement Persistence', () => {
122
+ /**
123
+ * @scenario OAuth enablement persists across sessions
124
+ * @given OAuth enabled for qwen
125
+ * @when System restarts (new instances)
126
+ * @then OAuth remains enabled
127
+ * @and Can be toggled again
128
+ */
129
+ it('should persist OAuth enablement across system restarts', async () => {
130
+ // Given: OAuth enabled for qwen in first session
131
+ vi.mocked(mockOAuthManager.toggleOAuthEnabled).mockResolvedValue(true);
132
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
133
+ vi.mocked(mockConfig.getOAuthEnabled).mockReturnValue(true);
134
+ // When: Enable OAuth in first session
135
+ const firstToggleResult = await mockOAuthManager.toggleOAuthEnabled('qwen');
136
+ expect(firstToggleResult).toBe(true);
137
+ // Simulate system restart with new instances
138
+ const newOAuthManager = { ...mockOAuthManager };
139
+ vi.mocked(newOAuthManager.isOAuthEnabled).mockResolvedValue(true); // Persisted state
140
+ // Then: OAuth should remain enabled after restart
141
+ const persistedState = await newOAuthManager.isOAuthEnabled('qwen');
142
+ expect(persistedState).toBe(true);
143
+ // And: Can be toggled again (disable)
144
+ vi.mocked(newOAuthManager.toggleOAuthEnabled).mockResolvedValue(false);
145
+ const secondToggleResult = await newOAuthManager.toggleOAuthEnabled('qwen');
146
+ expect(secondToggleResult).toBe(false);
147
+ });
148
+ /**
149
+ * @scenario Independent enablement per provider
150
+ * @given Multiple providers registered
151
+ * @when OAuth enabled for qwen only
152
+ * @then Qwen OAuth enabled, Gemini OAuth disabled
153
+ * @and States persist independently
154
+ */
155
+ it('should maintain independent OAuth enablement per provider', async () => {
156
+ // Given: Multiple providers with different OAuth states
157
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockImplementation(async (provider) => provider === 'qwen');
158
+ // When: Check enablement for both providers
159
+ const qwenEnabled = await mockOAuthManager.isOAuthEnabled('qwen');
160
+ const geminiEnabled = await mockOAuthManager.isOAuthEnabled('gemini');
161
+ // Then: Should reflect independent states
162
+ expect(qwenEnabled).toBe(true);
163
+ expect(geminiEnabled).toBe(false);
164
+ // And: Status should reflect independent OAuth enablement
165
+ vi.mocked(mockOAuthManager.getAuthStatus).mockResolvedValue([
166
+ {
167
+ provider: 'qwen',
168
+ authenticated: false,
169
+ authType: 'none',
170
+ oauthEnabled: true,
171
+ },
172
+ {
173
+ provider: 'gemini',
174
+ authenticated: false,
175
+ authType: 'none',
176
+ oauthEnabled: false,
177
+ },
178
+ ]);
179
+ const status = await mockOAuthManager.getAuthStatus();
180
+ expect(status.find((s) => s.provider === 'qwen')?.oauthEnabled).toBe(true);
181
+ expect(status.find((s) => s.provider === 'gemini')?.oauthEnabled).toBe(false);
182
+ });
183
+ });
184
+ describe('Lazy OAuth Triggering During API Calls', () => {
185
+ /**
186
+ * @scenario Lazy OAuth triggers on first API call
187
+ * @given OAuth enabled but not authenticated
188
+ * @when Provider makes API call
189
+ * @then OAuth flow triggered automatically
190
+ * @and Subsequent calls use cached token
191
+ */
192
+ it('should trigger OAuth lazily on first API call and cache for subsequent calls', async () => {
193
+ // Given: OAuth enabled but not yet authenticated
194
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
195
+ vi.mocked(mockOAuthManager.getToken)
196
+ .mockResolvedValueOnce(null) // First call - not authenticated
197
+ .mockResolvedValue('oauth-token-123'); // Subsequent calls - authenticated
198
+ // Mock provider API call that triggers lazy authentication
199
+ if (mockQwenProvider.makeApiCall) {
200
+ vi.mocked(mockQwenProvider.makeApiCall).mockImplementation(async () => {
201
+ const token = await mockOAuthManager.getToken('qwen');
202
+ if (!token) {
203
+ // Simulate lazy OAuth triggering
204
+ await mockOAuthManager.getToken('qwen'); // This would trigger OAuth in real implementation
205
+ return 'api-call-success-with-oauth';
206
+ }
207
+ return 'api-call-success-cached';
208
+ });
209
+ // When: Make first API call (should trigger OAuth)
210
+ const firstCallResult = await mockQwenProvider.makeApiCall();
211
+ // Then: Should succeed with OAuth
212
+ expect(firstCallResult).toBe('api-call-success-with-oauth');
213
+ expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
214
+ // When: Make second API call (should use cached token)
215
+ const secondCallResult = await mockQwenProvider.makeApiCall();
216
+ // Then: Should succeed with cached token
217
+ expect(secondCallResult).toBe('api-call-success-cached');
218
+ }
219
+ });
220
+ /**
221
+ * @scenario No OAuth triggering when disabled
222
+ * @given OAuth disabled for provider
223
+ * @when Provider attempts API call without other auth
224
+ * @then API call fails with no authentication
225
+ * @and No OAuth flow is triggered
226
+ */
227
+ it('should not trigger OAuth when disabled, causing API call to fail', async () => {
228
+ // Given: OAuth disabled, no other auth methods
229
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(false);
230
+ vi.mocked(mockOAuthManager.getToken).mockResolvedValue(null);
231
+ // Mock provider API call that checks authentication
232
+ if (mockQwenProvider.makeApiCall) {
233
+ vi.mocked(mockQwenProvider.makeApiCall).mockImplementation(async () => {
234
+ const token = await mockOAuthManager.getToken('qwen');
235
+ if (!token) {
236
+ throw new Error('No authentication available');
237
+ }
238
+ return 'api-call-success';
239
+ });
240
+ // When: Attempt API call without authentication
241
+ await expect(mockQwenProvider.makeApiCall()).rejects.toThrow('No authentication available');
242
+ }
243
+ // Then: OAuth should not have been triggered
244
+ expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
245
+ // No OAuth flow should have been initiated since it's disabled
246
+ });
247
+ });
248
+ describe('Provider Coordination with Auth System', () => {
249
+ /**
250
+ * @scenario Multiple providers coordinate with shared auth system
251
+ * @given Qwen and Gemini providers both using OAuth manager
252
+ * @when Each provider resolves authentication independently
253
+ * @then Each triggers OAuth only for its own provider
254
+ * @and Auth states remain independent
255
+ */
256
+ it('should coordinate multiple providers with shared auth system', async () => {
257
+ // Given: Both providers use same OAuth manager with different states
258
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockImplementation(async (provider) => provider === 'qwen');
259
+ vi.mocked(mockOAuthManager.getToken).mockImplementation(async (provider) => (provider === 'qwen' ? 'qwen-oauth-token' : null));
260
+ // Mock provider authentication resolution
261
+ vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('qwen'));
262
+ vi.mocked(mockGeminiProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('gemini'));
263
+ // When: Both providers resolve authentication
264
+ const qwenAuth = await mockQwenProvider.resolveAuthentication();
265
+ const geminiAuth = await mockGeminiProvider.resolveAuthentication();
266
+ // Then: Each provider gets appropriate result
267
+ expect(qwenAuth).toBe('qwen-oauth-token');
268
+ expect(geminiAuth).toBe(null);
269
+ // And: OAuth manager called for each provider independently
270
+ expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
271
+ expect(mockOAuthManager.getToken).toHaveBeenCalledWith('gemini');
272
+ });
273
+ /**
274
+ * @scenario Shared OAuth manager provides consistent status
275
+ * @given Multiple providers registered with OAuth manager
276
+ * @when Getting auth status
277
+ * @then Returns consistent status across all providers
278
+ * @and Includes OAuth enablement information
279
+ */
280
+ it('should provide consistent auth status across multiple providers', async () => {
281
+ // Given: OAuth manager with multiple providers in different states
282
+ vi.mocked(mockOAuthManager.getAuthStatus).mockResolvedValue([
283
+ {
284
+ provider: 'qwen',
285
+ authenticated: true,
286
+ authType: 'oauth',
287
+ oauthEnabled: true,
288
+ expiresIn: 3600,
289
+ },
290
+ {
291
+ provider: 'gemini',
292
+ authenticated: false,
293
+ authType: 'none',
294
+ oauthEnabled: false,
295
+ },
296
+ ]);
297
+ // When: Get comprehensive auth status
298
+ const status = await mockOAuthManager.getAuthStatus();
299
+ // Then: Should show consistent state for all providers
300
+ expect(status).toHaveLength(2);
301
+ const qwenStatus = status.find((s) => s.provider === 'qwen');
302
+ const geminiStatus = status.find((s) => s.provider === 'gemini');
303
+ expect(qwenStatus).toEqual({
304
+ provider: 'qwen',
305
+ authenticated: true,
306
+ authType: 'oauth',
307
+ oauthEnabled: true,
308
+ expiresIn: 3600,
309
+ });
310
+ expect(geminiStatus).toEqual({
311
+ provider: 'gemini',
312
+ authenticated: false,
313
+ authType: 'none',
314
+ oauthEnabled: false,
315
+ });
316
+ });
317
+ });
318
+ describe('End-to-End Integration Scenarios', () => {
319
+ /**
320
+ * @scenario Complete user workflow: enable OAuth, make API call, check status
321
+ * @given Fresh system with no authentication
322
+ * @when User enables OAuth, makes API call, checks status
323
+ * @then All steps succeed with proper coordination
324
+ */
325
+ it('should handle complete user workflow end-to-end', async () => {
326
+ // Step 1: Enable OAuth for qwen
327
+ vi.mocked(mockOAuthManager.toggleOAuthEnabled).mockResolvedValue(true);
328
+ vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue(null);
329
+ const enableResult = await mockOAuthManager.toggleOAuthEnabled('qwen');
330
+ expect(enableResult).toBe(true);
331
+ // Step 2: Simulate API call that triggers lazy OAuth
332
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
333
+ vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-from-lazy-trigger');
334
+ if (mockQwenProvider.makeApiCall) {
335
+ vi.mocked(mockQwenProvider.makeApiCall).mockResolvedValue('api-success');
336
+ const apiResult = await mockQwenProvider.makeApiCall();
337
+ expect(apiResult).toBe('api-success');
338
+ }
339
+ // Step 3: Check status shows OAuth enabled and authenticated
340
+ vi.mocked(mockOAuthManager.getAuthStatus).mockResolvedValue([
341
+ {
342
+ provider: 'qwen',
343
+ authenticated: true,
344
+ authType: 'oauth',
345
+ oauthEnabled: true,
346
+ expiresIn: 3600,
347
+ },
348
+ ]);
349
+ const finalStatus = await mockOAuthManager.getAuthStatus();
350
+ expect(finalStatus[0]).toMatchObject({
351
+ provider: 'qwen',
352
+ authenticated: true,
353
+ authType: 'oauth',
354
+ oauthEnabled: true,
355
+ });
356
+ });
357
+ /**
358
+ * @scenario Mixed auth methods coordination
359
+ * @given Some providers use API keys, others use OAuth
360
+ * @when Making API calls with mixed authentication
361
+ * @then Each provider uses appropriate auth method
362
+ * @and No interference between auth methods
363
+ */
364
+ it('should coordinate mixed authentication methods without interference', async () => {
365
+ // Given: Mixed authentication setup
366
+ process.env.OPENAI_API_KEY = 'env-api-key-for-gemini';
367
+ vi.mocked(mockOAuthManager.isOAuthEnabled).mockImplementation(async (provider) => provider === 'qwen');
368
+ vi.mocked(mockOAuthManager.getToken).mockImplementation(async (provider) => (provider === 'qwen' ? 'qwen-oauth-token' : null));
369
+ // Mock providers with different auth strategies
370
+ vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('qwen'));
371
+ vi.mocked(mockGeminiProvider.resolveAuthentication).mockImplementation(async () => process.env.OPENAI_API_KEY || null);
372
+ // When: Both providers resolve authentication
373
+ const qwenAuth = await mockQwenProvider.resolveAuthentication();
374
+ const geminiAuth = await mockGeminiProvider.resolveAuthentication();
375
+ // Then: Each uses appropriate method without interference
376
+ expect(qwenAuth).toBe('qwen-oauth-token'); // OAuth for Qwen
377
+ expect(geminiAuth).toBe('env-api-key-for-gemini'); // Env var for Gemini
378
+ // And: OAuth manager only called for OAuth-enabled provider
379
+ expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
380
+ expect(mockOAuthManager.getToken).not.toHaveBeenCalledWith('gemini');
381
+ });
382
+ });
383
+ });
384
+ //# sourceMappingURL=auth-integration.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-integration.spec.js","sourceRoot":"","sources":["../../../src/auth/auth-integration.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export interface AuthPrecedenceConfig {
7
+ commandKey?: string;
8
+ commandKeyfile?: string;
9
+ cliKey?: string;
10
+ cliKeyfile?: string;
11
+ envKeyNames?: string[];
12
+ isOAuthEnabled?: boolean;
13
+ supportsOAuth?: boolean;
14
+ oauthProvider?: string;
15
+ }
16
+ import { OAuthToken } from './types.js';
17
+ export interface OAuthManager {
18
+ getToken(provider: string): Promise<string | null>;
19
+ isAuthenticated(provider: string): Promise<boolean>;
20
+ getOAuthToken?(provider: string): Promise<OAuthToken | null>;
21
+ }
22
+ export declare class AuthPrecedenceResolver {
23
+ private config;
24
+ private oauthManager?;
25
+ constructor(config: AuthPrecedenceConfig, oauthManager?: OAuthManager);
26
+ /**
27
+ * Resolves authentication using the full precedence chain
28
+ * Returns the first available authentication method or null if none found
29
+ */
30
+ resolveAuthentication(): Promise<string | null>;
31
+ /**
32
+ * Check if any authentication method is available without triggering OAuth
33
+ */
34
+ hasNonOAuthAuthentication(): Promise<boolean>;
35
+ /**
36
+ * Check if OAuth is the only available authentication method
37
+ */
38
+ isOAuthOnlyAvailable(): Promise<boolean>;
39
+ /**
40
+ * Get authentication method name for debugging/logging
41
+ */
42
+ getAuthMethodName(): Promise<string | null>;
43
+ /**
44
+ * Reads API key from a file path, handling both absolute and relative paths
45
+ */
46
+ private readKeyFile;
47
+ /**
48
+ * Updates the configuration
49
+ */
50
+ updateConfig(newConfig: Partial<AuthPrecedenceConfig>): void;
51
+ /**
52
+ * Updates the OAuth manager
53
+ */
54
+ updateOAuthManager(oauthManager: OAuthManager): void;
55
+ }