@gitkraken/core-gitlens 0.5.110 → 0.5.112

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 (362) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/dist/git/cache.d.ts +111 -6
  3. package/dist/git/cache.d.ts.map +1 -1
  4. package/dist/git/cache.js +312 -43
  5. package/dist/git/cache.js.map +1 -1
  6. package/dist/git/context.d.ts +11 -0
  7. package/dist/git/context.d.ts.map +1 -1
  8. package/dist/git/context.js.map +1 -1
  9. package/dist/git/models/fileStatus.d.ts +1 -0
  10. package/dist/git/models/fileStatus.d.ts.map +1 -1
  11. package/dist/git/models/fileStatus.js +1 -0
  12. package/dist/git/models/fileStatus.js.map +1 -1
  13. package/dist/git/models/issue.d.ts +4 -0
  14. package/dist/git/models/issue.d.ts.map +1 -1
  15. package/dist/git/models/mergeConflicts.d.ts +2 -0
  16. package/dist/git/models/mergeConflicts.d.ts.map +1 -1
  17. package/dist/git/models/pullRequest.d.ts +38 -2
  18. package/dist/git/models/pullRequest.d.ts.map +1 -1
  19. package/dist/git/models/pullRequest.js +12 -1
  20. package/dist/git/models/pullRequest.js.map +1 -1
  21. package/dist/git/models/repository.d.ts +32 -5
  22. package/dist/git/models/repository.d.ts.map +1 -1
  23. package/dist/git/models/repository.js +58 -12
  24. package/dist/git/models/repository.js.map +1 -1
  25. package/dist/git/models/statusFile.d.ts.map +1 -1
  26. package/dist/git/models/statusFile.js +3 -0
  27. package/dist/git/models/statusFile.js.map +1 -1
  28. package/dist/git/providers/branches.d.ts +2 -0
  29. package/dist/git/providers/branches.d.ts.map +1 -1
  30. package/dist/git/providers/commits.d.ts +8 -0
  31. package/dist/git/providers/commits.d.ts.map +1 -1
  32. package/dist/git/providers/config.d.ts +19 -1
  33. package/dist/git/providers/config.d.ts.map +1 -1
  34. package/dist/git/providers/operations.d.ts +1 -0
  35. package/dist/git/providers/operations.d.ts.map +1 -1
  36. package/dist/git/providers/pausedOperations.d.ts +2 -0
  37. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  38. package/dist/git/providers/status.d.ts +1 -0
  39. package/dist/git/providers/status.d.ts.map +1 -1
  40. package/dist/git/utils/config.utils.d.ts +3 -0
  41. package/dist/git/utils/config.utils.d.ts.map +1 -0
  42. package/dist/git/utils/config.utils.js +8 -0
  43. package/dist/git/utils/config.utils.js.map +1 -0
  44. package/dist/git/utils/issue.utils.d.ts.map +1 -1
  45. package/dist/git/utils/issue.utils.js +2 -0
  46. package/dist/git/utils/issue.utils.js.map +1 -1
  47. package/dist/git/utils/pausedOperationStatus.utils.d.ts +14 -0
  48. package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
  49. package/dist/git/utils/pausedOperationStatus.utils.js +23 -0
  50. package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
  51. package/dist/git/utils/pullRequest.utils.d.ts +14 -1
  52. package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
  53. package/dist/git/utils/pullRequest.utils.js +31 -0
  54. package/dist/git/utils/pullRequest.utils.js.map +1 -1
  55. package/dist/git/watching/changeEvent.d.ts +6 -1
  56. package/dist/git/watching/changeEvent.d.ts.map +1 -1
  57. package/dist/git/watching/classifyChange.d.ts.map +1 -1
  58. package/dist/git/watching/classifyChange.js +14 -1
  59. package/dist/git/watching/classifyChange.js.map +1 -1
  60. package/dist/git/watching/watchService.d.ts.map +1 -1
  61. package/dist/git/watching/watchService.js +18 -3
  62. package/dist/git/watching/watchService.js.map +1 -1
  63. package/dist/git/watching/watchSession.d.ts +8 -1
  64. package/dist/git/watching/watchSession.d.ts.map +1 -1
  65. package/dist/git/watching/watchSession.js +38 -6
  66. package/dist/git/watching/watchSession.js.map +1 -1
  67. package/dist/git/watching/watcherPatterns.d.ts +2 -2
  68. package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
  69. package/dist/git/watching/watcherPatterns.js +1 -1
  70. package/dist/git/watching/watcherPatterns.js.map +1 -1
  71. package/dist/git-cli/exec/git.d.ts +1 -1
  72. package/dist/git-cli/exec/git.d.ts.map +1 -1
  73. package/dist/git-cli/exec/git.js +13 -3
  74. package/dist/git-cli/exec/git.js.map +1 -1
  75. package/dist/git-cli/providers/branches.d.ts +19 -0
  76. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  77. package/dist/git-cli/providers/branches.js +282 -78
  78. package/dist/git-cli/providers/branches.js.map +1 -1
  79. package/dist/git-cli/providers/commits.d.ts +4 -0
  80. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  81. package/dist/git-cli/providers/commits.js +84 -11
  82. package/dist/git-cli/providers/commits.js.map +1 -1
  83. package/dist/git-cli/providers/config.d.ts +42 -0
  84. package/dist/git-cli/providers/config.d.ts.map +1 -1
  85. package/dist/git-cli/providers/config.js +186 -5
  86. package/dist/git-cli/providers/config.js.map +1 -1
  87. package/dist/git-cli/providers/contributors.d.ts.map +1 -1
  88. package/dist/git-cli/providers/contributors.js +1 -1
  89. package/dist/git-cli/providers/contributors.js.map +1 -1
  90. package/dist/git-cli/providers/graph.d.ts +2 -2
  91. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  92. package/dist/git-cli/providers/graph.js +27 -9
  93. package/dist/git-cli/providers/graph.js.map +1 -1
  94. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  95. package/dist/git-cli/providers/operations.js +40 -12
  96. package/dist/git-cli/providers/operations.js.map +1 -1
  97. package/dist/git-cli/providers/pausedOperations.d.ts +5 -0
  98. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  99. package/dist/git-cli/providers/pausedOperations.js +87 -16
  100. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  101. package/dist/git-cli/providers/refs.d.ts +5 -3
  102. package/dist/git-cli/providers/refs.d.ts.map +1 -1
  103. package/dist/git-cli/providers/refs.js +33 -4
  104. package/dist/git-cli/providers/refs.js.map +1 -1
  105. package/dist/git-cli/providers/status.d.ts +1 -0
  106. package/dist/git-cli/providers/status.d.ts.map +1 -1
  107. package/dist/git-cli/providers/status.js +18 -3
  108. package/dist/git-cli/providers/status.js.map +1 -1
  109. package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
  110. package/dist/git-cli/providers/worktrees.js +4 -0
  111. package/dist/git-cli/providers/worktrees.js.map +1 -1
  112. package/dist/git-cli/service.d.ts.map +1 -1
  113. package/dist/git-cli/service.js.map +1 -1
  114. package/dist/plus/agents/providers/claudeCodeProvider.d.ts +39 -1
  115. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
  116. package/dist/plus/agents/providers/claudeCodeProvider.js +978 -71
  117. package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
  118. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +24 -2
  119. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
  120. package/dist/plus/agents/providers/claudeCodeTranscript.js +84 -9
  121. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  122. package/dist/plus/agents/types.d.ts +37 -2
  123. package/dist/plus/agents/types.d.ts.map +1 -1
  124. package/dist/plus/agents/types.js +2 -0
  125. package/dist/plus/agents/types.js.map +1 -1
  126. package/dist/plus/ai/errors.d.ts +10 -0
  127. package/dist/plus/ai/errors.d.ts.map +1 -1
  128. package/dist/plus/ai/errors.js +29 -0
  129. package/dist/plus/ai/errors.js.map +1 -1
  130. package/dist/plus/ai/models/model.d.ts +4 -0
  131. package/dist/plus/ai/models/model.d.ts.map +1 -1
  132. package/dist/plus/ai/models/model.js +51 -6
  133. package/dist/plus/ai/models/model.js.map +1 -1
  134. package/dist/plus/ai/models/promptTemplates.d.ts +1 -1
  135. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  136. package/dist/plus/ai/models/provider.d.ts +60 -2
  137. package/dist/plus/ai/models/provider.d.ts.map +1 -1
  138. package/dist/plus/ai/prompts.d.ts +12 -0
  139. package/dist/plus/ai/prompts.d.ts.map +1 -1
  140. package/dist/plus/ai/prompts.js +177 -61
  141. package/dist/plus/ai/prompts.js.map +1 -1
  142. package/dist/plus/ai/providers/anthropicProvider.d.ts +10 -2
  143. package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
  144. package/dist/plus/ai/providers/anthropicProvider.js +139 -46
  145. package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
  146. package/dist/plus/ai/providers/deepSeekProvider.d.ts +2 -0
  147. package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
  148. package/dist/plus/ai/providers/deepSeekProvider.js +10 -21
  149. package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
  150. package/dist/plus/ai/providers/geminiProvider.d.ts +1 -0
  151. package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
  152. package/dist/plus/ai/providers/geminiProvider.js +19 -0
  153. package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
  154. package/dist/plus/ai/providers/gitkrakenProvider.d.ts +5 -1
  155. package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
  156. package/dist/plus/ai/providers/gitkrakenProvider.js +118 -3
  157. package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
  158. package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -0
  159. package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
  160. package/dist/plus/ai/providers/huggingFaceProvider.js +5 -0
  161. package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
  162. package/dist/plus/ai/providers/mistralProvider.d.ts +3 -1
  163. package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
  164. package/dist/plus/ai/providers/mistralProvider.js +99 -19
  165. package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
  166. package/dist/plus/ai/providers/ollamaProvider.d.ts +4 -3
  167. package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
  168. package/dist/plus/ai/providers/ollamaProvider.js +38 -3
  169. package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
  170. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts +1 -0
  171. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
  172. package/dist/plus/ai/providers/openAICompatibleProvider.js +4 -0
  173. package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
  174. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +154 -5
  175. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
  176. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +259 -10
  177. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
  178. package/dist/plus/ai/providers/openRouterProvider.d.ts +4 -0
  179. package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
  180. package/dist/plus/ai/providers/openRouterProvider.js +9 -0
  181. package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
  182. package/dist/plus/ai/providers/openaiProvider.d.ts +1 -0
  183. package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
  184. package/dist/plus/ai/providers/openaiProvider.js +1 -0
  185. package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
  186. package/dist/plus/ai/providers/responseFormatCache.d.ts +8 -0
  187. package/dist/plus/ai/providers/responseFormatCache.d.ts.map +1 -0
  188. package/dist/plus/ai/providers/responseFormatCache.js +25 -0
  189. package/dist/plus/ai/providers/responseFormatCache.js.map +1 -0
  190. package/dist/plus/ai/providers/xaiProvider.d.ts +1 -0
  191. package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
  192. package/dist/plus/ai/providers/xaiProvider.js +10 -1
  193. package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
  194. package/dist/plus/ai/utils/ai.utils.d.ts +3 -0
  195. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
  196. package/dist/plus/ai/utils/ai.utils.js +13 -0
  197. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  198. package/dist/plus/ai/utils/results.utils.d.ts +16 -2
  199. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
  200. package/dist/plus/ai/utils/results.utils.js +204 -28
  201. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  202. package/dist/plus/git-github/api/github.d.ts +55 -0
  203. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  204. package/dist/plus/git-github/api/github.js +177 -4
  205. package/dist/plus/git-github/api/github.js.map +1 -1
  206. package/dist/plus/git-github/models.d.ts +16 -0
  207. package/dist/plus/git-github/models.d.ts.map +1 -1
  208. package/dist/plus/git-github/models.js +29 -3
  209. package/dist/plus/git-github/models.js.map +1 -1
  210. package/dist/plus/git-github/providers/github/status.d.ts +1 -0
  211. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
  212. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  213. package/dist/plus/integrations/context.d.ts +4 -0
  214. package/dist/plus/integrations/context.d.ts.map +1 -1
  215. package/dist/plus/integrations/index.d.ts.map +1 -1
  216. package/dist/plus/integrations/index.js +2 -0
  217. package/dist/plus/integrations/index.js.map +1 -1
  218. package/dist/plus/integrations/models/gitHostIntegration.d.ts +6 -3
  219. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
  220. package/dist/plus/integrations/models/gitHostIntegration.js +12 -2
  221. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
  222. package/dist/plus/integrations/models/integration.d.ts +3 -1
  223. package/dist/plus/integrations/models/integration.d.ts.map +1 -1
  224. package/dist/plus/integrations/models/integration.js +2 -2
  225. package/dist/plus/integrations/models/integration.js.map +1 -1
  226. package/dist/plus/integrations/providers/accounts.d.ts.map +1 -1
  227. package/dist/plus/integrations/providers/accounts.js +4 -0
  228. package/dist/plus/integrations/providers/accounts.js.map +1 -1
  229. package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -1
  230. package/dist/plus/integrations/providers/azure/models.js +3 -0
  231. package/dist/plus/integrations/providers/azure/models.js.map +1 -1
  232. package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -1
  233. package/dist/plus/integrations/providers/bitbucket/models.js +1 -0
  234. package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
  235. package/dist/plus/integrations/providers/github.d.ts +14 -2
  236. package/dist/plus/integrations/providers/github.d.ts.map +1 -1
  237. package/dist/plus/integrations/providers/github.js +55 -3
  238. package/dist/plus/integrations/providers/github.js.map +1 -1
  239. package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
  240. package/dist/plus/integrations/providers/gitlab.js.map +1 -1
  241. package/dist/plus/integrations/providers/models.d.ts.map +1 -1
  242. package/dist/plus/integrations/providers/models.js +30 -4
  243. package/dist/plus/integrations/providers/models.js.map +1 -1
  244. package/dist/plus/integrations/reads/broaden.d.ts.map +1 -1
  245. package/dist/plus/integrations/reads/broaden.js +6 -1
  246. package/dist/plus/integrations/reads/broaden.js.map +1 -1
  247. package/dist/plus/integrations/reads/drains.d.ts.map +1 -1
  248. package/dist/plus/integrations/reads/drains.js +7 -4
  249. package/dist/plus/integrations/reads/drains.js.map +1 -1
  250. package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -1
  251. package/dist/plus/integrations/reads/hierarchy.js +3 -1
  252. package/dist/plus/integrations/reads/hierarchy.js.map +1 -1
  253. package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -1
  254. package/dist/plus/integrations/reads/issueTracker.js +8 -3
  255. package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
  256. package/dist/plus/integrations/reads/issues.d.ts.map +1 -1
  257. package/dist/plus/integrations/reads/issues.js +9 -4
  258. package/dist/plus/integrations/reads/issues.js.map +1 -1
  259. package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -1
  260. package/dist/plus/integrations/reads/pullRequests.js +9 -4
  261. package/dist/plus/integrations/reads/pullRequests.js.map +1 -1
  262. package/dist/utils/env/browser/base64.d.ts +1 -1
  263. package/dist/utils/env/browser/base64.d.ts.map +1 -1
  264. package/dist/utils/env/node/base64.d.ts +1 -1
  265. package/dist/utils/env/node/base64.d.ts.map +1 -1
  266. package/dist/utils/env/node/base64.js +2 -0
  267. package/dist/utils/env/node/base64.js.map +1 -1
  268. package/dist/utils/keys/chord.d.ts +52 -0
  269. package/dist/utils/keys/chord.d.ts.map +1 -0
  270. package/dist/utils/keys/chord.js +135 -0
  271. package/dist/utils/keys/chord.js.map +1 -0
  272. package/dist/utils/keys/keybinding.d.ts +53 -0
  273. package/dist/utils/keys/keybinding.d.ts.map +1 -0
  274. package/dist/utils/keys/keybinding.js +58 -0
  275. package/dist/utils/keys/keybinding.js.map +1 -0
  276. package/dist/utils/path.d.ts +11 -0
  277. package/dist/utils/path.d.ts.map +1 -1
  278. package/dist/utils/path.js +13 -0
  279. package/dist/utils/path.js.map +1 -1
  280. package/package.json +13 -5
  281. package/src/git/cache.ts +383 -47
  282. package/src/git/context.ts +11 -0
  283. package/src/git/models/fileStatus.ts +1 -0
  284. package/src/git/models/issue.ts +4 -0
  285. package/src/git/models/mergeConflicts.ts +3 -2
  286. package/src/git/models/pullRequest.ts +33 -1
  287. package/src/git/models/repository.ts +58 -17
  288. package/src/git/models/statusFile.ts +3 -0
  289. package/src/git/providers/branches.ts +6 -0
  290. package/src/git/providers/commits.ts +11 -0
  291. package/src/git/providers/config.ts +18 -0
  292. package/src/git/providers/operations.ts +1 -0
  293. package/src/git/providers/pausedOperations.ts +2 -0
  294. package/src/git/providers/status.ts +1 -0
  295. package/src/git/utils/config.utils.ts +8 -0
  296. package/src/git/utils/issue.utils.ts +2 -0
  297. package/src/git/utils/pausedOperationStatus.utils.ts +28 -0
  298. package/src/git/utils/pullRequest.utils.ts +36 -0
  299. package/src/git/watching/changeEvent.ts +6 -1
  300. package/src/git/watching/classifyChange.ts +15 -1
  301. package/src/git/watching/watchService.ts +20 -3
  302. package/src/git/watching/watchSession.ts +41 -6
  303. package/src/git/watching/watcherPatterns.ts +1 -1
  304. package/src/git-cli/exec/git.ts +13 -3
  305. package/src/git-cli/providers/branches.ts +384 -132
  306. package/src/git-cli/providers/commits.ts +106 -15
  307. package/src/git-cli/providers/config.ts +229 -8
  308. package/src/git-cli/providers/contributors.ts +5 -1
  309. package/src/git-cli/providers/graph.ts +26 -13
  310. package/src/git-cli/providers/operations.ts +45 -20
  311. package/src/git-cli/providers/pausedOperations.ts +109 -17
  312. package/src/git-cli/providers/refs.ts +33 -3
  313. package/src/git-cli/providers/status.ts +25 -4
  314. package/src/git-cli/providers/worktrees.ts +5 -0
  315. package/src/git-cli/service.ts +0 -1
  316. package/src/plus/agents/providers/claudeCodeProvider.ts +1130 -87
  317. package/src/plus/agents/providers/claudeCodeTranscript.ts +95 -9
  318. package/src/plus/agents/types.ts +46 -2
  319. package/src/plus/ai/errors.ts +30 -0
  320. package/src/plus/ai/models/model.ts +56 -6
  321. package/src/plus/ai/models/promptTemplates.ts +1 -1
  322. package/src/plus/ai/models/provider.ts +69 -2
  323. package/src/plus/ai/prompts.ts +186 -61
  324. package/src/plus/ai/providers/anthropicProvider.ts +155 -47
  325. package/src/plus/ai/providers/deepSeekProvider.ts +11 -21
  326. package/src/plus/ai/providers/geminiProvider.ts +19 -0
  327. package/src/plus/ai/providers/gitkrakenProvider.ts +126 -3
  328. package/src/plus/ai/providers/huggingFaceProvider.ts +6 -0
  329. package/src/plus/ai/providers/mistralProvider.ts +102 -19
  330. package/src/plus/ai/providers/ollamaProvider.ts +55 -4
  331. package/src/plus/ai/providers/openAICompatibleProvider.ts +5 -0
  332. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +360 -17
  333. package/src/plus/ai/providers/openRouterProvider.ts +17 -0
  334. package/src/plus/ai/providers/openaiProvider.ts +1 -0
  335. package/src/plus/ai/providers/responseFormatCache.ts +39 -0
  336. package/src/plus/ai/providers/xaiProvider.ts +10 -1
  337. package/src/plus/ai/utils/ai.utils.ts +14 -0
  338. package/src/plus/ai/utils/results.utils.ts +255 -31
  339. package/src/plus/git-github/api/github.ts +291 -7
  340. package/src/plus/git-github/models.ts +48 -2
  341. package/src/plus/git-github/providers/github/status.ts +1 -0
  342. package/src/plus/integrations/context.ts +4 -0
  343. package/src/plus/integrations/index.ts +2 -0
  344. package/src/plus/integrations/models/gitHostIntegration.ts +25 -2
  345. package/src/plus/integrations/models/integration.ts +23 -13
  346. package/src/plus/integrations/providers/accounts.ts +4 -0
  347. package/src/plus/integrations/providers/azure/models.ts +3 -0
  348. package/src/plus/integrations/providers/bitbucket/models.ts +1 -0
  349. package/src/plus/integrations/providers/github.ts +85 -1
  350. package/src/plus/integrations/providers/gitlab.ts +2 -10
  351. package/src/plus/integrations/providers/models.ts +36 -4
  352. package/src/plus/integrations/reads/broaden.ts +6 -1
  353. package/src/plus/integrations/reads/drains.ts +7 -4
  354. package/src/plus/integrations/reads/hierarchy.ts +3 -1
  355. package/src/plus/integrations/reads/issueTracker.ts +9 -3
  356. package/src/plus/integrations/reads/issues.ts +9 -4
  357. package/src/plus/integrations/reads/pullRequests.ts +9 -4
  358. package/src/utils/env/browser/base64.ts +1 -1
  359. package/src/utils/env/node/base64.ts +3 -1
  360. package/src/utils/keys/chord.ts +184 -0
  361. package/src/utils/keys/keybinding.ts +116 -0
  362. package/src/utils/path.ts +14 -0
@@ -1,4 +1,5 @@
1
1
  import { uuid } from '../../../utils/crypto.js';
2
+ import { Logger } from '../../../utils/logger.js';
2
3
  import { ollamaProviderDescriptor as provider } from '../constants.js';
3
4
  import { OpenAICompatibleProviderBase } from './openAICompatibleProviderBase.js';
4
5
  const defaultBaseUrl = 'http://localhost:11434';
@@ -90,13 +91,17 @@ export class OllamaProvider extends OpenAICompatibleProviderBase {
90
91
  const url = this.getBaseUrl();
91
92
  return url ? `${url}/api/chat` : undefined;
92
93
  }
94
+ // Ollama < 0.5.0 rejects a schema-valued `format` (accepts only 'json')
95
+ isResponseFormatRejection(status, body) {
96
+ return status === 400 && /format/i.test(body);
97
+ }
93
98
  getHeaders(_action, _apiKey, _model, _url) {
94
99
  return {
95
100
  Accept: 'application/json',
96
101
  'Content-Type': 'application/json',
97
102
  };
98
103
  }
99
- async fetch(action, model, apiKey, messages, modelOptions, signal) {
104
+ async fetch(action, model, apiKey, messages, modelOptions, responseFormat, signal) {
100
105
  let retries = 0;
101
106
  let maxInputTokens = model.maxTokens.input;
102
107
  while (true) {
@@ -109,19 +114,48 @@ export class OllamaProvider extends OpenAICompatibleProviderBase {
109
114
  }));
110
115
  // Ensure temperature is within valid range for Ollama (0.0-1.0)
111
116
  const temperature = Math.min(Math.max(modelOptions?.temperature ?? 0.7, 0), 1);
117
+ const format = responseFormat != null &&
118
+ !this.isResponseFormatSessionRejected(model, responseFormat) &&
119
+ this.supportsResponseFormat(model)
120
+ ? responseFormat.schema
121
+ : undefined;
112
122
  const request = {
113
123
  model: model.id,
114
124
  messages: ollamaMessages,
115
125
  stream: false,
126
+ // Ollama takes the bare JSON schema (grammar-constrained sampling, any model)
127
+ format: format,
116
128
  options: {
117
129
  temperature: temperature,
118
130
  // Add num_predict if outputTokens is specified
119
131
  ...(modelOptions?.outputTokens ? { num_predict: modelOptions.outputTokens } : {}),
120
132
  },
121
133
  };
122
- const rsp = await this.fetchCore(action, model, apiKey, request, signal);
134
+ let rsp = await this.fetchCore(action, model, apiKey, request, signal);
135
+ let errorBody;
136
+ if (!rsp.ok && rsp.status === 400 && request.format != null) {
137
+ // If the schema-valued format was rejected (Ollama < 0.5.0 accepts only 'json'),
138
+ // resend the same request without it — the prompt still describes the JSON
139
+ // Leave it `undefined` (not '') when the read fails, so `handleFetchFailure` falls
140
+ // back to reading the still-unconsumed response instead of parsing an empty string
141
+ errorBody = await rsp
142
+ .clone()
143
+ .text()
144
+ .catch(() => undefined);
145
+ if (this.isResponseFormatRejection(rsp.status, errorBody ?? '')) {
146
+ Logger.warn(`(${this.name}) ${model.id}: native response format was rejected (${rsp.status}); retrying without it`);
147
+ const rejected = responseFormat;
148
+ responseFormat = undefined;
149
+ delete request.format;
150
+ rsp = await this.fetchCore(action, model, apiKey, request, signal);
151
+ errorBody = undefined;
152
+ if (rsp.ok && rejected != null) {
153
+ this.rememberResponseFormatRejection(model, rejected);
154
+ }
155
+ }
156
+ }
123
157
  if (!rsp.ok) {
124
- const result = await this.handleFetchFailure(rsp, action, model, retries, maxInputTokens);
158
+ const result = await this.handleFetchFailure(rsp, action, model, retries, maxInputTokens, errorBody);
125
159
  if (result.retry) {
126
160
  maxInputTokens = result.maxInputTokens;
127
161
  retries++;
@@ -137,6 +171,7 @@ export class OllamaProvider extends OpenAICompatibleProviderBase {
137
171
  return {
138
172
  id: uuid(),
139
173
  content: data.message.content,
174
+ finishReason: data.done_reason === 'length' ? 'length' : undefined,
140
175
  model: model,
141
176
  usage: {
142
177
  promptTokens: data.prompt_eval_count ?? 0,
@@ -1 +1 @@
1
- {"version":3,"file":"ollamaProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/ollamaProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollamaProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/ollamaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,wBAAwB,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AASvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAIjF,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,MAAM,OAAO,cAAe,SAAQ,4BAAgD;IAC1E,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACjB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IACX,UAAU,GAAG,QAAQ,CAAC;IACtB,MAAM,GAAG;QAC3B,MAAM,EAAE,6BAA6B;KACrC,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAe;QACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,kFAAkF;QAClF,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEQ,SAAS,CAAC,OAAgB;QAClC,+FAA+F;QAC/F,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,EAAE;gBACvD,OAAO,EAAE;oBACR,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;iBAClC;gBACD,MAAM,EAAE,KAAK;aACb,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YAC7E,CAAC;YAeD,MAAM,MAAM,GAAyB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;YAEhF,yEAAyE;YACzE,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAc,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3C,EAAE,EAAE,CAAC,CAAC,IAAI;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;oBACxC,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ;iBAC5B,CAAC,CAAC,CAAC;YACL,CAAC;QACF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,OAAO,EAAE,CAAC;IACX,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAe;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAEnC,IAAI,GAAG,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC;QAE5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAC5C,IAAI,CAAC,EAAE,EACP;YACC,UAAU,EAAE,cAAc;YAC1B,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,yDAAyD;YACtE,SAAS,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACxC,OAAO,KAAK;oBACX,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,wFAAwF,CAAC;YAC7F,CAAC;SACD,EACD,MAAM,CACN,CAAC;QACF,OAAO,GAAG,IAAI,cAAc,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAW;QACpC,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,EAAE;gBACvD,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC3E,MAAM,EAAE,KAAK;aACb,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAEO,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,OAAO,CAAC,GAAG,IAAI,cAAc,CAAC;IACtC,CAAC;IAES,MAAM,CAAC,MAAmC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,wEAAwE;IACrD,yBAAyB,CAAC,MAAc,EAAE,IAAY;QACxE,OAAO,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAEkB,UAAU,CAC5B,OAAgB,EAChB,OAAe,EACf,MAAmC,EACnC,IAAY;QAEZ,OAAO;YACN,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SAClC,CAAC;IACH,CAAC;IAEkB,KAAK,CAAC,KAAK,CAC7B,MAAe,EACf,KAAkC,EAClC,MAAc,EACd,QAAkG,EAClG,YAA8D,EAC9D,cAAiC,EACjC,MAAoB;QAEpB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QAE3C,OAAO,IAAI,EAAE,CAAC;YACb,sDAAsD;YACtD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAE7D,2CAA2C;YAC3C,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACpB,CAAC,CAAC,CAAC;YAEJ,gEAAgE;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE/E,MAAM,MAAM,GACX,cAAc,IAAI,IAAI;gBACtB,CAAC,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,cAAc,CAAC;gBAC5D,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;gBACjC,CAAC,CAAC,cAAc,CAAC,MAAM;gBACvB,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,OAAO,GAAsB;gBAClC,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,KAAK;gBACb,8EAA8E;gBAC9E,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACR,WAAW,EAAE,WAAW;oBACxB,+CAA+C;oBAC/C,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjF;aACD,CAAC;YAEF,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,SAA6B,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC7D,iFAAiF;gBACjF,2EAA2E;gBAC3E,mFAAmF;gBACnF,mFAAmF;gBACnF,SAAS,GAAG,MAAM,GAAG;qBACnB,KAAK,EAAE;qBACP,IAAI,EAAE;qBACN,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACzB,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;oBACjE,MAAM,CAAC,IAAI,CACV,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,0CAA0C,GAAG,CAAC,MAAM,wBAAwB,CACtG,CAAC;oBACF,MAAM,QAAQ,GAAG,cAAc,CAAC;oBAChC,cAAc,GAAG,SAAS,CAAC;oBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC;oBACtB,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACnE,SAAS,GAAG,SAAS,CAAC;oBACtB,IAAI,GAAG,CAAC,EAAE,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;wBAChC,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACvD,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;gBACrG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClB,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;oBACvC,OAAO,EAAE,CAAC;oBACV,SAAS;gBACV,CAAC;YACF,CAAC;YAED,IAAI,CAAC;gBACJ,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;gBAEtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAED,OAAO;oBACN,EAAE,EAAE,IAAI,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;oBAC7B,YAAY,EAAE,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;oBAClE,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE;wBACN,YAAY,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;wBACzC,gBAAgB,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;wBACtC,WAAW,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;qBACnE;oBACD,MAAM,EAAE,SAAS;iBACjB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CACd,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACtF,EAAE,KAAK,EAAE,GAAG,EAAE,CACd,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;CACD"}
@@ -11,6 +11,7 @@ export declare class OpenAICompatibleProvider extends OpenAICompatibleProviderBa
11
11
  };
12
12
  getModels(): Promise<readonly AIModel<typeof provider.id>[]>;
13
13
  protected getUrl(_model?: AIModel<typeof provider.id>): string | undefined;
14
+ protected supportsResponseFormat(_model: AIModel<typeof provider.id>): boolean;
14
15
  private getOrPromptBaseUrl;
15
16
  configured(silent: boolean): Promise<boolean>;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAKjF,qBAAa,wBAAyB,SAAQ,4BAA4B,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;IAC7F,QAAQ,CAAC,EAAE,qBAAe;IAC1B,QAAQ,CAAC,IAAI,SAAiB;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,wEAAY;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM;QACxB,MAAM;QACN,YAAY;MACX;IAEF,SAAS,IAAI,OAAO,CAAC,SAAS,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAE3D;IAED,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAKzE;YAEa,kBAAkB;IAqBjB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;CACD"}
1
+ {"version":3,"file":"openAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAKjF,qBAAa,wBAAyB,SAAQ,4BAA4B,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;IAC7F,QAAQ,CAAC,EAAE,qBAAe;IAC1B,QAAQ,CAAC,IAAI,SAAiB;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,wEAAY;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM;QACxB,MAAM;QACN,YAAY;MACX;IAEF,SAAS,IAAI,OAAO,CAAC,SAAS,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAE3D;IAED,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAKzE;IAGD,UAAmB,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAEtF;YAEa,kBAAkB;IAqBjB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;CACD"}
@@ -20,6 +20,10 @@ export class OpenAICompatibleProvider extends OpenAICompatibleProviderBase {
20
20
  return undefined;
21
21
  return cfg.url || undefined;
22
22
  }
23
+ // Unknown user-configured backend — fall back to prompt-described JSON
24
+ supportsResponseFormat(_model) {
25
+ return false;
26
+ }
23
27
  async getOrPromptBaseUrl(silent, hasApiKey) {
24
28
  const orgConf = this.context.getProviderConfig(this.id);
25
29
  if (!orgConf.enabled)
@@ -1 +1 @@
1
- {"version":3,"file":"openAICompatibleProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,MAAM,MAAM,GAA4B,YAAY,CAAC,QAAQ,CAAC,CAAC;AAE/D,MAAM,OAAO,wBAAyB,SAAQ,4BAAgD;IACpF,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACjB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IACX,UAAU,GAAG,QAAQ,CAAC;IACtB,MAAM,GAAG;QAC3B,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,0BAA0B;KACxC,CAAC;IAEF,SAAS;QACR,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAES,MAAM,CAAC,MAAoC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAEnC,OAAO,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAe,EAAE,SAAkB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC;QAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,SAAS,CAAC;YAAE,OAAO,GAAG,CAAC;QAErD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CACjC,IAAI,CAAC,EAAE,EACP;YACC,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,uCAAuC;YAC9C,WAAW,EAAE,sDAAsD;YACnE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,SAAS,CAAC;SACrF,EACD,MAAM,CACN,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAe;QACxC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1C,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CACD"}
1
+ {"version":3,"file":"openAICompatibleProvider.js","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,MAAM,MAAM,GAA4B,YAAY,CAAC,QAAQ,CAAC,CAAC;AAE/D,MAAM,OAAO,wBAAyB,SAAQ,4BAAgD;IACpF,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACjB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IACX,UAAU,GAAG,QAAQ,CAAC;IACtB,MAAM,GAAG;QAC3B,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,0BAA0B;KACxC,CAAC;IAEF,SAAS;QACR,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAES,MAAM,CAAC,MAAoC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAEnC,OAAO,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC;IAC7B,CAAC;IAED,uEAAuE;IACpD,sBAAsB,CAAC,MAAmC;QAC5E,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAe,EAAE,SAAkB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC;QAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,SAAS,CAAC;YAAE,OAAO,GAAG,CAAC;QAErD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CACjC,IAAI,CAAC,EAAE,EACP;YACC,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,uCAAuC;YAC9C,WAAW,EAAE,sDAAsD;YACnE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,SAAS,CAAC;SACrF,EACD,MAAM,CACN,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAe;QACxC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1C,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CACD"}
@@ -1,6 +1,6 @@
1
1
  import type { AIProviders } from '../constants.js';
2
2
  import type { AIActionType, AIModel, AIProviderDescriptor } from '../models/model.js';
3
- import type { AIChatMessage, AIChatMessageRole, AIProvider, AIProviderResponse } from '../models/provider.js';
3
+ import type { AIChatMessage, AIChatMessageRole, AIFinishReason, AIProvider, AIProviderResponse, AIResponseFormat, AIToolCall, AIToolDefinition, JSONSchema } from '../models/provider.js';
4
4
  import type { AIProviderContext } from './context.js';
5
5
  export declare abstract class OpenAICompatibleProviderBase<T extends AIProviders> implements AIProvider<T> {
6
6
  protected readonly context: AIProviderContext;
@@ -17,20 +17,24 @@ export declare abstract class OpenAICompatibleProviderBase<T extends AIProviders
17
17
  configured(silent: boolean): Promise<boolean>;
18
18
  getApiKey(silent: boolean): Promise<string | undefined>;
19
19
  abstract getModels(): Promise<readonly AIModel<T>[]>;
20
+ protected isResponseFormatSessionRejected(model: AIModel<T>, responseFormat: AIResponseFormat): boolean;
21
+ protected rememberResponseFormatRejection(model: AIModel<T>, responseFormat: AIResponseFormat): void;
20
22
  protected abstract getUrl(_model: AIModel<T>): string | undefined;
21
23
  protected getHeaders<TAction extends AIActionType>(_action: TAction, apiKey: string, _model: AIModel<T>, _url: string, _conversationId?: string): Record<string, string> | Promise<Record<string, string>>;
22
- sendRequest<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, getMessages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage[]>, options: {
24
+ sendRequest<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, getMessages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage<AIChatMessageRole>[]>, options: {
23
25
  signal: AbortSignal;
24
26
  modelOptions?: {
25
27
  outputTokens?: number;
26
28
  temperature?: number;
27
29
  };
28
30
  conversationId?: string;
31
+ responseFormat?: AIResponseFormat;
32
+ tools?: readonly AIToolDefinition[];
29
33
  }): Promise<AIProviderResponse<void> | undefined>;
30
- protected fetch<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, messages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage[]>, modelOptions?: {
34
+ protected fetch<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, messages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage<AIChatMessageRole>[]>, modelOptions?: {
31
35
  outputTokens?: number;
32
36
  temperature?: number;
33
- }, signal?: AbortSignal, conversationId?: string): Promise<AIProviderResponse<void>>;
37
+ }, responseFormat?: AIResponseFormat, signal?: AbortSignal, conversationId?: string, tools?: readonly AIToolDefinition[]): Promise<AIProviderResponse<void>>;
34
38
  /**
35
39
  * Returns the message-related request fields. The default sends every message inline (OpenAI
36
40
  * Chat Completions semantics); providers whose API carries the initial system prompt separately
@@ -40,10 +44,155 @@ export declare abstract class OpenAICompatibleProviderBase<T extends AIProviders
40
44
  messages: AIChatMessage<AIChatMessageRole>[];
41
45
  system?: string;
42
46
  };
43
- protected handleFetchFailure<TAction extends AIActionType>(rsp: Response, _action: TAction, model: AIModel<T>, retries: number, maxInputTokens: number): Promise<{
47
+ /** Whether the given model accepts a native response-format/schema field; when false the
48
+ * prompt's JSON description is the only format control (the request is unchanged).
49
+ * Dynamic-catalog providers (GitKraken, OpenRouter) populate
50
+ * {@link AIModel.supportsStructuredOutputs}; static providers override with id-based gates */
51
+ protected supportsResponseFormat(model: AIModel<T>): boolean;
52
+ /**
53
+ * Whether a failed response reads as a rejection of the `tools` field rather than a problem with the
54
+ * prompt — the trigger for one retry without tools, so a tool-using feature degrades to single-shot
55
+ * instead of failing outright.
56
+ *
57
+ * Providers that wrap upstream rejections in their own envelope (e.g. GitKraken) must override this:
58
+ * the wrapper's prose names neither "tool" nor "function", so the text match here cannot see through
59
+ * it and the fallback would never fire.
60
+ */
61
+ protected isToolsRejection(status: number, message: string | undefined): boolean;
62
+ /** Whether a failed response means the native response format itself was rejected — the
63
+ * trigger for stripping it and retrying via the prompt-described JSON. Providers that wrap
64
+ * upstream rejections in their own envelope (e.g. GitKraken) extend this */
65
+ protected isResponseFormatRejection(status: number, body: string): boolean;
66
+ /** Translates the canonical response format onto the request; called only when
67
+ * {@link supportsResponseFormat} allows it. Base emits the OpenAI `response_format.json_schema`
68
+ * envelope. Overrides must REPLACE this for providers with a different native field
69
+ * (e.g. Anthropic `output_config`) — never leave both on the request. */
70
+ protected applyResponseFormat(request: ChatCompletionRequest, _model: AIModel<T>, responseFormat: AIResponseFormat): void;
71
+ protected extractContent(data: ChatCompletionResponse): string;
72
+ /** Normalizes abnormal completion signals (all arrive as HTTP 200) so consumers can
73
+ * distinguish truncated/filtered/refused output from a malformed-but-complete reply */
74
+ protected extractFinishReason(data: ChatCompletionResponse): AIFinishReason | undefined;
75
+ /**
76
+ * Maps messages onto the provider's wire shape. The default is OpenAI Chat Completions: assistant
77
+ * tool calls go in `tool_calls` with `arguments` JSON-stringified, and tool results are `tool`-role
78
+ * entries keyed by `tool_call_id`. Providers with a different tool encoding (e.g. Anthropic's
79
+ * content blocks) override this.
80
+ */
81
+ protected serializeMessages(messages: AIChatMessage<AIChatMessageRole>[]): unknown[];
82
+ /** Returns the tool-related request fields. The default is the OpenAI `function` envelope. */
83
+ protected serializeTools(tools: readonly AIToolDefinition[]): {
84
+ tools: unknown[];
85
+ };
86
+ /**
87
+ * Extracts tool calls from a response, handling both the OpenAI shape
88
+ * (`choices[].message.tool_calls`, whose `arguments` is a JSON string) and the Anthropic shape
89
+ * (`content[]` blocks of type `tool_use`) — mirroring how {@link fetch} already reads content
90
+ * from both.
91
+ */
92
+ protected parseToolCalls(data: ChatCompletionResponse): AIToolCall[] | undefined;
93
+ protected handleFetchFailure<TAction extends AIActionType>(rsp: Response, _action: TAction, model: AIModel<T>, retries: number, maxInputTokens: number,
94
+ /** The already-read error body, when the caller had to read it (avoids a second decode) */
95
+ body?: string, sentTools?: boolean): Promise<{
44
96
  retry: true;
45
97
  maxInputTokens: number;
98
+ withoutTools?: boolean;
46
99
  }>;
47
100
  protected fetchCore<TAction extends AIActionType>(action: TAction, model: AIModel<T>, apiKey: string, request: object, signal: AbortSignal | undefined, conversationId?: string): Promise<Response>;
48
101
  }
102
+ export interface ChatCompletionRequest {
103
+ model: string;
104
+ /** Provider-shaped messages from {@link OpenAICompatibleProviderBase.serializeMessages} */
105
+ messages: unknown[];
106
+ /** Anthropic carries the initial system prompt here instead of as a `system`-role message */
107
+ system?: string;
108
+ /** Tool definitions, shaped by {@link OpenAICompatibleProviderBase.serializeTools} */
109
+ tools?: unknown[];
110
+ /** @deprecated but used by Anthropic & Gemini */
111
+ max_tokens?: number;
112
+ /** Currently can't be used for Anthropic & Gemini */
113
+ max_completion_tokens?: number;
114
+ metadata?: Record<string, string>;
115
+ stream?: boolean;
116
+ temperature?: number;
117
+ top_p?: number;
118
+ /** Not supported by many models/providers */
119
+ reasoning_effort?: 'low' | 'medium' | 'high';
120
+ /** OpenAI-compatible structured output (set via {@link OpenAICompatibleProviderBase.applyResponseFormat}) */
121
+ response_format?: {
122
+ type: 'json_schema';
123
+ json_schema: {
124
+ name: string;
125
+ strict: boolean;
126
+ schema: JSONSchema;
127
+ };
128
+ };
129
+ /** Anthropic-native structured output (set only by the Anthropic override) */
130
+ output_config?: {
131
+ format: {
132
+ type: 'json_schema';
133
+ schema: JSONSchema;
134
+ };
135
+ };
136
+ /** OpenRouter-only routing constraint (set only by the OpenRouter override) */
137
+ provider?: {
138
+ require_parameters: boolean;
139
+ };
140
+ }
141
+ export interface ChatCompletionResponse {
142
+ id: string;
143
+ model: string;
144
+ /** OpenAI compatible output */
145
+ choices?: {
146
+ index: number;
147
+ message: {
148
+ role: string;
149
+ content: string | null;
150
+ /** OpenAI-only; most OpenAI-compatible servers omit it entirely */
151
+ refusal?: string | null;
152
+ tool_calls?: {
153
+ id: string;
154
+ type: string;
155
+ function: {
156
+ name: string;
157
+ arguments: string;
158
+ };
159
+ /** GitKraken proxy only — an opaque provider reasoning token to round-trip */
160
+ thought_signature?: string;
161
+ }[];
162
+ };
163
+ finish_reason: string;
164
+ }[];
165
+ /** Anthropic output (non-text blocks, e.g. thinking, carry no text). `tool_use` blocks add the
166
+ * call fields, which is why `id`/`name` are optional here — {@link parseToolCalls} narrows on
167
+ * `type` and then checks them. */
168
+ content?: {
169
+ type: string;
170
+ text?: string;
171
+ id?: string;
172
+ name?: string;
173
+ input?: Record<string, unknown>;
174
+ }[];
175
+ /** Error envelope some providers/proxies return with an OK status (e.g. OpenRouter upstream failures) */
176
+ error?: {
177
+ message?: string;
178
+ code?: number | string;
179
+ } | null;
180
+ /** Anthropic stop reason */
181
+ stop_reason?: string;
182
+ usage: {
183
+ /** OpenAI compatible */
184
+ prompt_tokens?: number;
185
+ completion_tokens?: number;
186
+ total_tokens?: number;
187
+ /** Anthropic */
188
+ input_tokens?: number;
189
+ output_tokens?: number;
190
+ /** GitKraken */
191
+ gk: {
192
+ used: number;
193
+ limit: number;
194
+ resets_on: string;
195
+ };
196
+ };
197
+ }
49
198
  //# sourceMappingURL=openAICompatibleProviderBase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openAICompatibleProviderBase.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProviderBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openAICompatibleProviderBase.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/openAICompatibleProviderBase.ts"],"names":[],"mappings":"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"}