spec-cat 0.1.63 → 0.1.65

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 (271) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/B-bFNWCF.js +43 -0
  3. package/.output/public/_nuxt/{D4LyIv_t.js → BEWSHKZd.js} +1 -1
  4. package/.output/public/_nuxt/{Su-Cl_JF.js → BHhMtuRK.js} +1 -1
  5. package/.output/public/_nuxt/{DwpuOtAP.js → BwRpECPL.js} +1 -1
  6. package/.output/public/_nuxt/{FfyCVKRU.js → CC_9aMCT.js} +1 -1
  7. package/.output/public/_nuxt/CHHbeXzh.js +1 -0
  8. package/.output/public/_nuxt/{DIOhMCOf.js → CzV__9yP.js} +3 -3
  9. package/.output/public/_nuxt/{Bz2rU2zs.js → DWDrIutw.js} +1 -1
  10. package/.output/public/_nuxt/D_4Ow2w2.js +1 -0
  11. package/.output/public/_nuxt/D_T_F7lf.js +1 -0
  12. package/.output/public/_nuxt/{DPOGSCeV.js → DqFq1MXh.js} +1 -1
  13. package/.output/public/_nuxt/YzuyFhrD.js +174 -0
  14. package/.output/public/_nuxt/builds/latest.json +1 -1
  15. package/.output/public/_nuxt/builds/meta/cdc4ded8-9ff7-4e22-abbe-3b8c94caa781.json +1 -0
  16. package/.output/public/_nuxt/default.Cyeq1Er8.css +1 -0
  17. package/.output/public/_nuxt/entry.uBSFaL6A.css +1 -0
  18. package/.output/public/_nuxt/{useTheme.Cny4Z64J.css → useTheme.B4wINCoW.css} +1 -1
  19. package/.output/public/_nuxt/uyJF9wDo.js +58 -0
  20. package/.output/server/chunks/_/aiProviderRegistry.mjs +1 -2
  21. package/.output/server/chunks/_/aiProviderRegistry.mjs.map +1 -1
  22. package/.output/server/chunks/_/aiProviderSelection.mjs +2 -2
  23. package/.output/server/chunks/_/chatGit.mjs +1 -2
  24. package/.output/server/chunks/_/chatGit.mjs.map +1 -1
  25. package/.output/server/chunks/_/claudeProvider.mjs +1 -215
  26. package/.output/server/chunks/_/claudeProvider.mjs.map +1 -1
  27. package/.output/server/chunks/_/claudeService.mjs +50 -54
  28. package/.output/server/chunks/_/claudeService.mjs.map +1 -1
  29. package/.output/server/chunks/_/codexProvider.mjs +47 -812
  30. package/.output/server/chunks/_/codexProvider.mjs.map +1 -1
  31. package/.output/server/chunks/_/git.mjs +1 -2
  32. package/.output/server/chunks/_/git.mjs.map +1 -1
  33. package/.output/server/chunks/_/gitApiHelpers.mjs +1 -1
  34. package/.output/server/chunks/_/gitBranchOperations.mjs +1 -1
  35. package/.output/server/chunks/_/interactiveProviderQuery.mjs +160 -0
  36. package/.output/server/chunks/_/interactiveProviderQuery.mjs.map +1 -0
  37. package/.output/server/chunks/_/jobPersister.mjs +37 -6
  38. package/.output/server/chunks/_/jobPersister.mjs.map +1 -1
  39. package/.output/server/chunks/_/jobQueue.mjs +430 -278
  40. package/.output/server/chunks/_/jobQueue.mjs.map +1 -1
  41. package/.output/server/chunks/_/terminalSessions.mjs +582 -0
  42. package/.output/server/chunks/_/terminalSessions.mjs.map +1 -0
  43. package/.output/server/chunks/_/worktreeSetup.mjs +98 -0
  44. package/.output/server/chunks/_/worktreeSetup.mjs.map +1 -0
  45. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  46. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  47. package/.output/server/chunks/nitro/nitro.mjs +1227 -620
  48. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  49. package/.output/server/chunks/routes/_ws.mjs +21 -111
  50. package/.output/server/chunks/routes/_ws.mjs.map +1 -1
  51. package/.output/server/chunks/routes/api/ai/providers.get.mjs +3 -1
  52. package/.output/server/chunks/routes/api/ai/providers.get.mjs.map +1 -1
  53. package/.output/server/chunks/routes/api/chat/compare.get.mjs +4 -5
  54. package/.output/server/chunks/routes/api/chat/compare.get.mjs.map +1 -1
  55. package/.output/server/chunks/routes/api/chat/context.get.mjs +4 -2
  56. package/.output/server/chunks/routes/api/chat/context.get.mjs.map +1 -1
  57. package/.output/server/chunks/routes/api/chat/finalize.post.mjs +11 -7
  58. package/.output/server/chunks/routes/api/chat/finalize.post.mjs.map +1 -1
  59. package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs +26 -29
  60. package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs.map +1 -1
  61. package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs +4 -5
  62. package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs.map +1 -1
  63. package/.output/server/chunks/routes/api/chat/preview.delete.mjs +4 -5
  64. package/.output/server/chunks/routes/api/chat/preview.delete.mjs.map +1 -1
  65. package/.output/server/chunks/routes/api/chat/preview.post.mjs +4 -6
  66. package/.output/server/chunks/routes/api/chat/preview.post.mjs.map +1 -1
  67. package/.output/server/chunks/routes/api/chat/rebase.post.mjs +4 -7
  68. package/.output/server/chunks/routes/api/chat/rebase.post.mjs.map +1 -1
  69. package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs +4 -6
  70. package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs.map +1 -1
  71. package/.output/server/chunks/routes/api/chat/worktree.delete.mjs +11 -4
  72. package/.output/server/chunks/routes/api/chat/worktree.delete.mjs.map +1 -1
  73. package/.output/server/chunks/routes/api/chat/worktree.post.mjs +4 -6
  74. package/.output/server/chunks/routes/api/chat/worktree.post.mjs.map +1 -1
  75. package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs +10 -9
  76. package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs.map +1 -1
  77. package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs +4 -7
  78. package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs.map +1 -1
  79. package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs +4 -7
  80. package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs.map +1 -1
  81. package/.output/server/chunks/routes/api/conversations/archives.delete.mjs +40 -0
  82. package/.output/server/chunks/routes/api/conversations/archives.delete.mjs.map +1 -0
  83. package/.output/server/chunks/routes/api/conversations/archives.get.mjs +4 -7
  84. package/.output/server/chunks/routes/api/conversations/archives.get.mjs.map +1 -1
  85. package/.output/server/chunks/routes/api/conversations/update.post.mjs +4 -7
  86. package/.output/server/chunks/routes/api/conversations/update.post.mjs.map +1 -1
  87. package/.output/server/chunks/routes/api/conversations.get.mjs +4 -7
  88. package/.output/server/chunks/routes/api/conversations.get.mjs.map +1 -1
  89. package/.output/server/chunks/routes/api/conversations.post.mjs +4 -7
  90. package/.output/server/chunks/routes/api/conversations.post.mjs.map +1 -1
  91. package/.output/server/chunks/routes/api/cwd.get.mjs +4 -2
  92. package/.output/server/chunks/routes/api/cwd.get.mjs.map +1 -1
  93. package/.output/server/chunks/routes/api/git/branch-rename.post.mjs +3 -4
  94. package/.output/server/chunks/routes/api/git/branch-rename.post.mjs.map +1 -1
  95. package/.output/server/chunks/routes/api/git/branch.delete.mjs +4 -5
  96. package/.output/server/chunks/routes/api/git/branch.delete.mjs.map +1 -1
  97. package/.output/server/chunks/routes/api/git/branches.get.mjs +4 -6
  98. package/.output/server/chunks/routes/api/git/branches.get.mjs.map +1 -1
  99. package/.output/server/chunks/routes/api/git/checkout.post.mjs +4 -5
  100. package/.output/server/chunks/routes/api/git/checkout.post.mjs.map +1 -1
  101. package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs +3 -4
  102. package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs.map +1 -1
  103. package/.output/server/chunks/routes/api/git/clean.post.mjs +3 -4
  104. package/.output/server/chunks/routes/api/git/clean.post.mjs.map +1 -1
  105. package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs +3 -4
  106. package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs.map +1 -1
  107. package/.output/server/chunks/routes/api/git/commit.post.mjs +4 -5
  108. package/.output/server/chunks/routes/api/git/commit.post.mjs.map +1 -1
  109. package/.output/server/chunks/routes/api/git/diff.get.mjs +4 -5
  110. package/.output/server/chunks/routes/api/git/diff.get.mjs.map +1 -1
  111. package/.output/server/chunks/routes/api/git/fetch.post.mjs +3 -4
  112. package/.output/server/chunks/routes/api/git/fetch.post.mjs.map +1 -1
  113. package/.output/server/chunks/routes/api/git/file-diff.get.mjs +4 -5
  114. package/.output/server/chunks/routes/api/git/file-diff.get.mjs.map +1 -1
  115. package/.output/server/chunks/routes/api/git/graph.get.mjs +4 -5
  116. package/.output/server/chunks/routes/api/git/graph.get.mjs.map +1 -1
  117. package/.output/server/chunks/routes/api/git/log.get.mjs +4 -5
  118. package/.output/server/chunks/routes/api/git/log.get.mjs.map +1 -1
  119. package/.output/server/chunks/routes/api/git/merge-base.get.mjs +4 -5
  120. package/.output/server/chunks/routes/api/git/merge-base.get.mjs.map +1 -1
  121. package/.output/server/chunks/routes/api/git/merge.post.mjs +3 -4
  122. package/.output/server/chunks/routes/api/git/merge.post.mjs.map +1 -1
  123. package/.output/server/chunks/routes/api/git/pull.post.mjs +3 -4
  124. package/.output/server/chunks/routes/api/git/pull.post.mjs.map +1 -1
  125. package/.output/server/chunks/routes/api/git/push.post.mjs +3 -4
  126. package/.output/server/chunks/routes/api/git/push.post.mjs.map +1 -1
  127. package/.output/server/chunks/routes/api/git/rebase.post.mjs +3 -4
  128. package/.output/server/chunks/routes/api/git/rebase.post.mjs.map +1 -1
  129. package/.output/server/chunks/routes/api/git/remote.delete.mjs +3 -4
  130. package/.output/server/chunks/routes/api/git/remote.delete.mjs.map +1 -1
  131. package/.output/server/chunks/routes/api/git/remote.post.mjs +3 -4
  132. package/.output/server/chunks/routes/api/git/remote.post.mjs.map +1 -1
  133. package/.output/server/chunks/routes/api/git/remote.put.mjs +3 -4
  134. package/.output/server/chunks/routes/api/git/remote.put.mjs.map +1 -1
  135. package/.output/server/chunks/routes/api/git/remotes.get.mjs +3 -4
  136. package/.output/server/chunks/routes/api/git/remotes.get.mjs.map +1 -1
  137. package/.output/server/chunks/routes/api/git/reset.post.mjs +3 -4
  138. package/.output/server/chunks/routes/api/git/reset.post.mjs.map +1 -1
  139. package/.output/server/chunks/routes/api/git/revert.post.mjs +3 -4
  140. package/.output/server/chunks/routes/api/git/revert.post.mjs.map +1 -1
  141. package/.output/server/chunks/routes/api/git/show.get.mjs +4 -5
  142. package/.output/server/chunks/routes/api/git/show.get.mjs.map +1 -1
  143. package/.output/server/chunks/routes/api/git/stage.post.mjs +4 -5
  144. package/.output/server/chunks/routes/api/git/stage.post.mjs.map +1 -1
  145. package/.output/server/chunks/routes/api/git/stash-apply.post.mjs +3 -4
  146. package/.output/server/chunks/routes/api/git/stash-apply.post.mjs.map +1 -1
  147. package/.output/server/chunks/routes/api/git/stash-branch.post.mjs +3 -4
  148. package/.output/server/chunks/routes/api/git/stash-branch.post.mjs.map +1 -1
  149. package/.output/server/chunks/routes/api/git/stash-drop.post.mjs +3 -4
  150. package/.output/server/chunks/routes/api/git/stash-drop.post.mjs.map +1 -1
  151. package/.output/server/chunks/routes/api/git/stash-pop.post.mjs +3 -4
  152. package/.output/server/chunks/routes/api/git/stash-pop.post.mjs.map +1 -1
  153. package/.output/server/chunks/routes/api/git/stash.get.mjs +3 -4
  154. package/.output/server/chunks/routes/api/git/stash.get.mjs.map +1 -1
  155. package/.output/server/chunks/routes/api/git/stash.post.mjs +3 -4
  156. package/.output/server/chunks/routes/api/git/stash.post.mjs.map +1 -1
  157. package/.output/server/chunks/routes/api/git/state.get.mjs +3 -4
  158. package/.output/server/chunks/routes/api/git/state.get.mjs.map +1 -1
  159. package/.output/server/chunks/routes/api/git/status.get.mjs +4 -5
  160. package/.output/server/chunks/routes/api/git/status.get.mjs.map +1 -1
  161. package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs +3 -4
  162. package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs.map +1 -1
  163. package/.output/server/chunks/routes/api/git/tag-push.post.mjs +3 -4
  164. package/.output/server/chunks/routes/api/git/tag-push.post.mjs.map +1 -1
  165. package/.output/server/chunks/routes/api/git/tag.delete.mjs +3 -4
  166. package/.output/server/chunks/routes/api/git/tag.delete.mjs.map +1 -1
  167. package/.output/server/chunks/routes/api/git/tag.post.mjs +3 -4
  168. package/.output/server/chunks/routes/api/git/tag.post.mjs.map +1 -1
  169. package/.output/server/chunks/routes/api/git/unstage.post.mjs +4 -5
  170. package/.output/server/chunks/routes/api/git/unstage.post.mjs.map +1 -1
  171. package/.output/server/chunks/routes/api/index.get.mjs +7 -4
  172. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  173. package/.output/server/chunks/routes/api/index.get2.mjs +4 -2
  174. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  175. package/.output/server/chunks/routes/api/index.get3.mjs +4 -2
  176. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  177. package/.output/server/chunks/routes/api/index.post.mjs +19 -16
  178. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  179. package/.output/server/chunks/routes/api/index.post2.mjs +4 -6
  180. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  181. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +6 -3
  182. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs.map +1 -1
  183. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +7 -4
  184. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs.map +1 -1
  185. package/.output/server/chunks/routes/api/rebase/abort.post.mjs +4 -2
  186. package/.output/server/chunks/routes/api/rebase/abort.post.mjs.map +1 -1
  187. package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs +19 -105
  188. package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs.map +1 -1
  189. package/.output/server/chunks/routes/api/rebase/conflicts.get.mjs +3 -1
  190. package/.output/server/chunks/routes/api/rebase/conflicts.get.mjs.map +1 -1
  191. package/.output/server/chunks/routes/api/rebase/continue-sync.post.mjs +4 -2
  192. package/.output/server/chunks/routes/api/rebase/continue-sync.post.mjs.map +1 -1
  193. package/.output/server/chunks/routes/api/rebase/continue.post.mjs +71 -73
  194. package/.output/server/chunks/routes/api/rebase/continue.post.mjs.map +1 -1
  195. package/.output/server/chunks/routes/api/rebase/resolve.put.mjs +3 -1
  196. package/.output/server/chunks/routes/api/rebase/resolve.put.mjs.map +1 -1
  197. package/.output/server/chunks/routes/api/repository/status.get.mjs +4 -5
  198. package/.output/server/chunks/routes/api/repository/status.get.mjs.map +1 -1
  199. package/.output/server/chunks/routes/api/settings.get.mjs +6 -5
  200. package/.output/server/chunks/routes/api/settings.get.mjs.map +1 -1
  201. package/.output/server/chunks/routes/api/settings.post.mjs +5 -3
  202. package/.output/server/chunks/routes/api/settings.post.mjs.map +1 -1
  203. package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs +3 -1
  204. package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs.map +1 -1
  205. package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs +3 -1
  206. package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs.map +1 -1
  207. package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs +3 -1
  208. package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs.map +1 -1
  209. package/.output/server/chunks/routes/api/specs/features.get.mjs +3 -1
  210. package/.output/server/chunks/routes/api/specs/features.get.mjs.map +1 -1
  211. package/.output/server/chunks/routes/api/specs/reindex.post.mjs +4 -2
  212. package/.output/server/chunks/routes/api/specs/reindex.post.mjs.map +1 -1
  213. package/.output/server/chunks/routes/api/specs/search.get.mjs +4 -2
  214. package/.output/server/chunks/routes/api/specs/search.get.mjs.map +1 -1
  215. package/.output/server/chunks/routes/api/specs/status.get.mjs +4 -2
  216. package/.output/server/chunks/routes/api/specs/status.get.mjs.map +1 -1
  217. package/.output/server/chunks/routes/api/specs/traceability/_featureId_.get.mjs +4 -2
  218. package/.output/server/chunks/routes/api/specs/traceability/_featureId_.get.mjs.map +1 -1
  219. package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs +4 -2
  220. package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs.map +1 -1
  221. package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs +3 -1
  222. package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs.map +1 -1
  223. package/.output/server/chunks/routes/git-watcher-ws.mjs +4 -2
  224. package/.output/server/chunks/routes/git-watcher-ws.mjs.map +1 -1
  225. package/.output/server/chunks/routes/renderer.mjs +4 -2
  226. package/.output/server/chunks/routes/terminal-ws.mjs +230 -0
  227. package/.output/server/chunks/routes/terminal-ws.mjs.map +1 -0
  228. package/.output/server/index.mjs +4 -2
  229. package/.output/server/index.mjs.map +1 -1
  230. package/.output/server/node_modules/node-pty/build/Makefile +369 -0
  231. package/.output/server/node_modules/node-pty/build/Release/pty.node +0 -0
  232. package/.output/server/node_modules/node-pty/build/binding.Makefile +6 -0
  233. package/.output/server/node_modules/node-pty/build/config.gypi +513 -0
  234. package/.output/server/node_modules/node-pty/build/pty.target.mk +168 -0
  235. package/.output/server/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  236. package/.output/server/node_modules/node-pty/lib/index.js +52 -0
  237. package/.output/server/node_modules/node-pty/lib/shared/conout.js +11 -0
  238. package/.output/server/node_modules/node-pty/lib/terminal.js +190 -0
  239. package/.output/server/node_modules/node-pty/lib/unixTerminal.js +346 -0
  240. package/.output/server/node_modules/node-pty/lib/utils.js +39 -0
  241. package/.output/server/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  242. package/.output/server/node_modules/node-pty/lib/windowsPtyAgent.js +320 -0
  243. package/.output/server/node_modules/node-pty/lib/windowsTerminal.js +199 -0
  244. package/.output/server/node_modules/node-pty/package.json +64 -0
  245. package/.output/server/package.json +2 -1
  246. package/package.json +6 -1
  247. package/.output/public/_nuxt/2zamijve.js +0 -1
  248. package/.output/public/_nuxt/BEjIzkrM.js +0 -85
  249. package/.output/public/_nuxt/BaSsfm-t.js +0 -36
  250. package/.output/public/_nuxt/BjdLSVUw.js +0 -1
  251. package/.output/public/_nuxt/DeqM2TrP.js +0 -1
  252. package/.output/public/_nuxt/builds/meta/74089fa1-2fbb-4792-94aa-7535d2aec557.json +0 -1
  253. package/.output/public/_nuxt/default.DKSPicGu.css +0 -1
  254. package/.output/public/_nuxt/entry.BUDfUMkE.css +0 -1
  255. package/.output/public/_nuxt/zrVRZSxq.js +0 -64
  256. package/.output/server/chunks/_/baseBranch.mjs +0 -137
  257. package/.output/server/chunks/_/baseBranch.mjs.map +0 -1
  258. package/.output/server/chunks/_/claude.mjs +0 -164
  259. package/.output/server/chunks/_/claude.mjs.map +0 -1
  260. package/.output/server/chunks/_/conversationStore.mjs +0 -257
  261. package/.output/server/chunks/_/conversationStore.mjs.map +0 -1
  262. package/.output/server/chunks/_/geminiProvider.mjs +0 -372
  263. package/.output/server/chunks/_/geminiProvider.mjs.map +0 -1
  264. package/.output/server/chunks/_/gitExec.mjs +0 -48
  265. package/.output/server/chunks/_/gitExec.mjs.map +0 -1
  266. package/.output/server/chunks/_/providerProcessError.mjs +0 -163
  267. package/.output/server/chunks/_/providerProcessError.mjs.map +0 -1
  268. package/.output/server/chunks/_/uiAdapter.mjs +0 -421
  269. package/.output/server/chunks/_/uiAdapter.mjs.map +0 -1
  270. package/.output/server/chunks/routes/api/chat.post.mjs +0 -276
  271. package/.output/server/chunks/routes/api/chat.post.mjs.map +0 -1
@@ -1,29 +1,4 @@
1
1
  import { r as registerProvider } from './aiProviderRegistry.mjs';
2
- import { spawn } from 'node:child_process';
3
- import { a as getClaudeCliPath, g as getClaudeModelId } from './claude.mjs';
4
- import { t as transformClaudeEvent } from './uiAdapter.mjs';
5
- import 'node:fs';
6
- import 'node:path';
7
- import '../nitro/nitro.mjs';
8
- import 'node:http';
9
- import 'node:https';
10
- import 'node:crypto';
11
- import 'stream';
12
- import 'events';
13
- import 'http';
14
- import 'crypto';
15
- import 'buffer';
16
- import 'zlib';
17
- import 'https';
18
- import 'net';
19
- import 'tls';
20
- import 'url';
21
- import 'node:events';
22
- import 'node:buffer';
23
- import 'node:os';
24
- import 'node:module';
25
- import 'node:fs/promises';
26
- import 'node:url';
27
2
 
28
3
  const CLAUDE_MODELS = [
29
4
  { value: "fable", label: "Fable", description: "Most intelligent, frontier capability" },
@@ -32,49 +7,6 @@ const CLAUDE_MODELS = [
32
7
  { value: "haiku", label: "Haiku", description: "Fast and cost-effective" }
33
8
  ];
34
9
 
35
- function killProc(proc) {
36
- try {
37
- proc.kill("SIGTERM");
38
- const forceKillTimer = setTimeout(() => {
39
- try {
40
- proc.kill("SIGKILL");
41
- } catch {
42
- }
43
- }, 3e3);
44
- proc.once("exit", () => clearTimeout(forceKillTimer));
45
- } catch {
46
- }
47
- }
48
- function extractAssistantText(event) {
49
- const message = event.message;
50
- if (!message || typeof message !== "object" || Array.isArray(message)) return "";
51
- const content = message.content;
52
- if (!Array.isArray(content)) return "";
53
- const chunks = [];
54
- for (const block of content) {
55
- if (!block || typeof block !== "object") continue;
56
- const record = block;
57
- if (record.type === "text" && typeof record.text === "string") {
58
- chunks.push(record.text);
59
- }
60
- }
61
- return chunks.join("");
62
- }
63
- function hasStreamTextDelta(event) {
64
- if (event.type !== "stream_event" || !event.event || typeof event.event !== "object") {
65
- return false;
66
- }
67
- const streamEvent = event.event;
68
- if (streamEvent.type !== "content_block_delta" || !streamEvent.delta || typeof streamEvent.delta !== "object") {
69
- return false;
70
- }
71
- const delta = streamEvent.delta;
72
- return typeof delta.text === "string" && delta.text.length > 0;
73
- }
74
- function extractSessionId(event) {
75
- const value = event.session_id || event.sessionId;
76
- return typeof value === "string" && value.length > 0 ? value : void 0;
77
- }
78
10
  const metadata = {
79
11
  id: "claude",
80
12
  name: "Claude Code CLI",
@@ -93,159 +25,13 @@ const metadata = {
93
25
  conflictResolution: true
94
26
  }
95
27
  };
96
- function buildClaudeExecArgs(opts, modelId) {
97
- const args = [
98
- "-p",
99
- opts.message,
100
- "--output-format",
101
- "stream-json",
102
- "--verbose",
103
- "--include-partial-messages",
104
- "--model",
105
- modelId
106
- ];
107
- const mode = opts.permissionMode || "ask";
108
- switch (mode) {
109
- case "plan":
110
- if (opts.approvedTools && opts.approvedTools.length > 0) {
111
- args.push("--allowedTools", opts.approvedTools.join(","));
112
- }
113
- break;
114
- case "auto":
115
- args.push("--allowedTools", "Read,Glob,Grep,Edit,Write,Bash,WebFetch,WebSearch");
116
- break;
117
- case "bypass":
118
- args.push("--dangerously-skip-permissions");
119
- break;
120
- case "ask":
121
- if (opts.approvedTools && opts.approvedTools.length > 0) {
122
- args.push("--allowedTools", opts.approvedTools.join(","));
123
- }
124
- break;
125
- }
126
- if (opts.resumeSessionId) {
127
- args.push("--resume", opts.resumeSessionId);
128
- }
129
- if (opts.systemPrompt) {
130
- args.push("--append-system-prompt", opts.systemPrompt);
131
- }
132
- return args;
133
- }
134
28
  const claudeProvider = {
135
29
  metadata,
136
- toCanonicalEvents(data) {
137
- return transformClaudeEvent(data);
138
- },
139
- streamChat(opts, callbacks) {
140
- var _a, _b, _c;
141
- const cliPath = getClaudeCliPath();
142
- const modelId = getClaudeModelId(opts.selection.modelKey);
143
- const args = buildClaudeExecArgs(opts, modelId);
144
- const proc = spawn(cliPath, args, {
145
- cwd: opts.cwd,
146
- stdio: ["pipe", "pipe", "pipe"],
147
- env: {
148
- ...process.env,
149
- NODE_NO_WARNINGS: "1",
150
- NO_COLOR: "1"
151
- }
152
- });
153
- (_a = proc.stdin) == null ? void 0 : _a.end();
154
- let lineBuffer = "";
155
- const nonJsonOutput = [];
156
- let sawStreamTextDelta = false;
157
- let assistantSnapshotBlockId = null;
158
- let assistantSnapshotText = "";
159
- const closeAssistantSnapshotBlock = (sessionId) => {
160
- if (!assistantSnapshotBlockId) return;
161
- callbacks.onProviderJson({
162
- type: "block_end",
163
- sessionId,
164
- blockId: assistantSnapshotBlockId
165
- });
166
- assistantSnapshotBlockId = null;
167
- assistantSnapshotText = "";
168
- };
169
- const handleProviderJson = (parsed) => {
170
- if (hasStreamTextDelta(parsed)) {
171
- sawStreamTextDelta = true;
172
- }
173
- if (parsed.type === "assistant") {
174
- const text = extractAssistantText(parsed);
175
- if (!text || sawStreamTextDelta) {
176
- return;
177
- }
178
- const sessionId = extractSessionId(parsed);
179
- if (!assistantSnapshotBlockId) {
180
- assistantSnapshotBlockId = `blk-${Date.now()}-${Math.random().toString(36).substring(2, 6)}`;
181
- callbacks.onProviderJson({
182
- type: "block_start",
183
- sessionId,
184
- blockId: assistantSnapshotBlockId,
185
- blockType: "text",
186
- text: ""
187
- });
188
- }
189
- const delta = text.startsWith(assistantSnapshotText) ? text.slice(assistantSnapshotText.length) : text;
190
- assistantSnapshotText = text;
191
- if (delta) {
192
- callbacks.onProviderJson({
193
- type: "block_delta",
194
- sessionId,
195
- blockId: assistantSnapshotBlockId,
196
- text: delta
197
- });
198
- }
199
- return;
200
- }
201
- if (parsed.type === "result") {
202
- closeAssistantSnapshotBlock(extractSessionId(parsed));
203
- }
204
- callbacks.onProviderJson(parsed);
205
- };
206
- (_b = proc.stdout) == null ? void 0 : _b.on("data", (data) => {
207
- lineBuffer += data.toString();
208
- const lines = lineBuffer.split("\n");
209
- lineBuffer = lines.pop() || "";
210
- for (const line of lines) {
211
- const cleaned = line.trim();
212
- if (!cleaned) continue;
213
- try {
214
- handleProviderJson(JSON.parse(cleaned));
215
- } catch {
216
- nonJsonOutput.push(cleaned);
217
- }
218
- }
219
- });
220
- (_c = proc.stderr) == null ? void 0 : _c.on("data", (data) => {
221
- const text = data.toString().trim();
222
- if (text) {
223
- nonJsonOutput.push(text);
224
- }
225
- });
226
- proc.on("close", (exitCode, signal) => {
227
- if (lineBuffer.trim()) {
228
- try {
229
- handleProviderJson(JSON.parse(lineBuffer.trim()));
230
- } catch {
231
- nonJsonOutput.push(lineBuffer.trim());
232
- }
233
- }
234
- closeAssistantSnapshotBlock();
235
- callbacks.onClose({ exitCode, signal, nonJsonOutput });
236
- });
237
- proc.on("error", (error) => {
238
- callbacks.onError(error);
239
- });
240
- return {
241
- kill: () => killProc(proc)
242
- };
243
- },
244
30
  isModelSupported(modelKey) {
245
31
  return CLAUDE_MODELS.some((model) => model.value === modelKey);
246
32
  }
247
33
  };
248
34
  registerProvider(claudeProvider);
249
35
 
250
- export { buildClaudeExecArgs, claudeProvider as default };
36
+ export { claudeProvider as default };
251
37
  //# sourceMappingURL=claudeProvider.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"claudeProvider.mjs","sources":["../../../../types/claude.ts","../../../../server/utils/claudeProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeProvider.mjs","sources":["../../../../types/claude.ts","../../../../server/utils/claudeProvider.ts"],"names":[],"mappings":";;AAMO,MAAM,aAAA,GAA8E;AAAA,EACzF,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,aAAa,uCAAA,EAAwC;AAAA,EACvF,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,aAAa,+BAAA,EAAgC;AAAA,EACjF,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,aAAa,2BAAA,EAA4B;AAAA,EACzE,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,aAAa,yBAAA;AACjD,CAAA;;ACJA,MAAM,QAAA,GAAW;AAAA,EACf,EAAA,EAAI,QAAA;AAAA,EACJ,IAAA,EAAM,iBAAA;AAAA,EACN,WAAA,EAAa,mFAAA;AAAA,EACb,MAAA,EAAQ,aAAA,CAAc,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,IACpC,KAAK,KAAA,CAAM,KAAA;AAAA,IACX,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,aAAa,KAAA,CAAM,WAAA;AAAA,IACnB,OAAA,EAAS,MAAM,KAAA,KAAU;AAAA,GAC3B,CAAE,CAAA;AAAA,EACF,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,MAAA,EAAQ,IAAA;AAAA,IACR,UAAA,EAAY,IAAA;AAAA,IACZ,kBAAA,EAAoB;AAAA;AAExB,CAAA;AAEA,MAAM,cAAA,GAA6B;AAAA,EACjC,QAAA;AAAA,EACA,iBAAiB,QAAA,EAAkB;AACjC,IAAA,OAAO,cAAc,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,UAAU,QAAQ,CAAA;AAAA,EAC/D;AACF;AAEA,gBAAA,CAAiB,cAAc,CAAA;;;;"}
@@ -1,60 +1,57 @@
1
1
  import { execSync } from 'node:child_process';
2
- import { l as logger, h as readSpecCatStore } from '../nitro/nitro.mjs';
3
- import { g as getClaudeModelId, r as runClaudeCliStream } from './claude.mjs';
2
+ import { l as logger } from '../nitro/nitro.mjs';
4
3
 
5
- async function sendMessage(prompt, workingDirectory, modelKey, abortSignal) {
6
- var _a;
7
- try {
8
- const modelId = getClaudeModelId(modelKey);
9
- const result = await runClaudeCliStream({
10
- cwd: workingDirectory,
11
- prompt,
12
- modelId,
13
- includePartial: false,
14
- abortSignal
15
- });
16
- if (result.success) {
17
- return { success: true, text: (_a = result.text) == null ? void 0 : _a.trim() };
18
- }
19
- return { success: false, error: result.error || "Provider CLI failed" };
20
- } catch (error) {
21
- logger.chat.error("sendMessage failed", { error: String(error) });
22
- return {
23
- success: false,
24
- error: error instanceof Error ? error.message : String(error)
25
- };
26
- }
27
- }
28
4
  function execGit(cwd, args) {
29
5
  return execSync(`git ${args}`, { cwd, encoding: "utf-8" }).trim();
30
6
  }
31
- async function generateCommitMessage(worktreePath, featureId, diffStat) {
32
- const prompt = `Generate a concise git commit message for these changes.
33
- Feature: ${"unknown"}
34
- Changes:
35
- ${diffStat}
36
-
37
- Rules:
38
- - Use conventional commit format (feat/fix/refactor/docs)
39
- - First line max 72 chars
40
- - Be specific about what changed
41
- - No emoji
42
-
43
- Output only the commit message, nothing else.`;
44
- const result = await sendMessage(prompt, worktreePath, "haiku");
45
- if (result.success && result.text) {
46
- return result.text.trim();
47
- }
48
- return `feat(${"unknown"}): automated changes`;
7
+ function inferCommitType(paths) {
8
+ if (paths.length === 0) return "chore";
9
+ const isDoc = (p) => /\.(md|mdx|txt)$/i.test(p) || /(^|\/)docs?\//i.test(p);
10
+ const isTest = (p) => /\.(test|spec)\.[cm]?[jt]sx?$/i.test(p) || /(^|\/)(tests?|__tests__)\//i.test(p);
11
+ const isConfig = (p) => /(^|\/)(package\.json|pnpm-lock\.yaml|tsconfig.*\.json|.*\.config\.[cm]?[jt]s|\.[^/]+rc(\.[a-z]+)?)$/i.test(p);
12
+ if (paths.every(isDoc)) return "docs";
13
+ if (paths.every(isTest)) return "test";
14
+ if (paths.every(isConfig)) return "chore";
15
+ return "feat";
49
16
  }
50
- function generateTemplateCommitMessage(featureId, diffStat) {
51
- const fileCountMatch = diffStat.match(/(\d+) files? changed/);
52
- const fileCount = fileCountMatch ? fileCountMatch[1] : "?";
53
- const prefix = "chore";
54
- return `${prefix}: auto commit - ${fileCount} files changed`;
17
+ function inferScope(featureId, paths) {
18
+ if (paths.length === 0) return void 0;
19
+ const topDirs = new Set(
20
+ paths.map((p) => {
21
+ const idx = p.indexOf("/");
22
+ return idx === -1 ? p : p.slice(0, idx);
23
+ })
24
+ );
25
+ return topDirs.size === 1 ? [...topDirs][0] : void 0;
26
+ }
27
+ function generateDeterministicCommitMessage(featureId, nameStatus, diffStat) {
28
+ var _a, _b;
29
+ const entries = nameStatus.split("\n").map((line) => line.trim()).filter(Boolean).map((line) => {
30
+ const [status, ...rest] = line.split(/\s+/);
31
+ return { status: status[0], path: rest[rest.length - 1] };
32
+ });
33
+ const paths = entries.map((e) => e.path);
34
+ const fileCount = paths.length || ((_b = (_a = diffStat.match(/(\d+) files? changed/)) == null ? void 0 : _a[1]) != null ? _b : "0");
35
+ const type = inferCommitType(paths);
36
+ const scope = inferScope(featureId, paths);
37
+ const prefix = scope ? `${type}(${scope})` : type;
38
+ const added = entries.filter((e) => e.status === "A").length;
39
+ const modified = entries.filter((e) => e.status === "M").length;
40
+ const deleted = entries.filter((e) => e.status === "D").length;
41
+ const parts = [];
42
+ if (added) parts.push(`${added} added`);
43
+ if (modified) parts.push(`${modified} modified`);
44
+ if (deleted) parts.push(`${deleted} deleted`);
45
+ const summary = parts.length > 0 ? parts.join(", ") : `${fileCount} files changed`;
46
+ let subject = `${prefix}: ${summary}`;
47
+ if (subject.length > 72) subject = subject.slice(0, 69) + "...";
48
+ const body = entries.slice(0, 10).map((e) => `- ${e.status} ${e.path}`);
49
+ if (entries.length > 10) body.push(`- ...and ${entries.length - 10} more`);
50
+ return body.length > 0 ? `${subject}
51
+
52
+ ${body.join("\n")}` : subject;
55
53
  }
56
54
  async function autoCommitChanges(worktreePath, featureId, options) {
57
- var _a;
58
55
  try {
59
56
  const currentBranch = execGit(worktreePath, "rev-parse --abbrev-ref HEAD");
60
57
  const status = execGit(worktreePath, "status --porcelain");
@@ -68,12 +65,11 @@ async function autoCommitChanges(worktreePath, featureId, options) {
68
65
  if (!staged.trim()) {
69
66
  return { success: true, message: "No changes to commit", currentBranch };
70
67
  }
68
+ const nameStatus = execGit(worktreePath, "diff --cached --name-status");
71
69
  const diff = execGit(worktreePath, "diff --cached --stat");
72
- const settings = await readSpecCatStore("settings.json", {});
73
- const useAI = (_a = settings.autoGenerateCommitMessages) != null ? _a : false;
74
- const commitMessage = useAI ? await generateCommitMessage(worktreePath, featureId, diff) : generateTemplateCommitMessage(featureId, diff);
70
+ const commitMessage = generateDeterministicCommitMessage(featureId, nameStatus, diff);
75
71
  execSync("git commit -F -", { cwd: worktreePath, input: commitMessage, encoding: "utf-8" });
76
- logger.chat.info("Auto-commit successful", { featureId, commitMessage: commitMessage.split("\n")[0], currentBranch, useAI });
72
+ logger.chat.info("Auto-commit successful", { featureId, commitMessage: commitMessage.split("\n")[0], currentBranch });
77
73
  return { success: true, message: commitMessage.split("\n")[0], currentBranch };
78
74
  } catch (error) {
79
75
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -82,5 +78,5 @@ async function autoCommitChanges(worktreePath, featureId, options) {
82
78
  }
83
79
  }
84
80
 
85
- export { autoCommitChanges as a, sendMessage as s };
81
+ export { autoCommitChanges as a };
86
82
  //# sourceMappingURL=claudeService.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"claudeService.mjs","sources":["../../../../server/utils/claudeService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeService.mjs","sources":["../../../../server/utils/claudeService.ts"],"names":[],"mappings":"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"}