@gitkraken/core-gitlens 0.1.0 → 0.3.0

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 (451) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/dist/git/cache.d.ts +49 -9
  3. package/dist/git/cache.d.ts.map +1 -1
  4. package/dist/git/cache.js +174 -14
  5. package/dist/git/cache.js.map +1 -1
  6. package/dist/git/context.d.ts +11 -2
  7. package/dist/git/context.d.ts.map +1 -1
  8. package/dist/git/context.js.map +1 -1
  9. package/dist/git/models/branch.d.ts +1 -0
  10. package/dist/git/models/branch.d.ts.map +1 -1
  11. package/dist/git/models/branch.js.map +1 -1
  12. package/dist/git/models/commit.d.ts +1 -9
  13. package/dist/git/models/commit.d.ts.map +1 -1
  14. package/dist/git/models/commit.js +4 -9
  15. package/dist/git/models/commit.js.map +1 -1
  16. package/dist/git/models/graph.d.ts +2 -4
  17. package/dist/git/models/graph.d.ts.map +1 -1
  18. package/dist/git/models/reference.d.ts +31 -0
  19. package/dist/git/models/reference.d.ts.map +1 -1
  20. package/dist/git/models/remote.d.ts.map +1 -1
  21. package/dist/git/models/remote.js.map +1 -1
  22. package/dist/git/models/repository.d.ts +20 -3
  23. package/dist/git/models/repository.d.ts.map +1 -1
  24. package/dist/git/models/repository.js +42 -5
  25. package/dist/git/models/repository.js.map +1 -1
  26. package/dist/git/models/search.d.ts +2 -2
  27. package/dist/git/models/search.d.ts.map +1 -1
  28. package/dist/git/models/worktree.d.ts +4 -1
  29. package/dist/git/models/worktree.d.ts.map +1 -1
  30. package/dist/git/models/worktree.js +2 -2
  31. package/dist/git/models/worktree.js.map +1 -1
  32. package/dist/git/parsers/diffParser.d.ts +0 -1
  33. package/dist/git/parsers/diffParser.d.ts.map +1 -1
  34. package/dist/git/parsers/diffParser.js +22 -61
  35. package/dist/git/parsers/diffParser.js.map +1 -1
  36. package/dist/git/providers/branches.d.ts +18 -4
  37. package/dist/git/providers/branches.d.ts.map +1 -1
  38. package/dist/git/providers/commits.d.ts +6 -0
  39. package/dist/git/providers/commits.d.ts.map +1 -1
  40. package/dist/git/providers/config.d.ts +6 -1
  41. package/dist/git/providers/config.d.ts.map +1 -1
  42. package/dist/git/providers/diff.d.ts +2 -0
  43. package/dist/git/providers/diff.d.ts.map +1 -1
  44. package/dist/git/providers/operations.d.ts +39 -10
  45. package/dist/git/providers/operations.d.ts.map +1 -1
  46. package/dist/git/providers/pausedOperations.d.ts +3 -1
  47. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  48. package/dist/git/providers/refs.d.ts +23 -2
  49. package/dist/git/providers/refs.d.ts.map +1 -1
  50. package/dist/git/providers/revision.d.ts +1 -1
  51. package/dist/git/providers/revision.d.ts.map +1 -1
  52. package/dist/git/providers/staging.d.ts +18 -0
  53. package/dist/git/providers/staging.d.ts.map +1 -1
  54. package/dist/git/providers/status.d.ts +4 -1
  55. package/dist/git/providers/status.d.ts.map +1 -1
  56. package/dist/git/remotes/azure-devops.d.ts.map +1 -1
  57. package/dist/git/remotes/azure-devops.js.map +1 -1
  58. package/dist/git/{exec.types.d.ts → run.types.d.ts} +22 -3
  59. package/dist/git/run.types.d.ts.map +1 -0
  60. package/dist/git/run.types.js +2 -0
  61. package/dist/git/run.types.js.map +1 -0
  62. package/dist/git/service.d.ts.map +1 -1
  63. package/dist/git/service.js.map +1 -1
  64. package/dist/git/utils/autolink.utils.d.ts.map +1 -1
  65. package/dist/git/utils/autolink.utils.js.map +1 -1
  66. package/dist/git/utils/blame.utils.d.ts.map +1 -1
  67. package/dist/git/utils/blame.utils.js.map +1 -1
  68. package/dist/git/utils/conflictResolution.utils.d.ts +6 -0
  69. package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -0
  70. package/dist/git/utils/conflictResolution.utils.js +25 -0
  71. package/dist/git/utils/conflictResolution.utils.js.map +1 -0
  72. package/dist/git/utils/fileStatus.utils.d.ts +2 -1
  73. package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
  74. package/dist/git/utils/fileStatus.utils.js +4 -0
  75. package/dist/git/utils/fileStatus.utils.js.map +1 -1
  76. package/dist/git/utils/search.utils.d.ts.map +1 -1
  77. package/dist/git/utils/search.utils.js +3 -0
  78. package/dist/git/utils/search.utils.js.map +1 -1
  79. package/dist/git/utils/sorting.d.ts +14 -0
  80. package/dist/git/utils/sorting.d.ts.map +1 -1
  81. package/dist/git/utils/sorting.js +34 -0
  82. package/dist/git/utils/sorting.js.map +1 -1
  83. package/dist/git/utils/status.utils.d.ts.map +1 -1
  84. package/dist/git/utils/status.utils.js.map +1 -1
  85. package/dist/git/watching/classifyChange.d.ts.map +1 -1
  86. package/dist/git/watching/classifyChange.js +8 -0
  87. package/dist/git/watching/classifyChange.js.map +1 -1
  88. package/dist/git/watching/gitIgnoreFilter.js +1 -1
  89. package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
  90. package/dist/git/watching/initWatcher.d.ts.map +1 -1
  91. package/dist/git/watching/initWatcher.js.map +1 -1
  92. package/dist/git/watching/watchGroup.d.ts.map +1 -1
  93. package/dist/git/watching/watchGroup.js.map +1 -1
  94. package/dist/git/watching/watchService.d.ts.map +1 -1
  95. package/dist/git/watching/watchService.js +24 -4
  96. package/dist/git/watching/watchService.js.map +1 -1
  97. package/dist/git/watching/watchSession.d.ts.map +1 -1
  98. package/dist/git/watching/watchSession.js.map +1 -1
  99. package/dist/git-cli/cliGitProvider.js +1 -1
  100. package/dist/git-cli/cliGitProvider.js.map +1 -1
  101. package/dist/git-cli/exec/exec.types.d.ts +1 -1
  102. package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
  103. package/dist/git-cli/exec/git.d.ts +31 -6
  104. package/dist/git-cli/exec/git.d.ts.map +1 -1
  105. package/dist/git-cli/exec/git.js +70 -9
  106. package/dist/git-cli/exec/git.js.map +1 -1
  107. package/dist/git-cli/exec/gitQueue.d.ts +22 -6
  108. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
  109. package/dist/git-cli/exec/gitQueue.js +88 -24
  110. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  111. package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
  112. package/dist/git-cli/parsers/blameParser.js.map +1 -1
  113. package/dist/git-cli/parsers/logParser.d.ts +1 -0
  114. package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
  115. package/dist/git-cli/parsers/logParser.js +4 -0
  116. package/dist/git-cli/parsers/logParser.js.map +1 -1
  117. package/dist/git-cli/parsers/refParser.d.ts +3 -30
  118. package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
  119. package/dist/git-cli/parsers/refParser.js +30 -30
  120. package/dist/git-cli/parsers/refParser.js.map +1 -1
  121. package/dist/git-cli/providers/blame.d.ts.map +1 -1
  122. package/dist/git-cli/providers/blame.js +1 -1
  123. package/dist/git-cli/providers/blame.js.map +1 -1
  124. package/dist/git-cli/providers/branches.d.ts +17 -5
  125. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  126. package/dist/git-cli/providers/branches.js +245 -162
  127. package/dist/git-cli/providers/branches.js.map +1 -1
  128. package/dist/git-cli/providers/commits.d.ts +4 -0
  129. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  130. package/dist/git-cli/providers/commits.js +120 -35
  131. package/dist/git-cli/providers/commits.js.map +1 -1
  132. package/dist/git-cli/providers/config.d.ts +11 -2
  133. package/dist/git-cli/providers/config.d.ts.map +1 -1
  134. package/dist/git-cli/providers/config.js +36 -11
  135. package/dist/git-cli/providers/config.js.map +1 -1
  136. package/dist/git-cli/providers/contributors.d.ts.map +1 -1
  137. package/dist/git-cli/providers/contributors.js +7 -4
  138. package/dist/git-cli/providers/contributors.js.map +1 -1
  139. package/dist/git-cli/providers/diff.d.ts +2 -0
  140. package/dist/git-cli/providers/diff.d.ts.map +1 -1
  141. package/dist/git-cli/providers/diff.js +92 -20
  142. package/dist/git-cli/providers/diff.js.map +1 -1
  143. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  144. package/dist/git-cli/providers/graph.js +49 -28
  145. package/dist/git-cli/providers/graph.js.map +1 -1
  146. package/dist/git-cli/providers/operations.d.ts +30 -11
  147. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  148. package/dist/git-cli/providers/operations.js +146 -43
  149. package/dist/git-cli/providers/operations.js.map +1 -1
  150. package/dist/git-cli/providers/patch.d.ts.map +1 -1
  151. package/dist/git-cli/providers/patch.js +15 -30
  152. package/dist/git-cli/providers/patch.js.map +1 -1
  153. package/dist/git-cli/providers/pausedOperations.d.ts +3 -1
  154. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  155. package/dist/git-cli/providers/pausedOperations.js +13 -7
  156. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  157. package/dist/git-cli/providers/refs.d.ts +19 -2
  158. package/dist/git-cli/providers/refs.d.ts.map +1 -1
  159. package/dist/git-cli/providers/refs.js +312 -9
  160. package/dist/git-cli/providers/refs.js.map +1 -1
  161. package/dist/git-cli/providers/remotes.js +4 -4
  162. package/dist/git-cli/providers/remotes.js.map +1 -1
  163. package/dist/git-cli/providers/revision.d.ts +1 -1
  164. package/dist/git-cli/providers/revision.d.ts.map +1 -1
  165. package/dist/git-cli/providers/revision.js +15 -11
  166. package/dist/git-cli/providers/revision.js.map +1 -1
  167. package/dist/git-cli/providers/staging.d.ts +8 -0
  168. package/dist/git-cli/providers/staging.d.ts.map +1 -1
  169. package/dist/git-cli/providers/staging.js +52 -8
  170. package/dist/git-cli/providers/staging.js.map +1 -1
  171. package/dist/git-cli/providers/stash.d.ts +0 -8
  172. package/dist/git-cli/providers/stash.d.ts.map +1 -1
  173. package/dist/git-cli/providers/stash.js +63 -119
  174. package/dist/git-cli/providers/stash.js.map +1 -1
  175. package/dist/git-cli/providers/status.d.ts +4 -1
  176. package/dist/git-cli/providers/status.d.ts.map +1 -1
  177. package/dist/git-cli/providers/status.js +10 -9
  178. package/dist/git-cli/providers/status.js.map +1 -1
  179. package/dist/git-cli/providers/tags.d.ts.map +1 -1
  180. package/dist/git-cli/providers/tags.js +13 -9
  181. package/dist/git-cli/providers/tags.js.map +1 -1
  182. package/dist/git-cli/providers/worktrees.js +3 -3
  183. package/dist/git-cli/providers/worktrees.js.map +1 -1
  184. package/dist/ipc/discovery.d.ts +27 -0
  185. package/dist/ipc/discovery.d.ts.map +1 -0
  186. package/dist/ipc/discovery.js +38 -0
  187. package/dist/ipc/discovery.js.map +1 -0
  188. package/dist/ipc/ipcServer.d.ts +20 -0
  189. package/dist/ipc/ipcServer.d.ts.map +1 -0
  190. package/dist/ipc/ipcServer.js +162 -0
  191. package/dist/ipc/ipcServer.js.map +1 -0
  192. package/dist/plus/agents/providers/claudeCodeProvider.d.ts +114 -0
  193. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -0
  194. package/dist/plus/agents/providers/claudeCodeProvider.js +1480 -0
  195. package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -0
  196. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +36 -0
  197. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -0
  198. package/dist/plus/agents/providers/claudeCodeTranscript.js +171 -0
  199. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -0
  200. package/dist/plus/agents/sanitizePrompt.d.ts +15 -0
  201. package/dist/plus/agents/sanitizePrompt.d.ts.map +1 -0
  202. package/dist/plus/agents/sanitizePrompt.js +103 -0
  203. package/dist/plus/agents/sanitizePrompt.js.map +1 -0
  204. package/dist/plus/agents/stateMachine.d.ts +32 -0
  205. package/dist/plus/agents/stateMachine.d.ts.map +1 -0
  206. package/dist/plus/agents/stateMachine.js +180 -0
  207. package/dist/plus/agents/stateMachine.js.map +1 -0
  208. package/dist/plus/agents/types.d.ts +203 -0
  209. package/dist/plus/agents/types.d.ts.map +1 -0
  210. package/dist/plus/agents/types.js +49 -0
  211. package/dist/plus/agents/types.js.map +1 -0
  212. package/dist/plus/ai/constants.d.ts +2 -1
  213. package/dist/plus/ai/constants.d.ts.map +1 -1
  214. package/dist/plus/ai/constants.js +7 -0
  215. package/dist/plus/ai/constants.js.map +1 -1
  216. package/dist/plus/ai/errors.d.ts +4 -1
  217. package/dist/plus/ai/errors.d.ts.map +1 -1
  218. package/dist/plus/ai/errors.js +38 -0
  219. package/dist/plus/ai/errors.js.map +1 -1
  220. package/dist/plus/ai/models/model.d.ts +1 -1
  221. package/dist/plus/ai/models/model.d.ts.map +1 -1
  222. package/dist/plus/ai/models/model.js.map +1 -1
  223. package/dist/plus/ai/models/promptTemplates.d.ts +28 -2
  224. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  225. package/dist/plus/ai/models/results.d.ts +28 -0
  226. package/dist/plus/ai/models/results.d.ts.map +1 -1
  227. package/dist/plus/ai/prompts.d.ts +4 -0
  228. package/dist/plus/ai/prompts.d.ts.map +1 -1
  229. package/dist/plus/ai/prompts.js +167 -1
  230. package/dist/plus/ai/prompts.js.map +1 -1
  231. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
  232. package/dist/plus/ai/utils/ai.utils.js +2 -0
  233. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  234. package/dist/plus/ai/utils/results.utils.d.ts +3 -0
  235. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
  236. package/dist/plus/ai/utils/results.utils.js +75 -0
  237. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  238. package/dist/plus/ai/utils/truncation.utils.d.ts +1 -1
  239. package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -1
  240. package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
  241. package/dist/plus/git-github/api/github.d.ts +10 -1
  242. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  243. package/dist/plus/git-github/api/github.js +156 -49
  244. package/dist/plus/git-github/api/github.js.map +1 -1
  245. package/dist/plus/git-github/api/types.d.ts +8 -0
  246. package/dist/plus/git-github/api/types.d.ts.map +1 -1
  247. package/dist/plus/git-github/models.d.ts +1 -1
  248. package/dist/plus/git-github/models.d.ts.map +1 -1
  249. package/dist/plus/git-github/models.js.map +1 -1
  250. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
  251. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  252. package/dist/plus/git-github/providers/github/branches.d.ts +5 -1
  253. package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
  254. package/dist/plus/git-github/providers/github/branches.js +60 -22
  255. package/dist/plus/git-github/providers/github/branches.js.map +1 -1
  256. package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
  257. package/dist/plus/git-github/providers/github/commits.js +144 -92
  258. package/dist/plus/git-github/providers/github/commits.js.map +1 -1
  259. package/dist/plus/git-github/providers/github/diff.d.ts +3 -1
  260. package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
  261. package/dist/plus/git-github/providers/github/diff.js +23 -9
  262. package/dist/plus/git-github/providers/github/diff.js.map +1 -1
  263. package/dist/plus/git-github/providers/github/refs.d.ts +9 -1
  264. package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
  265. package/dist/plus/git-github/providers/github/refs.js +38 -13
  266. package/dist/plus/git-github/providers/github/refs.js.map +1 -1
  267. package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
  268. package/dist/plus/git-github/providers/github/revision.js +1 -2
  269. package/dist/plus/git-github/providers/github/revision.js.map +1 -1
  270. package/dist/plus/git-github/providers/github/status.d.ts +4 -1
  271. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
  272. package/dist/plus/git-github/providers/github/status.js +1 -1
  273. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  274. package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
  275. package/dist/plus/git-github/providers/github/tags.js +35 -36
  276. package/dist/plus/git-github/providers/github/tags.js.map +1 -1
  277. package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
  278. package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
  279. package/dist/utils/color.d.ts.map +1 -1
  280. package/dist/utils/color.js.map +1 -1
  281. package/dist/utils/decorators/log.js +1 -1
  282. package/dist/utils/decorators/log.js.map +1 -1
  283. package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
  284. package/dist/utils/decorators/sequentialize.js +4 -2
  285. package/dist/utils/decorators/sequentialize.js.map +1 -1
  286. package/dist/utils/decorators/serializable.d.ts.map +1 -1
  287. package/dist/utils/decorators/serializable.js.map +1 -1
  288. package/dist/utils/dedupedAsyncCache.d.ts +37 -0
  289. package/dist/utils/dedupedAsyncCache.d.ts.map +1 -0
  290. package/dist/utils/dedupedAsyncCache.js +68 -0
  291. package/dist/utils/dedupedAsyncCache.js.map +1 -0
  292. package/dist/utils/diff.d.ts +2 -0
  293. package/dist/utils/diff.d.ts.map +1 -0
  294. package/dist/utils/diff.js +53 -0
  295. package/dist/utils/diff.js.map +1 -0
  296. package/dist/utils/disposable.d.ts.map +1 -1
  297. package/dist/utils/disposable.js.map +1 -1
  298. package/dist/utils/env/node/base64.js.map +1 -1
  299. package/dist/utils/env/node/exec.d.ts.map +1 -1
  300. package/dist/utils/env/node/exec.js.map +1 -1
  301. package/dist/utils/error.d.ts.map +1 -1
  302. package/dist/utils/error.js.map +1 -1
  303. package/dist/utils/formatter.d.ts.map +1 -1
  304. package/dist/utils/formatter.js +4 -10
  305. package/dist/utils/formatter.js.map +1 -1
  306. package/dist/utils/iterable.d.ts.map +1 -1
  307. package/dist/utils/iterable.js.map +1 -1
  308. package/dist/utils/logger.d.ts.map +1 -1
  309. package/dist/utils/logger.js.map +1 -1
  310. package/dist/utils/lruMap.d.ts +49 -0
  311. package/dist/utils/lruMap.d.ts.map +1 -0
  312. package/dist/utils/lruMap.js +103 -0
  313. package/dist/utils/lruMap.js.map +1 -0
  314. package/dist/utils/markdown.d.ts.map +1 -1
  315. package/dist/utils/markdown.js.map +1 -1
  316. package/dist/utils/mru.d.ts.map +1 -1
  317. package/dist/utils/mru.js.map +1 -1
  318. package/dist/utils/path.d.ts.map +1 -1
  319. package/dist/utils/path.js.map +1 -1
  320. package/dist/utils/promise.d.ts +1 -0
  321. package/dist/utils/promise.d.ts.map +1 -1
  322. package/dist/utils/promise.js +17 -0
  323. package/dist/utils/promise.js.map +1 -1
  324. package/dist/utils/promiseCache.d.ts +10 -0
  325. package/dist/utils/promiseCache.d.ts.map +1 -1
  326. package/dist/utils/promiseCache.js +22 -0
  327. package/dist/utils/promiseCache.js.map +1 -1
  328. package/dist/utils/string.d.ts.map +1 -1
  329. package/dist/utils/string.js.map +1 -1
  330. package/dist/utils/uri.d.ts.map +1 -1
  331. package/dist/utils/uri.js.map +1 -1
  332. package/dist/utils/version.d.ts +14 -0
  333. package/dist/utils/version.d.ts.map +1 -1
  334. package/dist/utils/version.js +48 -0
  335. package/dist/utils/version.js.map +1 -1
  336. package/package.json +13 -1
  337. package/src/git/cache.ts +309 -29
  338. package/src/git/context.ts +11 -2
  339. package/src/git/models/branch.ts +1 -0
  340. package/src/git/models/commit.ts +2 -17
  341. package/src/git/models/graph.ts +2 -4
  342. package/src/git/models/reference.ts +33 -0
  343. package/src/git/models/remote.ts +1 -0
  344. package/src/git/models/repository.ts +44 -6
  345. package/src/git/models/search.ts +2 -2
  346. package/src/git/models/worktree.ts +10 -2
  347. package/src/git/parsers/diffParser.ts +9 -44
  348. package/src/git/providers/branches.ts +25 -4
  349. package/src/git/providers/commits.ts +7 -0
  350. package/src/git/providers/config.ts +4 -0
  351. package/src/git/providers/diff.ts +8 -2
  352. package/src/git/providers/operations.ts +54 -3
  353. package/src/git/providers/pausedOperations.ts +1 -0
  354. package/src/git/providers/refs.ts +32 -3
  355. package/src/git/providers/revision.ts +5 -1
  356. package/src/git/providers/staging.ts +14 -0
  357. package/src/git/providers/status.ts +6 -1
  358. package/src/git/remotes/azure-devops.ts +2 -0
  359. package/src/git/{exec.types.ts → run.types.ts} +22 -2
  360. package/src/git/service.ts +1 -0
  361. package/src/git/utils/autolink.utils.ts +1 -0
  362. package/src/git/utils/blame.utils.ts +2 -0
  363. package/src/git/utils/conflictResolution.utils.ts +31 -0
  364. package/src/git/utils/fileStatus.utils.ts +7 -1
  365. package/src/git/utils/search.utils.ts +2 -0
  366. package/src/git/utils/sorting.ts +38 -0
  367. package/src/git/utils/status.utils.ts +1 -0
  368. package/src/git/watching/classifyChange.ts +9 -0
  369. package/src/git/watching/gitIgnoreFilter.ts +2 -2
  370. package/src/git/watching/initWatcher.ts +2 -0
  371. package/src/git/watching/watchGroup.ts +3 -0
  372. package/src/git/watching/watchService.ts +38 -5
  373. package/src/git/watching/watchSession.ts +10 -0
  374. package/src/git-cli/cliGitProvider.ts +1 -1
  375. package/src/git-cli/exec/exec.types.ts +2 -2
  376. package/src/git-cli/exec/git.ts +76 -23
  377. package/src/git-cli/exec/gitQueue.ts +98 -25
  378. package/src/git-cli/parsers/blameParser.ts +1 -0
  379. package/src/git-cli/parsers/logParser.ts +6 -1
  380. package/src/git-cli/parsers/refParser.ts +33 -34
  381. package/src/git-cli/providers/blame.ts +2 -1
  382. package/src/git-cli/providers/branches.ts +341 -196
  383. package/src/git-cli/providers/commits.ts +145 -46
  384. package/src/git-cli/providers/config.ts +50 -16
  385. package/src/git-cli/providers/contributors.ts +7 -12
  386. package/src/git-cli/providers/diff.ts +107 -20
  387. package/src/git-cli/providers/graph.ts +58 -29
  388. package/src/git-cli/providers/operations.ts +253 -57
  389. package/src/git-cli/providers/patch.ts +16 -37
  390. package/src/git-cli/providers/pausedOperations.ts +14 -6
  391. package/src/git-cli/providers/refs.ts +274 -11
  392. package/src/git-cli/providers/remotes.ts +4 -4
  393. package/src/git-cli/providers/revision.ts +22 -15
  394. package/src/git-cli/providers/staging.ts +51 -8
  395. package/src/git-cli/providers/stash.ts +67 -134
  396. package/src/git-cli/providers/status.ts +21 -10
  397. package/src/git-cli/providers/tags.ts +18 -19
  398. package/src/git-cli/providers/worktrees.ts +3 -3
  399. package/src/ipc/discovery.ts +56 -0
  400. package/src/ipc/ipcServer.ts +171 -0
  401. package/src/plus/agents/providers/claudeCodeProvider.ts +1782 -0
  402. package/src/plus/agents/providers/claudeCodeTranscript.ts +214 -0
  403. package/src/plus/agents/sanitizePrompt.ts +109 -0
  404. package/src/plus/agents/stateMachine.ts +197 -0
  405. package/src/plus/agents/types.ts +277 -0
  406. package/src/plus/ai/constants.ts +8 -0
  407. package/src/plus/ai/errors.ts +40 -0
  408. package/src/plus/ai/models/model.ts +1 -0
  409. package/src/plus/ai/models/promptTemplates.ts +42 -0
  410. package/src/plus/ai/models/results.ts +30 -0
  411. package/src/plus/ai/prompts.ts +171 -1
  412. package/src/plus/ai/utils/ai.utils.ts +2 -0
  413. package/src/plus/ai/utils/results.utils.ts +101 -0
  414. package/src/plus/ai/utils/truncation.utils.ts +3 -1
  415. package/src/plus/git-github/api/github.ts +199 -53
  416. package/src/plus/git-github/api/types.ts +15 -0
  417. package/src/plus/git-github/models.ts +1 -1
  418. package/src/plus/git-github/providers/github/blame.ts +2 -0
  419. package/src/plus/git-github/providers/github/branches.ts +75 -33
  420. package/src/plus/git-github/providers/github/commits.ts +231 -160
  421. package/src/plus/git-github/providers/github/diff.ts +35 -21
  422. package/src/plus/git-github/providers/github/refs.ts +57 -22
  423. package/src/plus/git-github/providers/github/revision.ts +1 -2
  424. package/src/plus/git-github/providers/github/status.ts +6 -1
  425. package/src/plus/git-github/providers/github/tags.ts +61 -62
  426. package/src/plus/git-github/providers/githubGitProvider.ts +1 -0
  427. package/src/utils/color.ts +2 -0
  428. package/src/utils/decorators/log.ts +1 -1
  429. package/src/utils/decorators/sequentialize.ts +8 -6
  430. package/src/utils/decorators/serializable.ts +1 -0
  431. package/src/utils/dedupedAsyncCache.ts +74 -0
  432. package/src/utils/diff.ts +61 -0
  433. package/src/utils/disposable.ts +2 -0
  434. package/src/utils/env/node/base64.ts +1 -1
  435. package/src/utils/env/node/exec.ts +4 -2
  436. package/src/utils/error.ts +1 -0
  437. package/src/utils/formatter.ts +4 -11
  438. package/src/utils/iterable.ts +4 -1
  439. package/src/utils/logger.ts +1 -0
  440. package/src/utils/lruMap.ts +112 -0
  441. package/src/utils/markdown.ts +1 -0
  442. package/src/utils/mru.ts +2 -0
  443. package/src/utils/path.ts +1 -0
  444. package/src/utils/promise.ts +22 -0
  445. package/src/utils/promiseCache.ts +24 -0
  446. package/src/utils/string.ts +2 -0
  447. package/src/utils/uri.ts +1 -0
  448. package/src/utils/version.ts +49 -0
  449. package/dist/git/exec.types.d.ts.map +0 -1
  450. package/dist/git/exec.types.js +0 -2
  451. package/dist/git/exec.types.js.map +0 -1
@@ -0,0 +1,180 @@
1
+ import { kill } from 'process';
2
+ /** Cap for derived plan / question summaries — short enough to clamp into a card row without
3
+ * truncation eating the leading content, long enough to convey what the prompt is about. */
4
+ const summaryMaxLength = 120;
5
+ export function deriveStatusFromEvent(event) {
6
+ switch (event) {
7
+ case 'SessionStart':
8
+ case 'Stop':
9
+ case 'StopFailure':
10
+ return 'idle';
11
+ case 'PreToolUse':
12
+ return 'tool_use';
13
+ case 'PreCompact':
14
+ return 'compacting';
15
+ case 'PermissionRequest':
16
+ case 'Elicitation':
17
+ return 'permission_requested';
18
+ case 'UserPromptSubmit':
19
+ case 'PostToolUse':
20
+ case 'PostToolUseFailure':
21
+ case 'PostCompact':
22
+ case 'PermissionDenied':
23
+ case 'ElicitationResult':
24
+ case 'SubagentStart':
25
+ case 'SubagentStop':
26
+ return 'thinking';
27
+ default:
28
+ return 'idle';
29
+ }
30
+ }
31
+ export function isProcessAlive(pid) {
32
+ // `kill(0, ...)` and `kill(<negative>, ...)` have process-group semantics on POSIX
33
+ // (and target the current process under libuv on Windows), so they don't tell us
34
+ // anything about a specific pid. Reject anything that isn't a real, positive pid.
35
+ if (!Number.isInteger(pid) || pid <= 0)
36
+ return false;
37
+ try {
38
+ kill(pid, 0);
39
+ return true;
40
+ }
41
+ catch (ex) {
42
+ // The process exists but we can't signal it: sandboxed/different uid (POSIX
43
+ // EPERM) or `OpenProcess` access-denied (Windows EACCES). Treat as alive.
44
+ // ESRCH and everything else mean dead.
45
+ const code = ex?.code;
46
+ return code === 'EPERM' || code === 'EACCES';
47
+ }
48
+ }
49
+ export function rehydrateSubagents(subagents) {
50
+ if (subagents == null || subagents.length === 0)
51
+ return undefined;
52
+ return subagents.map(s => ({
53
+ ...s,
54
+ lastActivity: new Date(s.lastActivity),
55
+ phaseSince: new Date(s.phaseSince),
56
+ }));
57
+ }
58
+ export function describeToolInput(toolName, toolInput) {
59
+ let detail;
60
+ switch (toolName) {
61
+ case 'Bash':
62
+ detail = toolInput.command;
63
+ break;
64
+ case 'Edit':
65
+ case 'MultiEdit':
66
+ case 'Write':
67
+ case 'Read':
68
+ detail = toolInput.file_path;
69
+ break;
70
+ case 'Grep':
71
+ case 'Glob':
72
+ detail = toolInput.pattern;
73
+ break;
74
+ case 'WebFetch':
75
+ detail = toolInput.url;
76
+ break;
77
+ case 'WebSearch':
78
+ detail = toolInput.query;
79
+ break;
80
+ case 'NotebookEdit':
81
+ detail = toolInput.notebook_path;
82
+ break;
83
+ case 'ExitPlanMode':
84
+ detail = extractPlanSummary(toolInput);
85
+ break;
86
+ case 'AskUserQuestion':
87
+ detail = extractQuestionDetails(toolInput)?.text;
88
+ break;
89
+ }
90
+ return detail != null ? `${toolName}(${detail})` : toolName;
91
+ }
92
+ /** Maps a Claude Code tool name to its UX-relevant prompt kind. `ExitPlanMode` and
93
+ * `AskUserQuestion` are the two tools whose semantics differ from a regular permission
94
+ * request — everything else falls through to the generic tool kind. */
95
+ export function classifyPermissionKind(toolName) {
96
+ switch (toolName) {
97
+ case 'ExitPlanMode':
98
+ return 'plan';
99
+ case 'AskUserQuestion':
100
+ return 'question';
101
+ default:
102
+ return 'tool';
103
+ }
104
+ }
105
+ /** Extracts a short, scannable summary from an ExitPlanMode plan body. Prefers the first
106
+ * Markdown heading (stripped of leading `#`s) so the plan's title surfaces; falls back to
107
+ * the first non-empty line if no heading appears. Capped at {@link summaryMaxLength} with an
108
+ * ellipsis. */
109
+ export function extractPlanSummary(toolInput) {
110
+ const plan = toolInput.plan;
111
+ if (!plan)
112
+ return undefined;
113
+ let heading;
114
+ let firstNonEmpty;
115
+ for (const line of plan.split(/\r?\n/)) {
116
+ const trimmed = line.trim();
117
+ if (!trimmed)
118
+ continue;
119
+ if (trimmed.startsWith('#')) {
120
+ const stripped = trimmed.replace(/^#+\s*/, '').trim();
121
+ if (stripped) {
122
+ heading = stripped;
123
+ break;
124
+ }
125
+ }
126
+ firstNonEmpty ??= trimmed;
127
+ }
128
+ const summary = heading ?? firstNonEmpty;
129
+ if (!summary)
130
+ return undefined;
131
+ return summary.length > summaryMaxLength ? `${summary.slice(0, summaryMaxLength).trimEnd()}…` : summary;
132
+ }
133
+ /** Extracts the leading question text + total question count from an AskUserQuestion call.
134
+ * Returns undefined if the input doesn't carry a recognisable `questions` array. */
135
+ export function extractQuestionDetails(toolInput) {
136
+ const questions = toolInput.questions;
137
+ if (!Array.isArray(questions) || questions.length === 0)
138
+ return undefined;
139
+ const first = questions[0]?.question;
140
+ if (typeof first !== 'string')
141
+ return undefined;
142
+ const trimmed = first.trim();
143
+ if (!trimmed)
144
+ return undefined;
145
+ const text = trimmed.length > summaryMaxLength ? `${trimmed.slice(0, summaryMaxLength).trimEnd()}…` : trimmed;
146
+ return { text: text, count: questions.length };
147
+ }
148
+ /** Returns the file path a file-mutating tool is targeting, or `undefined` for non-mutating /
149
+ * non-file tools. `Read` is intentionally excluded — "working on a file" means writing to it.
150
+ * Reads are surfaced separately via {@link getToolReadPath} so consumers (e.g. the treemap
151
+ * activity overlay) can render reads with a distinct visual treatment. */
152
+ export function getToolFilePath(toolName, toolInput) {
153
+ if (toolInput == null)
154
+ return undefined;
155
+ switch (toolName) {
156
+ case 'Edit':
157
+ case 'MultiEdit':
158
+ case 'Write':
159
+ return toolInput.file_path;
160
+ case 'NotebookEdit':
161
+ return toolInput.notebook_path;
162
+ default:
163
+ return undefined;
164
+ }
165
+ }
166
+ /** Returns the file path a read-only file tool is targeting, or `undefined` for non-read /
167
+ * non-file tools. Mirrors {@link getToolFilePath} but for `Read`/`NotebookRead`. */
168
+ export function getToolReadPath(toolName, toolInput) {
169
+ if (toolInput == null)
170
+ return undefined;
171
+ switch (toolName) {
172
+ case 'Read':
173
+ return toolInput.file_path;
174
+ case 'NotebookRead':
175
+ return toolInput.notebook_path;
176
+ default:
177
+ return undefined;
178
+ }
179
+ }
180
+ //# sourceMappingURL=stateMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateMachine.js","sourceRoot":"","sources":["../../../src/plus/agents/stateMachine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ import type { IpcHandler } from '../../ipc/ipcServer.js';
2
+ import type { UnifiedDisposable } from '../../utils/disposable.js';
3
+ import type { Event } from '../../utils/event.js';
4
+ export declare const claudeCodeNonBlockingHookEvents: readonly ["SessionStart", "SessionEnd", "UserPromptSubmit", "PreToolUse", "PostToolUse", "PostToolUseFailure", "Notification", "Stop", "StopFailure", "SubagentStart", "SubagentStop", "TeammateIdle", "TaskCompleted", "InstructionsLoaded", "ConfigChange", "WorktreeCreate", "WorktreeRemove", "PreCompact", "PostCompact", "Elicitation", "ElicitationResult", "PermissionDenied", "CwdChanged"];
5
+ export declare const claudeCodeBlockingHookEvents: readonly ["PermissionRequest"];
6
+ export type ClaudeCodeHookEvent = (typeof claudeCodeNonBlockingHookEvents)[number] | (typeof claudeCodeBlockingHookEvents)[number];
7
+ export type PermissionDecision = 'allow' | 'deny';
8
+ export type AgentSessionStatus = 'thinking' | 'tool_use' | 'responding' | 'waiting' | 'idle' | 'compacting' | 'permission_requested';
9
+ export type AgentSessionPhase = 'idle' | 'working' | 'waiting';
10
+ export declare function getPhaseForStatus(status: AgentSessionStatus): AgentSessionPhase;
11
+ /**
12
+ * Returns whether the given phase represents an agent that is actively doing work or
13
+ * awaiting input (as opposed to fully idle). Uses an explicit allowlist so new phases
14
+ * default to "not active" rather than being silently treated as live.
15
+ */
16
+ export declare function isActiveAgentPhase(phase: AgentSessionPhase): boolean;
17
+ export interface PermissionSuggestion {
18
+ readonly type: string;
19
+ readonly tool?: string;
20
+ readonly rules?: readonly {
21
+ readonly toolName: string;
22
+ readonly ruleContent?: string;
23
+ }[];
24
+ readonly destination?: string;
25
+ }
26
+ /** Classification of what the agent is awaiting input for. Drives kind-aware UI: action button
27
+ * labels, phase wording, and which payload field carries the body. Detected at the provider
28
+ * boundary from the tool name / event so webviews don't grow their own classifiers.
29
+ * - `tool`: a regular tool permission (Bash, Edit, Read, …) — body is `toolDescription`.
30
+ * - `plan`: ExitPlanMode — body is `planSummary`; `planFilePath` may link the written plan.
31
+ * - `question`: AskUserQuestion — body is `questionText`; `questionCount` describes the batch.
32
+ * - `elicitation`: MCP elicitation — body is just `toolName`; user must respond in-session. */
33
+ export type PendingPermissionKind = 'tool' | 'plan' | 'question' | 'elicitation';
34
+ export interface PendingPermission {
35
+ readonly kind: PendingPermissionKind;
36
+ readonly toolName: string;
37
+ readonly toolDescription: string;
38
+ readonly toolInputDescription?: string;
39
+ readonly suggestions?: readonly PermissionSuggestion[];
40
+ /** Plan-mode (`kind === 'plan'`): on-disk path of the plan markdown, when the agent wrote one. */
41
+ readonly planFilePath?: string;
42
+ /** Plan-mode: short summary extracted from the plan content (first heading or leading sentence). */
43
+ readonly planSummary?: string;
44
+ /** Question-mode (`kind === 'question'`): the leading question text. */
45
+ readonly questionText?: string;
46
+ /** Question-mode: total number of questions in the batch. */
47
+ readonly questionCount?: number;
48
+ }
49
+ export interface AgentSession {
50
+ readonly id: string;
51
+ readonly providerId: string;
52
+ readonly providerName: string;
53
+ readonly name?: string;
54
+ readonly status: AgentSessionStatus;
55
+ readonly phase: AgentSessionPhase;
56
+ readonly statusDetail?: string;
57
+ readonly worktreePath?: string;
58
+ /** Common (parent) repo path shared by every worktree in this session's repo. Set together
59
+ * with `worktreePath` by `resolveGitInfo` — equal to `worktreePath` for a default-worktree
60
+ * session, otherwise the parent repo's common path. Use this for "same repo" identity
61
+ * checks; {@link workspacePath} is the matched workspace folder, not repo identity.
62
+ *
63
+ * `undefined` carries two meanings the host distinguishes internally (via the
64
+ * `gitInfoUnresolvable` bookkeeping flag) but consumers should treat identically: either
65
+ * "not yet resolved" (no probe completed) or "resolved but cwd is not inside any git repo".
66
+ * Either way, no repo identity is available — never attempt to `path.join`/`path.resolve`
67
+ * against it without an explicit `!= null` check. */
68
+ readonly commonPath?: string;
69
+ readonly pid?: number;
70
+ readonly lastActivity: Date;
71
+ readonly phaseSince: Date;
72
+ readonly isSubagent: boolean;
73
+ readonly parentId?: string;
74
+ readonly subagents?: readonly AgentSession[];
75
+ readonly pendingPermission?: PendingPermission;
76
+ /** The VS Code workspace folder containing the agent's cwd, or `undefined` if cwd is outside
77
+ * any open workspace folder. Used for `isInWorkspace` and "Open Folder" only — NOT for repo
78
+ * identity. For "what repo is this session in", use {@link commonPath}. */
79
+ readonly workspacePath?: string;
80
+ readonly cwd?: string;
81
+ readonly planFile?: string;
82
+ readonly isInWorkspace: boolean;
83
+ readonly lastPrompt?: string;
84
+ readonly firstPrompt?: string;
85
+ /** Absolute paths of files targeted by in-flight file-editing tool calls (Edit/Write/MultiEdit/
86
+ * NotebookEdit). Populated on PreToolUse, drained on PostToolUse/PermissionDenied, cleared on
87
+ * Stop/SessionEnd. Empty/undefined when no file-editing tool is active.
88
+ *
89
+ * Mutable array form so `Shape<AgentSession>` projects it as `string[]` (the `Shape<>` type
90
+ * mangles `readonly T[]` into a mapped object that loses its iterator). Treat as immutable. */
91
+ currentFiles?: string[];
92
+ /** Absolute paths of files the agent recently *read* (Read/NotebookRead). Populated on
93
+ * PreToolUse, drained on PostToolUse/PermissionDenied with the same cooldown as
94
+ * `currentFiles`. Distinct from `currentFiles` which tracks write-class tools so consumers can
95
+ * visualize "looking at" vs "working on" differently. Treat as immutable. */
96
+ currentReads?: string[];
97
+ /** `true` when the session was discovered via peer IPC sync (i.e. another GitLens window hosts
98
+ * the agent's hook flow and Claude Code extension panel). Locally-owned sessions leave this
99
+ * unset. The dispatcher uses this to route opens through the peer's IPC route + an OS-level
100
+ * window focus, since calling `claude-vscode.editor.open` in *our* extension only opens an
101
+ * inert local view that isn't connected to the live session running in the peer.
102
+ *
103
+ * Window-local: never serialized faithfully across the IPC wire. Each window decides locally
104
+ * based on how it received the session — `querySiblingWindowSessions` always overrides to
105
+ * `true` regardless of what the peer published. */
106
+ readonly isPeerOwned?: boolean;
107
+ /**
108
+ * Titles discovered by tailing the Claude Code transcript JSONL at
109
+ * `~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl`. Populated by
110
+ * `ClaudeCodeTranscriptReader`; used by `getSessionDisplayName` as a fallback when no
111
+ * harness-supplied `name` is available. Last occurrence in the transcript wins per type.
112
+ */
113
+ readonly transcriptTitles?: {
114
+ readonly custom?: string;
115
+ readonly ai?: string;
116
+ readonly agent?: string;
117
+ };
118
+ }
119
+ export interface AgentSessionProvider extends UnifiedDisposable {
120
+ readonly id: string;
121
+ readonly name: string;
122
+ readonly icon: string;
123
+ readonly onDidChangeSessions: Event<void>;
124
+ readonly sessions: readonly AgentSession[];
125
+ start(workspacePaths: string[]): void;
126
+ stop(): void;
127
+ updateWorkspacePaths?(workspacePaths: string[]): void;
128
+ /** Resolves a pending permission. Returns `true` when the resolve was routed (the local IPC
129
+ * owns the session's pending entry); `false` when no local entry exists (typically a peer-
130
+ * discovered session owned by another GitLens window). Callers use this to give the user
131
+ * feedback rather than a silent no-op. */
132
+ resolvePermission?(sessionId: string, decision: PermissionDecision, updatedPermissions?: PermissionSuggestion[]): boolean;
133
+ /** Asks the peer GitLens window that has `workspacePath` open (or any peer whose workspacePath
134
+ * contains, or is contained by, it) to open the given session in its Claude Code extension
135
+ * via the `agents/sessions/open` IPC route. Resolves to `true` when at least one peer claimed
136
+ * the workspace AND was reachable; `false` otherwise. Best-effort: never rejects. The boolean
137
+ * is currently a diagnostic signal only — the dispatcher fires this in parallel with
138
+ * `vscode.openFolder` and relies on VS Code's window-folder matching to focus the owning
139
+ * window (which works whether or not the peer runs GitLens). */
140
+ notifyPeerOpenSession?(workspacePath: string, sessionId: string): Promise<boolean>;
141
+ }
142
+ /**
143
+ * Host-supplied IPC service. The agents package registers handlers and publishes
144
+ * the agents discovery file via this interface so it doesn't depend on the host's
145
+ * IPC service directly.
146
+ *
147
+ * The agents package is the source of truth for the workspacePaths advertised in
148
+ * the agents discovery file — `publishAgents` takes them as an argument and the host
149
+ * is expected to re-publish whenever those paths change.
150
+ */
151
+ export interface IpcRegistrar {
152
+ readonly port: number | undefined;
153
+ /** Directory scanned for peer-window agent discovery files. Omit to disable peer discovery (tests). */
154
+ readonly agentDiscoveryDir?: string;
155
+ registerHandler<Request = unknown, Response = unknown>(name: string, handler: IpcHandler<Request, Response>): UnifiedDisposable;
156
+ publishAgents(workspacePaths: string[]): Promise<void>;
157
+ unpublishAgents(): Promise<void>;
158
+ }
159
+ export interface AgentProviderCallbacks {
160
+ /** Host-supplied IPC service. Required for agents to receive hook events from the GK CLI. */
161
+ ipc: IpcRegistrar;
162
+ /** Report that an agent session started. No-op if the host has no telemetry. */
163
+ onSessionStarted?(provider: string): void;
164
+ /** Report that an agent session ended. No-op if the host has no telemetry. */
165
+ onSessionEnded?(provider: string): void;
166
+ /** Report that a permission request was resolved. No-op if the host has no telemetry. */
167
+ onPermissionResolved?(info: {
168
+ provider: string;
169
+ tool: string;
170
+ decision: PermissionDecision;
171
+ }): void;
172
+ /** Notify the host that a branch has agent activity. */
173
+ onBranchAgentActivity?(cwd: string): void;
174
+ /**
175
+ * Run the GK CLI with the given args. Returns stdout.
176
+ *
177
+ * Host responsibilities:
178
+ * - Resolve the CLI executable path (e.g. via `resolveCLIExecutable`)
179
+ * - Provide the default `cwd` if `options.cwd` is not set (e.g. `globalStorageUri.fsPath` in VS Code)
180
+ * - Inject any environment-specific flags (e.g. `--insiders` when the host has insiders mode enabled)
181
+ */
182
+ runCLICommand(args: string[], options?: {
183
+ cwd?: string;
184
+ }): Promise<string>;
185
+ /**
186
+ * Resolve git metadata for a session's cwd. Returns the stable worktree path; the worktree's
187
+ * display name (branch name for branch-type worktrees) is intentionally NOT returned — it's
188
+ * resolved live at serialization time so `git checkout` updates display without restarting.
189
+ * Optional — if omitted, sessions won't have worktree metadata.
190
+ */
191
+ resolveGitInfo?(cwd: string): Promise<{
192
+ repoRoot: string;
193
+ isWorktree: boolean;
194
+ worktreePath?: string;
195
+ } | undefined>;
196
+ /**
197
+ * Open a Claude Code session in the Claude Code VS Code extension. Invoked by the IPC handler
198
+ * when a peer GitLens window asks this window to open a session on its behalf — the host wires
199
+ * this to `claude-vscode.editor.open`. Throws if the extension isn't installed/active.
200
+ */
201
+ openSessionInClaudeExtension?(sessionId: string): Promise<void>;
202
+ }
203
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plus/agents/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export const claudeCodeNonBlockingHookEvents = [
2
+ 'SessionStart',
3
+ 'SessionEnd',
4
+ 'UserPromptSubmit',
5
+ 'PreToolUse',
6
+ 'PostToolUse',
7
+ 'PostToolUseFailure',
8
+ 'Notification',
9
+ 'Stop',
10
+ 'StopFailure',
11
+ 'SubagentStart',
12
+ 'SubagentStop',
13
+ 'TeammateIdle',
14
+ 'TaskCompleted',
15
+ 'InstructionsLoaded',
16
+ 'ConfigChange',
17
+ 'WorktreeCreate',
18
+ 'WorktreeRemove',
19
+ 'PreCompact',
20
+ 'PostCompact',
21
+ 'Elicitation',
22
+ 'ElicitationResult',
23
+ 'PermissionDenied',
24
+ 'CwdChanged',
25
+ ];
26
+ export const claudeCodeBlockingHookEvents = ['PermissionRequest'];
27
+ export function getPhaseForStatus(status) {
28
+ switch (status) {
29
+ case 'thinking':
30
+ case 'tool_use':
31
+ case 'responding':
32
+ case 'compacting':
33
+ return 'working';
34
+ case 'waiting':
35
+ case 'permission_requested':
36
+ return 'waiting';
37
+ case 'idle':
38
+ return 'idle';
39
+ }
40
+ }
41
+ /**
42
+ * Returns whether the given phase represents an agent that is actively doing work or
43
+ * awaiting input (as opposed to fully idle). Uses an explicit allowlist so new phases
44
+ * default to "not active" rather than being silently treated as live.
45
+ */
46
+ export function isActiveAgentPhase(phase) {
47
+ return phase === 'working' || phase === 'waiting';
48
+ }
49
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plus/agents/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC9C,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,cAAc;IACd,MAAM;IACN,aAAa;IACb,eAAe;IACf,cAAc;IACd,cAAc;IACd,eAAe;IACf,oBAAoB;IACpB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,mBAAmB;IACnB,kBAAkB;IAClB,YAAY;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,mBAAmB,CAAU,CAAC;AAmB3E,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC3D,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,SAAS,CAAC;QAClB,KAAK,SAAS,CAAC;QACf,KAAK,sBAAsB;YAC1B,OAAO,SAAS,CAAC;QAClB,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;IAChB,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IAC1D,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC;AACnD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { AIProviderDescriptor } from './models/model.js';
2
- export type AIProviders = 'anthropic' | 'azure' | 'deepseek' | 'gemini' | 'github' | 'gitkraken' | 'huggingface' | 'mistral' | 'ollama' | 'openai' | 'openaicompatible' | 'openrouter' | 'vscode' | 'xai';
2
+ export type AIProviders = 'anthropic' | 'azure' | 'deepseek' | 'gemini' | 'github' | 'gitkraken' | 'huggingface' | 'mistral' | 'ollama' | 'openai' | 'openaicompatible' | 'openrouter' | 'simulator' | 'vscode' | 'xai';
3
3
  export type AIPrimaryProviders = Extract<AIProviders, 'gitkraken' | 'vscode'>;
4
4
  export type OpenAIProviders = 'azure' | 'openai' | 'openaicompatible';
5
5
  export type AIProviderAndModel = `${string}:${string}`;
@@ -18,4 +18,5 @@ export declare const githubProviderDescriptor: AIProviderDescriptor<'github'>;
18
18
  export declare const huggingFaceProviderDescriptor: AIProviderDescriptor<'huggingface'>;
19
19
  export declare const openRouterProviderDescriptor: AIProviderDescriptor<'openrouter'>;
20
20
  export declare const ollamaProviderDescriptor: AIProviderDescriptor<'ollama'>;
21
+ export declare const simulatorProviderDescriptor: AIProviderDescriptor<'simulator'>;
21
22
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/plus/ai/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,MAAM,WAAW,GACpB,WAAW,GACX,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,aAAa,GACb,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,YAAY,GACZ,QAAQ,GACR,KAAK,CAAC;AACT,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,kBAAkB,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AACvD,MAAM,MAAM,iBAAiB,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,IAAI,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAE7G,eAAO,MAAM,2BAA2B,EAAE,oBAAoB,CAAC,WAAW,CAMhE,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,CAAC,OAAO,CAMxD,CAAC;AACX,eAAO,MAAM,kCAAkC,EAAE,oBAAoB,CAAC,kBAAkB,CAM9E,CAAC;AACX,eAAO,MAAM,2BAA2B,EAAE,oBAAoB,CAAC,WAAW,CAMhE,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,yBAAyB,EAAE,oBAAoB,CAAC,SAAS,CAM5D,CAAC;AACX,eAAO,MAAM,0BAA0B,EAAE,oBAAoB,CAAC,UAAU,CAM9D,CAAC;AACX,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,CAAC,KAAK,CAMpD,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,6BAA6B,EAAE,oBAAoB,CAAC,aAAa,CAMpE,CAAC;AACX,eAAO,MAAM,4BAA4B,EAAE,oBAAoB,CAAC,YAAY,CAMlE,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/plus/ai/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,MAAM,WAAW,GACpB,WAAW,GACX,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,aAAa,GACb,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,KAAK,CAAC;AACT,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,kBAAkB,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AACvD,MAAM,MAAM,iBAAiB,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,IAAI,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAE7G,eAAO,MAAM,2BAA2B,EAAE,oBAAoB,CAAC,WAAW,CAMhE,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,CAAC,OAAO,CAMxD,CAAC;AACX,eAAO,MAAM,kCAAkC,EAAE,oBAAoB,CAAC,kBAAkB,CAM9E,CAAC;AACX,eAAO,MAAM,2BAA2B,EAAE,oBAAoB,CAAC,WAAW,CAMhE,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,yBAAyB,EAAE,oBAAoB,CAAC,SAAS,CAM5D,CAAC;AACX,eAAO,MAAM,0BAA0B,EAAE,oBAAoB,CAAC,UAAU,CAM9D,CAAC;AACX,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,CAAC,KAAK,CAMpD,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,6BAA6B,EAAE,oBAAoB,CAAC,aAAa,CAMpE,CAAC;AACX,eAAO,MAAM,4BAA4B,EAAE,oBAAoB,CAAC,YAAY,CAMlE,CAAC;AACX,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ,CAM1D,CAAC;AACX,eAAO,MAAM,2BAA2B,EAAE,oBAAoB,CAAC,WAAW,CAMhE,CAAC"}
@@ -96,4 +96,11 @@ export const ollamaProviderDescriptor = {
96
96
  requiresAccount: true,
97
97
  requiresUserKey: false,
98
98
  };
99
+ export const simulatorProviderDescriptor = {
100
+ id: 'simulator',
101
+ name: 'Simulator (Debugging)',
102
+ primary: false,
103
+ requiresAccount: false,
104
+ requiresUserKey: false,
105
+ };
99
106
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/plus/ai/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/plus/ai/constants.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,2BAA2B,GAAsC;IAC7E,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,IAAI;IACb,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,KAAK;CACb,CAAC;AACX,MAAM,CAAC,MAAM,wBAAwB,GAAmC;IACvE,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;IACb,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,KAAK;CACb,CAAC;AACX,MAAM,CAAC,MAAM,wBAAwB,GAAmC;IACvE,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,uBAAuB,GAAkC;IACrE,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,kCAAkC,GAA6C;IAC3F,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,4BAA4B;IAClC,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,2BAA2B,GAAsC;IAC7E,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,wBAAwB,GAAmC;IACvE,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,yBAAyB,GAAoC;IACzE,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC3E,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IACjE,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,wBAAwB,GAAmC;IACvE,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,6BAA6B,GAAwC;IACjF,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,4BAA4B,GAAuC;IAC/E,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,wBAAwB,GAAmC;IACvE,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,KAAK;CACb,CAAC;AACX,MAAM,CAAC,MAAM,2BAA2B,GAAsC;IAC7E,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,uBAAuB;IAC7B,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,KAAK;CACb,CAAC"}
@@ -9,7 +9,9 @@ export declare const enum AIErrorReason {
9
9
  ModelNotSupported = 7,
10
10
  ServiceCapacityExceeded = 8,
11
11
  Unauthorized = 9,
12
- UserQuotaExceeded = 10
12
+ UserQuotaExceeded = 10,
13
+ NoNetwork = 11,
14
+ Unreachable = 12
13
15
  }
14
16
  export declare class AIError extends Error {
15
17
  readonly original?: Error;
@@ -22,4 +24,5 @@ export declare class AuthenticationRequiredError extends Error {
22
24
  export declare class AINoRequestDataError extends AIError {
23
25
  constructor(message?: string);
24
26
  }
27
+ export declare function classifyNetworkError(ex: unknown): AIErrorReason.NoNetwork | AIErrorReason.Unreachable | undefined;
25
28
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/plus/ai/errors.ts"],"names":[],"mappings":"AAAA,0BAAkB,aAAa;IAC9B,oBAAoB,IAAA;IACpB,YAAY,IAAA;IACZ,aAAa,IAAA;IACb,aAAa,IAAA;IACb,iBAAiB,IAAA;IACjB,wBAAwB,IAAA;IACxB,eAAe,IAAA;IACf,iBAAiB,IAAA;IACjB,uBAAuB,IAAA;IACvB,YAAY,IAAA;IACZ,iBAAiB,KAAA;CACjB;AAED,qBAAa,OAAQ,SAAQ,KAAK;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;gBAE/B,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,KAAK;CA+CnD;AAED,qBAAa,2BAA4B,SAAQ,KAAK;;CAMrD;AAED,qBAAa,oBAAqB,SAAQ,OAAO;gBACpC,OAAO,CAAC,EAAE,MAAM;CAK5B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/plus/ai/errors.ts"],"names":[],"mappings":"AAAA,0BAAkB,aAAa;IAC9B,oBAAoB,IAAA;IACpB,YAAY,IAAA;IACZ,aAAa,IAAA;IACb,aAAa,IAAA;IACb,iBAAiB,IAAA;IACjB,wBAAwB,IAAA;IACxB,eAAe,IAAA;IACf,iBAAiB,IAAA;IACjB,uBAAuB,IAAA;IACvB,YAAY,IAAA;IACZ,iBAAiB,KAAA;IACjB,SAAS,KAAA;IACT,WAAW,KAAA;CACX;AAED,qBAAa,OAAQ,SAAQ,KAAK;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;gBAE/B,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,KAAK;CAqDnD;AAED,qBAAa,2BAA4B,SAAQ,KAAK;;CAMrD;AAED,qBAAa,oBAAqB,SAAQ,OAAO;gBACpC,OAAO,CAAC,EAAE,MAAM;CAK5B;AAcD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,WAAW,GAAG,SAAS,CAkBjH"}
@@ -11,6 +11,8 @@ export var AIErrorReason;
11
11
  AIErrorReason[AIErrorReason["ServiceCapacityExceeded"] = 8] = "ServiceCapacityExceeded";
12
12
  AIErrorReason[AIErrorReason["Unauthorized"] = 9] = "Unauthorized";
13
13
  AIErrorReason[AIErrorReason["UserQuotaExceeded"] = 10] = "UserQuotaExceeded";
14
+ AIErrorReason[AIErrorReason["NoNetwork"] = 11] = "NoNetwork";
15
+ AIErrorReason[AIErrorReason["Unreachable"] = 12] = "Unreachable";
14
16
  })(AIErrorReason || (AIErrorReason = {}));
15
17
  export class AIError extends Error {
16
18
  original;
@@ -36,6 +38,12 @@ export class AIError extends Error {
36
38
  case AIErrorReason.ServiceCapacityExceeded:
37
39
  message = 'Service capacity exceeded';
38
40
  break;
41
+ case AIErrorReason.NoNetwork:
42
+ message = 'Unable to reach the AI service. Please check your internet connection.';
43
+ break;
44
+ case AIErrorReason.Unreachable:
45
+ message = 'The AI service is temporarily unreachable.';
46
+ break;
39
47
  case AIErrorReason.NoRequestData:
40
48
  message = original?.message ?? 'No data was provided for the request';
41
49
  break;
@@ -73,4 +81,34 @@ export class AINoRequestDataError extends AIError {
73
81
  Error.captureStackTrace?.(this, new.target);
74
82
  }
75
83
  }
84
+ const noNetworkErrorCodes = new Set([
85
+ 'ENOTFOUND',
86
+ 'ECONNREFUSED',
87
+ 'EAI_AGAIN',
88
+ 'EHOSTUNREACH',
89
+ 'ENETUNREACH',
90
+ 'ENETDOWN',
91
+ 'UND_ERR_CONNECT_TIMEOUT',
92
+ ]);
93
+ const unreachableErrorCodes = new Set(['ECONNRESET', 'ETIMEDOUT', 'UND_ERR_SOCKET']);
94
+ export function classifyNetworkError(ex) {
95
+ let current = ex;
96
+ let sawFetchFailed = false;
97
+ for (let depth = 0; depth < 5 && current != null; depth++) {
98
+ if (!(current instanceof Error))
99
+ break;
100
+ if (current.name === 'TypeError' && current.message === 'fetch failed') {
101
+ sawFetchFailed = true;
102
+ }
103
+ const code = current.code;
104
+ if (typeof code === 'string') {
105
+ if (noNetworkErrorCodes.has(code))
106
+ return AIErrorReason.NoNetwork;
107
+ if (unreachableErrorCodes.has(code))
108
+ return AIErrorReason.Unreachable;
109
+ }
110
+ current = current.cause;
111
+ }
112
+ return sawFetchFailed ? AIErrorReason.NoNetwork : undefined;
113
+ }
76
114
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/plus/ai/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAkB,aAYjB;AAZD,WAAkB,aAAa;IAC9B,iFAAoB,CAAA;IACpB,iEAAY,CAAA;IACZ,mEAAa,CAAA;IACb,mEAAa,CAAA;IACb,2EAAiB,CAAA;IACjB,yFAAwB,CAAA;IACxB,uEAAe,CAAA;IACf,2EAAiB,CAAA;IACjB,uFAAuB,CAAA;IACvB,iEAAY,CAAA;IACZ,4EAAiB,CAAA;AAClB,CAAC,EAZiB,aAAa,KAAb,aAAa,QAY9B;AAED,MAAM,OAAO,OAAQ,SAAQ,KAAK;IACxB,QAAQ,CAAS;IACjB,MAAM,CAA4B;IAE3C,YAAY,MAAqB,EAAE,QAAgB;QAClD,IAAI,OAAO,CAAC;QACZ,QAAQ,MAAM,EAAE,CAAC;YAChB,KAAK,aAAa,CAAC,aAAa;gBAC/B,OAAO,GAAG,8DAA8D,CAAC;gBACzE,MAAM;YACP,KAAK,aAAa,CAAC,eAAe;gBACjC,OAAO,GAAG,0BAA0B,CAAC;gBACrC,MAAM;YACP,KAAK,aAAa,CAAC,iBAAiB;gBACnC,OAAO,GAAG,yCAAyC,CAAC;gBACpD,MAAM;YACP,KAAK,aAAa,CAAC,iBAAiB;gBACnC,OAAO,GAAG,qBAAqB,CAAC;gBAChC,MAAM;YACP,KAAK,aAAa,CAAC,wBAAwB;gBAC1C,OAAO,GAAG,qDAAqD,CAAC;gBAChE,MAAM;YACP,KAAK,aAAa,CAAC,uBAAuB;gBACzC,OAAO,GAAG,2BAA2B,CAAC;gBACtC,MAAM;YACP,KAAK,aAAa,CAAC,aAAa;gBAC/B,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,sCAAsC,CAAC;gBACtE,MAAM;YACP,KAAK,aAAa,CAAC,iBAAiB;gBACnC,OAAO,GAAG,sCAAsC,CAAC;gBACjD,MAAM;YACP,KAAK,aAAa,CAAC,YAAY;gBAC9B,OAAO,GAAG,+DAA+D,CAAC;gBAC1E,MAAM;YACP,KAAK,aAAa,CAAC,oBAAoB;gBACtC,OAAO,GAAG,wEAAwE,CAAC;gBACnF,MAAM;YACP,KAAK,aAAa,CAAC,YAAY;gBAC9B,OAAO,GAAG,2DAA2D,CAAC;gBACtE,MAAM;YACP;gBACC,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,2BAA2B,CAAC;gBAC3D,MAAM;QACR,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;CACD;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACrD;QACC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEjC,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;CACD;AAED,MAAM,OAAO,oBAAqB,SAAQ,OAAO;IAChD,YAAY,OAAgB;QAC3B,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE7E,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;CACD"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/plus/ai/errors.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export interface AIModelDescriptor<Provider extends AIProviders = AIProviders, M
18
18
  readonly provider: Provider;
19
19
  readonly model: Model;
20
20
  }
21
- export type AIActionType = 'explain-changes' | 'generate-commitMessage' | 'generate-stashMessage' | 'generate-changelog' | `generate-create-${'cloudPatch' | 'codeSuggestion' | 'pullRequest'}` | 'generate-commits' | 'generate-searchQuery';
21
+ export type AIActionType = 'explain-changes' | 'review-changes' | 'generate-commitMessage' | 'generate-stashMessage' | 'generate-changelog' | `generate-create-${'cloudPatch' | 'codeSuggestion' | 'pullRequest'}` | 'generate-commits' | 'generate-searchQuery';
22
22
  export interface AIProviderDescriptor<T extends AIProviders = AIProviders> {
23
23
  readonly id: T;
24
24
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/models/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExF,MAAM,WAAW,OAAO,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM;IACjG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACpF,QAAQ,CAAC,QAAQ,EAAE;QAClB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM;IAC3G,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,MAAM,YAAY,GACrB,iBAAiB,GACjB,wBAAwB,GACxB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,YAAY,GAAG,gBAAgB,GAAG,aAAa,EAAE,GACpE,kBAAkB,GAClB,sBAAsB,CAAC;AAE1B,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACxE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC;IAC9D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,qCAAqC,CACrD,CAAC,SAAS,WAAW,GAAG,WAAW,CAClC,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,eAAe,EAAE,UAAU,oBAAoB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC,EAyXrG,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/models/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExF,MAAM,WAAW,OAAO,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM;IACjG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACpF,QAAQ,CAAC,QAAQ,EAAE;QAClB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM;IAC3G,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,MAAM,YAAY,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,wBAAwB,GACxB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,YAAY,GAAG,gBAAgB,GAAG,aAAa,EAAE,GACpE,kBAAkB,GAClB,sBAAsB,CAAC;AAE1B,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACxE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC;IAC9D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,qCAAqC,CACrD,CAAC,SAAS,WAAW,GAAG,WAAW,CAClC,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,eAAe,EAAE,UAAU,oBAAoB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC,EAyXrG,CAAC"}