@nanocollective/nanocoder 1.21.0 → 1.22.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 (347) hide show
  1. package/README.md +59 -4
  2. package/assets/nanocoder-vscode.vsix +0 -0
  3. package/dist/ai-sdk-client/ai-sdk-client.d.ts.map +1 -1
  4. package/dist/ai-sdk-client/ai-sdk-client.js.map +1 -1
  5. package/dist/ai-sdk-client/chat/chat-handler.d.ts.map +1 -1
  6. package/dist/ai-sdk-client/chat/chat-handler.js +1 -0
  7. package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
  8. package/dist/ai-sdk-client/providers/provider-factory.d.ts +6 -3
  9. package/dist/ai-sdk-client/providers/provider-factory.d.ts.map +1 -1
  10. package/dist/ai-sdk-client/providers/provider-factory.js +18 -4
  11. package/dist/ai-sdk-client/providers/provider-factory.js.map +1 -1
  12. package/dist/app/App.d.ts.map +1 -1
  13. package/dist/app/App.js +16 -16
  14. package/dist/app/App.js.map +1 -1
  15. package/dist/app/components/modal-selectors.d.ts +3 -10
  16. package/dist/app/components/modal-selectors.d.ts.map +1 -1
  17. package/dist/app/components/modal-selectors.js +4 -12
  18. package/dist/app/components/modal-selectors.js.map +1 -1
  19. package/dist/app/components/settings-selector.d.ts +6 -0
  20. package/dist/app/components/settings-selector.d.ts.map +1 -0
  21. package/dist/app/components/settings-selector.js +289 -0
  22. package/dist/app/components/settings-selector.js.map +1 -0
  23. package/dist/app/utils/app-util.d.ts.map +1 -1
  24. package/dist/app/utils/app-util.js +11 -16
  25. package/dist/app/utils/app-util.js.map +1 -1
  26. package/dist/client-factory.js +4 -0
  27. package/dist/client-factory.js.map +1 -1
  28. package/dist/commands/clear.d.ts.map +1 -1
  29. package/dist/commands/clear.js +8 -5
  30. package/dist/commands/clear.js.map +1 -1
  31. package/dist/commands/custom-commands.d.ts.map +1 -1
  32. package/dist/commands/custom-commands.js +1 -1
  33. package/dist/commands/custom-commands.js.map +1 -1
  34. package/dist/commands/explorer.d.ts +3 -0
  35. package/dist/commands/explorer.d.ts.map +1 -0
  36. package/dist/commands/explorer.js +10 -0
  37. package/dist/commands/explorer.js.map +1 -0
  38. package/dist/commands/help.d.ts.map +1 -1
  39. package/dist/commands/help.js +1 -1
  40. package/dist/commands/help.js.map +1 -1
  41. package/dist/commands/index.d.ts +3 -3
  42. package/dist/commands/index.d.ts.map +1 -1
  43. package/dist/commands/index.js +3 -3
  44. package/dist/commands/index.js.map +1 -1
  45. package/dist/commands/init.d.ts.map +1 -1
  46. package/dist/commands/init.js +1 -1
  47. package/dist/commands/init.js.map +1 -1
  48. package/dist/commands/lsp.d.ts.map +1 -1
  49. package/dist/commands/lsp.js +1 -1
  50. package/dist/commands/lsp.js.map +1 -1
  51. package/dist/commands/mcp.d.ts.map +1 -1
  52. package/dist/commands/mcp.js +1 -1
  53. package/dist/commands/mcp.js.map +1 -1
  54. package/dist/commands/model-database.d.ts.map +1 -1
  55. package/dist/commands/model-database.js +3 -3
  56. package/dist/commands/model-database.js.map +1 -1
  57. package/dist/commands/settings.d.ts +3 -0
  58. package/dist/commands/settings.d.ts.map +1 -0
  59. package/dist/commands/{theme.js → settings.js} +4 -4
  60. package/dist/commands/settings.js.map +1 -0
  61. package/dist/commands/tasks.d.ts +3 -0
  62. package/dist/commands/tasks.d.ts.map +1 -0
  63. package/dist/commands/tasks.js +117 -0
  64. package/dist/commands/tasks.js.map +1 -0
  65. package/dist/commands/usage.d.ts.map +1 -1
  66. package/dist/commands/usage.js +31 -9
  67. package/dist/commands/usage.js.map +1 -1
  68. package/dist/components/assistant-message.d.ts.map +1 -1
  69. package/dist/components/assistant-message.js +39 -6
  70. package/dist/components/assistant-message.js.map +1 -1
  71. package/dist/components/checkpoint-selector.d.ts.map +1 -1
  72. package/dist/components/checkpoint-selector.js +3 -3
  73. package/dist/components/checkpoint-selector.js.map +1 -1
  74. package/dist/components/file-explorer/index.d.ts +3 -0
  75. package/dist/components/file-explorer/index.d.ts.map +1 -0
  76. package/dist/components/file-explorer/index.js +318 -0
  77. package/dist/components/file-explorer/index.js.map +1 -0
  78. package/dist/components/file-explorer/tree-item.d.ts +3 -0
  79. package/dist/components/file-explorer/tree-item.d.ts.map +1 -0
  80. package/dist/components/file-explorer/tree-item.js +42 -0
  81. package/dist/components/file-explorer/tree-item.js.map +1 -0
  82. package/dist/components/file-explorer/utils.d.ts +18 -0
  83. package/dist/components/file-explorer/utils.d.ts.map +1 -0
  84. package/dist/components/file-explorer/utils.js +51 -0
  85. package/dist/components/file-explorer/utils.js.map +1 -0
  86. package/dist/components/file-explorer.d.ts +2 -0
  87. package/dist/components/file-explorer.d.ts.map +1 -0
  88. package/dist/components/file-explorer.js +3 -0
  89. package/dist/components/file-explorer.js.map +1 -0
  90. package/dist/components/message-box.d.ts +1 -0
  91. package/dist/components/message-box.d.ts.map +1 -1
  92. package/dist/components/message-box.js +2 -2
  93. package/dist/components/message-box.js.map +1 -1
  94. package/dist/components/model-selector.d.ts.map +1 -1
  95. package/dist/components/model-selector.js +3 -3
  96. package/dist/components/model-selector.js.map +1 -1
  97. package/dist/components/provider-selector.d.ts.map +1 -1
  98. package/dist/components/provider-selector.js +1 -1
  99. package/dist/components/provider-selector.js.map +1 -1
  100. package/dist/components/security-disclaimer.d.ts.map +1 -1
  101. package/dist/components/security-disclaimer.js +1 -1
  102. package/dist/components/security-disclaimer.js.map +1 -1
  103. package/dist/components/status.d.ts.map +1 -1
  104. package/dist/components/status.js +1 -1
  105. package/dist/components/status.js.map +1 -1
  106. package/dist/components/task-list-display.d.ts +8 -0
  107. package/dist/components/task-list-display.d.ts.map +1 -0
  108. package/dist/components/task-list-display.js +26 -0
  109. package/dist/components/task-list-display.js.map +1 -0
  110. package/dist/components/tool-message.d.ts.map +1 -1
  111. package/dist/components/tool-message.js +1 -1
  112. package/dist/components/tool-message.js.map +1 -1
  113. package/dist/components/ui/styled-title.js +38 -38
  114. package/dist/components/usage/progress-bar.d.ts.map +1 -1
  115. package/dist/components/usage/progress-bar.js +6 -3
  116. package/dist/components/usage/progress-bar.js.map +1 -1
  117. package/dist/components/usage/usage-display.d.ts.map +1 -1
  118. package/dist/components/usage/usage-display.js +1 -1
  119. package/dist/components/usage/usage-display.js.map +1 -1
  120. package/dist/components/user-input.d.ts.map +1 -1
  121. package/dist/components/user-input.js +35 -2
  122. package/dist/components/user-input.js.map +1 -1
  123. package/dist/components/user-message.d.ts.map +1 -1
  124. package/dist/components/user-message.js +43 -12
  125. package/dist/components/user-message.js.map +1 -1
  126. package/dist/components/welcome-message.d.ts.map +1 -1
  127. package/dist/components/welcome-message.js +1 -1
  128. package/dist/components/welcome-message.js.map +1 -1
  129. package/dist/config/preferences.d.ts +1 -0
  130. package/dist/config/preferences.d.ts.map +1 -1
  131. package/dist/config/preferences.js +5 -0
  132. package/dist/config/preferences.js.map +1 -1
  133. package/dist/config/themes.d.ts.map +1 -1
  134. package/dist/config/themes.js +340 -0
  135. package/dist/config/themes.js.map +1 -1
  136. package/dist/constants.d.ts +3 -0
  137. package/dist/constants.d.ts.map +1 -1
  138. package/dist/constants.js +63 -0
  139. package/dist/constants.js.map +1 -1
  140. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +1 -0
  141. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
  142. package/dist/hooks/chat-handler/conversation/conversation-loop.js +10 -1
  143. package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
  144. package/dist/hooks/chat-handler/useChatHandler.d.ts.map +1 -1
  145. package/dist/hooks/chat-handler/useChatHandler.js +5 -0
  146. package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
  147. package/dist/hooks/useAppHandlers.d.ts +2 -3
  148. package/dist/hooks/useAppHandlers.d.ts.map +1 -1
  149. package/dist/hooks/useAppHandlers.js +2 -3
  150. package/dist/hooks/useAppHandlers.js.map +1 -1
  151. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  152. package/dist/hooks/useAppInitialization.js +7 -4
  153. package/dist/hooks/useAppInitialization.js.map +1 -1
  154. package/dist/hooks/useAppState.d.ts +4 -6
  155. package/dist/hooks/useAppState.d.ts.map +1 -1
  156. package/dist/hooks/useAppState.js +6 -9
  157. package/dist/hooks/useAppState.js.map +1 -1
  158. package/dist/hooks/useModeHandlers.d.ts +8 -14
  159. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  160. package/dist/hooks/useModeHandlers.js +22 -60
  161. package/dist/hooks/useModeHandlers.js.map +1 -1
  162. package/dist/hooks/useUIState.d.ts +2 -0
  163. package/dist/hooks/useUIState.d.ts.map +1 -1
  164. package/dist/hooks/useUIState.js +11 -1
  165. package/dist/hooks/useUIState.js.map +1 -1
  166. package/dist/models/models-dev-client.d.ts.map +1 -1
  167. package/dist/models/models-dev-client.js +57 -37
  168. package/dist/models/models-dev-client.js.map +1 -1
  169. package/dist/tools/git/git-add.d.ts +8 -0
  170. package/dist/tools/git/git-add.d.ts.map +1 -0
  171. package/dist/tools/git/git-add.js +141 -0
  172. package/dist/tools/git/git-add.js.map +1 -0
  173. package/dist/tools/git/git-branch.d.ts +8 -0
  174. package/dist/tools/git/git-branch.d.ts.map +1 -0
  175. package/dist/tools/git/git-branch.js +251 -0
  176. package/dist/tools/git/git-branch.js.map +1 -0
  177. package/dist/tools/git/git-commit.d.ts +8 -0
  178. package/dist/tools/git/git-commit.d.ts.map +1 -0
  179. package/dist/tools/git/git-commit.js +176 -0
  180. package/dist/tools/git/git-commit.js.map +1 -0
  181. package/dist/tools/git/git-diff.d.ts +8 -0
  182. package/dist/tools/git/git-diff.d.ts.map +1 -0
  183. package/dist/tools/git/git-diff.js +136 -0
  184. package/dist/tools/git/git-diff.js.map +1 -0
  185. package/dist/tools/git/git-log.d.ts +8 -0
  186. package/dist/tools/git/git-log.d.ts.map +1 -0
  187. package/dist/tools/git/git-log.js +146 -0
  188. package/dist/tools/git/git-log.js.map +1 -0
  189. package/dist/tools/git/git-pr.d.ts +8 -0
  190. package/dist/tools/git/git-pr.d.ts.map +1 -0
  191. package/dist/tools/git/git-pr.js +252 -0
  192. package/dist/tools/git/git-pr.js.map +1 -0
  193. package/dist/tools/git/git-pull.d.ts +8 -0
  194. package/dist/tools/git/git-pull.d.ts.map +1 -0
  195. package/dist/tools/git/git-pull.js +151 -0
  196. package/dist/tools/git/git-pull.js.map +1 -0
  197. package/dist/tools/git/git-push.d.ts +8 -0
  198. package/dist/tools/git/git-push.d.ts.map +1 -0
  199. package/dist/tools/git/git-push.js +157 -0
  200. package/dist/tools/git/git-push.js.map +1 -0
  201. package/dist/tools/git/git-reset.d.ts +8 -0
  202. package/dist/tools/git/git-reset.d.ts.map +1 -0
  203. package/dist/tools/git/git-reset.js +183 -0
  204. package/dist/tools/git/git-reset.js.map +1 -0
  205. package/dist/tools/git/git-stash.d.ts +8 -0
  206. package/dist/tools/git/git-stash.d.ts.map +1 -0
  207. package/dist/tools/git/git-stash.js +260 -0
  208. package/dist/tools/git/git-stash.js.map +1 -0
  209. package/dist/tools/git/git-status.d.ts +8 -0
  210. package/dist/tools/git/git-status.d.ts.map +1 -0
  211. package/dist/tools/git/git-status.js +233 -0
  212. package/dist/tools/git/git-status.js.map +1 -0
  213. package/dist/tools/git/index.d.ts +9 -12
  214. package/dist/tools/git/index.d.ts.map +1 -1
  215. package/dist/tools/git/index.js +43 -11
  216. package/dist/tools/git/index.js.map +1 -1
  217. package/dist/tools/git/utils.d.ts +136 -23
  218. package/dist/tools/git/utils.d.ts.map +1 -1
  219. package/dist/tools/git/utils.js +405 -360
  220. package/dist/tools/git/utils.js.map +1 -1
  221. package/dist/tools/index.d.ts.map +1 -1
  222. package/dist/tools/index.js +15 -9
  223. package/dist/tools/index.js.map +1 -1
  224. package/dist/tools/string-replace.d.ts.map +1 -1
  225. package/dist/tools/string-replace.js +68 -16
  226. package/dist/tools/string-replace.js.map +1 -1
  227. package/dist/tools/tasks/create-task.d.ts +3 -0
  228. package/dist/tools/tasks/create-task.d.ts.map +1 -0
  229. package/dist/tools/tasks/create-task.js +101 -0
  230. package/dist/tools/tasks/create-task.js.map +1 -0
  231. package/dist/tools/tasks/delete-task.d.ts +3 -0
  232. package/dist/tools/tasks/delete-task.d.ts.map +1 -0
  233. package/dist/tools/tasks/delete-task.js +101 -0
  234. package/dist/tools/tasks/delete-task.js.map +1 -0
  235. package/dist/tools/tasks/index.d.ts +7 -0
  236. package/dist/tools/tasks/index.d.ts.map +1 -0
  237. package/dist/tools/tasks/index.js +6 -0
  238. package/dist/tools/tasks/index.js.map +1 -0
  239. package/dist/tools/tasks/list-tasks.d.ts +3 -0
  240. package/dist/tools/tasks/list-tasks.d.ts.map +1 -0
  241. package/dist/tools/tasks/list-tasks.js +67 -0
  242. package/dist/tools/tasks/list-tasks.js.map +1 -0
  243. package/dist/tools/tasks/storage.d.ts +7 -0
  244. package/dist/tools/tasks/storage.d.ts.map +1 -0
  245. package/dist/tools/tasks/storage.js +31 -0
  246. package/dist/tools/tasks/storage.js.map +1 -0
  247. package/dist/tools/tasks/types.d.ts +11 -0
  248. package/dist/tools/tasks/types.d.ts.map +1 -0
  249. package/dist/tools/tasks/types.js +2 -0
  250. package/dist/tools/tasks/types.js.map +1 -0
  251. package/dist/tools/tasks/update-task.d.ts +3 -0
  252. package/dist/tools/tasks/update-task.d.ts.map +1 -0
  253. package/dist/tools/tasks/update-task.js +142 -0
  254. package/dist/tools/tasks/update-task.js.map +1 -0
  255. package/dist/tools/write-file.d.ts.map +1 -1
  256. package/dist/tools/write-file.js +46 -2
  257. package/dist/tools/write-file.js.map +1 -1
  258. package/dist/types/app.d.ts +2 -3
  259. package/dist/types/app.d.ts.map +1 -1
  260. package/dist/types/config.d.ts +6 -0
  261. package/dist/types/config.d.ts.map +1 -1
  262. package/dist/types/file-explorer.d.ts +14 -0
  263. package/dist/types/file-explorer.d.ts.map +1 -0
  264. package/dist/types/file-explorer.js +2 -0
  265. package/dist/types/file-explorer.js.map +1 -0
  266. package/dist/types/ui.d.ts +1 -2
  267. package/dist/types/ui.d.ts.map +1 -1
  268. package/dist/utils/completion-note.d.ts +3 -0
  269. package/dist/utils/completion-note.d.ts.map +1 -0
  270. package/dist/utils/completion-note.js +39 -0
  271. package/dist/utils/completion-note.js.map +1 -0
  272. package/dist/utils/file-tree.d.ts +37 -0
  273. package/dist/utils/file-tree.d.ts.map +1 -0
  274. package/dist/utils/file-tree.js +122 -0
  275. package/dist/utils/file-tree.js.map +1 -0
  276. package/dist/utils/indentation-normalizer.d.ts +10 -0
  277. package/dist/utils/indentation-normalizer.d.ts.map +1 -1
  278. package/dist/utils/indentation-normalizer.js +48 -0
  279. package/dist/utils/indentation-normalizer.js.map +1 -1
  280. package/dist/vscode/protocol.d.ts +5 -1
  281. package/dist/vscode/protocol.d.ts.map +1 -1
  282. package/dist/vscode/vscode-server.d.ts +4 -0
  283. package/dist/vscode/vscode-server.d.ts.map +1 -1
  284. package/dist/vscode/vscode-server.js +10 -0
  285. package/dist/vscode/vscode-server.js.map +1 -1
  286. package/dist/wizards/mcp-wizard.d.ts.map +1 -1
  287. package/dist/wizards/mcp-wizard.js +1 -1
  288. package/dist/wizards/mcp-wizard.js.map +1 -1
  289. package/dist/wizards/provider-wizard.d.ts.map +1 -1
  290. package/dist/wizards/provider-wizard.js +1 -1
  291. package/dist/wizards/provider-wizard.js.map +1 -1
  292. package/dist/wizards/templates/provider-templates.d.ts.map +1 -1
  293. package/dist/wizards/templates/provider-templates.js +73 -8
  294. package/dist/wizards/templates/provider-templates.js.map +1 -1
  295. package/dist/wizards/validation.d.ts +3 -1
  296. package/dist/wizards/validation.d.ts.map +1 -1
  297. package/dist/wizards/validation.js +6 -0
  298. package/dist/wizards/validation.js.map +1 -1
  299. package/package.json +10 -7
  300. package/source/app/prompts/main-prompt.md +75 -68
  301. package/dist/commands/nanocoder-shape.d.ts +0 -3
  302. package/dist/commands/nanocoder-shape.d.ts.map +0 -1
  303. package/dist/commands/nanocoder-shape.js +0 -46
  304. package/dist/commands/nanocoder-shape.js.map +0 -1
  305. package/dist/commands/theme.d.ts +0 -3
  306. package/dist/commands/theme.d.ts.map +0 -1
  307. package/dist/commands/theme.js.map +0 -1
  308. package/dist/commands/title-shape.d.ts +0 -3
  309. package/dist/commands/title-shape.d.ts.map +0 -1
  310. package/dist/commands/title-shape.js +0 -54
  311. package/dist/commands/title-shape.js.map +0 -1
  312. package/dist/components/nanocoder-shape-selector.d.ts +0 -8
  313. package/dist/components/nanocoder-shape-selector.d.ts.map +0 -1
  314. package/dist/components/nanocoder-shape-selector.js +0 -61
  315. package/dist/components/nanocoder-shape-selector.js.map +0 -1
  316. package/dist/components/theme-selector.d.ts +0 -8
  317. package/dist/components/theme-selector.d.ts.map +0 -1
  318. package/dist/components/theme-selector.js +0 -51
  319. package/dist/components/theme-selector.js.map +0 -1
  320. package/dist/components/title-shape-selector.d.ts +0 -8
  321. package/dist/components/title-shape-selector.d.ts.map +0 -1
  322. package/dist/components/title-shape-selector.js +0 -108
  323. package/dist/components/title-shape-selector.js.map +0 -1
  324. package/dist/tools/git/git-branch-suggest.d.ts +0 -9
  325. package/dist/tools/git/git-branch-suggest.d.ts.map +0 -1
  326. package/dist/tools/git/git-branch-suggest.js +0 -326
  327. package/dist/tools/git/git-branch-suggest.js.map +0 -1
  328. package/dist/tools/git/git-create-pr.d.ts +0 -9
  329. package/dist/tools/git/git-create-pr.d.ts.map +0 -1
  330. package/dist/tools/git/git-create-pr.js +0 -404
  331. package/dist/tools/git/git-create-pr.js.map +0 -1
  332. package/dist/tools/git/git-smart-commit.d.ts +0 -9
  333. package/dist/tools/git/git-smart-commit.d.ts.map +0 -1
  334. package/dist/tools/git/git-smart-commit.js +0 -308
  335. package/dist/tools/git/git-smart-commit.js.map +0 -1
  336. package/dist/tools/git/git-status-enhanced.d.ts +0 -9
  337. package/dist/tools/git/git-status-enhanced.d.ts.map +0 -1
  338. package/dist/tools/git/git-status-enhanced.js +0 -305
  339. package/dist/tools/git/git-status-enhanced.js.map +0 -1
  340. package/dist/tools/git/types.d.ts +0 -103
  341. package/dist/tools/git/types.d.ts.map +0 -1
  342. package/dist/tools/git/types.js +0 -7
  343. package/dist/tools/git/types.js.map +0 -1
  344. package/dist/utils/gradient-utils.d.ts +0 -25
  345. package/dist/utils/gradient-utils.d.ts.map +0 -1
  346. package/dist/utils/gradient-utils.js +0 -45
  347. package/dist/utils/gradient-utils.js.map +0 -1
@@ -1,404 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Git Create PR Tool
4
- *
5
- * Generates pull request templates with auto-generated descriptions,
6
- * test plans, and reviewer suggestions based on commit history.
7
- */
8
- import { Box, Text } from 'ink';
9
- import React from 'react';
10
- import ToolMessage from '../../components/tool-message.js';
11
- import { ThemeContext } from '../../hooks/useTheme.js';
12
- import { jsonSchema, tool } from '../../types/core.js';
13
- import { execGit, getCommitsBetween, getCurrentBranch, getDefaultBranch, getSuggestedReviewers, isGitRepository, } from './utils.js';
14
- /**
15
- * Categorize commits by type
16
- */
17
- function categorizeCommits(commits) {
18
- const categories = new Map();
19
- for (const commit of commits) {
20
- const subject = commit.subject;
21
- // Parse conventional commit format
22
- const match = subject.match(/^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+?\))?(!)?:\s*(.+)/);
23
- let category;
24
- let description;
25
- if (match) {
26
- category = match[1];
27
- description = match[4] || subject;
28
- }
29
- else {
30
- // Non-conventional commit
31
- category = 'other';
32
- description = subject;
33
- }
34
- if (!categories.has(category)) {
35
- categories.set(category, []);
36
- }
37
- categories.get(category)?.push(description);
38
- }
39
- return categories;
40
- }
41
- /**
42
- * Generate PR title from commits
43
- */
44
- function generatePRTitle(commits, branch) {
45
- if (commits.length === 0) {
46
- // Use branch name as fallback
47
- const branchParts = branch.split('/');
48
- const branchName = branchParts[branchParts.length - 1];
49
- return (branchName
50
- ?.replace(/-/g, ' ')
51
- .replace(/_/g, ' ')
52
- .replace(/^\w/, c => c.toUpperCase()) || 'Update');
53
- }
54
- if (commits.length === 1) {
55
- return commits[0].subject;
56
- }
57
- // Multiple commits - summarize
58
- const categories = categorizeCommits(commits);
59
- // Priority order for title
60
- const titlePriority = ['feat', 'fix', 'refactor', 'perf', 'other'];
61
- for (const category of titlePriority) {
62
- const items = categories.get(category);
63
- if (items && items.length > 0) {
64
- if (items.length === 1) {
65
- return items[0];
66
- }
67
- // Summarize multiple items
68
- const prefix = category === 'feat' ? 'Add' : category === 'fix' ? 'Fix' : 'Update';
69
- return `${prefix} ${items.length} ${category === 'feat' ? 'features' : 'changes'}`;
70
- }
71
- }
72
- return commits[0].subject;
73
- }
74
- /**
75
- * Generate PR summary from categorized commits
76
- */
77
- function generateSummary(categories) {
78
- const summary = [];
79
- const categoryLabels = {
80
- feat: 'New Features',
81
- fix: 'Bug Fixes',
82
- docs: 'Documentation',
83
- style: 'Style Changes',
84
- refactor: 'Code Refactoring',
85
- perf: 'Performance Improvements',
86
- test: 'Test Updates',
87
- build: 'Build Changes',
88
- ci: 'CI/CD Updates',
89
- chore: 'Maintenance',
90
- other: 'Other Changes',
91
- };
92
- for (const [category, items] of categories) {
93
- const label = categoryLabels[category] || 'Changes';
94
- summary.push(`**${label}:**`);
95
- for (const item of items) {
96
- summary.push(`- ${item}`);
97
- }
98
- summary.push('');
99
- }
100
- return summary;
101
- }
102
- /**
103
- * Generate test plan suggestions
104
- */
105
- function generateTestPlan(categories, changedFiles) {
106
- const testPlan = [];
107
- // Check if there are new features
108
- if (categories.has('feat')) {
109
- testPlan.push('- [ ] Verify new functionality works as expected');
110
- testPlan.push('- [ ] Check for edge cases and error handling');
111
- }
112
- // Check if there are bug fixes
113
- if (categories.has('fix')) {
114
- testPlan.push('- [ ] Verify the bug is fixed');
115
- testPlan.push('- [ ] Ensure no regression in related functionality');
116
- }
117
- // Check for UI changes
118
- const hasUIChanges = changedFiles.some(f => f.includes('component') ||
119
- f.endsWith('.tsx') ||
120
- f.endsWith('.css') ||
121
- f.endsWith('.scss'));
122
- if (hasUIChanges) {
123
- testPlan.push('- [ ] Visual inspection of UI changes');
124
- testPlan.push('- [ ] Test responsive behavior');
125
- }
126
- // Check for API changes
127
- const hasAPIChanges = changedFiles.some(f => f.includes('api') || f.includes('route') || f.includes('endpoint'));
128
- if (hasAPIChanges) {
129
- testPlan.push('- [ ] Test API endpoints');
130
- testPlan.push('- [ ] Verify request/response format');
131
- }
132
- // Generic tests
133
- testPlan.push('- [ ] Run existing test suite');
134
- testPlan.push('- [ ] Build succeeds without errors');
135
- return testPlan;
136
- }
137
- /**
138
- * Detect breaking changes from commits
139
- */
140
- function detectBreakingChanges(commits) {
141
- const breakingChanges = [];
142
- for (const commit of commits) {
143
- // Check for breaking change indicator
144
- if (commit.subject.includes('!:')) {
145
- const match = commit.subject.match(/!:\s*(.+)/);
146
- if (match) {
147
- breakingChanges.push(match[1]);
148
- }
149
- }
150
- // Check body for BREAKING CHANGE
151
- if (commit.body.includes('BREAKING CHANGE')) {
152
- const match = commit.body.match(/BREAKING CHANGE:\s*(.+)/);
153
- if (match) {
154
- breakingChanges.push(match[1]);
155
- }
156
- }
157
- }
158
- return breakingChanges;
159
- }
160
- /**
161
- * Generate suggested labels based on changes
162
- */
163
- function suggestLabels(categories) {
164
- const labels = [];
165
- if (categories.has('feat'))
166
- labels.push('enhancement');
167
- if (categories.has('fix'))
168
- labels.push('bug');
169
- if (categories.has('docs'))
170
- labels.push('documentation');
171
- if (categories.has('perf'))
172
- labels.push('performance');
173
- if (categories.has('test'))
174
- labels.push('testing');
175
- return labels;
176
- }
177
- /**
178
- * Generate the full PR template
179
- */
180
- async function generatePRTemplate(targetBranch, includeSummary) {
181
- const currentBranch = await getCurrentBranch();
182
- const commits = await getCommitsBetween(targetBranch);
183
- // Get changed files from diff
184
- let changedFiles = [];
185
- try {
186
- const diffFiles = await execGit([
187
- 'diff',
188
- '--name-only',
189
- `${targetBranch}...HEAD`,
190
- ]);
191
- changedFiles = diffFiles.split('\n').filter(f => f.trim());
192
- }
193
- catch {
194
- // May fail if target branch doesn't exist locally
195
- }
196
- const categories = categorizeCommits(commits);
197
- const title = generatePRTitle(commits, currentBranch);
198
- const summary = includeSummary ? generateSummary(categories) : [];
199
- const testPlan = generateTestPlan(categories, changedFiles);
200
- const breakingChanges = detectBreakingChanges(commits);
201
- const suggestedReviewers = await getSuggestedReviewers(changedFiles.map(f => ({
202
- path: f,
203
- status: 'modified',
204
- additions: 0,
205
- deletions: 0,
206
- isBinary: false,
207
- })));
208
- const labels = suggestLabels(categories);
209
- return {
210
- title,
211
- summary: summary.join('\n'),
212
- changes: Array.from(categories.entries()).flatMap(([cat, items]) => items.map(item => `${cat}: ${item}`)),
213
- testPlan,
214
- breakingChanges: breakingChanges.length > 0 ? breakingChanges : undefined,
215
- suggestedReviewers: suggestedReviewers.length > 0 ? suggestedReviewers : undefined,
216
- labels: labels.length > 0 ? labels : undefined,
217
- };
218
- }
219
- /**
220
- * Execute the git_create_pr tool
221
- */
222
- const executeGitCreatePR = async (args) => {
223
- // Check if we're in a git repository
224
- if (!(await isGitRepository())) {
225
- return 'Error: Not a git repository. Please run this command from within a git repository.';
226
- }
227
- const currentBranch = await getCurrentBranch();
228
- // Determine target branch
229
- let targetBranch = args.targetBranch;
230
- if (!targetBranch) {
231
- targetBranch = await getDefaultBranch();
232
- }
233
- // Check if on target branch
234
- if (currentBranch === targetBranch) {
235
- return `Error: Currently on ${targetBranch}. Please switch to a feature branch before creating a PR.`;
236
- }
237
- // Generate PR template
238
- const template = await generatePRTemplate(targetBranch, args.includeSummary !== false);
239
- // Build response
240
- const responseLines = [];
241
- responseLines.push('=== Pull Request Template ===');
242
- responseLines.push('');
243
- responseLines.push(`Branch: ${currentBranch} -> ${targetBranch}`);
244
- responseLines.push(`Draft: ${args.draft ? 'Yes' : 'No'}`);
245
- responseLines.push('');
246
- responseLines.push('--- Title ---');
247
- responseLines.push(template.title);
248
- responseLines.push('');
249
- responseLines.push('--- Description ---');
250
- responseLines.push('## Summary');
251
- if (template.summary) {
252
- responseLines.push(template.summary);
253
- }
254
- else {
255
- responseLines.push('<!-- Add a summary of changes -->');
256
- }
257
- responseLines.push('');
258
- responseLines.push('## Test Plan');
259
- for (const item of template.testPlan) {
260
- responseLines.push(item);
261
- }
262
- responseLines.push('');
263
- if (template.breakingChanges && template.breakingChanges.length > 0) {
264
- responseLines.push('## Breaking Changes');
265
- for (const change of template.breakingChanges) {
266
- responseLines.push(`- ${change}`);
267
- }
268
- responseLines.push('');
269
- }
270
- if (template.suggestedReviewers && template.suggestedReviewers.length > 0) {
271
- responseLines.push('--- Suggested Reviewers ---');
272
- for (const reviewer of template.suggestedReviewers) {
273
- responseLines.push(` - ${reviewer}`);
274
- }
275
- responseLines.push('');
276
- }
277
- if (template.labels && template.labels.length > 0) {
278
- responseLines.push('--- Suggested Labels ---');
279
- responseLines.push(` ${template.labels.join(', ')}`);
280
- responseLines.push('');
281
- }
282
- responseLines.push('--- Commands ---');
283
- responseLines.push('');
284
- responseLines.push('To create this PR using GitHub CLI:');
285
- const draftFlag = args.draft ? ' --draft' : '';
286
- responseLines.push(`gh pr create --title "${template.title}" --body "..." --base ${targetBranch}${draftFlag}`);
287
- responseLines.push('');
288
- responseLines.push('Or copy the template above and create the PR manually on GitHub.');
289
- return responseLines.join('\n');
290
- };
291
- // AI SDK tool definition with execute function
292
- const gitCreatePRCoreTool = tool({
293
- description: 'Generate a pull request template with auto-generated description, test plan, and reviewer suggestions based on commit history.',
294
- inputSchema: jsonSchema({
295
- type: 'object',
296
- properties: {
297
- targetBranch: {
298
- type: 'string',
299
- description: 'The target branch for the PR (e.g., "main", "develop"). Defaults to the default branch.',
300
- },
301
- draft: {
302
- type: 'boolean',
303
- description: 'Whether to create the PR as a draft. Default: false',
304
- },
305
- includeSummary: {
306
- type: 'boolean',
307
- description: 'Whether to include a detailed summary of changes. Default: true',
308
- },
309
- },
310
- required: [],
311
- }),
312
- execute: async (args, _options) => {
313
- return await executeGitCreatePR(args);
314
- },
315
- });
316
- // Formatter component
317
- const GitCreatePRFormatter = React.memo(({ args, result }) => {
318
- const themeContext = React.useContext(ThemeContext);
319
- if (!themeContext) {
320
- throw new Error('ThemeContext is required');
321
- }
322
- const { colors } = themeContext;
323
- const [preview, setPreview] = React.useState(null);
324
- const [isLoading, setIsLoading] = React.useState(false);
325
- // Generate preview before execution (when no result)
326
- React.useEffect(() => {
327
- if (!result && !preview && !isLoading) {
328
- const generatePreview = async () => {
329
- setIsLoading(true);
330
- try {
331
- // Run the same logic to generate a preview
332
- const previewResult = await executeGitCreatePR(args);
333
- setPreview(previewResult);
334
- }
335
- catch {
336
- // Silently fail on preview generation errors
337
- }
338
- finally {
339
- setIsLoading(false);
340
- }
341
- };
342
- void generatePreview();
343
- }
344
- }, [result, preview, isLoading, args]);
345
- // Use either the actual result or the preview
346
- const displayResult = result || preview;
347
- // Parse result for display
348
- let title = '';
349
- let description = '';
350
- let targetBranch = args.targetBranch || 'main';
351
- let hasBreakingChanges = false;
352
- if (displayResult) {
353
- const titleMatch = displayResult.match(/--- Title ---\n(.+)/);
354
- if (titleMatch)
355
- title = titleMatch[1];
356
- // Extract description (between --- Description --- and the end or next section)
357
- const descMatch = displayResult.match(/--- Description ---\n([\s\S]*?)(?:\n---|\n\nTo create|$)/);
358
- if (descMatch) {
359
- // Get first few lines of description for preview
360
- const descLines = descMatch[1].trim().split('\n').slice(0, 5);
361
- description = descLines.join('\n');
362
- if (descMatch[1].trim().split('\n').length > 5) {
363
- description += '\n...';
364
- }
365
- }
366
- const branchMatch = displayResult.match(/Branch: .+ -> (.+)/);
367
- if (branchMatch)
368
- targetBranch = branchMatch[1];
369
- hasBreakingChanges = displayResult.includes('Breaking Changes');
370
- }
371
- const messageContent = (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.tool, children: "\u2692 git_create_pr" }), _jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Target: " }), _jsx(Text, { color: colors.primary, children: targetBranch })] }), isLoading && (_jsx(Box, { children: _jsx(Text, { color: colors.secondary, children: "Generating preview..." }) })), args.draft && (_jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Draft: " }), _jsx(Text, { color: colors.text, children: "Yes" })] })), title && (_jsxs(Box, { children: [_jsx(Text, { color: colors.secondary, children: "Title: " }), _jsx(Text, { color: colors.text, children: title.length > 40 ? title.substring(0, 40) + '...' : title })] })), description && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.secondary, children: "Description:" }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: colors.text, children: description }) })] })), hasBreakingChanges && (_jsx(Box, { children: _jsx(Text, { color: colors.error, children: "Contains breaking changes!" }) }))] }));
372
- return _jsx(ToolMessage, { message: messageContent, hideBox: true });
373
- });
374
- const formatter = (args, result) => {
375
- return _jsx(GitCreatePRFormatter, { args: args, result: result });
376
- };
377
- const validator = async (args) => {
378
- // Check if in git repository
379
- if (!(await isGitRepository())) {
380
- return {
381
- valid: false,
382
- error: 'git Not in a git repository',
383
- };
384
- }
385
- // Check if not on default branch
386
- const currentBranch = await getCurrentBranch();
387
- const defaultBranch = await getDefaultBranch();
388
- const targetBranch = args.targetBranch || defaultBranch;
389
- if (currentBranch === targetBranch) {
390
- return {
391
- valid: false,
392
- error: `git Currently on ${targetBranch}. Switch to a feature branch first.`,
393
- };
394
- }
395
- return { valid: true };
396
- };
397
- // Export the tool using NanocoderToolExport pattern
398
- export const gitCreatePRTool = {
399
- name: 'git_create_pr',
400
- tool: gitCreatePRCoreTool,
401
- formatter,
402
- validator,
403
- };
404
- //# sourceMappingURL=git-create-pr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-create-pr.js","sourceRoot":"","sources":["../../../source/tools/git/git-create-pr.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Git Smart Commit Tool
3
- *
4
- * Analyzes staged changes and generates conventional commit messages
5
- * following the Conventional Commits specification.
6
- */
7
- import type { NanocoderToolExport } from '../../types/core.js';
8
- export declare const gitSmartCommitTool: NanocoderToolExport;
9
- //# sourceMappingURL=git-smart-commit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-smart-commit.d.ts","sourceRoot":"","sources":["../../../source/tools/git/git-smart-commit.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAmatD,eAAO,MAAM,kBAAkB,EAAE,mBAKhC,CAAC"}