@gitkraken/core-gitlens 0.5.110 → 0.5.111

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 +16 -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
@@ -2,16 +2,66 @@ import type { UnifiedDisposable } from '../../../utils/disposable.js';
2
2
  import type { Event } from '../../../utils/event.js';
3
3
  import type { AIProviders } from '../constants.js';
4
4
  import type { AIActionType, AIModel } from './model.js';
5
- export type AIChatMessageRole = 'assistant' | 'system' | 'user';
5
+ export type AIChatMessageRole = 'assistant' | 'system' | 'tool' | 'user';
6
+ /** A tool the model may call. `parameters` is a JSON Schema object — it maps to OpenAI's
7
+ * `function.parameters` and Anthropic's `input_schema` unchanged. */
8
+ export interface AIToolDefinition {
9
+ readonly name: string;
10
+ readonly description: string;
11
+ readonly parameters: Record<string, unknown>;
12
+ }
13
+ export interface AIToolCall {
14
+ readonly id: string;
15
+ readonly name: string;
16
+ readonly args: Record<string, unknown>;
17
+ /** Opaque provider reasoning token (the GitKraken proxy's `thought_signature`), base64-encoded.
18
+ * Must be echoed back on the next turn's assistant message or Anthropic rejects the tool result. */
19
+ readonly providerSignature?: string;
20
+ }
6
21
  export type AISystemChatMessage = AIChatMessage<'system'>;
7
22
  export interface AIChatMessage<T extends AIChatMessageRole = 'assistant' | 'user'> {
8
23
  role: T;
9
24
  content: string;
25
+ /** Tool calls this assistant turn requested. Only sent to providers with `supportsTools`. */
26
+ toolCalls?: readonly AIToolCall[];
27
+ /** On `tool`-role messages, the {@link AIToolCall.id} this result answers. */
28
+ toolCallId?: string;
29
+ /** On `tool`-role messages, the name of the tool that produced this result. */
30
+ toolName?: string;
10
31
  }
32
+ export type JSONSchemaType = 'object' | 'array' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
33
+ /** Portable JSON Schema subset accepted by every capable provider (OpenAI strict, Azure, Anthropic,
34
+ * Gemini, Mistral, xAI, Ollama). Keep schemas within it: object root, `additionalProperties: false`
35
+ * on every object, every property in `required` (model optionals as `['x', 'null']` unions), and no
36
+ * pattern/format/min/max/recursion. */
37
+ export type JSONSchema = {
38
+ readonly type: JSONSchemaType | readonly JSONSchemaType[];
39
+ readonly description?: string;
40
+ readonly properties?: Readonly<Record<string, JSONSchema>>;
41
+ readonly required?: readonly string[];
42
+ readonly items?: JSONSchema;
43
+ readonly enum?: readonly string[];
44
+ readonly additionalProperties?: boolean;
45
+ };
46
+ /** Canonical response format, shaped like OpenAI's `response_format.json_schema`; providers
47
+ * translate it (the OpenAI envelope is always sent `strict: true`) */
48
+ export type AIResponseFormat = {
49
+ /** OpenAI-envelope only ([a-zA-Z0-9_-], ≤64 chars); Anthropic/Ollama drop it */
50
+ readonly name: string;
51
+ readonly schema: JSONSchema;
52
+ };
53
+ export type AIFinishReason = 'length' | 'content_filter' | 'refusal';
11
54
  export interface AIProviderResponse<T> {
12
55
  readonly id: string;
13
56
  readonly content: string;
14
57
  readonly model: AIModel;
58
+ /** Abnormal completion only (truncated/filtered/refused); undefined on a normal stop */
59
+ readonly finishReason?: AIFinishReason;
60
+ /** Tool calls the model requested. Present only when `tools` were sent and the model used them. */
61
+ readonly toolCalls?: readonly AIToolCall[];
62
+ /** Set when the request was retried without tools because the provider rejected them, so the
63
+ * caller can stop offering tools for the rest of the session. */
64
+ readonly toolsRejected?: boolean;
15
65
  readonly usage?: {
16
66
  readonly promptTokens?: number;
17
67
  readonly completionTokens?: number;
@@ -31,11 +81,14 @@ export type AIProviderResult<T> = {
31
81
  export interface AIProvider<Provider extends AIProviders = AIProviders> extends UnifiedDisposable {
32
82
  readonly id: Provider;
33
83
  readonly name: string;
84
+ /** Whether this provider's wire format carries tool definitions, tool calls, and tool results.
85
+ * Providers that omit it never receive tool-shaped messages — callers fall back to text-only. */
86
+ readonly supportsTools?: boolean;
34
87
  onDidChange?: Event<void>;
35
88
  configured(silent: boolean): Promise<boolean>;
36
89
  getApiKey(silent: boolean): Promise<string | undefined>;
37
90
  getModels(): Promise<readonly AIModel<Provider>[]>;
38
- sendRequest<T extends AIActionType>(action: T, model: AIModel<Provider>, apiKey: string, getMessages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage[]>, options: {
91
+ sendRequest<T extends AIActionType>(action: T, model: AIModel<Provider>, apiKey: string, getMessages: (maxInputTokens: number, retries: number) => Promise<AIChatMessage<AIChatMessageRole>[]>, options: {
39
92
  signal: AbortSignal;
40
93
  modelOptions?: {
41
94
  outputTokens?: number;
@@ -44,6 +97,11 @@ export interface AIProvider<Provider extends AIProviders = AIProviders> extends
44
97
  /** Opaque session ID the GitKraken provider sends as `GK-Conversation-ID` so the backend
45
98
  * charges its per-feature fee once per session; ignored by all other providers. */
46
99
  conversationId?: string;
100
+ /** Schema for the provider to enforce natively when the model supports it; providers
101
+ * without support ignore it and the prompt's JSON description carries the load. */
102
+ responseFormat?: AIResponseFormat;
103
+ /** Tools to advertise to the model. Only passed to providers with `supportsTools`. */
104
+ tools?: readonly AIToolDefinition[];
47
105
  }): Promise<AIProviderResponse<void> | undefined>;
48
106
  }
49
107
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/models/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1D,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,iBAAiB,GAAG,WAAW,GAAG,MAAM;IAChF,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAChB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAE9B,QAAQ,CAAC,MAAM,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;SAAE,CAAC;KAC7F,CAAC;IAEF,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,WAAW,UAAU,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,iBAAiB;IAChG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAE1B,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxD,SAAS,IAAI,OAAO,CAAC,SAAS,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,WAAW,CAAC,CAAC,SAAS,YAAY,EACjC,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,EAClF,OAAO,EAAE;QACR,MAAM,EAAE,WAAW,CAAC;QACpB,YAAY,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/D;4FACoF;QACpF,cAAc,CAAC,EAAE,MAAM,CAAC;KACxB,GACC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/models/provider.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { PromptTemplate } from './models/promptTemplates.js';
2
+ import type { AIResponseFormat } from './models/provider.js';
2
3
  export declare const generateCommitMessage: PromptTemplate<'generate-commitMessage'>;
3
4
  export declare const generateCreatePullRequest: PromptTemplate<'generate-create-pullRequest'>;
4
5
  export declare const generateStashMessage: PromptTemplate<'generate-stashMessage'>;
@@ -6,10 +7,21 @@ export declare const generateCreateCloudPatch: PromptTemplate<'generate-create-c
6
7
  export declare const explainChanges: PromptTemplate<'explain-changes'>;
7
8
  export declare const generateChangelog: PromptTemplate<'generate-changelog'>;
8
9
  export declare const generateSearchQuery: PromptTemplate<'generate-searchQuery'>;
10
+ /** Example output block shared by the {@link generateCommits} template and its structural-retry prompt */
11
+ export declare const generateCommitsExampleJson = "{\n \"commits\": [\n {\n \"message\": \"[commit message here]\",\n \"explanation\": \"[detailed explanation of changes here]\",\n \"hunks\": [{\"hunk\": [index from hunk_map]}, {\"hunk\": [index from hunk_map]}]\n }\n ]\n}";
9
12
  export declare const generateCommits: PromptTemplate<'generate-commits'>;
13
+ /** Schema counterpart of the {@link generateCommits} template's described output shape */
14
+ export declare const generateCommitsSchema: AIResponseFormat;
10
15
  export declare const startWorkFromIssue: PromptTemplate<'start-work-issue'>;
11
16
  export declare const reviewPullRequest: PromptTemplate<'start-review-pullRequest'>;
12
17
  export declare const reviewChanges: PromptTemplate<'review-changes'>;
18
+ /** Schema counterpart of the {@link reviewChanges} template's output shape */
19
+ export declare const reviewResultSchema: AIResponseFormat;
20
+ /** Schema counterpart of the {@link reviewOverview} template — the manifest-only pass has no diffs,
21
+ * so the grammar itself forbids findings (the template mandates `"findings": null`) */
22
+ export declare const reviewOverviewSchema: AIResponseFormat;
23
+ /** Schema counterpart of the {@link reviewDetail} template's output shape */
24
+ export declare const reviewDetailSchema: AIResponseFormat;
13
25
  export declare const reviewOverview: PromptTemplate<'review-overview'>;
14
26
  export declare const reviewRefine: PromptTemplate<'review-refine'>;
15
27
  export declare const addressReviewFindings: PromptTemplate<'address-review-findings'>;
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/plus/ai/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,wBAAwB,CAiD1E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,6BAA6B,CAsDnF,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,uBAAuB,CA8BxE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,4BAA4B,CA8CjF,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAqD5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,oBAAoB,CA+ClE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,sBAAsB,CAiCtE,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,kBAAkB,CA8F9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,kBAAkB,CA0BjE,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,0BAA0B,CA2BxE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAoD1D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAwC5D,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,eAAe,CAcxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,yBAAyB,CAsB3E,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,eAAe,CAgDxD,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/plus/ai/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,sBAAsB,CAAC;AAEzE,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,wBAAwB,CAiD1E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,6BAA6B,CAsDnF,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,uBAAuB,CA8BxE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,4BAA4B,CA8CjF,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAqD5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,oBAAoB,CA+ClE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,sBAAsB,CAiCtE,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,0BAA0B,yQAQrC,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,kBAAkB,CAsF9D,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,EAAE,gBA8BnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,kBAAkB,CA0BjE,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,0BAA0B,CA2BxE,CAAC;AAKF,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAyD1D,CAAC;AAmDF,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,EAAE,gBAG/B,CAAC;AAEH;wFACwF;AACxF,eAAO,MAAM,oBAAoB,EAAE,gBAA+E,CAAC;AAEnH,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,gBAUhC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,iBAAiB,CA2C5D,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,eAAe,CAcxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,yBAAyB,CAsB3E,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,eAAe,CAqDxD,CAAC"}
@@ -317,8 +317,18 @@ User Query: \${query}
317
317
 
318
318
  Convert the user's natural language query into the appropriate search operators. Return only the search query string without any explanatory text. If the query cannot be converted to search operators, return the original query as a message search. For complex temporal expressions that might be ambiguous, prefer simpler, more reliable relative date formats.`,
319
319
  };
320
+ /** Example output block shared by the {@link generateCommits} template and its structural-retry prompt */
321
+ export const generateCommitsExampleJson = `{
322
+ "commits": [
323
+ {
324
+ "message": "[commit message here]",
325
+ "explanation": "[detailed explanation of changes here]",
326
+ "hunks": [{"hunk": [index from hunk_map]}, {"hunk": [index from hunk_map]}]
327
+ }
328
+ ]
329
+ }`;
320
330
  export const generateCommits = {
321
- id: 'generate-commits_v2',
331
+ id: 'generate-commits_v3',
322
332
  variables: ['hunks', 'existingCommits', 'commitMessages', 'hunkMap', 'instructions'],
323
333
  template: `You are an advanced AI programming assistant tasked with organizing code changes into commits. Your goal is to create a complete set of commits that are related, grouped logically, atomic, and easy to review. You will be working with individual code hunks and may have some existing commits that already have hunks assigned.
324
334
 
@@ -383,22 +393,14 @@ Follow these guidelines:
383
393
 
384
394
  8. Write a detailed explanation for each commit (separate from the commit message), walking through the changes in further detail as if explaining them to a reviewer.
385
395
 
386
- Output your complete commit organization as a JSON array. Each commit in the array should be an object with the following properties:
396
+ Output your complete commit organization as a single JSON object with a "commits" property. The "commits" property is an array where each commit is an object with the following properties:
387
397
  - "message": A string containing the commit message
388
398
  - "explanation": A string with a detailed explanation of the changes in the commit. Note that this is separate from the commit message and provides more detail than in the message itself.
389
399
  - "hunks": An array of objects, each representing a hunk in the commit. Each hunk object should have:
390
400
  - "hunk": The hunk index (number) from the hunk_map
391
401
 
392
- Write the JSON structure below inside a <output> tag and include no other text:
393
- <output>
394
- [
395
- {
396
- "message": "[commit message here]",
397
- "explanation": "[detailed explanation of changes here]",
398
- "hunks": [{"hunk": [index from hunk_map]}, {"hunk": [index from hunk_map]}]
399
- }
400
- ]
401
- </output>
402
+ Example output structure:
403
+ ${generateCommitsExampleJson}
402
404
 
403
405
  Remember:
404
406
  - Text in [] brackets above should be replaced with your own text, not including the brackets
@@ -409,9 +411,41 @@ Remember:
409
411
 
410
412
  \${instructions}
411
413
 
412
- Now, proceed with your analysis and organization of the commits. Return only the <output> tag and no other text.
414
+ Now, proceed with your analysis and organization of the commits. Return only the JSON object and no other text — no code fences, no XML tags, and no explanatory text.
413
415
  `,
414
416
  };
417
+ /** Schema counterpart of the {@link generateCommits} template's described output shape */
418
+ export const generateCommitsSchema = {
419
+ name: 'generate_commits',
420
+ schema: {
421
+ type: 'object',
422
+ additionalProperties: false,
423
+ required: ['commits'],
424
+ properties: {
425
+ commits: {
426
+ type: 'array',
427
+ items: {
428
+ type: 'object',
429
+ additionalProperties: false,
430
+ required: ['message', 'explanation', 'hunks'],
431
+ properties: {
432
+ message: { type: 'string', description: 'The commit message' },
433
+ explanation: { type: 'string', description: 'Detailed explanation of the changes' },
434
+ hunks: {
435
+ type: 'array',
436
+ items: {
437
+ type: 'object',
438
+ additionalProperties: false,
439
+ required: ['hunk'],
440
+ properties: { hunk: { type: 'integer', description: 'Hunk index from the hunk_map' } },
441
+ },
442
+ },
443
+ },
444
+ },
445
+ },
446
+ },
447
+ },
448
+ };
415
449
  export const startWorkFromIssue = {
416
450
  id: 'start-work-issue',
417
451
  variables: ['issue', 'instructions'],
@@ -467,8 +501,10 @@ You can use GitKraken MCP tools to gather additional context about the repositor
467
501
 
468
502
  Now, proceed with your analysis and provide a comprehensive review of the PR. Return only the relevant information without any additional text.`,
469
503
  };
504
+ // Shared by the reviewChanges and reviewDetail templates so line-citation rules can't drift apart
505
+ const lineCitationGuidance = `- For "lines", copy the "start" and "end" numbers from the \`[NNNNN]\` annotations of the specific lines your finding concerns. Do not count, infer, or estimate — use only the annotated numbers. Removed lines (blank brackets \`[ ]\`) cannot be cited; pick the nearest surrounding new-file line instead. Anchor the range tightly to the lines the finding actually concerns; do not span an entire hunk. If a finding is not tied to specific lines, set "lines" to null; if not tied to a single file, set "file" to null`;
470
506
  export const reviewChanges = {
471
- id: 'review-changes',
507
+ id: 'review-changes_v2',
472
508
  variables: ['diff', 'message', 'context', 'instructions'],
473
509
  template: `You are an expert code reviewer analyzing a set of code changes. Your goal is to identify meaningful issues — bugs, logic errors, security vulnerabilities, missing error handling, and potential regressions — while ignoring style preferences and linter-level concerns. Focus on problems a careful human reviewer would catch.
474
510
 
@@ -489,39 +525,111 @@ Author's description of the changes:
489
525
  Related work items (known pull requests and issues for this change set). Use these for *intent*: what the change is trying to accomplish. They are not authoritative spec — if a finding contradicts the stated intent, flag it rather than defer to it. May be empty.
490
526
  \${context}
491
527
 
492
- Produce a structured review in the following XML format. Include ONLY the XML tags described — no other text:
493
-
494
- <overview>
495
- A concise 1-3 sentence summary of what these changes do and their overall quality. Note any systemic concerns.
496
- </overview>
497
- <focus-areas>
498
- <area severity="critical|warning|suggestion" files="comma-separated file paths">
499
- <label>Short title of the concern (under 60 chars)</label>
500
- <rationale>Why this matters — what could go wrong or what is suboptimal</rationale>
501
- <findings>
502
- <finding severity="critical|warning|suggestion" file="path/to/file.ts" lines="start-end">
503
- <title>Specific issue title</title>
504
- <description>Clear explanation of the problem and how to address it</description>
505
- </finding>
506
- </findings>
507
- </area>
508
- </focus-areas>
528
+ Produce a structured review as a single JSON object with this exact structure:
529
+
530
+ {
531
+ "overview": "A concise 1-3 sentence summary of what these changes do and their overall quality. Note any systemic concerns.",
532
+ "focusAreas": [
533
+ {
534
+ "label": "Short title of the concern (under 60 chars)",
535
+ "rationale": "Why this matters what could go wrong or what is suboptimal",
536
+ "severity": "critical|warning|suggestion",
537
+ "files": ["path/to/file.ts"],
538
+ "findings": [
539
+ {
540
+ "severity": "critical|warning|suggestion",
541
+ "title": "Specific issue title",
542
+ "description": "Clear explanation of the problem and how to address it",
543
+ "file": "path/to/file.ts",
544
+ "lines": { "start": 42, "end": 45 }
545
+ }
546
+ ]
547
+ }
548
+ ]
549
+ }
509
550
 
510
551
  Guidelines:
511
552
  - Severity levels: "critical" = bugs, security issues, data loss risks; "warning" = logic concerns, missing error handling, potential regressions; "suggestion" = improvements, maintainability, performance
512
553
  - Group related findings into focus areas by theme, not by file
513
- - If changes look correct and well-structured, say so in the overview and include zero focus areas
554
+ - If changes look correct and well-structured, say so in the overview and use an empty "focusAreas" array
514
555
  - 3-5 high-quality findings are better than 15 low-quality ones
515
- - For \`lines="start-end"\`, copy the numbers from the \`[NNNNN]\` annotations of the specific lines your finding concerns. Do not count, infer, or estimate — use only the annotated numbers. Removed lines (blank brackets \`[ ]\`) cannot be cited; pick the nearest surrounding new-file line instead. Anchor the range tightly to the lines the finding actually concerns; do not span an entire hunk.
556
+ ${lineCitationGuidance}
516
557
  - Do not flag style issues, naming preferences, or things a linter would catch
517
558
  - Base conclusions only on the code shown — do not speculate about unseen code
518
559
 
519
560
  \${instructions}
520
561
 
521
- Review the changes and produce the structured XML output above.`,
562
+ Review the changes and return only the JSON object above — no other text, no code fences.`,
563
+ };
564
+ // Nullable so the same schema passes OpenAI strict mode (all properties required, optionals as
565
+ // null-unions) and Anthropic's structured outputs (which allow optionals natively)
566
+ const reviewFindingSchema = {
567
+ type: 'object',
568
+ additionalProperties: false,
569
+ required: ['severity', 'title', 'description', 'file', 'lines'],
570
+ properties: {
571
+ severity: { type: 'string', enum: ['critical', 'warning', 'suggestion'] },
572
+ title: { type: 'string' },
573
+ description: { type: 'string' },
574
+ file: { type: ['string', 'null'] },
575
+ lines: {
576
+ type: ['object', 'null'],
577
+ additionalProperties: false,
578
+ required: ['start', 'end'],
579
+ properties: { start: { type: 'integer' }, end: { type: 'integer' } },
580
+ },
581
+ },
582
+ };
583
+ function buildReviewResultSchema(name, findings) {
584
+ return {
585
+ name: name,
586
+ schema: {
587
+ type: 'object',
588
+ additionalProperties: false,
589
+ required: ['overview', 'focusAreas'],
590
+ properties: {
591
+ overview: { type: 'string' },
592
+ focusAreas: {
593
+ type: 'array',
594
+ items: {
595
+ type: 'object',
596
+ additionalProperties: false,
597
+ required: ['label', 'rationale', 'severity', 'files', 'findings'],
598
+ properties: {
599
+ label: { type: 'string' },
600
+ rationale: { type: 'string' },
601
+ severity: { type: 'string', enum: ['critical', 'warning', 'suggestion'] },
602
+ files: { type: 'array', items: { type: 'string' } },
603
+ findings: findings,
604
+ },
605
+ },
606
+ },
607
+ },
608
+ },
609
+ };
610
+ }
611
+ /** Schema counterpart of the {@link reviewChanges} template's output shape */
612
+ export const reviewResultSchema = buildReviewResultSchema('review_result', {
613
+ type: ['array', 'null'],
614
+ items: reviewFindingSchema,
615
+ });
616
+ /** Schema counterpart of the {@link reviewOverview} template — the manifest-only pass has no diffs,
617
+ * so the grammar itself forbids findings (the template mandates `"findings": null`) */
618
+ export const reviewOverviewSchema = buildReviewResultSchema('review_overview', { type: 'null' });
619
+ /** Schema counterpart of the {@link reviewDetail} template's output shape */
620
+ export const reviewDetailSchema = {
621
+ name: 'review_detail',
622
+ schema: {
623
+ type: 'object',
624
+ additionalProperties: false,
625
+ required: ['findings'],
626
+ properties: {
627
+ findings: { type: 'array', items: reviewFindingSchema },
628
+ },
629
+ },
522
630
  };
523
631
  export const reviewOverview = {
524
- id: 'review-overview',
632
+ id: 'review-overview_v2',
525
633
  variables: ['files', 'message', 'context', 'instructions'],
526
634
  template: `You are an expert code reviewer performing an initial assessment of a set of code changes. You are given a file manifest (not full diffs) — use the file paths, change types, and line counts to identify which areas deserve closer inspection.
527
635
 
@@ -538,31 +646,34 @@ Author's description of the changes:
538
646
  Related work items (known pull requests and issues for this change set). Use these for *intent* — what the change is trying to accomplish — when ranking which areas deserve closer review. May be empty.
539
647
  \${context}
540
648
 
541
- Produce a structured assessment in the following XML format. Include ONLY the XML tags described — no other text:
542
-
543
- <overview>
544
- A concise 1-3 sentence summary of the scope and nature of these changes based on the file manifest and description.
545
- </overview>
546
- <focus-areas>
547
- <area severity="critical|warning|suggestion" files="comma-separated file paths">
548
- <label>Short title of the area to inspect (under 60 chars)</label>
549
- <rationale>Why this area deserves closer review — based on the types of files changed, the volume of changes, and potential risk</rationale>
550
- </area>
551
- </focus-areas>
649
+ Produce a structured assessment as a single JSON object with this exact structure:
650
+
651
+ {
652
+ "overview": "A concise 1-3 sentence summary of the scope and nature of these changes based on the file manifest and description.",
653
+ "focusAreas": [
654
+ {
655
+ "label": "Short title of the area to inspect (under 60 chars)",
656
+ "rationale": "Why this area deserves closer review — based on the types of files changed, the volume of changes, and potential risk",
657
+ "severity": "critical|warning|suggestion",
658
+ "files": ["path/to/file.ts"],
659
+ "findings": null
660
+ }
661
+ ]
662
+ }
552
663
 
553
664
  Guidelines:
554
665
  - Severity reflects potential risk: "critical" = security-sensitive files, auth/crypto/payment paths, database migrations; "warning" = core logic changes, API changes, large modifications; "suggestion" = refactoring, config changes, documentation
555
666
  - Rank focus areas from highest to lowest risk
556
667
  - Group related files into focus areas by theme
557
668
  - Include 2-6 focus areas. If changes are very simple, fewer is fine
558
- - Do NOT include <findings>those come in a later pass when full diffs are available
669
+ - Always set "findings" to null findings come in a later pass when full diffs are available
559
670
 
560
671
  \${instructions}
561
672
 
562
- Assess the changes and produce the structured XML output above.`,
673
+ Assess the changes and return only the JSON object above — no other text, no code fences.`,
563
674
  };
564
675
  export const reviewRefine = {
565
- id: 'review-refine',
676
+ id: 'review-refine_v2',
566
677
  variables: ['instructions'],
567
678
  template: `The user has follow-up guidance for the review you produced above. Produce an updated review that incorporates it:
568
679
  - Keep prior findings that remain valid — do not drop them just because the guidance doesn't mention them
@@ -574,7 +685,7 @@ export const reviewRefine = {
574
685
  \${instructions}
575
686
  </~~instructions~~>
576
687
 
577
- Produce the full updated review in the same structured XML format as your previous response (<overview> + <focus-areas>). Include ONLY the XML tags — no other text.`,
688
+ Produce the full updated review as a single JSON object in the same structure as your previous response. Return only the JSON object — no other text, no code fences.`,
578
689
  };
579
690
  export const addressReviewFindings = {
580
691
  id: 'address-review-findings',
@@ -600,7 +711,7 @@ Guidelines:
600
711
  \${instructions}`,
601
712
  };
602
713
  export const reviewDetail = {
603
- id: 'review-detail',
714
+ id: 'review-detail_v2',
604
715
  variables: ['diff', 'overview', 'message', 'focusArea', 'context', 'instructions'],
605
716
  template: `You are an expert code reviewer performing a detailed inspection of specific files that were flagged for closer review. You have the context from an initial overview assessment.
606
717
 
@@ -628,24 +739,29 @@ Code changes for the files in this focus area (Git diff format). Each non-header
628
739
  \${diff}
629
740
  </~~diff~~>
630
741
 
631
- Produce detailed findings in the following XML format. Include ONLY the XML tags — no other text:
742
+ Produce detailed findings as a single JSON object with this exact structure:
632
743
 
633
- <findings>
634
- <finding severity="critical|warning|suggestion" file="path/to/file.ts" lines="start-end">
635
- <title>Specific issue title</title>
636
- <description>Clear explanation of the problem and how to address it</description>
637
- </finding>
638
- </findings>
744
+ {
745
+ "findings": [
746
+ {
747
+ "severity": "critical|warning|suggestion",
748
+ "title": "Specific issue title",
749
+ "description": "Clear explanation of the problem and how to address it",
750
+ "file": "path/to/file.ts",
751
+ "lines": { "start": 42, "end": 45 }
752
+ }
753
+ ]
754
+ }
639
755
 
640
756
  Guidelines:
641
757
  - Severity: "critical" = bugs, security, data loss; "warning" = logic concerns, error handling, regressions; "suggestion" = improvements, maintainability
642
- - For \`lines="start-end"\`, copy the numbers from the \`[NNNNN]\` annotations of the specific lines your finding concerns. Do not count, infer, or estimate — use only the annotated numbers. Removed lines (blank brackets \`[ ]\`) cannot be cited; pick the nearest surrounding new-file line instead. Anchor the range tightly to the lines the finding actually concerns; do not span an entire hunk.
758
+ ${lineCitationGuidance}
643
759
  - Be concrete — explain what the problem is and how to fix it
644
- - If the code in this area looks correct, return an empty <findings></findings> block
760
+ - If the code in this area looks correct, return {"findings": []}
645
761
  - Do not flag style issues or things a linter would catch
646
762
 
647
763
  \${instructions}
648
764
 
649
- Inspect the diff for this focus area and produce the structured XML findings above.`,
765
+ Inspect the diff for this focus area and return only the JSON object above — no other text, no code fences.`,
650
766
  };
651
767
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/plus/ai/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/plus/ai/prompts.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { anthropicProviderDescriptor as provider } from '../constants.js';
2
2
  import type { AIActionType, AIModel } from '../models/model.js';
3
- import type { AIChatMessage, AIChatMessageRole } from '../models/provider.js';
3
+ import type { AIChatMessage, AIChatMessageRole, AIResponseFormat, AIToolDefinition } from '../models/provider.js';
4
+ import type { ChatCompletionRequest } from './openAICompatibleProviderBase.js';
4
5
  import { OpenAICompatibleProviderBase } from './openAICompatibleProviderBase.js';
5
6
  export declare class AnthropicProvider extends OpenAICompatibleProviderBase<typeof provider.id> {
6
7
  readonly id: "anthropic";
7
8
  readonly name: string;
9
+ readonly supportsTools = true;
8
10
  protected readonly descriptor: import("../models/model.js").AIProviderDescriptor<"anthropic">;
9
11
  protected readonly config: {
10
12
  keyUrl: string;
@@ -12,15 +14,21 @@ export declare class AnthropicProvider extends OpenAICompatibleProviderBase<type
12
14
  };
13
15
  getModels(): Promise<readonly AIModel<typeof provider.id>[]>;
14
16
  protected getUrl(_model: AIModel<typeof provider.id>): string;
17
+ protected applyResponseFormat(request: ChatCompletionRequest, _model: AIModel<typeof provider.id>, responseFormat: AIResponseFormat): void;
15
18
  protected getHeaders<TAction extends AIActionType>(_action: TAction, apiKey: string, _model: AIModel<typeof provider.id>, _url: string): Record<string, string>;
16
19
  protected fetchCore<TAction extends AIActionType>(action: TAction, model: AIModel<typeof provider.id>, apiKey: string, request: object, signal: AbortSignal | undefined): Promise<Response>;
17
20
  protected extractSystemPrompt(messages: AIChatMessage<AIChatMessageRole>[]): {
18
21
  messages: AIChatMessage<AIChatMessageRole>[];
19
22
  system?: string;
20
23
  };
21
- protected handleFetchFailure<TAction extends AIActionType>(rsp: Response, action: TAction, model: AIModel<typeof provider.id>, retries: number, maxInputTokens: number): Promise<{
24
+ protected handleFetchFailure<TAction extends AIActionType>(rsp: Response, action: TAction, model: AIModel<typeof provider.id>, retries: number, maxInputTokens: number, body?: string, sentTools?: boolean): Promise<{
22
25
  retry: true;
23
26
  maxInputTokens: number;
27
+ withoutTools?: boolean;
24
28
  }>;
29
+ protected serializeTools(tools: readonly AIToolDefinition[]): {
30
+ tools: unknown[];
31
+ };
32
+ protected serializeMessages(messages: AIChatMessage<AIChatMessageRole>[]): unknown[];
25
33
  }
26
34
  //# sourceMappingURL=anthropicProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/anthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AA6NjF,qBAAa,iBAAkB,SAAQ,4BAA4B,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;IACtF,QAAQ,CAAC,EAAE,cAAe;IAC1B,QAAQ,CAAC,IAAI,SAAiB;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,iEAAY;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,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAE5D;IAED,UAAmB,UAAU,CAAC,OAAO,SAAS,YAAY,EACzD,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EACnC,IAAI,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;IAED,UAAmB,SAAS,CAAC,OAAO,SAAS,YAAY,EACxD,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAAG,SAAS,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAMnB;IAED,UAAmB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAE,GAAG;QACrF,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAUA;IAED,UAAyB,kBAAkB,CAAC,OAAO,SAAS,YAAY,EACvE,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAClC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAwClD;CACD"}
1
+ {"version":3,"file":"anthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/plus/ai/providers/anthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAElH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAiQjF,qBAAa,iBAAkB,SAAQ,4BAA4B,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;IACtF,QAAQ,CAAC,EAAE,cAAe;IAC1B,QAAQ,CAAC,IAAI,SAAiB;IAC9B,QAAQ,CAAC,aAAa,QAAQ;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,iEAAY;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,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAE5D;IAID,UAAmB,mBAAmB,CACrC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EACnC,cAAc,EAAE,gBAAgB,GAC9B,IAAI,CAEN;IAED,UAAmB,UAAU,CAAC,OAAO,SAAS,YAAY,EACzD,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EACnC,IAAI,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;IAED,UAAmB,SAAS,CAAC,OAAO,SAAS,YAAY,EACxD,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAAG,SAAS,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAMnB;IAED,UAAmB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAE,GAAG;QACrF,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAUA;IAED,UAAyB,kBAAkB,CAAC,OAAO,SAAS,YAAY,EACvE,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,EAClC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CA4C1E;IAED,UAAmB,cAAc,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG;QAAE,KAAK,EAAE,OAAO,EAAE,CAAA;KAAE,CAK1F;IAED,UAAmB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,CAwC5F;CACD"}