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
@@ -0,0 +1,98 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { a as getProjectDir, v as isUsableBaseBranchName, f as resolvePreferredBaseBranch, n as execGitCommand, B as getSpecCatDataDir, u as upsertConversationInStorage, S as STORAGE_VERSION, y as generateConversationTitle } from '../nitro/nitro.mjs';
5
+ import { g as getChatWorktreePath } from './worktreePaths.mjs';
6
+
7
+ async function setupConversationWorktree(options) {
8
+ var _a;
9
+ const { conversationId, featureId } = options;
10
+ const projectDir = getProjectDir();
11
+ if (featureId && !/^[a-zA-Z0-9_\-]+$/.test(featureId)) {
12
+ console.warn("[worktreeSetup] Invalid featureId format:", featureId);
13
+ return { success: false, cwd: projectDir };
14
+ }
15
+ const branchName = featureId || `sc/${conversationId}`;
16
+ const worktreePath = getChatWorktreePath(conversationId, featureId);
17
+ if (existsSync(worktreePath)) {
18
+ return { success: true, cwd: worktreePath, worktreeBranch: branchName };
19
+ }
20
+ try {
21
+ const requestedBaseBranch = (_a = options.baseBranch) == null ? void 0 : _a.trim();
22
+ if (requestedBaseBranch && !isUsableBaseBranchName(requestedBaseBranch)) {
23
+ throw new Error(`Invalid base branch "${requestedBaseBranch}"`);
24
+ }
25
+ const baseBranch = requestedBaseBranch || await resolvePreferredBaseBranch(projectDir);
26
+ if (!baseBranch) {
27
+ throw new Error("Unable to resolve base branch for conversation worktree");
28
+ }
29
+ const baseHead = await execGitCommand(
30
+ ["rev-parse", "--verify", `refs/heads/${baseBranch}^{commit}`],
31
+ projectDir
32
+ ).catch(() => {
33
+ throw new Error(`Base branch "${baseBranch}" does not exist`);
34
+ });
35
+ let branchExists = false;
36
+ try {
37
+ await execGitCommand(["rev-parse", "--verify", branchName], projectDir);
38
+ branchExists = true;
39
+ } catch {
40
+ }
41
+ if (branchExists) {
42
+ await execGitCommand(["worktree", "prune"], projectDir);
43
+ await execGitCommand(["worktree", "add", worktreePath, branchName], projectDir);
44
+ } else {
45
+ await execGitCommand(["worktree", "add", "-b", branchName, worktreePath, baseHead], projectDir);
46
+ }
47
+ console.log("[worktreeSetup] Worktree ready:", { conversationId, worktreePath, branchName, branchExists });
48
+ await ensureConversationWorktreeInfo(options, worktreePath, branchName, baseBranch);
49
+ return { success: true, cwd: worktreePath, worktreeBranch: branchName, baseBranch };
50
+ } catch (err) {
51
+ const error = err instanceof Error ? err.message : String(err);
52
+ console.warn("[worktreeSetup] Failed:", error);
53
+ return { success: false, cwd: projectDir, error };
54
+ }
55
+ }
56
+ async function ensureConversationWorktreeInfo(options, worktreePath, branchName, baseBranch) {
57
+ const dataDir = getSpecCatDataDir();
58
+ const convFilePath = join(dataDir, "conversations", `${options.conversationId}.json`);
59
+ try {
60
+ if (existsSync(convFilePath)) {
61
+ const raw = await readFile(convFilePath, "utf-8");
62
+ const conv = JSON.parse(raw);
63
+ if (!conv.worktreePath) {
64
+ conv.cwd = worktreePath;
65
+ conv.worktreePath = worktreePath;
66
+ conv.worktreeBranch = branchName;
67
+ conv.hasWorktree = true;
68
+ conv.baseBranch = baseBranch;
69
+ conv.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
70
+ await upsertConversationInStorage(conv, STORAGE_VERSION);
71
+ }
72
+ } else {
73
+ const now = (/* @__PURE__ */ new Date()).toISOString();
74
+ const conv = {
75
+ id: options.conversationId,
76
+ title: generateConversationTitle(options.message),
77
+ messages: [],
78
+ createdAt: now,
79
+ updatedAt: now,
80
+ cwd: worktreePath,
81
+ source: options.featureId ? "cascade" : "user",
82
+ worktreePath,
83
+ worktreeBranch: branchName,
84
+ hasWorktree: true,
85
+ baseBranch,
86
+ featureId: options.featureId,
87
+ providerId: options.providerId,
88
+ providerModelKey: options.providerModelKey
89
+ };
90
+ await upsertConversationInStorage(conv, STORAGE_VERSION);
91
+ }
92
+ } catch (err) {
93
+ console.warn("[worktreeSetup] Failed to update conversation storage:", err);
94
+ }
95
+ }
96
+
97
+ export { setupConversationWorktree as s };
98
+ //# sourceMappingURL=worktreeSetup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeSetup.mjs","sources":["../../../../server/utils/worktreeSetup.ts"],"names":[],"mappings":"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"}